Mündəricat:

İki Təkərli Özünü Balanslaşdıran Robot: 7 addım
İki Təkərli Özünü Balanslaşdıran Robot: 7 addım

Video: İki Təkərli Özünü Balanslaşdıran Robot: 7 addım

Video: İki Təkərli Özünü Balanslaşdıran Robot: 7 addım
Video: 21 самый необычный автомобиль из когда-либо созданных 😱 2024, Noyabr
Anonim
İki Təkərli Özünü Balanslaşdıran Robot
İki Təkərli Özünü Balanslaşdıran Robot

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:

  1. Arduino Pro Mini 3.3V 8, 8 MHz ATMEGA328 ilə
  2. FT232RL 3.3V 5.5V FTDI USB - TTL seriyalı adapter modulu
  3. MPU-6050 ilə GY-521 modulu
  4. Bir cüt N20 mikro dişli mühərrik 6V - 300 rpm
  5. L298N motor sürücü
  6. LM2596S DC -dən DC buck çeviricisi
  7. Batareya (Şarj edilə bilən 9.7V Li-ion batareya paketi)
  8. Batareya kəməri
  9. İki prototip PCB dövrə lövhəsi
  10. Kişi və qadın başlıq pinləri tullanan tellər

Alətlər:

  1. Lehimləmə dəmir və lehim
  2. Neylon altıbucaqlı aralayıcı
  3. Həssas tornavida dəsti
  4. 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

  1. Alt qat mühərrikləri birləşdirir və L298N motor sürücü modulu üçün montaj nöqtələrinə malikdir
  2. Növbəti təbəqədə Arduino pro mini ilə prototip lövhəsi və ona lehimlənmiş başlıqlar var
  3. Üçüncü qat IMU -nu quraşdırır
  4. "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ə

Kablolama
Kablolama

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:

  1. I və D termini 0 olaraq təyin edin
  2. Robotu tutaraq P -ni elə tənzimləyin ki, robot yalnız balans mövqeyi ilə əlaqədar titrəməyə başlayır
  3. 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.
  4. 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ə: