This shows you the differences between two versions of the page.
pm:prj2021:abirlica:robot_ocolitor_de_obstacole [2021/05/30 23:34] daniel.asimionesei |
pm:prj2021:abirlica:robot_ocolitor_de_obstacole [2021/05/31 15:31] (current) daniel.asimionesei [Rezultate Obţinute] |
||
---|---|---|---|
Line 120: | Line 120: | ||
produce mişcare, ele nu pot fi conectate direct la ieşirile (pinii) unui microcontroller. Se | 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ă | impune separarea semnalelor de comandă de circuitul de putere, şi acest lucru se realizează | ||
- | prin folosirea punnilor H (“H bridges”). | + | prin folosirea punnilor H (“H bridges”). \\ |
- | L-am ales pentru ca: | + | L-am ales pentru ca:\\ |
- | 1) Orientarea câmpului are loc prin intermediul comutatorului mecanic | + | 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 | + | 2) Variabilele de control sunt Curentul de curent și Curentul de câmp, măsurate DIRECT de la motor\\ |
- | 3) Controlul cuplului este direct | + | 3) Controlul cuplului este direct\\ |
- | 4) Control precis și rapid al cuplului | + | 4) Control precis și rapid al cuplului\\ |
- | 5) Răspuns înalt de viteză dinamică | + | 5) Răspuns înalt de viteză dinamică\\ |
- | 6) Simplu de controlat | + | 6) Simplu de controlat\\ |
- | 7) Tensiunea de lucru a motorului: 3-6V | + | 7) Tensiunea de lucru a motorului: 3-6V\\ |
* Jumper wires | * Jumper wires | ||
Line 137: | Line 137: | ||
Am folosi puntea duală L298N Dual H-Bridge, pentru ca este | Am folosi puntea duală L298N Dual H-Bridge, pentru ca este | ||
- | capabilă să actioneze două motoare DC în acelaşi timp. | + | 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 193: | 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 Mega, utilizarea bibliotecii dezactivează funcționalitatea analogWrite ()\\ | + | La Arduino Uno, această bibliotecă va dezactiva PWM pe pinii 9 şi 10, |
- | (PWM) pe 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> | ||
\\ | \\ |