Агуулгын хүснэгт:
- Хангамж
- Алхам 1: Барилга
- Алхам 2: Цахилгааны утас
- Алхам 3: Хяналтын онол
- Алхам 4: MPU 6050 ашиглах
- Алхам 5: Кодлох
- Алхам 6: PID тааруулах журам
- Алхам 7: Дүгнэлт
Видео: Хоёр дугуйтай өөрийгөө тэнцүүлэх робот: 7 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:01
Энэхүү зааварчилгаа нь өөрийгөө тэнцвэржүүлэх роботыг зохион бүтээх, бүтээх үйл явцыг дамжуулах болно. Тэмдэглэлийн хувьд би өөрийгөө тэнцүүлэх робот бол шинэ ойлголт биш бөгөөд үүнийг бусад хүмүүс бүтээж, баримтжуулсан болохыг хэлмээр байна. Энэ боломжийг ашиглан энэ роботыг хэрхэн тайлбарласнаа та бүхэнтэй хуваалцахыг хүсч байна.
Өөрийгөө тэнцвэржүүлэх робот гэж юу вэ?
Өөрөө тэнцвэржүүлэгч робот бол босоо байрлалд байрлалаа тасралтгүй тохируулахын тулд самбар дээрх мэдрэгчээс цуглуулсан инерцийн хэмжилтийн өгөгдлийг ашигладаг систем юм.
Энэ яаж ажилдаг вэ?
Анхаарах энгийн аналог бол урвуу дүүжин юм. Массын төв нь тэнхлэгийн цэгээс дээгүүр байна. Гэсэн хэдий ч бидний хувьд бид нэг эргэлтийн тэнхлэг, бидний тохиолдолд хоёр дугуйны эргэлтийн тэнхлэгтэй байх замаар савлуурыг 1 градусын эрх чөлөөгөөр хязгаарлаж байна. Аливаа эвдрэл нь роботыг унагах тул роботыг тэнцвэртэй байлгах арга бидэнд хэрэгтэй байна. Энд бидний хаалттай хүрдний алгоритм (PID хянагч) гарч ирдэг бөгөөд манай робот аль чиглэл рүү унаж байгааг мэддэг тул системийг тэнцвэртэй байлгахын тулд хөдөлгүүрийнхээ эргэх чиглэлийг тохируулж болно.
Хаалттай хүрдний алгоритм хэрхэн ажилладаг вэ?
Роботыг тэнцвэртэй байлгах үндсэн зарчим бол хэрэв робот урагшаа унаж байвал түүнийг барьж авахын тулд роботын ёроолыг урагш нь хөдөлгөж нөхөх болно. Үүний нэгэн адил, хэрэв робот хойшоо унаж байгаа бол роботын ёроолыг арагш нь хөдөлгөж өөрийгөө барих болно.
Тиймээс, бид энд хоёр зүйлийг хийх хэрэгтэй, нэгдүгээрт, роботын мэдэрч буй хазайлтын өнцгийг (Roll) тооцоолж, үүний үр дүнд моторын эргэх чиглэлийг хянах шаардлагатай байна.
Бид хазайлтын өнцгийг хэрхэн хэмжих вэ?
Налуу өнцгийг хэмжихийн тулд бид инерцийн хэмжих нэгжийг ашиглах болно. Эдгээр модульд акселерометр ба гироскоп орно.
- Акселерометр бол зохих хурдатгалыг хэмждэг цахилгаан соронзон төхөөрөмж бөгөөд энэ нь биеийг агшин зуурын амралтын хүрээнд хурдасгах явдал юм.
- Гироскоп бол өнцгийн хурдыг хэмжих цахилгаан механик төхөөрөмж бөгөөд төхөөрөмжийн чиглэлийг тодорхойлоход хэрэглэгддэг.
Гэсэн хэдий ч ийм мэдрэгчийг ашиглахтай холбоотой асуудал бол:
- Хурдатгал хэмжигч нь маш их чимээ шуугиантай боловч цаг хугацааны явцад тогтмол байдаг тул өнцөг нь гэнэт хэвтээ хөдөлгөөнөөр өөрчлөгдөж байдаг
- Нөгөө талаас гироскопын үнэ цэнэ цаг хугацааны явцад өөрчлөгдөх боловч эхний ээлжинд нэлээд нарийвчлалтай байдаг
Энэ зааварчилгааны хувьд би дижитал хөдөлгөөнт процессор (DMP) ашиглахын оронд шүүлтүүр хэрэгжүүлэхгүй. Бусад нь жигд дохио авахын тулд нэмэлт шүүлтүүр ашигласан бөгөөд та аль аргыг сонгохоо сонгох боломжтой. робот нь аль ч хэрэгжилтийг тэнцвэржүүлдэг.
Хангамж
Эд анги:
- Arduino Pro Mini 3.3V 8 нь 8 МГц ATMEGA328 төхөөрөмжтэй
- FT232RL 3.3V 5.5V FTDI USB -ээс TTL цуваа адаптер модуль
- MPU-6050 бүхий GY-521 модуль
- N20 бичил арааны мотор 6V - 300 эрг / мин
- L298N мотор жолооч
- LM2596S DC -ээс DC хүртэл хөрвүүлэгч
- Зай (цэнэглэдэг 9.7V ли-ион батерейны багц)
- Батерейны оосор
- ПХБ -ийн хоёр загвар прототип
- Эрэгтэй, эмэгтэй толгойн зүү холбогч утас
Хэрэгсэл:
- Гагнуурын төмөр ба гагнуур
- Nylon Hex spacer -ийн хоорондох зөрчилдөөн
- Нарийвчилсан халивын багц
- 3D принтер
Алхам 1: Барилга
Би 3D принтертэй болсон тул бүх эд ангиудыг хооронд нь холбохын тулд явах эд ангиудыг 3D хэлбэрээр хэвлэхээр шийдсэн.
Робот нь 4 давхаргаас бүрдэнэ
- Доод давхарга нь моторыг холбодог бөгөөд L298N мотор драйвер модулийг холбох цэгүүдтэй байдаг
- Дараагийн давхаргад Arduino pro mini бүхий прототип хавтанг байрлуулж, толгойнуудыг гагнасан байна
- Гурав дахь давхарга нь IMU -ийг холбодог
- Миний "бамбай давхарга" гэж нэрлэдэг дээд давхарга нь батерей, хув хөрвүүлэгч, мөнгөний унтраалга юм
Миний дизайны гол зарчим бол бүх зүйлийг модульчлагдсан байлгах явдал байв. Үүний шалтгаан нь бүрэлдэхүүн хэсгүүдийн аль нэгэнд нь алдаа гарсан тохиолдолд би үүнийг амархан сольж өгөх эсвэл өөр төслийн бүрэлдэхүүн хэсэг хэрэгтэй бол системийг дахин ашиглахгүй байх талаар санаа зовохгүйгээр амархан авч болно.
Алхам 2: Цахилгааны утас
Би Arduino pro мини толгойн тээглүүртэй тааруулахын тулд зарим эмэгтэй толгойн толгойг гагнасан. Үүний дараа би оролтын оролт руу нэвтрэхийн тулд эрэгтэй толгойн толгойг гагнав. Үлдсэн бүрэлдэхүүн хэсгүүдийг 3D хэвлэсэн хүрээ дээр холбож, холбогч утас ашиглан холбосон.
Алхам 3: Хяналтын онол
Одоо бид төслийн үндсэн чиглэл рүү шилжиж байна. Роботыг тэнцвэртэй байлгахын тулд бид роботыг тэнцвэртэй, тогтвортой байлгахын тулд моторыг зөв чиглэлд, зөв хурдаар жолоодох зохих хяналтын дохиог бий болгох хэрэгтэй. Үүнийг хийхийн тулд бид PID хянагч гэгддэг түгээмэл хяналтын давталтын алгоритмыг ашиглах болно. Товчлолоос харахад энэ хянагчийн гурван нэр томъёо байдаг бөгөөд эдгээр нь пропорциональ, интеграл ба үүсмэл нэр томъёо юм. Тэд тус бүр нь системд үзүүлэх нөлөөллийг тодорхойлдог коэффициентүүдийг дагалддаг. Ихэнхдээ хянагчийг хэрэгжүүлэхэд хамгийн их цаг хугацаа шаардагддаг хэсэг бол хамгийн оновчтой хариултыг авахын тулд өвөрмөц систем бүрийн ашиг орлогыг тааруулах явдал юм.
- Пропорциональ нэр томъёо нь алдааг шууд үржүүлж гаргадаг тул алдаа нь том байх тусам хариу нь том болно
- Интеграл нэр томъёо нь тогтвортой байдлын алдааг багасгахын тулд алдааны хуримтлалд үндэслэн хариу үйлдэл үзүүлдэг. Систем тэнцвэргүй байх тусам хөдөлгүүр хурдан хариу өгөх болно
- Үүсмэл нэр томъёо нь ирээдүйн хариу үйлдлийг урьдчилан таамаглахад ашигладаг алдааны дериватив бөгөөд ингэснээр тогтвортой төлөвийг хэтрүүлснээс болж хэлбэлзлийг бууруулдаг.
Энэхүү алгоритмын үндсэн зарчим бол хүссэн байрлал ба одоогийн байрлалын зөрүү болох хазайлтын өнцгийг тасралтгүй тооцоолох явдал бөгөөд үүнийг алдаа гэж нэрлэдэг. Дараа нь энэ алдааны утгыг ашиглаж, пропорциональ, интеграл ба дериватив хариултуудын нийлбэрийг тооцоолж гаралт авах бөгөөд энэ нь мотор руу илгээгддэг хяналтын дохио юм. Үүний үр дүнд хэрэв алдаа их байвал мотор руу илгээсэн хяналтын дохио нь моторыг өндөр хурдтайгаар эргүүлж тэнцвэрт байдалд хүргэх болно. Үүний нэгэн адил, хэрэв алдаа бага байвал хяналтын дохио нь моторыг бага хурдтай эргүүлж, роботыг тэнцвэртэй байлгадаг.
Алхам 4: MPU 6050 ашиглах
MPU6050 номын сан
github.com/jrowberg/i2cdevlib/tree/master/…
Бүх мэдрэгч нь бие биенийхээ яг хуулбар биш юм. Үүний үр дүнд хэрэв та хоёр MPU 6050 -ийг туршиж үзвэл ижил гадаргуу дээр байрлуулахдаа акселерометр болон гироскопын өөр өөр утгыг авах боломжтой болно. Энэхүү тогтмол өнцгийн офсетыг даван туулахын тулд бид ашигладаг мэдрэгч бүрийг тэмдэглэх хэрэгтэй. Энэ скриптийг ажиллуулж байна:
www.i2cdevlib.com/forums/topic/96-arduino-…
бичсэн Луис Роденас, бид нөхөх болно. Тохиргоо () горимд офсет утгыг тодорхойлсноор офсетийн алдааг арилгах боломжтой.
Дижитал хөдөлгөөнт процессор ашиглах
MPU6050 нь DMP (Digital Motion Processor) агуулдаг.
DMP гэж юу вэ? Та DMP-ийг mpu6050 самбар дээрх 3 тэнхлэгтэй гироскоп, 3 тэнхлэгтэй акселерометрийн нарийн хөдөлгөөнийг өөрийн хөдөлгөөний хайлуулах алгоритмыг ашиглан боловсруулдаг микроконтроллер гэж ойлгож болно. Хэрэв Arduino хийхгүй бол боловсруулалтыг ачаалж байна
Үүнийг хэрхэн ашиглах вэ? DMP-ийг хэрхэн ашиглахыг олж мэдэхийн тулд MPU6050 номын сангийн хамт ирдэг MPU6050_DMP6 зургийн жишээг үзээрэй (Arduino IDE-д: Файл-> Жишээ-> MPU6050-> MPU6050_DMP6). Энэ нь таны мэдрэгч үнэхээр ажиллаж байгаа, утас зөв эсэхийг шалгах сайхан боломж юм
Алхам 5: Кодлох
Би Arduino pro mini -ийг програмчлахдаа Arduino IDE болон FTDI интерфэйсийг ашигласан.
MPU6050 номын сангийн дагалдах жишээг (MPU6050_DMP6) ашиглан үндсэн код болгон би PID () ба MotorDriver () функцүүдийг нэмж оруулсан болно.
Номын сан нэмэх
- MPU6050: MPU6050 мэдрэгчийг ашиглахын тулд бид I2C хөгжүүлэгчийн номын санг Жефф Ровбергээс татаж аваад компьютер дээрх програмын файлуудаас олдсон Arduino "номын сан" хавтсанд нэмэх шаардлагатай болно.
- Утас: I2C төхөөрөмжтэй харилцах боломжийг олгохын тулд бидэнд Wire номын сан хэрэгтэй.
Псевдо код
Номын санг оруулах:
- Утас.h
- MPU6050
- I2Cdev.h
Хувьсагч, тогтмол ба объектыг эхлүүлэх
Тохируулах ()
- Хөдөлгүүрийг хянах зүү горимыг тохируулна уу
- LED статусын хувьд зүү горимыг тохируулна уу
- MPU6050 -ийг эхлүүлж, офсет утгыг тохируулна уу
PID ()
PID утгыг тооцоолох
MotorDriver (PID хариу)
Хөдөлгүүрийн хурд, чиглэлийг хянахын тулд PID утгыг ашиглана уу
Гогцоо ()
- DMP -аас мэдээлэл авах
- PID () -г MotorDriver () функц руу залгаарай
Алхам 6: PID тааруулах журам
Энэ бол төслийн хамгийн уйтгартай хэсэг бөгөөд хэрэв танд аз таарахгүй бол бага зэрэг тэвчээр шаардагдана. Энд алхамууд байна:
- I ба D хугацааг 0 болгож тохируулна уу
- Роботыг барьж байхдаа P -ийг тохируулаарай
- P багцтай бол I -ийг нэмэгдүүлснээр робот тэнцвэргүй үед илүү хурдан хурдасдаг. P ба I-ийг зөв тохируулснаар робот дор хаяж хэдэн секундын турш өөрийгөө тэнцвэржүүлэх чадвартай байх ёстой.
- Эцэст нь D -ийг нэмэгдүүлснээр хэлбэлзлийг бууруулна
Хэрэв эхний оролдлого хангалтгүй үр дүнг өгөхгүй бол P гэсэн утгатай алхамуудыг давтана уу. Үүний дараа гүйцэтгэлийг нэмэгдүүлэхийн тулд PID-ийн утгыг нарийн тааруулж болно гэдгийг анхаарна уу. Энд байгаа утгууд нь тоног төхөөрөмжөөс хамаарна, хэрэв та маш том эсвэл маш бага PID утгыг олж авбал бүү гайхаарай.
Алхам 7: Дүгнэлт
Ашигласан микро арааны мотор нь том эвдрэлийг удаашруулдаг байсан бөгөөд систем нь хэт хөнгөн байсан тул хүссэн дүүжин эффектийг авахын тулд инерц хангалтгүй байсан тул робот урагш бөхийх юм бол зүгээр л өнцгөөр бөхийж урагшаа уралдах болно. Эцэст нь хэлэхэд, 3D хэвлэсэн дугуй нь гулссаар байгаад тааруухан сонголт байсан.
Сайжруулах зөвлөмжүүд:
- Илүү их момент бүхий илүү хурдан мотор, өөрөөр хэлбэл тогтмол гүйдлийн хөдөлгүүрийн хувьд хүчдэлийн үзүүлэлт өндөр байх тусам эргэлтийн момент өндөр болно
- илүү хүнд батерей авах эсвэл массыг арай дээш өргөх
- Илүү их зүтгүүр авахын тулд 3D хэвлэсэн дугуйг резинээр солино
Зөвлөмж болгож буй:
Өөрийгөө тэнцвэржүүлэх робот - PID хяналтын алгоритм: 3 алхам
Өөрийгөө тэнцвэржүүлэх робот - PID хяналтын алгоритм: Хяналтын алгоритм, функциональ PID гогцоог хэрхэн үр дүнтэй хэрэгжүүлэх талаар илүү ихийг мэдэх сонирхолтой байсан тул энэхүү төслийг санаачлан боловсруулсан болно. Bluetooth модулийг нэмж хараахан оруулахгүй байгаа тул уг төсөл хөгжлийн шатандаа явж байна
Magicbit -аас өөрийгөө тэнцүүлэх робот: 6 алхам
Magicbit -аас өөрийгөө тэнцүүлэх робот: Энэхүү заавар нь Magicbit dev самбар ашиглан өөрийгөө тэнцвэржүүлэх робот хэрхэн хийхийг харуулдаг. Бид ESP32 дээр суурилсан энэхүү төсөлд magicbit -ийг хөгжлийн самбар болгон ашиглаж байна. Тиймээс энэ төсөлд ESP32 хөгжүүлэх самбарыг ашиглаж болно
HeadBot-STEM-ийн сургалт, мэдээлэлд өөрийгөө тэнцүүлэх робот: 7 алхам (зурагтай)
HeadBot-STEM-ийн сургалт ба мэдээлэлд өөрийгөө тэнцүүлэх робот: Headbot-хоёр фут өндөртэй, өөрийгөө тэнцвэржүүлдэг робот бол FIGST-д өрсөлдөх чадвартай ахлах сургуулийн роботын баг болох South Eugene Robotics Team (SERT, FRC 2521) -ийн санаа юм. Орегон мужийн Евгений хотоос роботын тэмцээн. Энэхүү алдартай хүрч очих робот нь дахин
Хямд өртөгтэй дугуйтай робот тоглоом бүтээх: 9 алхам
Хямд өртөгтэй дугуйтай робот тоглоом бүтээх: Энэхүү зааварчилгаанд та өөрөө эсвэл хүүхдүүддээ зориулж хийж болох энгийн, хямд үнэтэй дугуйтай робот тоглоомыг бүтээгээрэй. Та тэдэнд зориулж тоглоом хийснээ хүүхдүүд тань насан туршдаа санаж байх болно гэдгийг би танд батлан хэлж чадна. Тоглоом хавсаргасан зураг шиг харагдах болно
2 дугуйтай өөрийгөө тэнцүүлэх робот: 4 алхам
2 Дугуйтай өөрийгөө тэнцүүлэх робот: Миний даруухан бодлоор бол та өөрөө 2 дугуйтай өөрийгөө тэнцүүлэх робот бүтээхгүй л бол жинхэнэ бүтээгч биш юм. !!! Энэ төсөл маш энгийн харагдаж байна. Үүний оронд сайн мэдлэгийн түвшинг шаарддаг