Daftar Isi:

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

Video: Cara Menggunakan Satuan Pengukuran Inersia ?: 6 Langkah

Video: Cara Menggunakan Satuan Pengukuran Inersia ?: 6 Langkah
Video: Cara Menentukan Momen Inersia pada Penampang Gabungan ||Mekanika Teknik|| 2024, November
Anonim
Cara Menggunakan Unit Pengukuran Inersia?
Cara Menggunakan Unit Pengukuran Inersia?

Isi:

Saya sedang membangun untuk bersenang-senang robot yang ingin saya gerakkan secara mandiri di dalam rumah.

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

Saya sudah menerbitkan 2 instruksi tentang topik itu:

  • satu tentang membuat encoder roda
  • satu tentang koneksi wifi

Robot saya digerakkan oleh 2 motor DC dengan bantuan wheel encoder buatan saya.

Saat ini saya meningkatkan kontrol bergerak dan telah menghabiskan beberapa waktu dengan giroskop, akselerometer, dan IMU. Saya akan senang untuk berbagi pengalaman ini.

Anda ingin tahu lebih banyak tentang lokalisasi? Berikut adalah artikel tentang cara menggabungkan kecerdasan buatan dan ultrasound untuk melokalisasi robot

Langkah 1: Mengapa Menggunakan Unit Pengukuran Inersia?

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

Jadi mengapa saya menggunakan IMU?

Alasan pertama adalah jika wheel encoder cukup presisi untuk mengontrol gerakan lurus, bahkan setelah penyetelan, saya tidak bisa mendapatkan presisi untuk rotasi kurang dari +- 5 derajat dan itu tidak cukup.

Jadi saya mencoba 2 sensor yang berbeda. Pertama saya menggunakan magnetometer (LSM303D). Prinsipnya sederhana: sebelum rotasi mendapatkan orientasi utara, hitung target dan sesuaikan gerakan hingga target tercapai. Itu sedikit lebih baik daripada dengan encoder tetapi dengan terlalu dispersi. Setelah itu saya mencoba menggunakan giroskop (L3GD20). Prinsipnya hanya mengintegrasikan kecepatan putaran yang disediakan oleh sensor untuk menghitung putaran. Dan itu bekerja dengan baik. Saya dapat mengontrol rotasi pada +- 1 derajat.

Meskipun demikian saya penasaran untuk mencoba beberapa IMU. Saya memilih komponen BNO055. Saya meluangkan waktu untuk memahami dan menguji IMU ini. Pada akhirnya saya memutuskan untuk memilih sensor ini karena alasan berikut:

  • Saya dapat mengontrol rotasi serta dengan L3GD20
  • Saya dapat mendeteksi sedikit rotasi saat bergerak lurus
  • Saya perlu mendapatkan orientasi utara untuk pelokalan robot dan kalibrasi kompas BNO055 sangat sederhana

Langkah 2: Bagaimana Menggunakan BNO055 untuk Lokalisasi 2D?

Bagaimana Cara Menggunakan BNO055 untuk Lokalisasi 2D?
Bagaimana Cara Menggunakan BNO055 untuk Lokalisasi 2D?

BNO055 IMU adalah sensor cerdas 9 sumbu Bosch yang dapat memberikan orientasi mutlak.

Datasheet menyediakan dokumentasi lengkap. Ini adalah komponen berteknologi tinggi apakah itu produk yang agak rumit dan saya menghabiskan beberapa jam untuk mempelajari cara kerjanya dan mencoba berbagai cara menggunakannya.

Saya pikir itu bisa berguna untuk berbagi pengalaman ini.

Pertama saya menggunakan perpustakaan Adafruit yang menyediakan alat yang bagus untuk mengkalibrasi dan menemukan sensor.

Pada akhirnya dan setelah banyak tes, saya memutuskan untuk

  • gunakan perpustakaan Adafruit untuk menyimpan kalibrasi saja
  • gunakan 3 dari semua kemungkinan mode BNO055 (NDOF, IMU, Compss)
  • mendedikasikan Arduino Nano untuk menghitung lokalisasi berdasarkan pengukuran BNO055

Langkah 3: Titik Perangkat Keras Vue

Titik Perangkat Keras Vue
Titik Perangkat Keras Vue
Titik Perangkat Keras Vue
Titik Perangkat Keras Vue
Titik Perangkat Keras Vue
Titik Perangkat Keras Vue

BNO055 adalah komponen I2C. Sehingga dibutuhkan power supply, SDA dan SCL untuk berkomunikasi.

Perhatikan saja voltase Vdd sesuai dengan produk yang Anda beli. Chip Bosch bekerja dalam kisaran: 2.4V hingga 3.6V dan Anda dapat menemukan komponen 3.3v dan 5v.

Tidak ada kesulitan untuk menghubungkan Nano dan BNO055.

  • BNO055 didukung oleh Nano
  • SDA & SCL dihubungkan dengan resistor pull-up 2 x 2k.
  • 3 LED terhubung ke Nano untuk diagnosis (dengan resistor)
  • 2 konektor yang digunakan untuk menentukan mode setelah boot
  • 1 konektor menuju BNO (Gnd, Vdd, Sda, Scl, Int)
  • 1 konektor menuju Robot/Mega (+9V, Gnd, sda, Scl, Pin11, Pin12)

Sedikit penyolderan dan hanya itu!

Langkah 4: Bagaimana Cara Kerjanya?

Bagaimana cara kerjanya ?
Bagaimana cara kerjanya ?

Dari titik komunikasi vue:

  • Nano adalah master bus I2C
  • Robot/Mega dan BNO055 adalah budak I2C
  • Nano secara permanen membaca register BNO055
  • Robot/Mega memunculkan sinyal numerik untuk meminta kata dari Nano

Dari titik perhitungan vue: Nano yang dikombinasikan dengan BNO055 memberikan

  • Judul kompas (digunakan untuk pelokalan)
  • Judul relatif (digunakan untuk mengontrol rotasi)
  • Judul dan posisi absolut (digunakan untuk mengontrol gerakan)

Dari titik fungsional vue: The Nano:

  • mengelola kalibrasi BNO055
  • mengelola parameter dan perintah BNO055

Subsistem Nano & BNO055:

  • menghitung untuk setiap roda robot, heading dan lokalisasi absolut (dengan faktor skala)
  • menghitung heading relatif selama rotasi robot

Langkah 5: Arsitektur dan Perangkat Lunak

Arsitektur dan Perangkat Lunak
Arsitektur dan Perangkat Lunak

Perangkat lunak utama berjalan pada Arduino Nano

  • Arsitektur didasarkan pada komunikasi I2C.
  • Saya memilih untuk mendedikasikan Nano karena fakta bahwa Atmega yang menjalankan robot sudah dimuat dan arsitektur ini membuatnya paling mudah untuk digunakan kembali di tempat lain.
  • Nano membaca register BNO055, menghitung dan menyimpan heading dan lokalisasi dalam registernya sendiri.
  • Arduino Atmega yang menjalankan kode robot, mengirimkan informasi encoder roda ke Nano dan membaca heading dan lokalisasi di dalam register Nano.

Ada kode subsistem (Nano) tersedia di sini di GitHub

Alat kalibrasi Adafruit jika di sini di GitHub (kalibrasi akan disimpan di eeproom)

Langkah 6: Apa yang Saya Pelajari?

Mengenai I2C

Pertama saya mencoba memiliki 2 master (Arduino) dan 1 slave (sensor) pada bus yang sama tetapi pada akhirnya dimungkinkan dan paling mudah untuk mengatur hanya Nano sebagai master dan menggunakan koneksi GPIO antara 2 Arduino untuk "meminta token".

Mengenai BNO055 untuk orientasi 2D

Saya dapat berkonsentrasi pada 3 mode lari yang berbeda: NDOF (gabungkan giroskop, akselerometer, dan Kompas) saat robot dalam keadaan diam, IMU (gabungkan giroskop, akselerometer) saat robot bergerak dan Kompas selama fase lokalisasi. Beralih di antara mode ini mudah dan cepat.

Untuk mengurangi ukuran kode dan menjaga kemungkinan penggunaan interupsi BNO055 untuk mendeteksi tabrakan, saya memilih untuk tidak menggunakan pustaka Adafruit dan melakukannya sendiri.

Direkomendasikan: