duminică, 6 martie 2022

Sistem automat de iluminare alb/rosu functie de sens de deplasare locomotiva analogica

english version 

   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:
iar daca se deplaseaza cu spatele
   Am conectat montajul facut pe breadboard in paralel cu alimentrea de pe sina, care este alimentata cu schimbare de sens de un montaj presentat in articolul Sistem automat pentru control deplasare fata-spate a unei locomotive analogice si am facut 2 filmulete:

sâmbătă, 5 martie 2022

Sistem automat pentru control deplasare fata-spate a unei locomotive analogice (2)

   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

joi, 3 martie 2022

Sistem automat pentru control deplasare fata-spate a unei locomotive analogice

english version

     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.

   Pentru a nu reinventa roata, am cautat pe internet proiecte similare, primul gasit fiind prezentat in filmuletul I Made an Automated Model Train With An Arduino avand sketch-ul la https://github.com/DIYandDigitalRR/arduino-automated-railroad doar ca foloseste comanda directa, fara pornire si franare lenta, eu am simulat functionarea impingand manual o locomotiva, dupa cum se vede in filmuletele, in care am folosit programul modificat automated_model_train_1.ino

- sistem control automat locomotiva (du-te/vino)

- Automatic Model Train (test)

apoi am dat de un blog corean, unde este articolul Back-and-forth train control by Arduino with IR sensor

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:
apoi am conectat un osciloscop pe alimentarea sinei, pentru a se vedea alimentarea cu sistem PWM cu varierea factorului de umplere:
    Dupa cum se vede din filmulete, am folosit tensiune redusa pentru a avea o viteza mica, datorita lungimii utile mici a sinei si a inertiei mecanice.

duminică, 13 februarie 2022

4 macazuri comandate cu servomotoare pentru diorama

     Deoarece placa Arduino (Uno, Nano) are mai multi pini, putem extinde proiectul cu macazul actionat de servo 

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)

   In articolul PWM in Arduino este o imagine sugestiva:
   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:
16.02.2022
   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)

sâmbătă, 12 februarie 2022

Control intensitate si stare (banda) led cu 2 butoane (2)

    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:
   Atingerea limitelor, se vede, la montajul de test, prin aprinderea ledului galben:
- limita minima:
- limita maxina:

Control intensitate si stare (banda) led cu 2 butoane

    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
- led la maxim, PWM 100% (nivel 255 din 255);
    Programul, brightness_control_led_1a.ino, scris de mine, derivat din ce am prezentat in articolul Masurare timpi apasare butoane folosind functia millis(), face urmatoarele:
- buton 1 apasat scurt: stinge led
- buton 2 apasat scurt: aprinde led (la nivelul reglat anterior)
- buton 1 apasat lung: scade progresiv intensitatea luminoasa
- buton 2 apasat lung: creste progresiv intensitatea luminoasa
dupa cu se vede in filmuletele:
  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