duminică, 27 martie 2022

Remediere conversie gresita data/an din ora universala (ESP8266)

english version


     Astazi m-am lovit de o o problema semnalata de Ady Sos acum ceva timp, si anume ca data este afisata incorect la ceasul NTP cu tranzitii animate (Morphing Clock / Other Morphing Clock); asta deoarece aveam implementata OTA (incarcarea unui sketch prin retea wifi) si am instalat Arduino IDE si librariile necesare sketch-ului pe un calculator nou.

   In ecranul de monitorizare seriala serial ora universala (Unix time, epochTime) este corect extrasa, doar partea de data nu...
  Am introdus ora Unix intr-un calculator online de pe Epoch & Unix Timestamp Conversion Tools
   Solutia mi-a gasit-o tot el in materialul Incorrect date/year with ESP8266 board 3.0.0 #149 si anume ca trebuie revenit la versiunea 2.7.4 a placilor ESP8266.
- pasul1: TOOLS -> BOARD -> BOARD MANAGER
- pasul 2: se cauta ESP8266
- pasul 3: se cauta versinea 2.7.4
- pasul 4: se asteapta pana se instaleaza versiunea aleasa
- pasul 5: se inchide aplicatia Arduino IDE si se redeschide.
- pasul 6: se reincarca sketch-ul

    Puteti citi si testa ceasurile animate ce preiau ora, data si informatiile meteo de pe net:

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

english version


     Am mai lucrat la sistemul de control al deplasarii fata-spate pentru o locomotiva analogica. Am implementat encoderul si acum pot regla sau alege:

- limba de comunicare a informatiilor (romana sau engleza)

- sens deplasare (normal sau invers)

- ordine activare senzori proximitate (normal sau invers)

- pauza intre schimbare directie deplasare (1..30 secunde, tipic 4 secunde)

- viteza maxima (200..255 din 255)

- viteza minima (25..150, tipic 105 pentru motoare)

- pas modificare viteza (2..20, tipic 5)

    Schema utilizata este aceesi cu cea prezentata in articolul anterior

   Programul rescris este controlled_model_train_3a.ino si combina programul folosit anterior, la care se adauga partea de reglaj, care este inspirata din programul lui Andy Doz din articolul Arduino Astronomical Clock (or Arduino Pond Pump Controller!).
   In functie de limba de prezentare aleasa anterior, la pornire sunt informatii despre sistem, dupa care ledul rosu se aprinde scurt, repetitiv, iar pe ecran apare mesajul "STOP!"
   Daca se apasa scurt butonul de pe encoder, sistemul intra in modul de functionare normal, incepand cu o binemeritata pauza:
iar daca se apasa lung pana apare o steluta pe ecran
se va intra in modul de configurare parametrii. 
   Prima data se poate alegere limba de comunicare:
rotim de encoder si apoi se apasa pe butonul encoderului, pentru selectie, intrand in modul de deplasare:
se poate alege intre normal si invers, apoi se apasa butonul, pentru trecere la reglajul timpului de pauza intre schimbarile de sens:
Valorile permise sunt intre 2 si 30 secunde, uzual folosesc valoarea de 4, dar poza era cand alesesem 20 secunde. Dupa alegerea timpului de pauza, se apasa butonul pentru trecerea la alegerea vitezei maxime
Viteza maxima se poate regla intre 200 si 255 (255 reprezinta 100%), dupa ce se apasa pe buton, se ajunge la reglajul vitezei minime
intre 25 si 150, valoarea tipica pentru miscare locomotiva, din experienta e 105... 25 este utila mai mult pentru lumina ledurilor din prezentare.
   Dupa apasarea butonului de pe encoder, se ajunge la pasul de modificare al vitezei, valorile se pot alege intre 2 si 20, tipic ar fi 5.
   La apasarea butonului de pe encoder se ajunge la pasul de inceput, cand apare mesajul STOP!
   Daca se apasa scurt butonul, apare mesajul de pauza, perioada fiind cea aleasa in meniu
viteza incepe sa creasca pana la maximul ales (in cazul de fata 78%)
pana se activeaza senzorul corespunzator (ales din meniu astfel incat la deplasarea spre fata sa se activeze senzorul din fata, respectiv la deplasarea in spate sa fie activat senzorul din spate)
se intra in pauza
dupa care viteza creste la maxim ( valoare indicata de semnul dublu)
dupa care la activarea senzorului de capat se ajunge la franare, pauza, etc.
    Directia de deplasare se regleaza pentru a avea sensul de deplasare ca cel de pe afisaj, astfel, daca  deplasarea se face spre stanga si pe ecran e inspre dreapta (ledul este rosu, deci locomotiva se deplaseaza invers)
acelasi lucru este daca avem cazul asa
vom schimba directia din setari (daca e 1 acum punem 0 si daca e 0 punem 1) si vom avea
si, respectiv
    Va recomand sa vizionati filmuletele urmatoare, ce prezinta exact pasii descrisi mai sus:

sâmbătă, 26 martie 2022

Placa adaptoare pentru pregatire locomotiva analogica sa devina digitala

english version

    Fiind nou in lumea dioramelor si machetelor animate, am trecut, zic eu rapid, de la lumea analogica, in care se foloseste alimentarea cu tensiune continua de 0..12V pentru deplasarea inainte, respectiv 0..-12V pentru deplasarea inapoi.

   Schema din interiorul unei locomotive analogice clasice este de genul:

uneori, in serie cu motorul este o bobinuta, pentru a reduce efectul intreruperilor contactelor imperfete.
    O placa adaptoare, ce transforma o locomotiva analogica in una pregatita sa fie digitala, este una de genul:

care are o schema de conectare
  In afara de conectarea similara a motorului, doar ca se alimenteaza de pe 2 boghiuri (daca se poate), apare posibilitatea conectarii a 2 beculete de 12V sau a 2 leduri albe.
  Daca se folosesc beculete de 12V, atunci zonele incercuite trebuie "strapate" adica lipite, altfel, daca se folosesc leduri albe, trebuie sa ramana libere (eu la testele initiale am adaugat, din cititrea superficiala a pozelor de pe net, niste rezistente de 1kΩ). 
  Am alimentat placa adaptoare din iesirea sistemului meu automat de deplasare du-te/vino, unde am si un led bicolor conectat pe iesire (vezi articolul Sistem automat de iluminare alb/rosu functie de sens de deplasare locomotiva analogica):
- simulare alimentare pentru deplasare in fata
- simulare alimentare pentru deplasare in spate
  Cred ca ca mai bine se vede, din filmuletele urmatoare, modul de functionare:

duminică, 20 martie 2022

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

    In completarea sistemului prezentat anterior (primul articol si al doilea articol), 

am pregatit o schema ce include un encoder si un afisaj conectat pe i2c (alfanumeric 1602/2004 sau unul grafic OLED). De asemeena, am conectat si partea a 2-a a driver-ului L298, pentru o ulterioara aplicatie. 

   In prima faza, am modificat programul folosit anterior pentru a muta pinul de comanda PWM de la D3 la D12 pentru controlul puntii H care e conectata la sina de rulare. Apoi am "activat" butonul fara retinere din encoder, pentru a-l folosi la pornirea sistemului si la o noua apasare sa opresca sistemul, avand si o functie de oprire rapida (franarea este mult mai rapida,fata de cazul normal).
   Dupa incarcarea programului controlled_model_train_2b.ino, la alimentarea sistemului, ledul rosu (cel ce indica, de obicei, ca s-a activat senzorul de proximitate cu infrarosu corespunzator deplasarii) se aprinde periordic scurt (ca ledurile de la antenele GSM/TV, stroboscopic), iar sina de alimentare nu este alimentata. Pe afisaj apare mesajul STOP!.
   Dupa ce se apasa butonul de pe encoder, pe ecran apare mesajul Pauza! si dupa cateva secunde (4 acum) incepe sa creasca viteza de la 40% pana la 100%. Este aprins ledul de directie, sa zicem DIR1 si ledul alb cel de PWM corespnzator vitezei. 
Cand senzorul de la capatul de linie este activat se aprinde ledul rosu si apare pe acran mesajul "Frana!" si viteza incepe sa descreasca lent de al 100% la 40%, apoi brusc la 0%. 
Apare, pe ecran, iar "pauza" de 4 minute si apoi se aprinde ledul DIR2 si cel de PWM, dupa ce locomotiva se deplaseaza si atinge celalalt senzor, viteza scade, locomotiva se opreste, asteapta un pic (4 secunde) apoi acccelereaza si se deplaseaza spre capatul celalalt cand se opreste cand este activat primul senzor, s.a.m.d. 
   Am facut 2 filmulete in care se vede modul de funtionare:
    Deoarece partea utila a sinei de rulare este relativ scurta, am reduc valoarea tensiunii de alimentare a puntii H cu L298 la 6,5V, astfel ca pe sina, la PWM maxim ajung 4,8V sau -4,8V (depinde de sensul de comanda), deci e o "pierdere" pe tranzistorii din puntea H de 1,7V.
   Am pregatit o versiune de cablaj pentru a elimina breadboardul si conexiunile proaste
   Am adaptat si versiunea cu indicatii in engleza (de fapt se poate selecta limba: 0 - engleza si 1 - romana), programul fiind controlled_model_train_2d.ino
   Indicatii deplasare cu viteza maxima, in fata  (led bilocolor aprins alb) si in spate (led biolor aprins rosu):
   Am mai facut 2 filmulete, cu explicatii: