Arduino Spenningsmåler


Reklame - Artikkelen inneholder annonselenker

På hagedam prosjektet mitt har jeg bruk for noen spenningsmålere for å sjekke ladespenning fra 12V lader, solcelle og batterispenning. Har funnet forskjellige varianter på internett, og basert på det kommet frem til noe som vil virke for meg.

Dersom man er på jakt etter noe som er veldig nøyaktig, er dette en litt for enkel måte å gjøre det på.

Dette trenger man:

  1. Et Arduino kort. (Jeg bruker Arduino Mega)
  2. En motstand på 100kohm
  3. En motstand på 10kohm
  4. ledninger

Slik kobler du voltmeteret:

DC Voltmeter_bb

Koblingsdiagram:

Det som man bør merke seg er at 5V på Arduino kortet kan variere avhengig av usb-porten den er koblet opp mot. Spenningsforandringen vil ha en påvirkning på avlest verdi. I tillegg er det lurt å huske at en motstand varierer også i reel motstand. Derfor kan det være lurt å kalibrere koden til aktuell motstand og spenning. Bruk gjerne et vanlig multimeter som referanse måling

En analog inngang/utgang på et Arduino-kort kan lese av 1024 forskjellige nivå innenfor referansespenningen 0-5V. Derfor brukes motstandene for å redusere den målbare spenningen til mellom 0 og 5V. Så med dette motstandsoppsettet kan man måle opp til 55V DC. For å få et mer nøyaktig resultat på lavere spenninger, anbefales det å redusere motstanden. Skal spenningen som skal måles være mellom 0-5V trengs ingen motstand i teorein, men det anbefales for å beskytte kortet for forhøye spenninger.

Slik kan koden se ut:

/

/* Voltmeter
* 
* www.hushagehobby.no 
*/


float v5v =4.95; // Spenningen på 5V utgang
float r1 = 100000; //100kohm
float r2 = 10000;  // 10kohm  


void setup() {

Serial.begin(115200);

   Serial.println("Klart DC Voltmeter");
   Serial.println("DC VOLTMETER");
   delay(2000);
 }
 
 void loop() {
   float v = (analogRead(0) * v5v) / 1024.0; // lest verdi A0 port x på 5V utgang / 1024 de forskjellige målenivåene på inngangen
   float v2 = v / (r2 / (r1 + r2)); //v2 er spenningen som måles
       
   Serial.println(v2);
   delay(2000);
 }

Det er bare å legge inn spørsmål i kommentarfeltet så svarer jeg så godt som jeg kan 🙂



Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *