0% found this document useful (0 votes)
84 views

DIY Amp Hour Meter Arduino

How to build a power meter to monitor how much electricity you are producing or consuming. Ideal for Ham radio, and wind or solar off grid power systems.

Uploaded by

SteveSpence
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
84 views

DIY Amp Hour Meter Arduino

How to build a power meter to monitor how much electricity you are producing or consuming. Ideal for Ham radio, and wind or solar off grid power systems.

Uploaded by

SteveSpence
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Food

Living

Outside

Play

Technology

Workshop

DIY Amp Hour Meter - Arduino


by sspence on May 9, 2012

Table of Contents
DIY Amp Hour Meter - Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Intro: DIY Amp Hour Meter - Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Step 1: Voltage Divider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Step 2: Current Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Step 3: Math Alert! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Step 4: Serial Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Step 5: LCD Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Step 6: Followup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Related Instructables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

http://www.instructables.com/id/DIY-Amp-Hour-Meter-Arduino/

Author:sspence author's website


Professionally, I'm an IT Engineer (Executive Level) and Electronics Tech. Philosophically, I'm a Green Conservative, and probably would have been a hippie
in the 60's if I had been old enough. I live off grid, with Solar (PV), Wind, and veggie oil fueled diesel generator power.

Intro: DIY Amp Hour Meter - Arduino


For my off-grid Ham Radio and Solar projects, I needed a way to measure volts, amps, watts, amp hours and watt hours. There's a couple of commercial products that
can do this, but not with the flexibility I wanted. I designed a Arduino micro-controller based solution that is very extensible. Right now it monitors the above values of
attached gear, and I'm thinking about adding web monitoring and a sd card for data collection. Well, let's get started.

Step 1: Voltage Divider


The Arduino can accept up to 5v on a analog input. Our battery voltage can range as high as 16vdc in certain charge cycles, so we designed a voltage divider that would
provide 5v at 16v battery voltage, and less at various lower voltages. See http://en.wikipedia.org/wiki/Voltage_divider to determine the right values for your application.
The code to read that value is as follows:
batVal = analogRead(batMonPin); // read the voltage on the divider
pinVoltage = batVal * 0.00488; // Calculate the voltage on the A/D pin
// A reading of 1 for the A/D = 0.0048mV
// if we multiply the A/D reading by 0.00488 then
// we get the voltage on the pin.
batteryVoltage = pinVoltage * ratio; // Use the ratio calculated for the voltage divider
// to calculate the battery voltage
More details at http://arduinotronics.blogspot.com/2012/04/voltage-monitor.html

http://www.instructables.com/id/DIY-Amp-Hour-Meter-Arduino/

Step 2: Current Monitoring


The next step is to track the current being consumed by a load, or produced by a source. We are using a ACS715 Hall Effect sensor to track the current being passed.
// read the analog in value:
sensorValue = analogRead(analogInPin);
// convert to milli amps
outputValue = (((long)sensorValue * 5000 / 1024) - 500 ) * 1000 / 133;
amps = (float) outputValue / 1000;
More details at http://arduinotronics.blogspot.com/2012/04/monitoring-power-consumption-with.html

Step 3: Math Alert!


To calculate watt (volts * amps), amp hours (amps * hours), and watt hours (watts * hours) requires tracking the time component, and performing a bit of math:
float watts = amps * batteryVoltage;
sample = sample + 1;
msec = millis();
time = (float) msec / 1000.0;
totalCharge = totalCharge + amps;
averageAmps = totalCharge / sample;
ampSeconds = averageAmps*time;
ampHours = ampSeconds/3600;
wattHours = batteryVoltage * ampHours;

Step 4: Serial Output


We can now output the results of the calculations to the serial port using the following code:
Serial.print("Volts = " );
Serial.print(batteryVoltage);
Serial.print("\t Current (amps) = ");
Serial.print(amps);
Serial.print("\t Power (Watts) = ");
Serial.print(watts);
Serial.print("\t Time (hours) = ");
Serial.print(time/3600);
Serial.print("\t Amp Hours (ah) = ");
Serial.print(ampHours);
Serial.print("\t Watt Hours (wh) = ");
Serial.println(wattHours);

http://www.instructables.com/id/DIY-Amp-Hour-Meter-Arduino/

Step 5: LCD Display


Keeping a computer connected all the time is inconvenient, so I added a lcd display to the project.
lcd.setCursor(0,0);
lcd.print(batteryVoltage);
lcd.print(" V ");
lcd.print(amps);
lcd.print(" A ");
lcd.setCursor(0,1);
lcd.print(watts);
lcd.print(" W ");
lcd.print(time/3600);
lcd.print(" H ");
lcd.setCursor(0,2);
lcd.print(ampHours);
lcd.print(" Ah ");
lcd.print(wattHours);
lcd.print(" Wh ");

Step 6: Followup
All the code, schematics, and photo's along with discussion is available at
http://tech.groups.yahoo.com/group/arduinohome/files/volt%20amp%20watt%20hour%20meter/

Related Instructables

Solar powered
Reverse Trike
by farrukh khan
Laptop Battery
Analyzer
/Recycler by
splats

14 amp hour /
140 watt hour
lithium ion
battery by
Noblenutria

The mexican...
Watt ? ?
Calculate Watts
on motors with
Amp and Volt
readings. by
Rafael61

http://www.instructables.com/id/DIY-Amp-Hour-Meter-Arduino/

L.O.G.Kill A
Watt by
msuzuki777

Arduino EV
J1772 Charging
Station by
flyguy161

You might also like