Isi kandungan:

Cara Menggunakan Unit Pengukuran Inersia?: 6 Langkah
Cara Menggunakan Unit Pengukuran Inersia?: 6 Langkah

Video: Cara Menggunakan Unit Pengukuran Inersia?: 6 Langkah

Video: Cara Menggunakan Unit Pengukuran Inersia?: 6 Langkah
Video: Cara Menggunakan + Menghitung Jangka Sorong 2024, November
Anonim
Cara Menggunakan Unit Pengukuran Inersia?
Cara Menggunakan Unit Pengukuran Inersia?

Konteks:

Saya membina untuk bersenang-senang sebuah robot yang saya mahu bergerak secara autonomi di dalam sebuah rumah.

Ini adalah kerja yang panjang dan saya melakukan langkah demi langkah.

Saya telah menerbitkan 2 arahan untuk topik itu:

  • satu mengenai membuat pengekod roda
  • satu mengenai sambungan wifi

Robot saya dipacu oleh 2 motor DC dengan bantuan pengekod roda buatan rumah saya.

Saya sedang meningkatkan kawalan bergerak dan telah meluangkan masa dengan giroskop, akselerometer dan IMU. Saya ingin berkongsi pengalaman ini.

Anda ingin mengetahui lebih lanjut mengenai penyetempatan? Berikut adalah artikel mengenai cara menggabungkan kecerdasan buatan dan ultrasound untuk melokalkan robot

Langkah 1: Mengapa Menggunakan Unit Pengukuran Inersia?

Mengapa Menggunakan Unit Pengukuran Inersia?
Mengapa Menggunakan Unit Pengukuran Inersia?

Oleh itu, mengapa saya menggunakan IMU?

Sebab pertama ialah jika pengekod roda cukup tepat untuk mengawal pergerakan lurus, walaupun selepas menyetel, saya tidak dapat memperoleh ketepatan untuk putaran kurang dari + - 5 degres dan itu tidak mencukupi.

Oleh itu, saya mencuba 2 sensor yang berbeza. Pertama saya menggunakan magnetometer (LSM303D). Prinsipnya sederhana: sebelum putaran mendapatkan orientasi utara, hitung sasaran dan sesuaikan gerakan hingga target tercapai. Ia sedikit lebih baik daripada dengan pengekod tetapi dengan terlalu banyak penyebaran. Selepas itu saya cuba menggunakan giroskop (L3GD20). Prinsipnya hanyalah untuk menggabungkan kecepatan putaran yang diberikan oleh sensor untuk menghitung putaran. Dan ia berfungsi dengan baik. Saya dapat mengawal putaran pada + - 1 degre.

Walaupun begitu, saya ingin sekali mencuba beberapa IMU. Saya memilih komponen BNO055. Saya meluangkan masa untuk memahami dan menguji IMU ini. Pada akhirnya saya memutuskan untuk memilih sensor ini atas alasan berikut

  • Saya dapat mengawal putaran dan juga dengan L3GD20
  • Saya dapat mengesan putaran sedikit ketika bergerak lurus
  • Saya perlu mendapatkan arah utara untuk penyetempatan robot dan penentukuran kompas BNO055 sangat mudah

Langkah 2: Bagaimana Menggunakan BNO055 untuk Penyetempatan 2D?

Bagaimana Menggunakan BNO055 untuk Penyetempatan 2D?
Bagaimana Menggunakan BNO055 untuk Penyetempatan 2D?

BNO055 IMU adalah sensor pintar paksi 9 Bosch yang dapat memberikan orientasi mutlak.

Lembar data menyediakan dokumentasi lengkap. Ini adalah komponen berteknologi tinggi, ia adalah produk yang agak rumit dan saya menghabiskan beberapa jam untuk belajar bagaimana ia berfungsi dan mencuba pelbagai cara menggunakannya.

Saya rasa sangat berguna untuk berkongsi pengalaman ini.

Mula-mula saya menggunakan perpustakaan Adafruit yang menyediakan alat yang baik untuk menentukur dan menemui sensor.

Pada akhir dan setelah banyak ujian saya memutuskan untuk

  • gunakan perpustakaan Adafruit untuk menyimpan penentukuran sahaja
  • gunakan 3 daripada semua kemungkinan mod BNO055 (NDOF, IMU, Compss)
  • dedikasikan Arduino Nano untuk menghitung penyetempatan berdasarkan kaedah BNO055

Langkah 3: Titik Perkakasan Vue

Titik Perkakasan Perkakasan
Titik Perkakasan Perkakasan
Titik Perkakasan Perkakasan
Titik Perkakasan Perkakasan
Titik Perkakasan Perkakasan
Titik Perkakasan Perkakasan

BNO055 adalah komponen I2C. Oleh itu, ia memerlukan bekalan kuasa, SDA dan SCL untuk berkomunikasi.

Cukup jaga voltan Vdd mengikut produk yang anda beli. Cip Bosch berfungsi dalam julat: 2.4V hingga 3.6V dan anda boleh menemui komponen 3.3v dan 5v.

Tidak ada kesukaran untuk menghubungkan Nano dan BNO055.

  • BNO055 dikuasakan oleh Nano
  • SDA & SCL disambungkan dengan perintang tarik 2 x 2k.
  • 3 LED disambungkan ke Nano untuk diagnosis (dengan perintang)
  • 2 penyambung digunakan untuk menentukan mod selepas boot
  • 1 penyambung ke arah BNO (Gnd, Vdd, Sda, Scl, Int)
  • 1 penyambung ke arah Robot / Mega (+ 9V, Gnd, sda, Scl, Pin11, Pin12)

Sedikit pematerian dan itu sahaja!

Langkah 4: Bagaimana Ia Berfungsi?

Bagaimanakah ia berfungsi ?
Bagaimanakah ia berfungsi ?

Dari sudut komunikasi vue:

  • Nano adalah ketua bas I2C
  • Robot / Mega dan BNO055 adalah hamba I2C
  • Nano membaca daftar BNO055 secara kekal
  • Robot / Mega menaikkan isyarat angka untuk meminta kata dari Nano

Dari titik pengiraan vue: Nano digabungkan dengan BNO055 memberikan

  • Tajuk kompas (digunakan untuk penyetempatan)
  • Tajuk relatif (digunakan untuk mengawal putaran)
  • Tajuk dan kedudukan mutlak (digunakan untuk mengawal pergerakan)

Dari sudut fungsional: The Nano:

  • menguruskan penentukuran BNO055
  • menguruskan parameter dan perintah BNO055

Subsistem Nano & BNO055:

  • hitung untuk setiap roda roda arah dan penyetempatan mutlak (dengan faktor skala)
  • hitung tajuk relatif semasa putaran robot

Langkah 5: Senibina dan Perisian

Senibina dan Perisian
Senibina dan Perisian

Perisian utama dijalankan di Arduino Nano

  • Senibina berdasarkan komunikasi I2C.
  • Saya memilih untuk mendedikasikan Nano kerana Atmega yang menjalankan robot agak dimuat dan seni bina ini menjadikannya paling mudah digunakan semula di tempat lain.
  • Nano membaca daftar BNO055, menghitung dan menyimpan tajuk dan penyetempatan dalam daftarnya sendiri.
  • Arduino Atmega yang menjalankan kod robot, mengirimkan maklumat pengekod roda ke Nano dan membaca tajuk dan penyetempatan di dalam daftar Nano.

Terdapat kod subsistem (Nano) yang terdapat di GitHub di sini

Alat penentukuran Adafruit jika ada di GitHub (penentukuran akan disimpan di eeproom)

Langkah 6: Apa yang Saya Pelajari?

Mengenai I2C

Mula-mula saya cuba mempunyai 2 tuan (Arduino) dan 1 hamba (sensor) di bas yang sama tetapi pada akhirnya mungkin dan paling mudah untuk menetapkan hanya Nano sebagai master dan menggunakan sambungan GPIO antara 2 Arduino untuk "meminta token".

Mengenai BNO055 untuk orientasi 2D

Saya dapat menumpukan perhatian pada 3 mod berjalan yang berlainan: NDOF (giroskop gabungan, akselerometer dan Kompas) ketika robot tidak aktif, IMU (giroskop gabungan, akselerometer) ketika robot bergerak dan Kompas semasa fasa penyetempatan. Beralih antara mod ini mudah dan pantas.

Untuk mengurangkan saiz kod dan memastikan kemungkinan menggunakan gangguan BNO055 untuk mengesan perlanggaran, saya lebih suka tidak menggunakan perpustakaan Adafruit dan melakukannya sendiri.

Disyorkan: