duminică, 28 august 2022

Lumini aprinse alternativ sau cu aprindere / stingere lenta

    Pornind de la o solicitare de a reproduce luminile de la o cale ferata cu lumini de avertizare cu aprindere si stingere lenta, cum sunt cele din filmuletul 2nd Avenue Railroad Crossing, Clanton, AL

pentru a adaga unor bariere de diorame, cum prezentasem in articolul Railway Crossing Multi Track Two Way, am zis sa fac un mic proiectel in care sa apara diferentierea intre aprindere cu intermitenta a 2 leduri si apoi cu intarziere la aprindere, respectiv stingere, selectia facand-o dintr-un buton fara retinere.
   Schema de test a fost una simpla (ledurile sunt legate la iesiri cu posibilitate PWM):
   La pornire, pe cele 2 iesiri este semnal cu factor de umplere variabil (PWM) de la 0 la 100%, mai precis de la 0 la 255... cand variabila este 0, ledul este stins, cand este 255 este aprins maxim... pe o iesire este valoare brightness, iar pe cealalta 255-brightness, deci va fi un led in contratimp cu celalalt... daca se apasa butonul pentru scurt timp se trece la aprinderea intermitenta tip circuit bistabil astabil (un led aprins, unul stins).
    Programul este unul simplu, realizat din combinarea celor din exemplele programului Arduino IDE: blink_vs_fade_1a.ino
    Am realizat 2 filmulete:
   Ulterior, am schimbat variabilele (pasii de crestere/descrestere intensitate luminasa, timpii intre modificari, etc), programul devenind blink_vs_fade_1b.ino si cum am inca 2 filmulete:
      Ulterior, am dat de o placa de dezvoltare MH-Tiny cu ATtiny88 si am zis sa vad daca merge... 
am gasit ca are doar 2 iesiri pentru control PWM (suficiente pentru proiectul asta), respectiv D9 si D10 asa ca am conectat cele 2 leduri acolo si butonul fara retinere a ramas la D2.
  Programul modificat este blink_vs_fade_1a1.ino (simular cu anterioarele), asa ca am incarcat 2 filmulete cu placa MH-Tiny:

31.08.2022
   Am explicat in articolul in care am implementat aceste lumini cu aprindere/stingere enta (Railway Crossing Multi Track Two Way), dar o sa  fac si aici:
   Sistemul de aprindere cu intensitate variabila este cel numit PWM, care are valoare de la 0 la 255 (led stins, respectiv aprins la maxim).
  In programele scrise si testate, cele 3 variabile de baza sunt:
care vor fi explicate pentru un led (numit LED3):
Led-ul este stins si dupa perioada de pauza (variabila time_to_stop = 200ms), intensitatealuminasa (brightess) incepe sa creasca valoarea intensitatii cu pas de 1 (fadeAmount = 1) la fiecare 2ms (fade_delay = 2), pana la maxim (PWM = 255),dupa care urmeaza o pauza de 200ms, apoi intensitatea luminoasa scade cu pas de 1 la fiecare 2ms, pana la 0, dupa care urmeaza pauza de 200ms si procesul se repeta.
Led-ul celalalt (notat in poza cu LED 3)  este in contratimp (255-brightness)
comparativ, aprinderea cu intermitenta a ledurilor este ca in figura urmtoare, unde acestea aapr cu LED1 si LED2:

duminică, 10 iulie 2022

Salvare pozitie cursor la potentiometrul digital X9C103 (10kΩ)

    Am achizitionat cateva module ce contin potentiometrul digital X9C103, cu valoarea de 10kΩ,

   In incercarile anterioare la distanta cu un alt pasionat (zvonacfirst) nu reuseam sa il facem sa memoreze valoarea dorita ca sa o aiba la repornire, asa ca m-am apucat sa investighez iar problema pentru a rezolva cumva memorarea valorii pentru a fi disponibila la repornire.

    Dupa ce am primit modulul si am lipit conectorii, am realizat ca nu il pot testa pe breadboard, asa ca a trebuit sa tai o parte din cablaj:

   Am reluat testele anterioare, folosindu-ma de osciloscop sa verific semnalele pe pini
iar schema de test completa a fost:
iar montajul
   Pentru a urmari usor valoarea memorata, am conectat potentiometrul ca divizor rezistiv, iar cursorul la pinul A0. Deoarece fac alimentarea montajului dintr-un conector USB al unui laptop, tensiunea de alimentare pot avea variatii sau valori reduse si, implicit si, tensiunea de referinta, asa ca am conectat si ramura de 5V la pinul A1.
     Am constatat ca desi semnalele sunt corecte, memorarea valorii nu se face in memoria nevolatila (NVM / EEPROM) a integratului (X9C103S), asa ca am renuntat, cel putin pentru moment, si am folosit memorarea in memoria EEPROM a microcontrolerului de pe placa Arduino Nano (ATmega328P), programul final, pentru moment, e pot_X9C103_1_1.ino in care am folosit si libraria dedicata https://github.com/lucyamy/LapX9C10X.
   Am facut 2 filmulete:

miercuri, 1 iunie 2022

Placa de dezvoltare MH-Tiny cu ATtiny88


     Am intrat in posesia unei placa de dezvoltare ce are ca microcontroler un ATtiny88, care semana cu o placa Arduino Nano`


doar ca are mici diferente, inclusiv la pini
Principalale caracterisitici sunt:
- se poate programa cu Arduino IDE 1.0+ (OSX/Win/Linux)
- alimentare prin mufa USB sau in pin cu 5V sau cu 7..12V (desi eu nu as depasi 7-9V)
- stabilizator de tensiune de 5V/50mA
- conector USB
- 26 pini de intrre/iesire (cu anumite restrictii la cei conectati la USB)
- memorie flash 8kb (din care utilizabila doar 6kb, deoarece o parte e consumata de bootloader)
- interfatare pe I2C si SPI
- 26 pin cu iesire PWM: 26 pinis PWM software (simulat), doar doi (D9,10) cu PWM fizic
- intrari analogice (ADC) pe 8 pini
- indicare aliementare (Power LED) si un led de Test/Status (conectat la D0 , cu functionalitate similara cu cel de la D13 la Ardino Nano/Uno)
- dimensiuni fizice: 4,5mm x 18,3mm x 3mm
    Am gasit mai multe articole cum se instaleaza driver-ul, cat si placa in Arduino IDE, dar cel mai simplu si, cred ca de la care au pornit toate, este cel de la producator: MH-ET LIVE Tiny88(16.0Mhz).
   In mare, se folosete executabilul de la https://github.com/MHEtLive/MHEtLiveArduino/releases/download/1.0.0/2.0a4.rar  pentru instalarea driver-ului, care se ascunde ulterior (mie mi-a dat de cap asta, incercand sa fac driverul vizibil si activ mereu, dar am inteles ca abordam gresit problema, dupa ce am vorbit cu Vlad Gheorghe),

apoi se instaleaza placa MH-Tiny adaugand link-ul https://raw.githubusercontent.com/MHEtLive/arduino-boards-index/master/package_mhetlive_index.json la proprietati in programul Arduino IDE.
si apoi in TOOLS ->Board manager
   In programul Arduino IDE apare placa
si ca programator trebuie ales
    Pentru a incarca programul Blink sau unul derivat, cum e cel stoboscopic numit blink_strobo_1.ino in care pune 0 in loc de 13:
se apasa butonul de incarcare (upload)
si se asteapta mesajul
apoi se introduce cablul USB la care e conectata placa MH-Tiny88:
dupa care led-ul va palpaii conform programului:
   Am realizat 2 filmulete, din care se vede modul de incarcare:

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: