Hvordan måle DC -strøm med Arduino

Hvordan måle DC -strøm med Arduino
Arduino er et elektronisk brett som har et bredt spekter av applikasjoner når det gjelder elektriske kretsløp. Mens vi jobber med Arduino, må vi forholde oss til en rekke parametere som også involverer nåværende måling. For å kjøre Arduino jevnt må vi hele tiden sjekke strøm, da det ikke skal overstige sikker grens. Normalt brukes et konvensjonelt eller digitalt multimeter for å måle strømmen, men her vil vi dekke hvordan Arduino kan brukes til å måle strøm.

DC strømmåling med Arduino

Det er mange grunner til at vi trenger å måle DC -strøm ved hjelp av Arduino. Det kan være lurt å sjekke hvor mye nåværende Arduino og andre periferiutstyr bruker eller for å måle batterilading og utladningsstrøm.

De fleste Arduino -tavler og mikrokontrollere har ADC innebygd, så først må vi måle DC -spenning som kan leses av Arduino -analog inngang, senere ved hjelp av skaleringsfaktor Under programmering konverterer vi den ADC -spenningsverdien til strøm.

For å måle DC -strøm ved bruk av Arduino forskjellige sensorer og moduler er tilgjengelige i markedet. En av de mest populære og rimelige sensorene som er tilgjengelige i markedet er den ACS712 Hallffektsensor.

ACS712 Hall effekt sensor

Både Ac og DC Strøm kan måles ved bruk av ACS712 Hall -effektsensor. I dag vil vi bare fokusere på å måle DC -strøm. ACS712 opererer over 5V, den genererer en utgangsspenning ved Vout Pin av sensoren som er proporsjonal med verdien av strøm målt ved den.

Tre forskjellige varianter av denne sensoren er tilgjengelige i henhold til gjeldende verdi den måler:

ACS712-5A: 5A -sensor kan måle strøm mellom -5a til 5a. 185MV er skalafaktoren eller følsomheten til sensoren som viser 185MV Endring i innledende spenning representerer 1A endring i strøminngang.

ACS712-20A: 20A -sensor kan måle strøm mellom -20a til 20a. 100MV er skalafaktoren eller følsomheten til sensoren som viser 100mv Endring i innledende spenning representerer 1A endring i strøminngang.

ACS712-30A: 30A sensor kan måle strøm mellom -30a til 30a. 66MV er skalafaktoren eller følsomheten til sensoren som viser 66MV Endring i innledende spenning representerer 1A endring i strøminngang.

Sensoren gir ut 2.5V Når ingen strøm blir oppdaget, representerer spenning under dette negativ strøm mens spenning over 2.5V viser positiv strøm.

Skaleringsfaktor:

5a 20a 30a
185MV/amp 100 mV/amp 66MV/amp

Formel for å måle strøm

For å se etter skalafaktor, se på ACS712 -brikken på Hall -effektsensoren som vist nedenfor i diagrammet. Her i vårt tilfelle vil vi bruke 20A -versjonen.

Kretsdiagram
Forsikre deg om at mens du kobler sammen Hall -effektsensorer med belastning alltid kobles sammen i serie, ettersom strømmen forblir konstant i serie. Å koble sensoren parallelt kan skade Arduino -brettet eller ACS712. Koble sensor i nedenfor nevnt konfigurasjon:

Arduino Pin ACS712 PIN
5v VCC
GND GND
Analog pin Ute

Simulering

Kode

/*Definerte to variabler for sensor vout og målt belastningsstrøm*/
dobbel sensorvout = 0;
dobbel motorløp = 0;
/*Konstanter for skalafaktor i V*/
/*For 5A sensor ta skala_faktor = 0.185;*/
const double scale_factor = 0.1; /*For 20A sensor*/
/*For 30A sensor ta skala_faktor = 0.066;*//
/* Variabler definert for å konvertere analoge data til digitale ettersom Arduino har 10 bit ADC, så maksimum mulige verdier er 1024*/
/ * Referansespenning er 5v */
/* Standard spenningsverdi for sensor er halvparten av referansespenning som er 2.5V*/
const dobbel refVolt = 5.00;
const dobbel adcresolution = 1024;
dobbel adcvalue = refVolt/adcresolution;
Dobbelt standardSensorVout = RefVolt/2;
void setup ()
Serie.Begynn (9600);

void loop ()
/* 1000 avlesninger tatt for å få mer presisjon*/
for (int i = 0; i < 1000; i++)
SensorVout = (SensorVout + (adcValue * Analogread (A0)));
forsinkelse (1);

// vout i MV
SensorVout = SensorVout /1000;
/* Bruke gjeldende formel konvertere vout fra sensor til belastningsstrøm*/
Motorcurrent = (SensorVout - StandardSensorVout)/ Scale_Factor;
Serie.print ("sensorvout ="); /*Vil skrive ut sensor vout på seriell monitor*/
Serie.trykk (sensorvout, 2);
Serie.print ("volt");
Serie.print ("\ t motorcurrent ="); /*Vil skrive ut målt likestrøm*/
Serie.Print (Motorcurrent, 2);
Serie.println ("ampere");
forsinkelse (1000); /*Forsinkelse på 1 sekund er gitt*/

Her i ovennevnte kode er to variabler initialisert Sensorvout og Motorrent, Begge disse variablene vil lagre verdier som henholdsvis spenning og strøm. Neste skalafaktor er satt til 0.1 V (100MV) i henhold til 20A-ACS712-sensoren. Referansespenning er satt til 5V og for å konvertere analog inngang til digital ADC -oppløsning initialiseres til 1024. Ettersom Arduino har 10-bit ADC, noe som betyr at det maksimale kan lagre er 1024 verdier.

Som forklart ovenfor skaleringsfaktor vil ta lesing i henhold til totale avvikede spenninger fra 2.5v. Så 0.1V Endring i Vout of Sensor vil være lik 1A av inngangsstrøm.

Neste i Løkke Avsnitt a for sløyfe initialiseres for å ta 1000 avlesninger for å få en mer presis verdi av utgangsstrømmen. Sensor Vout er delt med 1000 for å konvertere verdier til MV. Ved hjelp av motorstrømformelen har vi bestemt vår belastningsstrøm. Siste del av koden vil skrive ut begge sensorens vout -spenninger og målt strøm.

Produksjon
Her i utgangssensor er vout mindre enn 2.5V så utgangsmålte motorstrøm er negativ. Utgangsstrømmen er negativ på grunn av DC -motorisk omvendt polaritet.

Konklusjon

Måling av DC -strøm ved bruk av Arduino krevde en ekstern sensor eller modul. En av de mye brukte Hall -effektsensorene er ACS712, som ikke bare har et stort utvalg av nåværende måling for DC så vel som AC -strøm. Ved hjelp av denne sensoren har vi målt DC -strømmen til en løpende DC -motor, og utgangsresultatet vises i terminalvinduet.