Table of Contents

Robot Pendul Invers

Autor: Ionescu Andrei

Grupa: 333CA

Introducere

Proiectul consta intr-un robotel pe 2 roti, controlat din telecomanda, ce isi tine singur echilibrul.

Scopul acestuia este atat unul didactic (invatat despre controlul automat) cat si unul recreational (practic este o jucarie).

Modificat, proiectul poate fi util in diverse moduri. De exemplu, o varianta mai mare a robotului cu un atasament ar putea servi drept o masuta “smart” care poate urmari utilizatorul. Cu arcuri sau alte modificari ale rotilor, ar putea fi un robot biped capabil sa traverseze teren accidentat.

Descriere generală

Functionarea:

In mod repetat, senzorul de giroscop ofera informatii despre orientarea si acceleratia robotului. Acestea pot fi folosite ca o eroare, diferenta fata de valori tinta, iar un algoritm de control automat PID poate fi folosit de microcontroller pentru a trimite catre driverele motoarelor puterea si directia cu care sa mearga pentru a corecta eroarea mentionata anterior.

Pentru a-si mentine echilibrul, robotul trebuie sa isi mentina centrul de greutate deasupra axei rotilor, iar pentru a se deplasa inainte sau inapoi, robotul trebuie sa isi mentina centrul de greutate in fata, respectiv in spatele axei rotilor. Practic, aceste stari reprezinta valori tinta ale orientarii date de giroscop.

Comenzile robotului sunt transmise prin bluetooth folosind un controller duallshock 4 sau un telefon.

Hardware Design

Piese mecanice folosite:

Piese electronice folosite:

Piese mecanice inlocuite:

Piese electronice inlocuite

Schema electrica

Software Design

Modelul matematic al pendulului invers:

Pornind de la ecuatia:

$a - \frac{g}{l}sin(\theta) = 0$

unde:

putem prezice miscarea libera a robotului printr-o metoda matematica. Aceasta este folositoare deoarece algoritmul de control automat PID necesita un astfel de model pentru a functiona.

Algoritmul de control automat:

Cunoscut ca si algoritmul controller-ului proportional-integral-derivat (PID pe scurt), acesta este o metoda bazata pe o bucla de control cu feedback. Concret, consta in calcularea unei valori de eroare $e(t)$, diferenta dintre valoarea tinta $SP$ si variabila de proces masurata $PV$, apoi aplicarea unei corectii bazata pe 3 termeni:

Ecuatia:

$u(t) = K_pe(t) + K_i\int_0^t{e(\tau)d\tau} + K_d\frac{de(t)}{dt}$

unde:

ne ofera schimbarea ce trebuie efectuata asupra puterii motoarelor pentru a mentine echilibrul robotului.

Lock anti-phase drive:

Trebuie mentionat ca driverele de motor sunt speciale, avand capacitatea de a fi controlate prin PWM in mod diferit: pinul de PWM poate fi tras la tensiunea de referinta in timp ce pinii de intrare (ce controleaza directia) pot accepta un semnal PWM. Astfel, un duty cycle de 50% reprezinta o franare rigida (motoarele se vor opune activ miscarii) in timp ce 0% si 100% reprezinta miscare la putere maxima inainte sau inapoi. Aceasta caracteristica este avantajoasa robotului intrucat ajuta la un control mai precis.

Pentru a se deplasa, robotul ar trebui pur si simplu sa isi mentina centrul de greutate in fata sau in spatele axului rotilor. Acest lucru se efectueaza din software prin schimbarea valorii $SP$ DAR mai intai ar trebui ca robotul sa plece brusc in directia opusa directiei dorite de mers, lasand inertia sa “traga” rotile de sub greutatea robotului.

Comunicare bluetooth:

Intrucat Arduino are optiunea de a comunica prin bluetooth folosind module externe, am ales un microcontroller ESP32-S3, acesta avand integrat o antena si modulele necesare. Astfel, un controller Duallshock 4 ar putea fi conectata la robot pentru manevrarea wireless a acestuia, intr-un mod relativ simplu: adresa MAC a microcontroller-ului trebuie sa fie aceeasi cu cea stocata de controller.

Rezultate Obţinute

In final, suportul mecanic hardware este terminat, componentele electronice sunt lipite dar lipsesc conexiunile, dat fiind dificultatea cositoririi firelor, iar partea de software este la stadiul de teorie intrucat este greu de implementat/testat fara suportul electronic.

Concluzii

Lucruri ce pot fi imbunatatite

Sunt de parere ca proiectul a fost unul de o complexitate crescuta dar ar fi fost dus la bun sfarsit cu mai mult timp la dispozitie!

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Proiectul Eagle ce contine schematicul robotului.

Jurnal

Progres:

Bibliografie/Resurse

Resurse Hardware:

Resurse Software:

Export to PDF