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 cmanda 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, depe 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: