Hvordan måles spænding med arduino

Arduino har indbygget ad converter, hele 6 ADC indgange faktisk.

AD konverteren er på 10 bit, hvilket betyder en læst data på1023 ved maks indput = 5 volt og o ved 0 volt.

Der er flere måder at lave ‘den rette skala’ til det måle område der ønskes at måle på.

Med et par modstande og en zenerdiode laves spændingsdeler så indgangen kan måle op til 20 volt maks.

Der bruges tre modstande: en 10 kohm modstand, en 3k3 og en 33 ohm. Hertil kommer en zener diode på 5 volt til at beskytte indgangen på arduino mod overspænding.

modstande forbindes som på billedet, sort ledning er stel o de farvede går til arduino analoge input’s

ad konverteren på arduino gør det let at måle spænding

BRUG 1% modstande for mere nøjagtighed i målingen !! (5% som herover skrider for meget i værdi)

Der er flere måder at opsamle og beregne spændingen på, og valgt metode afhænger af formål.

Man kan tage de rå data og gange, dividere og lægge til ind til tallet passer:


// ********************************************************************
// Opsamler spænding fra analog 5, i 1:1 (1023 = maks 5 v) og putter data i en string
// (den varialen som bruges til at kalde routinen med)
// ********************************************************************
void getvoltage(char *voltage)
{
int sign, whole;
digitalWrite(digital_io_pin7,LOW); // alive led turns off
sensor = 1;
sign=false;
if(sign) voltage[0]='-';
else voltage[0]='+';
// analog read
whole = 0;
whole = analogRead(5);
whole = whole/2;
voltage[1]= (whole % 10000)/1000 +'0' ;
voltage[2]= (whole % 1000)/100 +'0';
voltage[3]=',';
voltage[4]= (whole % 100)/10 +'0';
voltage[5]= (whole % 10)+'0';
voltage[6] = '�';
delay(1000UL); // delay 30 sec
}

Denne routine opsamles datya fra analog ind 5, ved 5 volt indeholder whole 1023, de divideres med 2 og laves om til 4 digits. De 4 digits plus et komma gemmes i en string of char med spændingen: 05,00 klar til at sende serielt, med usb eller via ethernet.

En mere ‘elegant’ måde at skalere de analoge inputs på er med MAP kommandoen:
map(value, fromLow, fromHigh, toLow, toHigh)
Denne kommando er meget fleksibel tager value værdien og konverterer den fra 0 – 1023 til 0 til 20000. Så har vi en god skala, og behøver blot dividere med 1000 for at placere kommaet. I mit eget projekt sendes data til en mysql database, og det er let at håndtere beregninger i php istedet for i arduinoen.
Arduinoen har jo ikke vildt meget ram og brugt som multikanal datalooger virker det smartest bare at dumpe data afsted og bearbejde dem et andet sted. (på serveren, på pc’en osv)

spændings deler

Arduino webclient til måling og logning af spænding i database

en spændingsdeler og en zenerdiode sikre analog indgang på arduino ved spændings måling

 

pdf fil med arduino eksemplt i 

 

Skriv et svar

Din e-mailadresse vil ikke blive offentliggjort. Krævede felter er markeret med *