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 00:29]
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 46: Line 47:
     * 2 condensatoare de decuplare, 0.1uF si 22uF     * 2 condensatoare de decuplare, 0.1uF si 22uF
     * 1 condensator de 1nF     * 1 condensator de 1nF
 +
 +=== Piese mecanice inlocuite: ===
 +  * 2 roti de diametru 7cm (incompatibile cu axul motoarelor)
  
 === Piese electronice inlocuite === === Piese electronice inlocuite ===
Line 55: Line 59:
     * 2 condensatoare,​ 100uF si 1mF     * 2 condensatoare,​ 100uF si 1mF
     * dioda Schottky     * dioda Schottky
 +  * Condensatoare de 1uF (valoare prea mare)
 ==== Schema electrica ==== ==== Schema electrica ====
 {{ :​pm:​prj2022:​avaduva:​schematicv1.2.png?​nolink&​800 |}} {{ :​pm:​prj2022:​avaduva:​schematicv1.2.png?​nolink&​800 |}}
 ===== Software Design ===== ===== Software Design =====
 +
 +=== Modelul matematic al pendulului invers: ===
 +Pornind de la [[https://​en.wikipedia.org/​wiki/​Inverted_pendulum#​Equations_of_motion|ecuatia]]:​
 +
 +$a - \frac{g}{l}sin(\theta) = 0$
 +
 +unde:
 +  * $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 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:
 +  * 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 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.
 +
 +
 +<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.
 +
 +
  
  
-<note tip> 
-Descrierea codului aplicaţiei (firmware): 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) 
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi 
-  * (etapa 3) surse şi funcţii implementate 
-</​note>​ 
  
 ===== 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 83: 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 ​intrucat zeci de ore de lucru nu au fost suficiente pentru finalizarea sa! </​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>​
 ===== Download ===== ===== Download =====
  
Line 93: Line 135:
 </​note>​ </​note>​
  
 +{{:​pm:​prj2022:​avaduva:​eagleproiectpm.zip|Proiectul Eagle ce contine schematicul robotului.}}
 ===== Jurnal ===== ===== Jurnal =====
  
Line 98: 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.
 +  * Concluzia a fost adaugata.
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
Line 113: 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.1654118983.txt.gz · Last modified: 2022/06/02 00:29 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