vineri, 25 ianuarie 2013

Arduino ca multimetru


    Daca avem un alimentator reglabil care nu are un panou de indicare macar a tensiunii, putem realiza aceasta (momentan de moft, pana transferam pe un Atmel sperarat) un asemenea indicator pentru: tensiune, curent consumat, putere consumata si rezistenta echivalenta a consumatorului. Afisarea o putem face pe un afisaj cu 16 caractere a 2 randuri (clasic pentru aplicatiile Arduino).
    
     Modul clasic de conectare a unui consumator la alimentatorul reglabil este urmatorul:
     Conectarea unui voltmetru se face in paralel cu consumatorul, iar ampermetrul se monteaza in serie, in circuit:

    Arduino UNo are 6 intrari analogice (AN0.. AN5), dar pentru aceasta aplicatie sunt necesare doar 2 (una pentru voltmetru si una pentru ampermetru). In mod normal, referinta este de 5V, dar pentru aceasta aplicatie vreau sa folosesc pe cea interna de 1,1V pentru a avea o rezolutie mai buna, deoarece la curent rezistenta inseriata in circuit trebuei sa fie mica pentru a avea o cadere de tensiune scazuta, altfel alimentatoul nu mai este pentru ce a costruit adica sursa de tensiune stabilizata. De obicei, tensiunea pe acea rezistenta trebuie sa fie sub 1V.. eu as merge sub 0,5V. Pentru partea de tensiune trebuie realizat un divizor de tensiunea.

    Un mod de conectare al placii Arduino pentru a masura tensiunea pe consumator si curentul consumat de acesta este:


    Pe rezistenta de putere R0 vom masura caderea de tensiune, care este direct proportionala cu consumul, iar de pe R1 vom masura tensiunea care este proportionala cu tensiunea de pe consumator.

    Pentru a putea dimensiona divizorul rezistiv format din R1 si R2 trebuie sa stim tensiunea maxima debitata de sursa, iar pentru dimensionarea rezistentei R0 trebuie sa stim curentul maxim debitat.
    Sursa mea are la iesire, o tensiune stabilizata, reglabila intre 1,35 si 17,6V, deci pot alege ca tensiunea maxima pe care o pot masura sa fie... 30V. Curentul debitat este cam 2,2A daca retin bine, deci e sufient ca domeniul maxim masurat sa fie 3A.
    Daca nu am ales bine valorile maxime nu e o problema ca la PIC-uri sau AVR-uri, deoarece pot face usori modificari in program... si abia daca sunt multumit pot sa fac un modul independent cu un Atmega328 si un afisaj LCD.
    Divizorul rezistiv este de forma:
   
     Pentru cazul nostru U0max=30V, iar U1max=1,1V (folosim tensiunea de referinta de 1,1V de la Atmel 328). Daca alegem un curent de Imax=10mA cand tensiunea este maxima), obtinem urmatoarele valori ale rezistentelor:
    Deoarece sunt sanse foarte mari sa nu gasim acele valori, trebuie sa retimen ca intre cele 2 valori trebuie sa existe raportul:
   Cel mai simplu e sa folosim in locul uneia din ele o grupare serie de rezistenta cu semireglabil (de preferat, multitura). Sa zicem ca gasim la magazin o rezistenta de 100 ohmi (valoare apropiata de cea calculata), atunci pentru R1 trebuie sa avem 2627,3 ohmi si asta o putem obtine dintr-o rezistenta de 2 kohmi (sau 2k2) inseriata cu un semireglabil de 1 kohmi.



     Verificam puterile disipate pe rezistente, pentru cazul cel mai defavorabil:
     Daca e varianta inlocuirii rezistentei R2 cu o grupare serie: rezistenta R2' si semireglabil S1, puterile disipate vor fi:

    Pentru rezistenta necesara masurarii curentului, pentru o cadere de tensiune maxima de 0,3V la 3A avem:

    Va trebui sa punem o rezistenta cu puterea de minim 2W.


    Folosind programul specializat de editare CadSoft EAGLE PCB Design Software am desenat schema partii de masurare, care se intercaleaza intre alimentator si consumator (montaj) avand si un conector pentru legarea la placa ARDUINO: 
    Montajul ar putea arata asa:

iar "virtual", realizat cu Eagle3D asa:


    Un mic turorial de desenare cu programul gasiti in articolul meu numit Cum facem un cablaj iar un mic tutorial video despre partea de 3D (virtuala) este:


    Revenind la modul de legare in circuit, acesta este destul de simplu:
   
 
- continuarea este in partea a doua -

12 comentarii:

  1. oare merge cu arduino duemilanove?

    RăspundețiȘtergere
  2. nu l-am studiat prea tare pe ala, dar nu vad de ce nu ar merge... pana la urma e vorba de microcontroler care-i acelasi (parca)

    RăspundețiȘtergere
  3. vezi materialul de la http://www.vwlowen.co.uk/arduino/index.htm acolo foloseste un senzor de curent... pentru a alimenta din aceasi sursa.. dar asta de zic eu merge cu o sursa de laimentare separata.. ai acolo si eun exemplu de program (sketch)

    RăspundețiȘtergere
  4. Atentie: rezistenta Ro trebuie conectata inspre bec, adica intre GND-ul de la Arduino si BEC... deoarece tensiunea masurata fara de GND trtebuie sa fie pozitiva! Cat de repede pot o sa corectez schemele ...

    RăspundețiȘtergere
  5. cum este conectarea celui de la http://electronics-diy.com/AVR_LCD_Voltmeter_Ammeter.php

    RăspundețiȘtergere
  6. mai bine descris la http://electronics-diy.com/70v_pic_voltmeter_amperemeter.php

    RăspundețiȘtergere
  7. Wow! What an amazing post to read!! thank you for sharing it with your readers!! Keep up the good work!

    RăspundețiȘtergere
  8. Interesant...banuiesc ca ai facut asta din placere pentru ca probabil ti-ar fi fost mult mai usor sa iti cumperi un multimetru ieftin si sa iti faci treaba cu el...

    RăspundețiȘtergere
  9. Pentru a masura un curent de 25 amperi, ce valoare ar trebui sa aiba rezistenta (ohmi) si ce putere ? :o3 poate ajuta cineva va rog ? :*

    RăspundețiȘtergere
    Răspunsuri
    1. pentru curentul ala nu "merge" o rezistenta, deoarece puterea disipata e prea mare (ai putea s-o calculezi ca ai formulele),. asa ca-ti recomand senzorul ACS712-30, despre care am scris si eu 2 materiale: http://nicuflorica.blogspot.ro/search?q=acs712 . da' daca nu vrei sa cauti n-o sa gasesti...

      Ștergere
    2. daca dai mai multe detalii de aplicatie, te-as putea ajuta....

      Ștergere