Mündəricat:
- Təchizat
- Addım 1: Tikinti
- Addım 2: Kabel çəkmə
- Addım 3: Nəzarət nəzəriyyəsi
- Addım 4: MPU 6050 istifadə edin
- Addım 5: Kodlaşdırma
- Addım 6: PID Ayarlama Proseduru
- Addım 7: Nəticə
Video: İki Təkərli Özünü Balanslaşdıran Robot: 7 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:43
Bu təlimat, özünü balanslaşdıran bir robot üçün dizayn və qurma prosesindən keçəcək. Qeyd olaraq qeyd etmək istəyirəm ki, özünü balanslaşdıran robotlar yeni bir anlayış deyil və başqaları tərəfindən hazırlanıb və sənədləşdirilmişdir. Bu fürsətdən istifadə edərək bu robot haqqında şərhimi sizinlə bölüşmək istəyirəm.
Özünü balanslaşdıran robot nədir?
Özünü balanslaşdıran bir robot, yerdəki sensordan toplanan inertial ölçmə məlumatlarını dik vəziyyətdə saxlamaq üçün mövqeyini davamlı olaraq tənzimləmək üçün istifadə edən bir sistemdir.
Bu necə işləyir?
Düşünmək üçün sadə bir bənzətmə, ters çevrilmiş bir sarkacdır. Kütlə mərkəzinin dönmə nöqtəsinin üstündə olduğu yer. Ancaq bizim vəziyyətimizdə, sarkacın bir fırlanma oxuna, bizim vəziyyətimizdə isə iki təkərin fırlanma oxuna sahib olması ilə 1 dərəcə sərbəstliyə məhdudlaşdırırıq. Hər hansı bir narahatlıq robotun düşməsinə səbəb olacağından, robotu balanslı saxlamaq üçün bir üsula ehtiyacımız var. Robotumuzun hansı istiqamətə düşdüyünü bildiyimiz halda sistemin tarazlığını qorumaq üçün mühərriklərimizin fırlanma istiqamətini tənzimləyə bilərik.
Qapalı döngə alqoritmi necə işləyir?
Robotu balanslı saxlamağın əsas prinsipi, əgər robot irəli düşərsə, özünü tutmaq üçün robotun altını irəli çəkərək kompensasiya edəcək və buna görə də şaquli vəziyyətdədir. Eyni şəkildə, robot geriyə düşürsə, özünü tutmaq üçün robotun altını geriyə doğru hərəkət etdirərək kompensasiya verəcək.
Beləliklə, burada iki şey etməliyik, birincisi, robotun yaşadığı meyl açısını (Roll) hesablamalı və nəticədə motorların fırlanma istiqamətinə nəzarət etməliyik.
Meyl açısını necə ölçəcəyik?
Meyl açısını ölçmək üçün İnertial Ölçmə Birimindən istifadə edəcəyik. Bu modullarda akselerometr və giroskop var.
- Akselerometr, düzgün sürətlənməni ölçən bir elektromaqnit cihazıdır, bu, cismin ani istirahət çərçivəsindəki sürətidir.
- Bir giroskop, bucaq sürətini ölçən və cihazın istiqamətini təyin etmək üçün istifadə olunan bir elektromexaniki cihazdır.
Ancaq belə sensorlar istifadə edərkən problem budur:
- Akselerometr çox səs -küylüdür, lakin zamanla sabitdir, bucaq ani üfüqi hərəkətlərlə dəyişir
- Jiroskopun dəyəri, əksinə, zaman keçdikcə sürüşəcək, amma əvvəlcə olduqca dəqiqdir
Bu təlimat üçün, yerüstü Rəqəmsal Hərəkət İşləmə (DMP) istifadə etmək əvəzinə bir filtr tətbiq etməyəcəyəm. Digərləri hamar bir siqnal əldə etmək üçün tamamlayıcı bir filtrdən istifadə etdilər, istədiyiniz üsulu seçə bilərsiniz. robot hər iki tətbiq ilə balanslaşdırır.
Təchizat
Parçalar:
- Arduino Pro Mini 3.3V 8, 8 MHz ATMEGA328 ilə
- FT232RL 3.3V 5.5V FTDI USB - TTL seriyalı adapter modulu
- MPU-6050 ilə GY-521 modulu
- Bir cüt N20 mikro dişli mühərrik 6V - 300 rpm
- L298N motor sürücü
- LM2596S DC -dən DC buck çeviricisi
- Batareya (Şarj edilə bilən 9.7V Li-ion batareya paketi)
- Batareya kəməri
- İki prototip PCB dövrə lövhəsi
- Kişi və qadın başlıq pinləri tullanan tellər
Alətlər:
- Lehimləmə dəmir və lehim
- Neylon altıbucaqlı aralayıcı
- Həssas tornavida dəsti
- 3D printer
Addım 1: Tikinti
Bir 3D printerə sahib olduğum üçün, şassini 3D çap etməyə və hər şeyi bir -birinə bağlamaq üçün duruşlardan istifadə etməyə qərar verdim.
Robot 4 qatdan ibarətdir
- Alt qat mühərrikləri birləşdirir və L298N motor sürücü modulu üçün montaj nöqtələrinə malikdir
- Növbəti təbəqədə Arduino pro mini ilə prototip lövhəsi və ona lehimlənmiş başlıqlar var
- Üçüncü qat IMU -nu quraşdırır
- "Tampon təbəqəsi" adlandırdığım üst təbəqə batareyanı, pul çeviricisini və pul keçidini bağlayır
Əsas dizayn prinsipim hər şeyi modul saxlamaq idi. Bunun səbəbi, əvəz edə biləcəyim komponentlərdən birində bir şey səhv olarsa və ya başqa bir layihə üçün bir komponentə ehtiyacım olsaydı, sistemi yenidən istifadə edə bilməyəcəyimdən narahat olmadan asanlıqla götürə bilərdim.
Addım 2: Kabel çəkmə
Arduino pro mini başlıq pinləri ilə uyğunlaşmaq üçün bəzi qadın başlıq lövhələrini mükəmməl bir lövhəyə lehimlədim. Bunun ardınca, I/O -ya daxil olmaq üçün lövhəni kişi başlığına bağladım. Qalan komponentlər 3D çaplı çərçivəyə quraşdırılmış və tullanan tellərdən istifadə edərək bağlanmışdır.
Addım 3: Nəzarət nəzəriyyəsi
İndi layihənin mahiyyətinə keçirik. Robotu balanslaşdırmaq üçün, motoru düzgün istiqamətdə və düzgün sürətdə idarə etmək üçün robotu balanslı və stabil saxlamaq üçün uyğun bir nəzarət siqnalı yaratmalıyıq. Bunu etmək üçün PID nəzarətçisi olaraq bilinən məşhur bir nəzarət döngəsi alqoritmindən istifadə edəcəyik. Qısaltmanın təklif etdiyi kimi, bu nəzarətçi üçün üç termin var, bunlar mütənasib, inteqral və törəmə şərtlərdir. Hər biri sistemə təsirini təyin edən əmsallarla müşayiət olunur. Tez-tez nəzarətçinin tətbiqinin ən çox vaxt aparan hissəsi, hər bir unikal sistem üçün ən optimal cavabı əldə etmək üçün qazancların tənzimlənməsidir.
- Mütənasib termin, bir nəticə vermək üçün xətanı birbaşa vurur, buna görə də səhv nə qədər böyükdürsə, cavab da o qədər böyükdür
- İnteqral termin, sabit vəziyyət səhvini azaltmaq üçün səhvin yığılmasına əsaslanan bir cavab yaradır. Sistem nə qədər balanssız olarsa, mühərriklərin cavab vermə sürəti o qədər yüksəkdir
- Törəmə termin, gələcək reaksiyanı proqnozlaşdırmaq üçün istifadə olunan xətanın törəməsidir və bununla da sabit vəziyyəti aşmaq səbəbiylə salınımı azaldır.
Bu alqoritmin əsas prinsipi, arzu olunan mövqe ilə cari mövqe arasındakı fərq olan meyl açısını davamlı olaraq hesablamaqdır, buna səhv deyilir. Daha sonra bu səhv dəyərlərindən istifadə edir və mühərriklərə göndərilən nəzarət siqnalları olan bir çıxış əldə etmək üçün mütənasib, inteqral və törəmə cavabların cəmini hesablayır. Nəticədə, səhv böyük olarsa, mühərriklərə göndərilən nəzarət siqnalı balanslaşdırılmış vəziyyətə gəlmək üçün mühərrikləri yüksək sürətlə döndərəcək. Eynilə, səhv kiçik olarsa, nəzarət siqnalı robotu balanslı saxlamaq üçün motorları aşağı sürətlə döndərəcək.
Addım 4: MPU 6050 istifadə edin
MPU6050 Kitabxanası
github.com/jrowberg/i2cdevlib/tree/master/…
Bütün sensorlar bir -birinin dəqiq surətləri deyil. Nəticədə, iki MPU 6050 -ni sınaqdan keçirsəniz, eyni səthdə yerləşdirilərkən akselerometr və giroskop üçün fərqli dəyərlər əldə edə bilərsiniz. Bu daimi bucaq yerini dəyişmək üçün istifadə etdiyimiz hər bir sensoru qeyd etməliyik. Bu skriptin işə salınması:
www.i2cdevlib.com/forums/topic/96-arduino-…
Luis Rodenas tərəfindən yazılmış, əvəzləri alacağıq. Ofset səhvləri, () rutinində ofset dəyərlərini təyin etməklə aradan qaldırıla bilər.
Rəqəmsal Hərəkət Prosessorundan istifadə
MPU6050, DMP (Digital Motion Processor) ehtiva edir.
DMP nədir? DMP-ni mpu6050 üzərindəki 3 eksenli giroskopdan və 3 eksenli akselerometrdən kompleks hərəkəti öz hərəkət füzyon alqoritmlərindən istifadə edərək işləyən bir daxili mikro nəzarətçi olaraq düşünə bilərsiniz. Əks halda Arduino tərəfindən ediləcək emalın boşaldılması
Necə istifadə etməli? DMP-dən necə istifadə olunacağını anlamaq üçün MPU6050 kitabxanası ilə birlikdə gələn MPU6050_DMP6 nümunə eskizindən keçin (Arduino IDE-də: Fayl-> Nümunə-> MPU6050-> MPU6050_DMP6). Sensorunuzun həqiqətən işlədiyini və naqillərin düzgün olduğunu yoxlamaq üçün də yaxşı bir fürsətdir
Addım 5: Kodlaşdırma
Arduino pro mini proqramlaşdırmaq üçün Arduino IDE və FTDI interfeysindən istifadə etdim.
Əsas kodum olaraq MPU6050 kitabxanası ilə birlikdə gələn nümunə eskizdən (MPU6050_DMP6) istifadə edərək PID () və MotorDriver () funksiyalarını əlavə etdim.
Kitabxananı əlavə edin
- MPU6050: MPU6050 sensorundan istifadə etmək üçün Jeff Rowberg'dən I2C geliştirici kitabxanasını yükləməli və kompüterinizdəki proqram fayllarında olan Arduino “kitabxanaları” qovluğuna əlavə etməliyik.
- Tel: I2C cihazları ilə əlaqə qurmağımız üçün Wire kitabxanasına da ehtiyacımız var.
Yalan kod
Kitabxanalar daxildir:
- Tel.h
- MPU6050
- I2Cdev.h
Dəyişənləri, sabitləri və obyektləri işə salın
Qurmaq ()
- Mühərrikləri idarə etmək üçün pin rejimini təyin edin
- Vəziyyət LED -i üçün pin rejimini təyin edin
- MPU6050 -ni işə salın və ofset dəyərlərini təyin edin
PID ()
PID dəyərini hesablayın
MotorDriver (PID cavabı)
Mühərriklərin sürətini və istiqamətini idarə etmək üçün PID dəyərindən istifadə edin
Döngü ()
- DMP -dən məlumat əldə edin
- PID () a MotorDriver () funksiyalarını çağırın
Addım 6: PID Ayarlama Proseduru
Bu, layihənin ən yorucu hissəsidir və çox şanslı olmadıqca bir az səbr tələb edir. İşdə addımlar:
- I və D termini 0 olaraq təyin edin
- Robotu tutaraq P -ni elə tənzimləyin ki, robot yalnız balans mövqeyi ilə əlaqədar titrəməyə başlayır
- P dəsti ilə robotu balansdan çıxanda daha sürətli sürətləndirə bilməsi üçün I artırın. P və mənim düzgün tənzimlənməyimizlə, robot ən az bir neçə saniyə tərəddüd edərək özünü tarazlaşdıra bilməlidir.
- Nəhayət, D -ni artıraraq salınımı azaldın
İlk cəhd qənaətbəxş nəticələr vermirsə, fərqli bir P dəyəri olan addımları təkrarlayın. Bundan əlavə, performansını daha da artırmaq üçün PID dəyərlərini daha sonra tənzimləyə biləcəyinizi unutmayın. Buradakı dəyərlər cihazdan asılıdır, çox böyük və ya çox kiçik PID dəyərləri alsanız təəccüblənməyin.
Addım 7: Nəticə
İstifadə olunan mikro dişli mühərriklər böyük pozuntulara yavaş reaksiya verirdilər və sistemin çox yüngül olduğunu nəzərə alaraq, istədiyiniz sarkaç effektini əldə etmək üçün kifayət qədər ətalət yox idi, buna görə də robot irəli əyilərsə, bucaq altında əyilərək irəli irəliləyərdi. Nəhayət, 3D çaplı təkərlər sürüşməyə davam etdikləri üçün pis bir seçimdir.
Təkmilləşdirmə üçün təkliflər:
- Daha yüksək torka malik daha sürətli mühərriklər, yəni DC mühərrikləri üçün gərginlik dərəcəsi nə qədər yüksəkdirsə, daha yüksək tork
- daha ağır bir batareya alın və ya kütləni bir qədər yuxarı qaldırın
- Daha çox dartma əldə etmək üçün 3D çaplı təkərləri rezin təkərlərlə əvəz edin
Tövsiyə:
Özünü Balanslaşdıran Robot - PID Nəzarət Alqoritmi: 3 Addım
Özünü Balanslaşdıran Robot - PID Nəzarət Alqoritmi: Nəzarət Alqoritmləri və funksional PID döngələrini necə effektiv şəkildə tətbiq etmək haqqında daha çox öyrənməklə maraqlandığım üçün bu layihə hazırlanmışdır. Layihə hələ inkişaf mərhələsindədir, çünki bir Bluetooth modulu hələ əlavə edilməyəcək
Magicbit -dən Özünü Balanslaşdıran Robot: 6 addım
Magicbit -dən Özünü Balanslaşdıran Robot: Bu dərslik, Magicbit dev lövhəsindən istifadə edərək özünü balanslaşdıran robotun necə hazırlanacağını göstərir. ESP32 -ə əsaslanan bu layihədə inkişaf etdirmə lövhəsi olaraq magicbit istifadə edirik. Bu səbəbdən hər hansı bir ESP32 inkişaf lövhəsi bu layihədə istifadə edilə bilər
HeadBot-STEM Öyrənmə və Məlumatlandırma üçün Özünü Balanslaşdıran Robot: 7 Addım (Şəkillərlə birlikdə)
HeadBot-STEM Öyrənmə və Yayım üçün Özünü Balanslaşdıran Robot: Headbot-iki ayaq uzunluğunda, özünü balanslaşdıran robot-İLKdə rəqabətli bir lisey robototexnika qrupu olan South Eugene Robotics Team (SERT, FRC 2521) tərəfindən hazırlanmışdır. Eugene, Oregondan Robototexnika Yarışması. Bu populyar köməkçi robot yenidən
Uzaqdan idarə olunan 3D Çaplı Özünü Balanslaşdıran Robot necə yaradılır: 9 addım (şəkillərlə)
Uzaqdan İdarə olunan 3D Çaplı Özünü Balanslaşdıran Robot Necə Yaranır: Bu, B-robotun əvvəlki versiyasının təkamülüdür. 100% OPEN SOURCE / Arduino robotu. KOD, 3D hissələr və elektronika açıqdır, buna görə onu dəyişdirə və ya robotun böyük bir versiyasını yarada bilərsiniz. Şübhələriniz, fikirləriniz və ya yardıma ehtiyacınız varsa
PID Alqoritmindən (STM MC) istifadə edərək Özünü Balanslaşdıran Robot: 9 addım
PID Alqoritmindən (STM MC) istifadə edərək Özünü Balanslaşdıran Robot: Son zamanlarda cisimlərin özünü balanslaşdırması sahəsində çox işlər görülüb. Özünü balanslaşdırma anlayışı ters çevrilmiş sarkacın balanslaşdırılması ilə başladı. Bu konsepsiya təyyarələrin dizaynına da aiddir. Bu layihədə kiçik bir mod hazırladıq