miercuri, 21 septembrie 2022

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

    Fata de ce am prezentat in articolul precedent, acum o sa prezint montajul pe cablaj clasic:

comparativ cu cel realizat pe breadboard
schema fiind aceeasi:
   Dupa asamblarea componentelor si conectorilor, am facut teste cu un motoras in loc de locomotiva:
dupa cum se vede si din filmuletele:
apoi am conectat linia flexibila de 90cm si pus, la cele 2 capete, sensorii incat la trecerea locomotivei sa fie activati, lasand si un spatiu de rezerva pentru oprirea lenta:
dupa cum se vede si din filmuleltele:
PS: Programul folosit este acelasi (controlled_model_train_3a.ino).

duminică, 18 septembrie 2022

Lumini inteligente pentru hol lung sau balustrada de scara

    Dupa o discutie cu Tom, vechiul meu colaborator si prieten, despre un sistem de iluminare a unei benzi de leduri adresabile pe balustrada unei scari (sau pe perete), pornind de la ce prezentasem in articolele:

Benzi de leduri multicolore cu control independent pentru fiecare led

Scari luminate inteligent


Scari luminate inteligent (2)



am realizat o schema de test cu 3 butoane fara retinere, dintre care 2 simuleaza senzorii (PIR, IR, doppler/radar,laser, etc):
   In schema de test, butoanele au rezistenetele de "pull-up" ce tin intrarile la 5V (nivel logic HIGH),
dar ele pot fi activate si din program:
- actual (3 rezistente reale conectate la 5V la cei trei pini de intrare, ca in schema)
- cu rezistentele interne de "pull-up" ale microcontrolerului activate 
   Dupa ce am respectat modul de comportare al miscarilor luminilor cum discutasem cu Tom, am adaugat si schimbarea culorilor si memorarea acestora(butonul fara retinere 3), programul din testele actuale este hol_1_3.ino si are activate doar primele 8 leduri din banda adresabila si timpul dintre tranzitiile de aprindere/stingere este de 200ms
apoi am modificat pentru a aprinde toate ledurile de pe toata lungime benzii de leduri (60 leduri pe lungimea de 1m), iar tipul de tranzitii a fost schimbat la 15ms:
pentru a fi animatia cat mai aproape de real.
    Primele filmule, cu 8 leduri sunt:
iar cele cu 60 leduri sunt:
  Mare grija trebuie avuta la sursa de alimentare deoarece, acest metru de banda adresabila, consuma, pentru 5V, la culoarea alba:
- nivel maxim: 255 din 255, circa 2,4A
- nivel scazut: 10 din 255, circa 54mA (0,052A)
- nivel foarte scazut: 1 din 255, circa 30mA (0,030mA)
   Dupa cum spuneam, culoarea se poate schimba:
- 1, adica rosu (rosu = 1, verde = 0, albastru = 0)
- 2 , adica verde (rosu = 0, verde = 10, albastru = 0)
- 3, adica galben (rosu = 1, verde = 1, albastru = 0)
- 4, adica albastru (rosu = 0, verde = 0, albastru = 1)
- 5, adica mov (rosu = 1, verde = 0, albastru = 1)
- 6, adica bleo (rosu = 0, verde = 1, albastru = 1)
- 7, adica alb (rosu = 1, verde = 1, albastru = 1)

   Pentru moment, din cauza unui timp liber prea scurt, voi intrerupe testele, dar daca prezinta interes, pot dezvolta proiectul.

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: