Měření proudu

 

 

Měření proudu

Arduinem lze měřit proud. Jednou z možností jak měřit např. stejnosměrný proud je použití bočníku. Napěťovou ztrátu bočníku zesílíme operačním zesilovačem a vyhodnotíme napětí, viz rozsah 20 A v kapitole "Registrační avomet". Nevýhodou je ztráta napětí na bočníku a případná nelinearita vyhodnocení. V "hobby" aplikacích může vyhovovat tzv. "Halluv" senzor typ ACS712. Pracuje na principu indukce protékajícího proudu (bez odporu bočníku). Vnitřní odpor senzoru ACS712 (20A) je výrobcem deklarován 1,2mΩ, měřen miliohmetrem činil cca 3mΩ. Senzor lze pořídit se zárukou u českých prodejců, např. zde, případně bez záruky z Činy.

 

ACS712 (20A)

 

Senzory typu ACS712 jsou dostupné v rozsazích +/-5, +/-20, +/-30 A. Jsou obousměrné a vracejí napětí Vcc/2. Byl ověřen senzor 20A s deskou NANO. Výstupní napětí měřené senzoru 2,5 - 4,5V odpovídalo lineárně proudu: 2,5V = 0.00A, 4,5V=20A. Odpor R byl podle ohmova zákona postupně měněn tak, aby senzorem protékal proud hodnoty od 100 mA do 20 A. Senzor ACS712 připojíme k desce nano :

 

ACS712        NANO

Vcc    ------ > 5V    

GND   ------ > GND

OUT   ------ >  A0   

 

 

 

Měření proudu senzorem ACS712 je založeno na lineárním výstupním napětí, nepotřebuje knihovnu. Do desky NANO byl nahrán skeč "Proud.ino". Ve skeči byl uplatněn filtr šumu s počtem iterací 2500 (cca 300ms) a zaokrouhlení výstupní hodnoty na jedno desetinné místo. Měřené hodnoty byly sledovány sériovým monitorem (podrobnosti k sériovému monitoru viz kapitola "Měření napětí").

 

Skeč "zde":

int H;                                                          //proměnná desetibitové hodnoty pinu A0
float S;                                                       //proměnná sumarizace 2500 iterací, následně zprůměrováno
float I;                                                         //proměnná snímaného napětí, následně převedeno na měřený proud
 
void setup()
{Serial.begin(9600);}                                //rychlost sériové komunikace
 
void loop() {
for (int i=0;i<2500;i++)                              //algoritmus opakování filtru šumu, 2500x (trvá cca 0,3s)
{H=analogRead(A0);S+=H;}                    //načteni senzoru proudu pinem A0 a sumarizace 2500x do proměnné S
S=S/2500;I=S;S=0;                                  //zprůměrování a vynulování sumarizace
I=((I*5)/1023);                                             //převod desetibitové hodnoty na rozsah měřeného rozsahu
I=(I-2.5)*10;                                                //numerické převedení napětí výstupu senzoru proudu 2,5-4,5 V na hodnoty proudu 0-20A,
I=I*10;I=(round(I));I=I/10;                           //zaokrouhlení na druhé desetinné místo
if (I>0){I=I;} else if (I<=0){I=0.00;}              //odstranění záporných hodnot, záporné hodnoty jsou nahrazeny nulou
Serial.println(I,1);                                        //tisk hodnoty proudu na sériovém monitoru v A
delay(700);}                                                //dorovnání času na cca 1 sekundu

 

Měření proudu bylo ověřeno v rozsahu 0-20 A. V rozmezí 0-10 A byl proud na vstupu měřen dílenským multimetrem OWON XDM1041 s přesností +/- 0,5%, v rozmezí 10-20 A byl měřen multimetrem METEX  M-3860D s přesností +/- 1,5%. Zdrojem proudu byla autobaterie 60 Ah. V uvedeném provedení měřil proudový senzor ACS712 spolehlivě v rozsahu 1-20A. Odchylky byly pozorovány na měřených hodnotách 0.1 - 0.9 A.

 

 

Leden 2024 

 

Home

 

Arby

arduinohobby@email.cz