Differences

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

Link to this comparison view

pm:prj2021:abirlica:robot_ocolitor_de_obstacole [2021/05/30 19:57]
daniel.asimionesei
pm:prj2021:abirlica:robot_ocolitor_de_obstacole [2021/05/31 15:31] (current)
daniel.asimionesei [Rezultate Obţinute]
Line 7: Line 7:
 înapoi si se roteste in cel mai bun mod posibil. Fie în direcția stângă, dacă înapoi si se roteste in cel mai bun mod posibil. Fie în direcția stângă, dacă
 există un alt obstacol în dreapta, fie în direcția dreaptă, dacă există un alt există un alt obstacol în dreapta, fie în direcția dreaptă, dacă există un alt
-obstacol în partea stângă.+obstacol în partea stângă.Daca in ambele directii exista obstacole va alege directia  
 +care are distanta cea mai mare pana la obstacol.
 ===== Descriere generală ===== ===== Descriere generală =====
 ==== Schema bloc: ==== ==== Schema bloc: ====
 \\ \\
-{{:​pm:​prj2021:​abirlica:​screenshot_from_2021-05-16_20-22-07.png?500|}}+{{:​pm:​prj2021:​abirlica:​schem_bloc_robot.jpeg|}}
 \\ \\
 __**Componente:​**__ __**Componente:​**__
Line 104: Line 105:
 == Listă de piese: == == Listă de piese: ==
   * Arduino UNO   * Arduino UNO
 +Am ales Arduino UNO pentru ca este open-source. Pe lângă acestea include și o comunitate uriașă care se ocupă cu creația și distribuirea de proiecte care au ca scop crearea de dispozitive care pot sesiza și controla diverse activități sau procese în lumea reală.
   * Ultrasonic Sensor   * Ultrasonic Sensor
 +L-am ales pentru ca este compatibil cu Arduino și are unele avantaje față de senzorii analogici de distanță: are nevoie doar de pini I / O digitali, are o imunitate mai mare la zgomot și o precizie mai bună.Senzorul emite ultrasunete la o frecvență de 40000Hz care circulă prin aer, iar dacă întâlnește un obstacol, acesta se va întoarce înapoi spre modul, astfel, luând in considerare viteza sunetului se poate calcula distanța până la obiect. ​
 +
   * 2X DC Motors with wheels   * 2X DC Motors with wheels
 +Motoarele de curent continuu (DC motors) clasice convertesc energia electrică în lucru
 +mecanic. Viteza de rotaŃie a unui motor este proporŃională cu tensiunea de alimentare de la
 +bornele acestuia, iar direcŃia de rotaŃie depinde de polaritate (conectarea celor 2 fire de
 +alimentare ale motorului la +Vcc şi Gnd, sau vice-versa). Motoarele au cutie de viteze
 +(reductor de turaŃie) cu raport de 1:48, ceea ce înseamnă că pentru o rotaŃie completă a axului
 +extern se efectuează de fapt 48 de rotaŃii ale motorului electric. Folosirea unui reductor are
 +avantajul că măreşte forŃa de acŃionare, cu costul vitezei. ​
 +Datorită faptului că motoarele necesită o intensitate a curentului semnificativă pentru a
 +produce mişcare, ele nu pot fi conectate direct la ieşirile (pinii) unui microcontroller. Se
 +impune separarea semnalelor de comandă de circuitul de putere, şi acest lucru se realizează
 +prin folosirea punnilor H (“H bridges”). \\
 +L-am ales pentru ca:\\
 +1) Orientarea câmpului are loc prin intermediul comutatorului mecanic\\
 +2) Variabilele de control sunt Curentul de curent și Curentul de câmp, măsurate DIRECT de la motor\\
 +3) Controlul cuplului este direct\\
 +4) Control precis și rapid al cuplului\\
 +5) Răspuns înalt de viteză dinamică\\
 +6) Simplu de controlat\\
 +7) Tensiunea de lucru a motorului: 3-6V\\
 +
   * Jumper wires   * Jumper wires
   * Motor Driver L298   * Motor Driver L298
 +Punțile H sunt circuite care conțin 4 comutatoare (de
 +obicei tranzistori),​ numerotate S1, S2, S3 si S4.\\
 +{{:​pm:​prj2021:​abirlica:​punteh_robot.png?​200|}}
 +
 +Am folosi puntea duală L298N Dual H-Bridge, pentru ca este
 +capabilă să actioneze două motoare DC în acelaşi timp.\\
 +
   * breadboard ​   * breadboard ​
   * Motor Servo   * Motor Servo
 +Am ales Servo motor-ul pentru ca are rotatii partiale, stabile şi
 +controlate, pentru efectuarea unor operatii cu amplitudine mică dar cu precizie ridicată.
 +Folosesc acet motor pentru pozitionarea senzorului ultrasonic.\\
   * Battery   * Battery
-  * Leduri+
 \\ \\
 {{:​pm:​prj2021:​abirlica:​tinker_schema.jpg?​500|}}\\ {{:​pm:​prj2021:​abirlica:​tinker_schema.jpg?​500|}}\\
Line 162: Line 196:
 Servo-urile standard permit poziționarea arborelui în diferite unghiuri, de obicei între 0 și 180 de grade.\\ Servo-urile standard permit poziționarea arborelui în diferite unghiuri, de obicei între 0 și 180 de grade.\\
 Servomotoarele de rotație continuă permit reglarea rotației arborelui la diferite viteze.\\ Servomotoarele de rotație continuă permit reglarea rotației arborelui la diferite viteze.\\
-Pe alte plăci decât Megautilizarea bibliotecii dezactivează funcționalitatea analogWrite ()\\ +La Arduino Unoaceastă bibliotecă va dezactiva ​PWM pe pinii 9 şi 10, 
-(PWMpe pinii 9 și 10, indiferent ​dacă există sau nu un Servo pe acei pini.+indiferent ​de câte motoare se folosesc. \\ 
 +Functii folosite din biblioteca:​\\ 
 +1) servo.attach(pin) - atașează obiectul Servo la pini \\ 
 +-> servo: ​un obiect instanță a clasei ​Servo\\ 
 +-> pin: numărul pinului digital unde va fi atașat semnalul pentru motorul Servo\\ 
 +2)servo.write (angle) – scrie o valoare (0 .. 180) către servo, controlând mișcarea:​\\ 
 +Pentru Servo standard setează unghiul axului (grade) cauzând motorul să se \\ 
 +orienteze în direcția specificată. \\ 
 +**Functiile principace ale codului sursa:​**\\ 
 +void setup() -> setez valorile pinilor pentru senzorul ultrasonic, servomotor si driver motor, masor distanta initiala si setez pozitia servo motoru-lui la 125 grade;\\ 
 +void loop() -> logica programului ilustrata in diagrama de activitati;​\\ 
 +void leftRotate() -> rotesc roata din dreapta (pun pinii corespunzatori rotii din dreapta ​pe HIGH si pinii rotii din stanga pe LOW);\\ 
 +void rightRotate() -> rotesc roata din stanga (pun pinii corespunzatori rotii din stanga pe HIGH si pinii rotii din dreapta pe LOW);\\ 
 +void start_back_robot() -> rotesc rotile in sens invers acului de ceasornic;​\\ 
 +void start_front_robot() -> rotesc rotile in sensul acului de ceasornic;​\\ 
 +void stop_robot() -> pun toti pinii asociati rotilor pe LOW;\\ 
 +int leftDistance() -> rotesc servo motorul la 180 grade si calculez distanta pana la cel mai apropiat obiect din stanga pe baza functiei readDistance();​\\ 
 +int rightDistance() -> rotesc servo motorul la 55 grade si calculez distanta pana la cel mai apropiat obiect din dreapta pe baza functiei readDistance();​\\ 
 +int readDistance() -> calculez, folosind functia pulseIn(), lungimea impulsului în microsecunde si folosind formula distance = (duration/​2) / 29.1, calculez distanta parcursa de unda in cm. 
 + 
 + 
  
 ===== Rezultate Obţinute===== ===== Rezultate Obţinute=====
-TODO+Etape asamblare robot:\\ 
 +{{:​pm:​prj2021:​abirlica:​rob1.jpg?​300|}}\\ 
 +{{:​pm:​prj2021:​abirlica:​rob2.jpg?​300|}}\\ 
 +{{:​pm:​prj2021:​abirlica:​rob3.jpg?​300|}}\\ 
 +{{:​pm:​prj2021:​abirlica:​rob4.jpg?​300|}}\\ 
 +{{:​pm:​prj2021:​abirlica:​rob5.jpg?​300|}}\\ 
 +Link demo:\\ 
 +https://​drive.google.com/​file/​d/​1AAcwMvYsA8oVTH_gbkBkm8aqjYMzawq0/​view?​usp=sharing
 ===== Concluzii ===== ===== Concluzii =====
-TODO+Proiectul ales mi s-a parut foarte interesant deoarece am invatat lucruri noi atat pe  partea de software (lucru cu biblioteci noi) cat si pe 
 +partea de hardware(sa lipesc fire, sa asamblez un circuit de la 0 si sa fac debugg pe fiecare componenta in parte).Pe parcursul proiectului 
 +am avut nenumarate probleme, de la scurtcircuit pana la probleme cu alimentarea sau lipituri gresite. 
 +Un exemplu de problema intalnita : nu conectam gnd-urile de la driver L298N , servomotor si senzor ultrasunet in acelas loc si nu stiam de ce nu merge robotul. 
 + 
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
-{{:​pm:​prj2021:​abirlica:​robot_ocolitor_de_obstacole.pdf|}}+{{:​pm:​prj2021:​abirlica:​robot_ocolitor_de_obstacole.zip|}}\\ 
 +{{:​pm:​prj2021:​abirlica:​robot_ocolitor_de_obstacole.pdf|}}\\
 <​note>​Link catre pagina: https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​abirlica/​robot_ocolitor_de_obstacole </​note>​ <​note>​Link catre pagina: https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​abirlica/​robot_ocolitor_de_obstacole </​note>​
 \\ \\
pm/prj2021/abirlica/robot_ocolitor_de_obstacole.1622393863.txt.gz · Last modified: 2021/05/30 19:57 by daniel.asimionesei
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