Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2022:avaduva:andrei.ionescu3107 [2022/06/02 01:27]
andrei.ionescu3107 [Concluzii]
pm:prj2022:avaduva:andrei.ionescu3107 [2022/06/02 03:07] (current)
andrei.ionescu3107 [Jurnal]
Line 1: Line 1:
 ====== Robot Pendul Invers ====== ====== Robot Pendul Invers ======
 Autor: Ionescu Andrei Autor: Ionescu Andrei
-<note important>​Pagina este in constructie!</​note>​+ 
 +Grupa: 333CA
 ===== Introducere ===== ===== Introducere =====
 Proiectul consta intr-un robotel pe 2 roti, controlat din telecomanda,​ ce isi tine singur echilibrul. Proiectul consta intr-un robotel pe 2 roti, controlat din telecomanda,​ ce isi tine singur echilibrul.
Line 63: Line 64:
 ===== Software Design ===== ===== Software Design =====
  
-<note tip> +=== Modelul matematic al pendulului invers: === 
-Descrierea codului aplicaţiei ​(firmware): +Pornind de la [[https://​en.wikipedia.org/​wiki/​Inverted_pendulum#​Equations_of_motion|ecuatia]]:​ 
-  * mediu de dezvoltare ​(if any(e.gAVR StudioCodeVisionAVR+ 
-  * librării şi surse 3rd-party ​(e.gProcyon AVRlib+$a - \frac{g}{l}sin(\theta= 0$ 
-  * algoritmi şi structuri ​pe care plănuiţi să le implementaţi + 
-  * (etapa 3surse şi funcţii implementate +unde
-</​note>​+  * $a$ este acceleratia unghiulara 
 +  * $g$ este acceleratia gravitationala 
 +  * $l$ este lungimea pendulului 
 +  * $\theta$ este unghiul fata de pozitia de echilibru 
 + 
 +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 [[https://​en.wikipedia.org/​wiki/​PID_controller|controller-ului proportional-integral-derivat]] ​(PID pe scurt), acesta este o metoda bazata pe o bucla de control cu feedbackConcretconsta 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: 
 +  * termenul **proportional** modifica valoarea $e(t)$, precum ii spune si numele, **proportional cu eroarea calculata**. Singur, acesta poate functiona, dar pot aparea probleme in cazuri dinamice, precum miscarea accelerata sau cu acceleratie non-constanta. 
 +  * termenul **integral** modifica valoarea $e(t)$ in functie de **eroare si timpul** pentru care aceasta a **persistat**Singur, acesta poate functiona, dar creaza un raspuns prea slab initial si prea puternic in apropierea punctului $PV$. 
 +  * termenul **derivat** modifica **rata de schimbare a erorii**, tintind la una constanta. Singur, acesta nu poate functiona intrucat nu modifica eroarea in sine, dar este cheia functionarii corecte a celorlalti termeni. 
 + 
 +Ecuatia: 
 + 
 +$u(t= K_pe(t) + K_i\int_0^t{e(\tau)d\tau} + K_d\frac{de(t)}{dt}$ 
 + 
 +unde: 
 +  * $u(t)$ este corectia ce va fi aplicata sistemului 
 +  * $K_p$, $K_i$ si $K_d$ sunt parametrii alesi prin incercare si esec sau prin calcul matematic (pe baza modelului discutat anterior) 
 +  * $t$ este timpul instantaneu 
 + 
 +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 directiapot 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. 
 + 
 + 
 +<note important>​ 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. ​</​note>​ 
 + 
 +=== 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 ===== ===== 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 robotul fizic.+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.
  
 {{ :​pm:​prj2022:​avaduva:​robot1.jpg?​nolink&​300|}} {{ :​pm:​prj2022:​avaduva:​robot1.jpg?​nolink&​300|}}
Line 86: Line 124:
   * Driverele de motor ar fi putut fi luate intr-o capsula mai usor de lipit de mana.   * Driverele de motor ar fi putut fi luate intr-o capsula mai usor de lipit de mana.
   * Firele ar fi fost mai usor de lipit sub forma de cupru solid, nu manunchi de fire mici.   * Firele ar fi fost mai usor de lipit sub forma de cupru solid, nu manunchi de fire mici.
 +  * O greutate ar putea fi adaugata in varful robotului, pentru ca acesta s-ar putea sa fie prea usor ca sa se deplaseze atunci cand este inclinat in momentul de fata.
  
 <​note>​ 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! </​note>​ <​note>​ 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! </​note>​
Line 96: Line 135:
 </​note>​ </​note>​
  
 +{{:​pm:​prj2022:​avaduva:​eagleproiectpm.zip|Proiectul Eagle ce contine schematicul robotului.}}
 ===== Jurnal ===== ===== Jurnal =====
  
Line 101: Line 141:
   * Tema a fost aleasa [[https://​docs.google.com/​spreadsheets/​d/​1z4RhEBLrTK5E1BRwp6diB5XuOj8LOmoaigpwqgArTDQ/​edit?​usp=sharing|aici]].   * Tema a fost aleasa [[https://​docs.google.com/​spreadsheets/​d/​1z4RhEBLrTK5E1BRwp6diB5XuOj8LOmoaigpwqgArTDQ/​edit?​usp=sharing|aici]].
   * Resurse Hardware au fost adaugate.   * Resurse Hardware au fost adaugate.
-  * (Niste) resurse ​Software au fost adaugate.+  * Resurse ​Software au fost adaugate.
   * Schema electrica a fost adaugata.   * Schema electrica a fost adaugata.
   * Lucruri ce pot fi imbunatatite au fost mentionate.   * Lucruri ce pot fi imbunatatite au fost mentionate.
   * Functionarea generala a robotului a fost adaugata.   * Functionarea generala a robotului a fost adaugata.
 +  * Design-ul software a fost adaugat.
   * Rezultatele obtinute au fost adaugate.   * Rezultatele obtinute au fost adaugate.
   * Concluzia a fost adaugata.   * Concluzia a fost adaugata.
Line 118: Line 159:
  
 === Resurse Software: === === Resurse Software: ===
- +  * [[https://​github.com/​aed3/​PS4-esp32|Interfatarea unui ESP32 cu un Dualshock 4]]
   * I2C [[https://​docs.espressif.com/​projects/​esp-idf/​en/​latest/​esp32s3/​api-reference/​peripherals/​i2c.html|(1)]] [[https://​www.espressif.com/​sites/​default/​files/​documentation/​esp32-s3_technical_reference_manual_en.pdf#​i2c|(2)]] pentru ESP32   * I2C [[https://​docs.espressif.com/​projects/​esp-idf/​en/​latest/​esp32s3/​api-reference/​peripherals/​i2c.html|(1)]] [[https://​www.espressif.com/​sites/​default/​files/​documentation/​esp32-s3_technical_reference_manual_en.pdf#​i2c|(2)]] pentru ESP32
  
pm/prj2022/avaduva/andrei.ionescu3107.1654122423.txt.gz · Last modified: 2022/06/02 01:27 by andrei.ionescu3107
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0