This shows you the differences between two versions of the page.
pm:prj2021:apredescu:camera_glisanta [2021/05/16 18:04] alexandru.iercosan [Hardware design] |
pm:prj2021:apredescu:camera_glisanta [2021/06/03 14:39] (current) alexandru.iercosan [Hardware design] |
||
---|---|---|---|
Line 13: | Line 13: | ||
==== Hardware design ==== | ==== Hardware design ==== | ||
Electronica: | Electronica: | ||
- | * Arduino Uno/Nano | + | * Arduino Nano |
- | * Driver motor stepper DRV8825 + motor NEMA-17 | + | * Driver motor stepper A4988 + motor NEMA-17 |
* LCD 1604 | * LCD 1604 | ||
* Adaptor LCD-I2C (PCF8574) | * Adaptor LCD-I2C (PCF8574) | ||
- | * Encoder rotativ (pentru interfata umana) | + | * Encoder rotativ (pentru interfata umana) - Inlocuit ulterior cu 3 butoane |
- | * Endstop optic H21LOB | + | * Endstop mecanim (Microswitch de precizie) |
Mecanica: | Mecanica: | ||
* 2 axe de precizie diametru 8mm | * 2 axe de precizie diametru 8mm | ||
- | * 4 Rulmenti liniari LM8LUU | + | * 3 Rulmenti liniari LM8LUU |
- | * Carcasa pentru electronica (3D printed) | + | * Componente de conectare mecanice fabricate la imprimanta 3D |
- | * Cremaliera si roata dintata (3D printed) | + | |
- | Mai jos avem o schema de bloc cu componentele proiectului: | + | Mai jos avem o schema de bloc cu componentele proiectului si echema electrica: |
- | {{:pm:prj2021:apredescu:camera-bloc.png?200|}} | + | {{:pm:prj2021:apredescu:camera-bloc.png?750|}} |
+ | {{:pm:prj2021:apredescu:camera-glisanta-schem.png?750}} | ||
==== Software design ==== | ==== Software design ==== | ||
+ | |||
+ | Am impartit codul pe 3 compoente functionale: | ||
+ | |||
+ | === Display === | ||
+ | |||
+ | Display-ul este responsabil sa faca interfata cu utilizatorul. Utilizatorul poate modifica 2 parametri (durata de stationare si numarul de opriri), si poate solicita trecerea fortata la urmatorul punct de oprire. | ||
+ | |||
+ | Componenta de software de display se ocupa cu afisarea meniurilor de selectare si editare. Cand valorile se editeaza, se trimite un update catre Planner. | ||
+ | |||
+ | === Planner === | ||
+ | |||
+ | Planner-ul primeste de la display cei doi parametri configurabili (durata de stationare si numarul de opriri) si este responsabil sa-i trimita Executor-ului pozitia la care sa mearga. | ||
+ | |||
+ | Acesta verifica regulat daca a expirat timpul de stationare, si daca da, trece la urmatorul punct de oprire. | ||
+ | |||
+ | === Executor === | ||
+ | |||
+ | Executor-ul este o componenta care ruleaza pe un interrupt la Timer2 al procesorului, la o frecventa de 50KHz. Aceasta tine minte pozitia la care se afla camera si primeste de la Planner pozitia la care trebuie sa ajunga. | ||
+ | |||
+ | La fiecare executie se verifica in ce directie trebuie sa se deplaseze si merge in acea directie. Daca a ajuns la destinatie, nu face nimic. | ||
+ | |||
+ | Tot executor-ul este responsabil de operatia de "Home" care ruleaza la inceputul programului. Din cauza ca un motor stepper nu poate sti in ce pozitie este cand aparatul este pornit, operatia de "Home" muta camera care un capat de cursa. Cand ajunge la capat, declanseaza un microswitch, moment in care se stie cu precizie care este pozitia. | ||
+ | |||
+ | Se poate intampla ca cele 3 butoane sa emita semnale oscilante intermediare cand sunt apasate, efectiv cauzand inregistrarea lor de mai multe ori. Pentru a preveni acest fenomen am implementat un algoritm simplu de debouncing. Dupa ce un buton este apasat, timp de 80ms, orice apasare succesiva a acelui buton este ignorata. | ||
==== Rezultate obtinute ==== | ==== Rezultate obtinute ==== | ||
- | ==== Concluzii ==== | + | Camera glisanta functioneaza corect. |
+ | |||
+ | Pe parcursul proiectului am intampinat diverse dificultati: | ||
+ | * Endstopul optic (planificat initial) a fost inlocuit de unul mecanic din cauza ca producea prea mult zgomot digital pe iesire. | ||
+ | * Encoderul rotativ a fost inlocuit de 3 butoane (sus, jos, select) in urma unui accident electric (alimentare la polaritate inversa) | ||
+ | * Nu este neaparat o dificultate, dar un inconvenient: Driverul de motor produce destul de mult zgomot, mai ales cand motorul sta pe loc sau se misca la viteze mici. Pe viitor, ar trebui inlocuit cu un driver Trinamic TMC2130 (interfata SPI) sau TMC2209 (interfata UART) | ||
==== Download ==== | ==== Download ==== | ||
- | ==== Jurnal ==== | + | Aici se gaseste codul sursa pentru placa Arduino: {{:pm:prj2021:apredescu:camera_glisanta.zip|}} |
==== Bibliografie/resurse ==== | ==== Bibliografie/resurse ==== | ||
+ | https://youtu.be/QGTbm5zG8JY - Video prezentare | ||
+ | |||
+ | https://draw.io - Program folosit pentru desenat organigrama | ||
+ | |||
+ | https://kicad.org - Program folosit pentru desenat schema electrica |