Cuprins:
- Provizii
- Pasul 1: Construcție
- Pasul 2: Cablare
- Pasul 3: Teoria controlului
- Pasul 4: Utilizarea MPU 6050
- Pasul 5: Codificare
- Pasul 6: Procedura de reglare PID
- Pasul 7: Concluzie
Video: Robot de auto-echilibrare cu două roți: 7 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Acest instructable va trece prin procesul de proiectare și construcție pentru un robot de auto-echilibrare. Ca o notă, vreau doar să spun că roboții de auto-echilibrare nu sunt un concept nou și au fost construiți și documentați de alții. Vreau să folosesc această ocazie pentru a vă împărtăși interpretarea mea despre acest robot.
Ce este un robot auto-echilibrat?
Un robot de auto-echilibrare este un sistem care utilizează date de măsurare inerțiale, colectate de la un senzor de la bord, pentru a-și regla continuu poziția pentru a se menține în poziție verticală.
Cum functioneazã?
O analogie simplă de luat în considerare este un pendul inversat. Unde centrul de masă este deasupra punctului de pivotare. Cu toate acestea, în cazul nostru, restricționăm pendulul la 1 grad de libertate având o axă de rotație, în cazul nostru axa de rotație a celor două roți. Deoarece orice fel de tulburare va cauza căderea robotului, avem nevoie de o metodă de menținere activă a robotului echilibrat. Aici intervine algoritmul nostru în buclă închisă (controlerul PID), știind în ce direcție cade robotul nostru, putem regla direcția de rotație a motoarelor noastre pentru a menține sistemul echilibrat.
Cum funcționează algoritmul cu buclă închisă?
Principiul de bază în menținerea echilibrului robotului este că, în cazul în care robotul cade înainte, acesta va compensa prin mișcarea fundului robotului înainte pentru a se prinde singur și, prin urmare, a se menține vertical. La fel, dacă robotul cade înapoi, acesta va compensa prin mișcarea fundului robotului înapoi pentru a se prinde singur.
Deci, trebuie să facem două lucruri aici, mai întâi, trebuie să calculăm unghiul de înclinare (Roll) pe care îl experimentează robotul și, ca rezultat, trebuie să controlăm direcția de rotație a motoarelor.
Cum vom măsura unghiul de înclinare?
Pentru a măsura unghiul de înclinare vom folosi o unitate de măsurare inerțială. Aceste module încorporează un accelerometru și un giroscop.
- Accelerometrul este un dispozitiv electromagnetic care măsoară accelerația corectă, aceasta este accelerația unui corp într-un cadru de repaus instantaneu.
- Un giroscop este un dispozitiv electromecanic care măsoară viteza unghiulară și este utilizat pentru a determina orientarea dispozitivului.
Cu toate acestea, problema utilizării acestor senzori este că:
- Accelerometrul este foarte zgomotos, dar este constant în timp, unghiul variază în funcție de mișcări orizontale bruște
- Valoarea giroscopului, pe de altă parte, va deriva în timp, dar inițial este destul de precisă
Pentru acest lucru instructiv, nu voi implementa un filtru în loc să folosesc Procesarea digitală a mișcării (DMP). Alții au folosit un filtru complementar pentru a obține un semnal lin, puteți alege oricare metodă doriți. pe măsură ce robotul se echilibrează cu ambele implementări.
Provizii
Părți:
- Arduino Pro Mini 3.3V 8 cu un ATMEGA328 de 8 Mhz
- FT232RL 3.3V 5.5V FTDI USB la modulul adaptor serial TTL
- Modul GY-521 cu MPU-6050
- O pereche de micro-motor N20 de 6V - 300rpm
- Driver motor L298N
- LM2596S Convertor DC-DC
- Baterie (acumulator Li-ion reîncărcabil de 9,7 V)
- Cureaua bateriei
- Două plăci de circuite PCB de prototipare
- Cârligul masculin și cel feminin al știfturilor
Instrumente:
- Fier de lipit și lipit
- Distanțier hexagonal din nailon
- Set de șurubelnițe de precizie
- imprimantă 3d
Pasul 1: Construcție
De când aveam acces la o imprimantă 3D, am decis să imprim 3D șasiu și să folosesc standoff-uri pentru a conecta totul împreună.
Robotul este format din 4 straturi
- Stratul inferior conectează motoarele și are puncte de montare pentru modulul driverului de motor L298N
- Următorul strat găzduiește placa prototip cu Arduino pro mini și anteturi lipite pe ea
- Al treilea strat montează IMU
- Stratul superior, pe care îl numesc „stratul barei de protecție”, ajută bateria, convertorul buck și un comutator monetar
Principiul meu principal de proiectare a fost să păstrez totul modular. Motivul pentru acest lucru a fost dacă ceva nu a funcționat corect cu una dintre componente, aș putea să o înlocuiesc cu ușurință sau dacă aveam nevoie de o componentă pentru un alt proiect, o pot lua cu ușurință fără să-mi fac griji că nu pot folosi din nou sistemul.
Pasul 2: Cablare
Am lipit niște pinte de antet feminin pe o placă de perfecționare pentru a se potrivi cu pinii de antet Arduino pro mini. În urma acestui lucru, am lipit pini de antet de sex masculin pentru a permite accesul la I / O. Restul componentelor au fost montate pe cadrul imprimat 3D și conectate folosind fire jumper.
Pasul 3: Teoria controlului
Acum trecem la miezul proiectului. Pentru a menține robotul echilibrat, trebuie să generăm un semnal de control adecvat pentru a conduce motoarele în direcția corectă și la viteza corectă pentru a menține robotul echilibrat și stabil. Pentru a face acest lucru, vom folosi un popular algoritm de buclă de control cunoscut sub numele de controler PID. După cum sugerează acronimul, există trei termeni pentru acest controler, aceștia sunt termenii proporționali, integrali și derivați. Fiecare dintre acestea este însoțit de coeficienți care determină influența lor asupra sistemului. De multe ori, cea mai consumatoare de timp a implementării controlerului este reglarea câștigurilor pentru fiecare sistem unic pentru a obține cel mai optim răspuns.
- Termenul proporțional înmulțește direct eroarea pentru a da o ieșire, deci cu cât eroarea este mai mare, cu atât răspunsul este mai mare
- Termenul integral generează un răspuns bazat pe o acumulare a erorii pentru a reduce eroarea la starea de echilibru. Cu cât sistemul este mai dezechilibrat, cu atât mai repede vor răspunde motoarele
- Termenul derivat este derivatul erorii care este utilizată pentru a prezice răspunsul viitor și, prin aceasta, reduce oscilația datorată depășirii stării de echilibru.
Principiul de bază al acestui algoritm este de a calcula continuu unghiul de înclinare care este diferența dintre poziția dorită și poziția curentă, aceasta fiind cunoscută sub numele de eroare. Apoi folosește aceste valori de eroare și calculează suma răspunsurilor proporționale, integrale și derivate pentru a obține o ieșire, care este semnalele de control trimise către motoare. Ca rezultat, dacă eroarea este mare, semnalul de comandă trimis motoarelor va roti motoarele la viteză mare pentru a ajunge la o stare echilibrată. La fel, dacă eroarea este mică, semnalul de comandă va roti motoarele cu viteză redusă pentru a menține robotul echilibrat.
Pasul 4: Utilizarea MPU 6050
Biblioteca MPU6050
github.com/jrowberg/i2cdevlib/tree/master/…
Calibrarea compensărilor Nu toți senzorii sunt replici exacte ale celuilalt. Ca rezultat, dacă testați două MPU 6050, puteți obține valori diferite pentru accelerometru și giroscop atunci când sunt plasate pe aceeași suprafață. Pentru a depăși acest unghi constant de compensare, trebuie să sărbătorim fiecare senzor pe care îl folosim. Rularea acestui script:
www.i2cdevlib.com/forums/topic/96-arduino-…
scris de Luis Rodenas, vom primi compensări. Erorile de offset pot fi eliminate prin definirea valorilor de offset în rutina setup ().
Utilizarea procesorului de mișcare digitală
MPU6050 conține un DMP (procesor de mișcare digitală).
Ce este un DMP? Vă puteți gândi la DMP ca la un microcontroler de la bord care procesează mișcarea complexă de la giroscopul cu 3 axe și accelerometrul cu 3 axe de la bordul mpu6050, folosind algoritmi proprii de fuziune a mișcării. Descărcarea procesării care altfel ar fi făcută de Arduino
Cum să-l folosească? Pentru a afla cum să utilizați DMP, consultați exemplul schiței MPU6050_DMP6 care vine cu biblioteca MPU6050 (în IDE Arduino: Fișier-> Exemplu-> MPU6050-> MPU6050_DMP6). Aceasta este, de asemenea, o bună oportunitate de a verifica dacă senzorul funcționează efectiv și cablajul este corect
Pasul 5: Codificare
Am folosit Arduino IDE și o interfață FTDI pentru a programa Arduino pro mini.
Folosind schița de exemplu (MPU6050_DMP6) care vine împreună cu biblioteca MPU6050 ca cod de bază, am adăugat funcții PID () și MotorDriver ().
Adăugați biblioteca
- MPU6050: Pentru a utiliza senzorul MPU6050 va trebui să descărcăm biblioteca de dezvoltatori I2C de la Jeff Rowberg și să o adăugăm în folderul „biblioteci” Arduino din fișierele de programe de pe computer.
- Wire: Avem nevoie și de biblioteca Wire pentru a ne permite să comunicăm cu dispozitivele I2C.
Pseudo cod
Includeți biblioteci:
- Sârmă.h
- MPU6050
- I2Cdev.h
Inițializați variabile, constante și obiecte
Înființat ()
- Setați modul pin pentru controlul motoarelor
- Setați modul pin pentru LED-ul de stare
- Inițializați MPU6050 și setați valorile de offset
PID ()
Calculați valoarea PID
MotorDriver (răspuns PID)
Folosiți valoarea PID pentru a controla viteza și direcția motoarelor
Bucla ()
- Obțineți date de la DMP
- Apelați funcțiile PID () a MotorDriver ()
Pasul 6: Procedura de reglare PID
Aceasta este cea mai obositoare parte a proiectului și necesită puțină răbdare, cu excepția cazului în care veți avea mare noroc. Iată pașii:
- Setați termenul I și D la 0
- Ținând robotul, reglați P astfel încât robotul să înceapă să oscileze în jurul poziției de echilibru
- Cu setarea P, creșteți I astfel încât robotul să accelereze mai repede atunci când nu este echilibrat. Cu P și I sunt reglați corespunzător, robotul ar trebui să se poată echilibra automat cel puțin câteva secunde, cu o oarecare oscilație
- În cele din urmă, creșterea D reduce oscilația
Dacă prima încercare nu dă rezultate satisfăcătoare, repetați pașii cu o valoare diferită de P. Rețineți, de asemenea, că puteți regla fin valorile PID după aceea, pentru a crește și mai mult performanța. Valorile de aici sunt dependente de hardware, nu vă mirați dacă obțineți valori PID foarte mari sau foarte mici.
Pasul 7: Concluzie
Micromotoarele folosite trebuiau să încetinească pentru a reacționa la perturbări mari și având în vedere că sistemul era prea ușor, nu exista suficientă inerție pentru a obține efectul pendul dorit, așa că, dacă robotul se apleacă în față, acesta se va înclina într-un unghi și va alerga înainte. În cele din urmă, roțile imprimate 3D sunt o alegere proastă, deoarece continuă să alunece.
Sugestii de îmbunătățire:
- Motoarele mai rapide cu cuplu mai mare, adică pentru motoarele de curent continuu este mai mare tensiunea nominală cuplul mai mare
- obțineți o baterie mai grea sau pur și simplu mutați masa puțin mai sus
- Înlocuiți roțile imprimate 3D cu cele din cauciuc pentru a obține mai multă tracțiune
Recomandat:
Robot de asistență la urcare în turn - Control cu două picioare, RF, BT cu aplicația: 22 de pași (cu imagini)
Tower Climb Helping Robot V1 - Control cu două picioare, RF, BT cu aplicația: Când văd șopârle pe pereți, intenționez să fac un robot ca acesta. Este o idee pe termen lung, caut multe articole pentru electro-adezivi și verific într-un fel și nu am reușit capacitatea sa de a deține. Doar deocamdată intenționez să-l fac folosind electromagnetul pentru
Proyecto Laboratorio De Mecatrónica (robot cu două roți): 6 pași
Proyecto Laboratorio De Mecatrónica (Two Wheel Balance Robot): În acest proiect se arată, funcționarea și cum să faci pentru a elabora un " Two wheel balance robot " paso a paso y con explicación y concejos. Este un sistem care constă în care robotul nu trebuie să fie caer, trebuie să se mențină în
Robot: Două moduri mobile controlate de Windows Phone.: 6 pași (cu imagini)
Robot: Two Ways Mobile Controled by Windows Phone .: List: Arduino Uno L 293 (Bridge) HC SR-04 (Sonar Module) HC 05 (Bluetooth Module) Tg9 (Micro Servo) Motor with Gear Box (Two) Holder Baterry (for 6 AA) Conectați firele de fixare a lentilelor (pin de la tată la tată) Conexiuni de cablu Adeziv fierbinte (stick
Curățarea unei camere de generația a doua sau a doua: 8 pași
Curățarea unui Roomba de prima sau a doua generație: un robot curat este un robot fericit
Construiți un robot foarte mic: faceți cel mai mic robot cu roți din lume cu un dispozitiv de prindere .: 9 pași (cu imagini)
Construiți un robot foarte mic: faceți cel mai mic robot cu roți din lume cu un dispozitiv de prindere. Este controlat de un microcontroler Picaxe. În acest moment, cred că acesta ar putea fi cel mai mic robot cu roți din lume, cu mâner. Fără îndoială că va