vineri, 16 august 2013

Senzorul de curent ACS712 (I)

   Cand vrem sa masuram curenti de valoare mare (peste 10A, de exemplu) clasicele "sunturi" (rezistente de putere si valoare mica) nu mai sunt recomandate, deoarece caderea de tensiune pe ele si, mai ales, puterea disipata sunt foarte mari, asa ca putem folosi senzorii de curent ACS712 produsi de firma Allegro MicroSystems LLC.
   Date tehnice despre acesti senzori de curent se gasesc in datasheet ACS712, dar principalele caracteristici sunt:
- rezistenta suntului este de 1,2mohmi adica 0,0012ohmi... (putere disipata si cadere de tensiune forte mici)
- izolare galvanica intre pinii de masura pentru curent si cei de iesire
- se fabrica pentru 3 game de curenti: 5A, 20A si 30A
- se pot masura atat curenti continui, cat si alternativi.
   Capsula unui ACS712 este foarte mica:
iar schema bloc este
schema tipica de aplicatie fiind una extrem de simpla:
    Cand curentul prin suntul dintre pini 1-2 si 3-4 este zero, la iesire tensiunea este de 2,5V cand alimentam la +5V. Functie de model (curentul maxim masurat), difera  coeficientul pentru raportul intre tensiunea de iesire si curentul prin sunt (mV/A):
    Pe piata se gasesc module care includ schema tipica si conectori:

    Pentru senzorul de +5A, tensiunea de iesire pentru un curent de -5A este de 2,5V+0,185V/A*(-5A)=1,575V, respectiv pentru +5A de 2,5V+0,185V/A*5A=3,425V.
    Pentru senzorul de +20A, tensiunea de iesire pentru un curent de -20A este de 2,5V+0,1V/A*(-20A)=0,5V, respectiv pentru +20A de 2,5V+0,1V/A*20A=4,5V.
    Pentru senzorul de +30A, tensiunea de iesire pentru un curent de -30A este de 2,5V+0,066V/A*(-30A)=0,52V, respectiv pentru +30A de 2,5V+0,066V/A*30A=4,48V.

In sketch-ul pentru Arduino, in partea de definire putem avea:
 int i1 = 0; // initial current value;  
 float i = 0.00; // initial calculated current value;  
 int currentPin = A3; // output from ACS712 is put at analog input no.3  

in partea principala, pentru un senzor de 20A:
 i1 = analogRead(currentPin); // read value from current sensor (ACS712);  
 i = 50*i1/1023-25; // calculated value for input current using ACS712-20;  

- va urma -

3 comentarii:

  1. Am o curiozitate in legatura cu acest senzor de curent.
    Care este tensiunea maxima suportata ?
    Pot sa-l folosesc pentru a masura curentul intr-un apartament (sau doar o priza), deci 230 V, si uun max de 16 A ?

    RăspundețiȘtergere
    Răspunsuri
    1. sigur ca poti, este "izolat" .... vezi pe langa articolul indicat de Ion Stefanache si pe cel de la http://henrysbench.capnfatz.com/henrys-bench/arduino-current-measurements/acs712-arduino-ac-current-tutorial/

      Ștergere
  2. uite o schema
    https://circuits4you.com/2016/05/13/ac-current-measurement-acs712/

    RăspundețiȘtergere