ACS712 Module Measures Currents up to 30A for as Low as $1 Shipped
Usually, if I buy a high power electric appliance, I like to double check it power consumption either with a Kill-a-watt when possible, and when not, e.g. cable directly hooked to the device or current intensity is too high, I use a digital electric clamp meter. Both methods are quite convenient as you don’t need to cut any wire to measure the current and determine the power consumption, but they don’t allow for data gathering since they don’t connect to the network. Earlier this week, I’ve come across a projects using ESP8266 for a mains energy monitor for a solar panel setup, and measuring mains current, electric meter, and gas meter. They use a photosensor to measure power consumption on their electric meter, which works, but may be problematic if the meter is on the street, and iSnail current sensor, using hall effect just like clamp meter, but instead of showing the current on a display the sensor output 0 to 5V, meaning you can connect it to a micro-controller to handle the data however your like. That’s nice, but while a clamp meter costs about $10, the 25A version of iSnail goes for $40, so I looked for alternatives. I wanted to find an always-on connected hall effect current sensor that either harvest energy or works of a fews with a battery, but did not find any, an instead discovered cheap current sensor modules based on Allegro Systems ACS712 supporting either 5A, 20A or 30A , working easily with analog inputs of Arduino boards, and selling for as low as $1 shipped on eBay for the 5A, while the 20A & 30A versions usually sell for less than $2.
- ACS712 Hall-Effect-Based Linear Current Sensor IC (Datasheet)
- 2-pole terminal for DC or AC load
- 3-pin header with VCC (5V), GND and OUT pins
- Input Current and Sensitivity (measurement scale)
- -/+ 5A – 185 mV/A
- -/+ 20A – 100 mV/A
- -/+ 30 A – 66 mv/A
- Dimensions – 31 x 13mm
Since the IC can measure in both direction, OUT pin outputs VCC/2 (2.5v) when there’s no current, and other values which may be lower and greater than VCC/2 depending on current direction to report the actual current.
Measuring DC current is very easily as you just need to take one measurement, subtract VCC/2, and divide this by the sensitivity. Alternative current is only a little more complicated as you have to take many measurement to find the RMS value as explained on Henry’s bench website. If you are playing with high voltage (110V/220V) be very careful, and using non-invasive current sensor might be a better idea, especially if you are a beginner.
Since the board had been available for a few years, there’s plenty of documentation on the web for Arduino. One person (Julian) did a pretty good video showing how it works.
ACS712 current sensor can also be interfaced with ESP8266, but since the wireless chip’s analog input only takes 0 to 1V, ACS712 output must be reduced leading to a lower accuracy, unless used via an external ADC chip. ESP32 won’t have this problem however as the analog input supports up to 0 to 4V range, although I understand ESP32 may has some built-in functions for energy monitoring.