duminică, 30 decembrie 2018

Test indicator tensiune, curent, temperatura pe OLED folosind arduino

La sugestia lui George Dacin am testat un indicator pentru o sursa de laborator folosind un arduino cu afisare pe OLED I2C 128x64. Materialul de baza a constat in articolul lui Nicu Florica, la care am modificat afisarea pe OLED si am adaugat un pseudo termostat.
A iesit ca mai jos (clampmetrul din poza e folosit doar pentru fixare):
Rezultind o afisare patratoasa "patratoasa" am modificat codul initial introducind fonturi conform materialului prezentat de adafruit, iar dupa incarcarea codului a iesit ca mai jos: (prima poza e de la mine, cea de jos a alui George)


Asupra masurarii temperaturii parerile au fost diferite, George dorea sa foloseasca DS18B20 , iar eu doream o simpla dioda (metoda descrisa in detaliu de Nicu), tinind cont ca aceasta urma sa masoare temperatura unui radiator si actioneze un ventilator la depasirea unui anumit prag.
Ca sa nu fie discutii am realizat un test cu DS18B20 si un test cu dioda
Apoi a aparut un comentariu al lui Cristi Vasilache vis-a-vis de precizie, asa ca am luat o sursa de la un copiator defect ce scoate 35V/5A, si modul cu XL4016. Divizorul testat de mine e format dintr-o rezistenta de 100K si una de 470 Ohm, cu 0,1Ohm pentru curent. Valorile rezistentelor le-am masurat cu un AMPROBE 35XP-A, cel ce apare in poze, iar la rezistenta de 0,1Ohm am luat de buna valoare inscrisa pe ea. Referinta interna la mine arata 1,11V
Imagini de la teste sint mai jos:




Concluzia este (asa cum se poate vedea din imagini) ca precizia este cumva relativa, fiind afectata de rezolutia de 10 biti a lui Atmega328 si precizia masurarii rezistentelor din divizor si a tensiunii de referinta. 
Cind va finaliza si George cu testele de la el voi reveni cu detalii.

Update 22-feb-2019
Pe scheletul codului anterior am testat adaugarea unui modul convertor analog/digital cu interfata I2C ADS1115 .

In cod eu am ales sa afisez doar 5 zecimale.
In poza de mai jos, U masoara tensiunea de 3,3V iar I masoara tensiunea de 5V la un modul arduino nano alimentat din USB-ul macbook-ului, iar T este temperatura furnizata de un DS18B20.
Precizia este superioara celei oferite de 8 biti ai lui Atmega328.

4 comentarii:

  1. Rezolutia ATmega328 nu cumva este de 10 biti ?

    RăspundețiȘtergere
  2. Buna ziua,
    Am reprodus si eu montajul dvs. si functioneaza relativ bine pana acum.Voiam insa sa va intreb daca se poate face ceva cu rata de refresh a displayului,daca se poate mari sau daca se poate face altceva ca scrisul sa nu mai aiba acea palpaire.
    Atasez un link cu un clip video: https://imgur.com/f55Qazz
    In video,display-ul este cu controller SH1106 cu care am obtinut rezultate ceva mai bune.
    Cu un display cu controller SSD1306 este mai rau,rata de refresh pare a fi si mai mica.
    Inca un lucru voiam sa intreb,in video intrarile A0 si A1 (tensiune si curent) sunt conectate la masa dar pe parte de tensiune se afiseaza valoarea 0,32 V. E normal sa fie asa?

    Multumesc.

    RăspundețiȘtergere
    Răspunsuri
    1. vezi in cod ca e undeva: display.println(tensiune+.32);
      Valoarea masurata era cu 0,32 mai mica si am aplicat aici o corectie, era constant mai mica valoarea afisata cu 0.32 fata de cea masurata. Nu m-a interesat in mod deosebit valoarea de zero, ma intersesa sa afisez corect 3,3V 5V .
      REFRESH-UL apare de aici: display.fillRect(27, 35, 62, 17, BLACK); aici ar trebui nitel modificat codul, astfel incit sa faca dreptunghiul de stergere doar cind se schimba valoarea.
      Eu am facut doar un test scurt , mai departe nu am continuat ca au aparut alte urgente.

      Ștergere

SG3524 ca sursa de laborator

Am testat functionarea lui SG3524 ca sursa de laborator, mai exact am adaptat schema 10.3.2 de la pagina 16. In urma experimentelor s-a co...