Autorul poate fi contactat la adresa: Login pentru adresa
M.I.A.U. este un brat robotic ce te ajuta sa obtii o manichiura speciala
Fie ca nu ai chef sau timp, M.I.A.U. este aici pentru tine! Cu o mana iti scrii tema la SO, iar de cealalta se ocupa M.I.A.U. De acum nu mai trebuie sa alegi intre teme si o manichiura perfecta
Ideea de la care am pornit este colectia mea in continua crestere de oje impreuna cu lipsa timpului pentru a le folosi.
Consider ca produsul final nu va avea precizia necesara unei manichiuri cu adevarat perfecte, insa va fi un mod amuzant de a-ti face unghiile.
In plus, proiectul are scopul de a ma ajuta sa aplic cunostintele obtinute la PM intr-un mod placut.
Bratul robotic este format din 3 servomotoare si va tine o pensula. La apasarea Buton1, bratul se va misca din pozitia de repaos catre o pozitie bine stiuta si va cobori pensula in sticluta de oja amplasata intr-un cadru special, revenind apoi in pozitia de repaos. La apasarea Buton2, bratul se va misca catre pozitia pentru aplicare a ojei. Utilizatorul trebuie sa isi aseze degetul inntr-o zona speciala.
Schema bloc:
Lista de piese:
Schema electrica:
Mediul de dezvoltare: Sublime on Windows10, Bash on Ubuntu on Windows
Servomotoarele sunt motoare cu 3 pini (VCC, GND si semnal de control) care se controleaza prin PWM. SG90 se pot roti aproximativ 180°, iar semnalul de control este la 5V. Pentru a controla servomotorul avem nevoie de un semnal cu o frecventa fixa de 50Hz (20 ms), iar pulsurile de 1-2ms dau miscarea motorului: 1ms ⇔ dreapta 180°, 2ms ⇔ stanga 0°; ceea ce inseamna un factor de umplere intre 5 si 10%.
ATmega324 are 3 timere ce pot fi utilizate pentru a genera semnal PWM. Cu toate astea, intrucat este necesara o frecventa de 50Hz, iar frecventa microprocesorului este de 16MHz, nu putem genera frecventa dorita decat cu timerul 1 (16 biti), celelalte (de 8 biti) dand overflow pentru orice prescaler folosit. Astfel, doua dintre servomotoare folosesc canalele A si B ale timerului 1.
Am setat registrii timerului 1 astfel incat sa obtin FastPWM cu top la ICR1, prescaler de 8. Folosind formula modului FPWM pentru frecventa am obtinut TOP = F_CPU/50Hz* PS -1 = 39999. Modificand valoarea lui OCR1A respectiv OCR1B intre ICR1 - 4000, ICR1 - 2000, rotesc servomotorul la diferite unghiuri.
Pentru a controla ultimul servomotor folosesc timerul 0 si simulez un semnal PWM pe un pin oarecare (am ales PC4). Am setat timerul astfel incat sa genereze o intrerupere la fiecare ciclu de ceas. Tratarea intreruperii presupune incrementarea unui contor global; cand atinge valoarea 4999(valoare obtinuta pentru TOP folosind prescaler de 64) resetez contorul si pun pinul pe 1; cand contorul are o valoare setata global pentru controlul unghiului pun pinul pe 0. Valoarea pentru controlul unghiului trebuie sa fie in intervalul [200, 550] ⇔ [0°, 180°].
Am implementat si functii pentru rotirea servomotoarelor in functie de un anumit unghi dat in grade.
In main, verific apasarea celor 2 butoane; in functie de ce buton e apasat, rotesc cele 3 servomotoare astfel incat sa generez miscarea bratului.
Pot spune ca rezultatul obtinut coincide cu ceea ce mi-am propus sa fac: un brat robotic cu “personalitate”; un proiect realizat in facultate cu aspect de proiect realizat la gradinita . Intr-adevar, robotelul nu poate fi utlizat pentru a-ti face unghiile, insa este extrem de amuzant si functioneaza conform asteptarilor.
Proiectul a fost in final foarte distractiv, desi am intampinat mici dificultati in scrierea codului, la achizitionarea pieselor si la a lipi (m-am si ars destul de rau lipind ultimele butoane ). Au fost foarte utile proiectele colegilor din anii trecuti, unde am gasit rezolvari la unele probleme pe care le-am intampinat.
In ce priveste achizitionarea pieselor de pe AliExpress, sfatul meu ar fi sa faceti comanda cu foarte mult timp inainte. Servomotoarele luate de mine au fost ok, insa, asa cum scrie si in jurnal, a durat aproape 2 luni sa ajunga si au ajuns cateva zile prea tarziu asa ca am cumparat altele din tara. Ideal este sa hotarasti tema proiectului din timp si sa cauti piese la un pret ok in tara, cat timp mai sunt in stoc
Arhiva contine:
26.03.2018 : comandat servomotoare AliExpress
23.04.2018 : creare wiki, adaugare descriere si schema bloc
07.05.2018 : lipit componente de baza
08.05.2018 : esec incarcare Bootloader
13.05.2018 : prima versiune a schemei electrice
15.05.2018 : Bootloader pus cu succes pe placuta
16.05.2018 : speranta ca ar mai veni servomotoare la timp atinge nivele negative; caut si gasesc alternativa buna la pret pe optimus digital
17.05.2018 : observ ca servomotoarele de pe optimus digital nu mai sunt in stoc si comand servomotoare (mai scumpe) de pe un alt site
18.05.2018 : merg la “sediul” magazinului online sa ridic servomotoarele
19.05.2018 : construiesc piesele de lemn pentru brat; incep documentarea pentru controlul servomotoarelor; dupa multe versiuni fara succes si frustrari, reusesc sa scriu o versiune functionala pentru cele 2 servomotoare ce folosesc timerul 1
20.05.2018 : implementare control servo 1 folosind timerul 0 (am incercat si cu delay-uri insa nu functioneaza bine)
21.05.2018 : am primit de la posta servomotoarele comandate acum aproape 2 luni
23.05.2018 : refacut schema electrica; completat info pe wiki
24.05.2018 : am terminat de implementat functionalitatile si am realizat aspectul final al proiectului
Datasheet-uri folosite:
Resurse software:
Resurse hardware: