Pe piata se gasesc, relativ usor, lediri bicolore alb/rosu cu 3 pini, anod comun, de 3 si 5mm diametru, asa ca putem adauga locomotivelor analogice lumina, ce se schimba automat la schimbarea directiei de deplasare, alb cand se deplaseaza in fata si rosu pentru deplasare cu spatele.
Am gasit led bicolor alb/rosu de 5mm la TME, avand codul LTW30EEDYJA, respectiv de 3mm avand codul OSRWPA3132A.
Deoarecele locomotiveleanalogice uzuale se aliemtneaza cu tensiune continu de 12V, iar sensul de deplasare se modifica prin schimbarea polaritatii tensiunii de alimentare, am conceput o shcema sipla, care are doar 3 componente in afara ledului bicolor cu 3 pini (in cazul de fata cu anod comun): 2 diode redresoare de tip 1N4007 si o rezistenta de 680Ω..1kΩ:
Daca locomotiva se deplaseaza normal circuitul prin care circula curent aste:
Am intrat in posesia unei locomotive Fleischmann 1966, ce necesita curatiere. Am primit un pont cu filmuletul 1966 Fleischmann 1306 Shunter: O&K MV9 - Bringing it back to life cu pasii ce trebuie urmati pentru curatiea (colectorului) motorului si a angrenajelor locomotivei.
Dupa curatire si ungere,
am pus locomotiva pe sina flexibila alimentta cu o punte H controlata de o placa Arduino (Nano) ce primeste informatii de la 2 senzori infrarosii pentru oprire la capete si schimbare sens de deplasare.
In artiolul anterior, pornirea se face lent pornind de la 0 la 100%, dar am constatat ca locomotiva aceasta, in comparatie cu cea testata antterior (din generatie mult mai oua), nu porneste decat la tensiune mare, asa ca am schimbat ulterior ca si tensiunea de pornire (alimentare initiala motor) sa fie la cca 40% din tensiunea maxima, sketch-ul modificat devine controlled_model_train_1b.ino.
Testele cu locomotiva pe circuitul automatizat, dar cu sketch-ul antetrior sunt:
Schema automatizarii de deplasare de la un capat la altul al unei linii(sine) este aceeasi:
si o reprezentare a modului de accelerare, deplasare si franare este prezentata mai jos
Daca trenuletul (sau doar locomotiva) se deplaseaza in fata (inspre dreapta, in schita mea) si este activat senzorul de proximitate cu infrarosu nr. 2, atunci viteza scade lent la zero. Dupa un timp de repaus (4 secunde, in programul actual), locomotiva pleaca lent, pana la viteza maxima, dupa care, la activarea senzorului de proximitate nr.1 (cel din stanga), viteza scade lent pana la zero. Dupa o pauza similara, trenul reporneste in directia opusa si ciclul se repeta pana la intreruperea alimentarii.
O alta reprezentare ca timp, a primelor deplasari, este
Din lipsa de spatiu pentru a ma "juca" cu trenuletul electric in posesia caruia am intrat, a trebuit sa realizez un sistem de comanda automata, care deplaseaza locomotiva dintr-un capat in altul a lui linii drepte. Capetele de cursa sunt sesizate cu module cu infrarosu, de fapt pozitiile de franare, ddeoarece oprirea nu e instantanee datorita inertiei mecanice, ca si in cazul real, cand se apasa frana, dar oprirea efectiva este dupa cativa metri.
care indeplineste toate "cerintele" mele, pornire si oprire lenta la du-te/vino pe sina.
Programul adaptat de mine este controlled_model_train_1a.ino si prima data am facut o simulare cu un vagon impins cu mana, dupa cum se vede in filmuletele:
apoi am realizat montajul real folosind o sina flexibila de 90cm, suficienta pentru teste si care incape pe pervazul ferestrei.
Schema montajului este
in care am adaugat un modul cu L298 (punte H dubla, la care folosesc doar jumatate), pe langa cele 2 module detectie capete de cursa cu infrarosu si cele 4 leduri inseriate cu rezistente.
Am folosit acelasi sketch, mentionat mai sus si primele teste sunt prezentate in filmuletele:
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