duminică, 22 mai 2022

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

     Pregatind o veche locomotiva analogica sa devina digitala, am adaugat acesteia un sistem cu 4 leduri bicolore (alb-rosu) cu anod comun si 8 rezistente pentru a avea 2 leduri aprinse in alb (in fata) si 2 aprinse in rosu (in spate) cand se face deplasarea in fata, respectiv 2 leduri aprinse in rosu (in fata) si 2 aprinse in alb (in spate), cand se face deplasarea in spate... lucrarea nu este finalizata, dar sistemul are 3 fire, unul albastru, pentru un plus comun, un fir alb pentru aprinderea luminilor corespunzatoare deplasarii in fata si unul rosu pentru aprinderea luminilor corespunzatoare deplasarii in spate. Acest sistem  fost descris in articolul Transformarea unui locomotive analogice intr-una digitala (2).

   Intr-un articol trecut am conceput si testat un sistem cu led bicolor (alb-rosu) cu anod comun pentru a fi folosit la o locomotiva analogica (am reinventat roata, ca nu am cautat destul de atent pe net)
    Deoarece spatul liber, la locomotiva pe care o detin si vreau sa fac teste cu sistemul digital, este mic o sa imi fie greu sa testez si pentru una analogica, am zis sa vad daca sistemul se poate adapta si pentru sistemul analogic (si, bineinteles ca, merge).
   Teste ca locomotiva digitala, la care ma refeream, am facut, cu o placa adaptoare si decodorul + leduri puse deasupra boghiului, dupa cum se vede in articolul Transformarea unui locomotive analogice intr-una digitala (1)
   Revenind la sistemul de iluminare automat pentru o locomotiva analogica, fata de schema testata pentru sistemul digital

necesita doar 2 diode in plus
   Alimentand sistemul de 4 leduri la 15V, avem un consum de cca 60mA
- simulare deplasare in fata 
- simulre deplasare in spate
PS: Schema se poate simplifica, reducand numarul de rezistente la 4:
Am facut si 2 filmulete:

29.05.2021
   Noul coleg, Virgil, a recablat firele pentru sistemul cu 4 leduri bicolore cu anod comun si doar 4 rezistente in carcasa de locomotiva micuta:

sâmbătă, 21 mai 2022

Transformarea unui locomotive analogice intr-una digitala (2)

    Dupa ce am vazut cum functioneaza o locomotiva digitala, am zis sa transform "monstrul" in ceva prietenos, in sensul de a adauga lunimi si decodorul in interiorul carcasei locomotivei.

   Primul pas a fost cel in care am adaugat lumini (fizic). In prima faza, am vrut sa pun un led bicolor alb/rosu in fata si unul in spate, dar existand deja cate 2 gauri in fata si 2 in spate, am schimbat strategia.

punand 4 leduri bicolore cu anod comun (alb/rosu)
Testarea celor 2 leduri bicolore
prin alimentareacu 15V:
- alb
- rosu
apoi am conectat si ledurile de partea dreapta:
si am testat:
- alb
- rosu:
   Schema a ce am facut este:
 
   Concret, aceasta schema se va conectat la decodor astfel (schema gasita in articolul de la http://www.klaus-dieter-frohn.de/digital/nem652.htm)
  Am facut si 2 filmulete scurte:

29.05.2021
   Schema poate fi redusa la doar 4 rezistente, cum am prezentat si in articolul Sistem automat de iluminare alb/rosu functie de sens de deplasare locomotiva analogica (2) 
   Noul meu coleg de birou, Virgil, a recablat firele pentru sistemul cu 4 leduri bicolore cu anod comun si doar 4 rezistente in carcasa de locomotiva micuta:
respectiv a cablat toata instalatia cu decodorul NEM652 (inclusiv un conector mama) pentru motor si doar luminile fata/spate:
2.6.2022
   Am realizat 2 filmulete cu noul circuit de lumini:

marți, 17 mai 2022

Definire, salvare, testare si comanda macazuri cu servomorase la o statie digitala cu Arduino si DCC+EX v.4.0.0

 

    In articolele precedente

-  Verificare functionare decodor NEM652 cu placa adaptoare pentru locomotive analogice 

si 

Transformarea unui locomotive analogice intr-una digitala (1)

am prezentat, printre altele, statia digitala DCC++EX v.4.0.0. cu Arduino Mega, placa (tip shield) pentru control motoare cu L298, conectare la retea wi-fi cu ESP8266, afisaj pe i2c alfanumeric LCD1602 sau OLED grafic (128x64) si placa de expansiune pe i2c cu PCA9885 pentru controlul a 16 periferice. 

   Eu am avut la indemana doar 4 servomotorase tip SG90, asa ca le-am conectat pe ele. Dupa ce am studiat informatiile de la:

I/O Device Drivers and HAL

DCC++ EX Command Reference

DCC++ EX Command Summary

am reusit sa definesc, salvez, testez si comand cele 4 servomotorase.

   Pentru a putea face asta, am folosit consola web cu conectare seriala a statiei digitale scriind comenzile in fereastra de comanda, fara <> dupa cum apare si pe pagina locala web creata:

   Anterior, am definit cele 4 servotorase bazandu-ma pe comenzile:

astfel: servomotorul de la prima iesire a placii de expansiune cu PCA9685 de la adresa 100 are numele tot 100, al doilea cu adresa 101 are numele 101, cel de-al treilea cu adresa 102 are numele 102, respectiv, al patrulea cu adresa 103 are numele 103.
    Am dat comanda primului servomotoras sa treaca macazul virtual pe pozitia de inchidere (0), comanda fiind <T 100 0>:

apoi sa treaca pe deschis (1), comanda fiind <T 100 1>:

   Similar, comenzile pentru celelalte sunt:
- servomotor nr.2 cu numele 101, comanda de inchidere, respectiv deschidere:

- servomotor nr.3 cu numele 102, comanda de inchidere, respectiv deschidere:

- servomotor nr.4 cu numele 103, comanda de inchidere, respectiv deschidere:
   Bun, verific ce macazuri sunt memorate in EEPROM:
apoi le sterg din memoria EEPROM, pentru a redefini ulterior, cu alt nume si a vede si dvs cum se face:
   Definesc primul servo, cel de la adresa 100, sa aiba numele 200, definesc timpii de comanda pentru servo SG90 recomandati de realizatorii proramului DCC+EX, astfel: 
<T 200 SERVO 100 410 205 3>,
in care 410 este pozitia de deschis (1/thrown), 205 este pozitia de inchis (0/close), iar 3 reprezinta o viteza mica de schimbare a pozitiei:
pentru al doilea, de la adresa 101, numele va fi 201, restul parametriilor raman identici
Similar, definesc al 3-lea servomotoras SG90de de la adresa 102 cu numele 202
iar pe al patrulea, de la adresa 103 cu numele 203, cu prametrii similari pentru deschidere si inchidere, dar viteza mai mare (2)
Neaparat, cele 4 servo definite mai sus trebuie memorate in EEPROM cu comanda <E>
   Urmeaza testul de comanda al primului servo, acum cu numele 200 pentru pozitia de deschidere
 si apoi de inchidere
   Puteti vedea, intr-unul din filmuletele de mai jos, cum comand aceste servomotoare, dar si cum comand locomotiva mea digitala cu statia DCC++EX v.4.0.0 si consola simulata cu aplicatie Android, de pe telefon:

17.05.2022
   Am dat comanda si de pe consola virtuala instalata pe telefon (aplicatia Engine Driver)
- toate servo pe pozitia deschis

- primul servo inchis, restul deschise
- al doilea servo inchis, restul deschise

- al treilea servo inchis, restul deschise
- al patrulea servo inchis, restul deschise

- toate servo pe pozitia inchis

    Am facut 2 filmulete, doar cu cele 4 servomoorase controlate cu statia digitala:
   Testand si alte aplicatii tip consola de control, cum e ... am observat ca inca se regasesc si macazurile 100..103, care se comanda a fel ca si cele definite ulterior, 200..203, asa ca am conectat al consola seriala Web-Throttle si am dat comanda pentru afisare servo definite
<T> sa vad ce macazuri sunt definite si am constatat ca sunt ..8 nu 4, cele vechi ramanand definite
Asa ca am inceput sa le sterg pe primele 4, folosind indicatiile
- <T 100>
<T 101>
<T 102>
<T 103>
   Apoi am dat comanda <T> de a afisa ce macazuri mai sunt definite:
  La repornire statiei, am constatat ca sunt tot 8 macazuri,
 asa ca am reluat comenzile de stergere pentru macazurile 100..103 si am dat comanda de memorare in EEPROM <E> si la o noua repornire am doar 4:
  Deci dupa definire si stergere, trebuie neaparat memorate macazurile in memoria EEPROM... 
   Pentru a fi sigur ca au ramas doar 4 macazuri definite, am deschis o alta aplicatie Android de consola, numita Cab Engineer: