Агуулгын хүснэгт:

Инерцийн хэмжих нэгжийг ашиглах арга? 6 алхам
Инерцийн хэмжих нэгжийг ашиглах арга? 6 алхам

Видео: Инерцийн хэмжих нэгжийг ашиглах арга? 6 алхам

Видео: Инерцийн хэмжих нэгжийг ашиглах арга? 6 алхам
Видео: tsahim test bolovsruulah arga 2024, Арваннэгдүгээр
Anonim
Инерцийн хэмжих нэгжийг хэрхэн ашиглах вэ?
Инерцийн хэмжих нэгжийг хэрхэн ашиглах вэ?

Контекст:

Би хөгжилтэй байхын тулд байшин дотор бие даан шилжихийг хүсч буй роботыг бүтээж байна.

Энэ бол урт ажил бөгөөд би алхам алхмаар хийж байна.

Би энэ сэдвээр 2 зааварчилгаа хэвлүүлсэн:

  • нэг нь дугуй кодлогч хийх тухай
  • wifi холболтын талаар

Миний роботыг гэрийн хийсэн дугуй кодлогчын тусламжтайгаар 2 тогтмол гүйдлийн хөдөлгүүрээр удирддаг.

Би одоогоор хөдөлгөөнт удирдлагыг сайжруулж байгаа бөгөөд жироскоп, акселерометр, ОУЦХ -той хэсэг хугацаанд хамт байсан. Энэ туршлагаа хуваалцахдаа таатай байх болно.

Та нутагшуулах талаар илүү ихийг мэдэхийг хүсч байна уу? Роботыг нутагшуулахын тулд хиймэл оюун ухаан, хэт авианы аппаратыг хэрхэн хослуулах тухай нийтлэлийг энд оруулав

Алхам 1: Инерцийн хэмжих нэгжийг яагаад ашиглах ёстой вэ?

Инерцийн хэмжих нэгжийг яагаад ашиглах ёстой вэ?
Инерцийн хэмжих нэгжийг яагаад ашиглах ёстой вэ?

Тэгвэл би яагаад IMU -ийг ашигласан юм бэ?

Эхний шалтгаан нь хэрэв дугуй кодлогч нь шулуун хөдөлгөөнийг хянахад хангалттай нарийвчлалтай байсан бол тааруулсны дараа би эргэлтийн нарийвчлалыг +5 градусаас бага болгож чадаагүй бөгөөд энэ нь хангалтгүй юм.

Тиймээс би 2 өөр мэдрэгчийг туршиж үзсэн. Нэгдүгээрт, би соронзон хэмжигч (LSM303D) ашигладаг. Зарчим нь маш энгийн байсан: эргэлт хийхээс өмнө хойд зүг рүү чиглүүлж, зорилгоо тооцоолж, зорилгоо биелүүлэх хүртэл хөдөлгөөнийг тохируулна уу. Энэ нь кодлогчтой харьцуулахад арай дээр байсан боловч хэт тарсан байв. Үүний дараа би гироскоп (L3GD20) ашиглахыг оролдсон. Энэхүү зарчим нь эргэлтийг тооцоолохын тулд мэдрэгчийн өгсөн эргэлтийн хурдыг нэгтгэх явдал байв. Тэгээд сайн ажилласан. Би эргэлтийг +- 1 градусаар хянах боломжтой болсон.

Гэсэн хэдий ч би IMU -ийг туршиж үзэх сонирхолтой байсан. Би BNO055 бүрэлдэхүүн хэсгийг сонгож байна. Би энэ ОУХБ -ыг ойлгож, туршихын тулд хэсэг хугацаа зарцуулсан. Эцэст нь би дараах шалтгааны улмаас энэ мэдрэгчийг сонгохоор шийдлээ

  • Би L3GD20 -ийн тусламжтайгаар эргэлтийг хянах боломжтой
  • Би шулуун хөдөлж байхдаа бага зэрэг эргэлтийг илрүүлж чадна
  • Би роботыг нутагшуулахын тулд хойд зүг рүү чиглүүлэх хэрэгтэй бөгөөд BNO055 -ийн луужингийн шалгалт тохируулга нь маш энгийн.

Алхам 2: 2D нутагшуулалтад BNO055 -ийг хэрхэн ашиглах вэ?

BNO055 -ийг 2D нутагшуулалтад хэрхэн ашиглах вэ?
BNO055 -ийг 2D нутагшуулалтад хэрхэн ашиглах вэ?

BNO055 IMU нь туйлын чиг баримжаа өгөх боломжтой Bosch 9 тэнхлэгтэй ухаалаг мэдрэгч юм.

Мэдээллийн хуудас нь бүрэн баримт бичгийг өгдөг. Энэ бол өндөр технологийн бүрэлдэхүүн хэсэг бөгөөд энэ нь нэлээд төвөгтэй бүтээгдэхүүн бөгөөд би хэрхэн ажилладаг талаар сурч, ашиглах өөр аргыг туршиж үзэхэд хэдэн цаг зарцуулсан.

Энэ туршлагаа хуваалцах нь ашигтай байж магадгүй гэж бодож байна.

Нэгдүгээрт, би мэдрэгчийг тохируулах, илрүүлэх сайн хэрэгсэл болох Adafruit номын санг ашигласан.

Төгсгөлд нь, олон туршилтын дараа би шийдсэн

  • зөвхөн шалгалт тохируулгыг хадгалахын тулд Adafruit номын санг ашиглах
  • BNO055 (NDOF, IMU, Compss) бүх боломжит горимуудын 3 -ийг ашиглана уу.
  • BNO055 хэмжилт дээр үндэслэсэн нутагшуулалтыг тооцоолохын тулд Arduino Nano -ийг зориулаарай

Алхам 3: Vue -ийн техник хангамжийн цэг

Vue -ийн техник хангамжийн цэг
Vue -ийн техник хангамжийн цэг
Vue -ийн техник хангамжийн цэг
Vue -ийн техник хангамжийн цэг
Vue -ийн техник хангамжийн цэг
Vue -ийн техник хангамжийн цэг

BNO055 бол I2C бүрэлдэхүүн хэсэг юм. Тиймээс холбогдохын тулд цахилгаан хангамж, SDA, SCL хэрэгтэй.

Худалдан авсан бүтээгдэхүүнийхээ дагуу Vdd хүчдэлийг анхаарч үзээрэй. Bosch чип нь 2.4V -аас 3.6V хүртэл ажилладаг бөгөөд та 3.3V ба 5V бүрэлдэхүүн хэсгүүдийг олох боломжтой.

Нано ба BNO055 -ийг холбоход ямар ч бэрхшээл гардаггүй.

  • BNO055 нь нано хөдөлгүүрээр ажилладаг
  • SDA & SCL нь 2 x 2k татах эсэргүүцэлтэй холбогдсон.
  • Нано -д оношлогдсон 3 LED холбогдсон (резистортой)
  • Ачаалсны дараа горимыг тодорхойлоход ашигладаг 2 холбогч
  • BNO руу чиглэсэн 1 холбогч (Gnd, Vdd, Sda, Scl, Int)
  • Робот/Мега руу чиглэсэн 1 холбогч (+9V, Gnd, sda, Scl, Pin11, Pin12)

Бага зэрэг гагнах, тэгээд л боллоо!

Алхам 4: Энэ нь хэрхэн ажилладаг вэ?

Энэ яаж ажилдаг вэ ?
Энэ яаж ажилдаг вэ ?

Харилцааны цэгээс:

  • Нано бол I2C автобусны мастер юм
  • Робот/Мега ба BNO055 нь I2C боолууд юм
  • Нано нь BNO055 бүртгэлийг байнга уншдаг
  • Робот/Мега нь нано -аас үг хүсэх тоон дохиог дээшлүүлдэг

Тооцоолох цэгээс: Нано нь BNO055 -тэй нийлдэг

  • Луужингийн гарчиг (нутагшуулахад ашигладаг)
  • Харьцангуй гарчиг (эргэлтийг хянахад ашигладаг)
  • Үнэмлэхүй гарчиг ба байрлал (хөдөлгөөнийг хянахад ашигладаг)

Үйл ажиллагааны үүднээс: Нано:

  • BNO055 шалгалт тохируулгыг удирддаг
  • BNO055 параметр ба командыг удирддаг

Nano & BNO055 дэд систем:

  • робот бүрийн дугуйны үнэмлэхүй чиглэл ба байршлыг тооцоолох (масштабтай)
  • роботыг эргүүлэх үед харьцангуй чиглэлийг тооцоолох

Алхам 5: Архитектур ба програм хангамж

Архитектур ба програм хангамж
Архитектур ба програм хангамж

Үндсэн програм хангамж нь Arduino Nano дээр ажилладаг

  • Архитектур нь I2C холболт дээр суурилдаг.
  • Роботыг ажиллуулдаг Атмега нь аль хэдийн ачаалагдсан байсан тул энэхүү архитектурыг өөр газар ашиглахад хялбар болгосон тул би нано зориулахаар шийдсэн юм.
  • Нано нь BNO055 регистрийг уншиж, гарчиг, нутагшуулалтыг тооцоолж, хадгалдаг.
  • Роботын кодыг ажиллуулдаг Arduino Atmega нь дугуй кодлогчын мэдээллийг Нано руу илгээж, Нано регистр доторх гарчиг, байршлыг уншдаг.

Энд дэд систем (нано) кодыг GitHub дээрээс авах боломжтой

Хэрэв энд GitHub дээр байгаа бол Adafruit шалгалт тохируулгын хэрэгсэл (шалгалт тохируулгыг eeproom дээр хадгалах болно)

Алхам 6: Би юу сурсан бэ?

I2C -ийн тухайд

Нэгдүгээрт, би нэг автобусанд 2 мастер (Arduino), 1 боол (мэдрэгч) суулгахыг оролдсон боловч эцэст нь зөвхөн нано -г мастер болгож, 2 Arduino -ийн хооронд GPIO холболтыг ашиглан "жетон хүсэх" боломжтой бөгөөд хамгийн хялбар юм..

2D чиглэлийн хувьд BNO055 -ийн тухай

Би ажиллаж байгаа 3 өөр горимд анхаарлаа төвлөрүүлж чадна: робот сул зогссон үед NDOF (гироскоп, акселерометр ба Compas хослуулах), робот хөдөлж байх үед IMU (гироскоп, акселерометрийг нэгтгэх), нутагшуулах үе шатанд луужин. Эдгээр горимуудын хооронд шилжих нь хялбар бөгөөд хурдан юм.

Кодын хэмжээг багасгах, мөргөлдөөнийг илрүүлэхийн тулд BNO055 тасалдал ашиглах боломжийг хадгалахын тулд би Adafruit номын санг ашиглахгүй байхыг хүсч байна.

Зөвлөмж болгож буй: