Autor: Iercosan-Lucaci Alexandru 336CA
Proiectul reprezinta suportul mecanic si de software pentru a transforma o camera fixa intr-o camera care poate glisa de-a lungul unei axe. Glisarea camerei poate fi controlata cu un display sau direct, de catre alte echipamente, prin interfata electronica.
Cadrul principal al proiectului este o sina facuta din 2 axe de precizie. Electronica principala (microcontroller-ul, ecranul, interfata umane) sta intr-o carcasa printata la un capat. Celalalt capat al sinei are un opritor mecanic. De-a lungul sinei exista o cremaliera.
Patina glisanta este o componenta (la fel ca restul pieselor mecanice, fabricata la imprimanta 3D) care se poate deplasa de-a lungul sinei. De patina sunt fixate camera video si un motor cu roata dintata, care asigura deplasarea.
Electronica:
Mecanica:
Mai jos avem o schema de bloc cu componentele proiectului si echema electrica:
Am impartit codul pe 3 compoente functionale:
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-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-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.
Camera glisanta functioneaza corect.
Pe parcursul proiectului am intampinat diverse dificultati:
Aici se gaseste codul sursa pentru placa Arduino: camera_glisanta.zip
https://youtu.be/QGTbm5zG8JY - Video prezentare
https://draw.io - Program folosit pentru desenat organigrama
https://kicad.org - Program folosit pentru desenat schema electrica