la 4 macazuri, fiecare macaz cu servomotorasul lui, cate 2 butoane de comanda (in stanga / in dreapta, drepta inainte / in stanga, etc) si cate o iesire pentru indicare directie.
Schema este urmatoarea, fiecare servomotor e conectat la cate un pin PWM (am ales D6, D9, D10 si D11)
Definirea pinilor folositi, la schema mea, este facuta in programul albasete_macaz_2b.ino
15.02.2022
Am simulat functionarea programului cu ajutorul programului SimulIDE:
incarcand hex-ul programului meu si am observat ca functionarea este cea corecta, pentru fiecare din cele 4 servomotorase, dupa cum se vede si in cele 2 filmulete:
Dragos (albasete) a inceput sa faca teste cu un macaz real conectat la servomotor). A montat pentru teste pe o placa de forex macazul și servo. In capetele macazului a pus pluta de 2 mm sa nu frece tija de placa și sa culiseze lejer.
Dragos mi-a trimis si un filmulet
Dupa niste discutii cu Dragos, am implementat si memorarea ultimelor pozitii, pentru a evita socurile mecanice la macaze. Programul ce memoreaza pozitiile in EEPROM-ul microcontrolerului de pe placa Arduino este albasete_macaz_3.ino si memoreaza valori doar daca sunt diferite de cele din memorie si la la 5 secunde de la ultima actionare.
17.02.2022
Intre timp, am facut 2 filmulete cu doar 2 servo (astea le-am avut la indemana):
Intarzieree scrierii valorilor fiecarui servo, se recomanda a fi mai mare, in caz ca se tot misca macazele, pentru a uza memoria EEPROM, in ultimul program este dupa 5 secunde dupa ultipa apasare a oricarui buton de comanda (asta si pentru a fi usor de yurmarit la tesste)
dar se poate mari la 30 secunde, valoare variabilei devenind 30000 (reprezentand ms)
Fata de ce am prezentat in articolul precedent, am adaugat un led care indica atingerea limitelor (minim si maxim), schema se modifica foarte putin:
Programul, de asemenea, implica modificari minore, rezultand versiunea brightness_control_led_1b.ino care are modul de functionare prezentat in filmuletele:
Pentru un mod de control complex cu doar 2 butoane a unui led sau a unei benzi led, putem folosi o placa Arduino, utilizand urmatoarea schema:
Cele 2 intrari (D2 si D3) sunt, in repaus, la nivel logic 1 (HIGH), deoarece sunt activate rezistentele internede pull-up (de ridicare a nivelului), astfel ca daca unul din butoanele fara retinere e apasat, intrarea corespunzatoare e la nivel logic 0 (LOW).
Iesirea (D9) este cu control PWM (semnal cu factor de umplere variabil), ce se va vedea in pozele de mai jos:
- led stins, PWM 0%
- led la nivel luminos scazut, PWM la valoare mica, minimul admis (5, ales de mine) pentru a fi folosita o lumina ambientala;
- led la un nivel luminos crescut, PWM la valoare mare
La scurt timp dupa publicarea articolului, Gheorghe Vlad mi-a spus ca acest program poate functiona foarte bine si pe ATTiny85, cu redefineirea pinilor (program PWM-LED-2BT-ATTINY85.ino
Fata de macazul prezentat in articolul precedent, acum voi folosi un singur pin pentru a comanda 2 leduri, schema fiind
Programul adaptat este albasete_macaz_1b.ino si difera, in mare parte, prin modul de comanda al celor 2 leduri, deoarece folosesc doar iesirea D5, astfel:
- cand iesirea este in 1 logic (HIGH) se aprinde LED1
- cand iesirea e in 0 logic (LOW) se aprinde LED2
In filmuletele urmatoare se vede modul de functionare:
In continuarea articolelor in care am prezentat bariere comandate (din buton sau cu senzori), de data asta voi prezenta un macaz comandat din 2 butoane, cate unl pentru directia de deplasare.
Prima schema de test, in care am folosit un program adaptat din cel al barieriei cu butoane, este
Programul folosit este albasete_macaz_1a.ino si modul de functionare este prezentat in filmuleltele:
Dupa cum prezentasem in articolul anterior, am adaugat 4 senzori infrarosii pentru detectia prezentei trenuletelor pe 2 cai de rulare (cate 2 pe o linie, in stanga si dreapta barierelor).
Schema de test este:
si a fost realizata total pe un simplu breadboard de mine