Summary of DIY Amp Hour Meter – Arduino
The author built an Arduino-based monitoring system for off-grid ham radio and solar projects to measure volts, amps, watts, amp-hours, and watt-hours. It replaces limited commercial units with a flexible, extensible solution; future plans include web monitoring and SD card data logging. The author adjusted voltage divider resistor values for better impedance matching with the Arduino ADC, citing ATmega328P recommendations to use source impedance around 10 kΩ or less to ensure accurate ADC sampling.
Parts used in the DIY Amp Hour Meter:
- Arduino microcontroller (implied Arduino/ATmega328P)
- Voltage divider resistors (adjusted values for impedance match)
- Current sensing component (shunt or sensor implied)
- Wiring and connectors for attached gear
- Optional SD card (planned for data collection)
- Optional network/web interface hardware (planned for web monitoring)
If you like this instructable, please vote for it!
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.
I’ve changed the resistor values of the voltage divider to get a better impedence match with the Arduino A/D. Ben from Pololu says:
The ADC on an AVR can’t very accurately measure signals with a high output impedance, and your voltage divider definitely counts as high-impedance. From the ATmega328P datasheet:
The ADC is optimized for analog signals with an output impedance of approximately 10 kΩ or less. If such a source is used, the sampling time will be negligible. If a source with higher impedance is used, the sampling time will depend on how long time the source needs to charge the S/H capacitor, with can vary widely. The user is recommended to only use low impedance sources with slowly varying signals, since this minimizes the required charge transfer to the S/H capacitor.
For more detail: DIY Amp Hour Meter – Arduino
- What does the project measure?
It measures volts, amps, watts, amp hours and watt hours. - What microcontroller is used?
An Arduino microcontroller based on the ATmega328P is used. - Why were the voltage divider resistor values changed?
They were changed to get a better impedance match with the Arduino ADC. - What is the recommended source impedance for the ATmega328P ADC?
The ADC is optimized for analog signals with an output impedance of approximately 10 kΩ or less. - What future features are being considered?
Web monitoring and an SD card for data collection are being considered. - Why is low source impedance important for ADC accuracy?
High output impedance causes the ADC sampling time to depend on how long the source needs to charge the sample and hold capacitor, reducing accuracy.

