ACS712 Live Zero

Multimeters showing ACS712 VCC and VIOUT

After my previous test with ACS712 gave weird result, I suspect the ACS712 might be broken. The least amount of testing for this is to check its live zero reading. No Blue Pill or Arduino needed, just a multimeter, but I used two multimeters so I can compare values side-by side.

Live zero is a concept for sensors that … you know what, I’ll just link to other article instead of trying to explain it with my limited English and my nonexistent electronics domain jargon 😅. Here you go:

A live zero refers to an analog signal scale using a non-zero quantity to represent 0 percent of real-world measurement so that any system malfunction resulting in a natural “rest” state of zero signal pressure, voltage, or current can be immediately recognized.

Analog and Digital Signals

As for ACS712, all variants as far as I know, the live zero is 2.5V. This means that when the sensor does not detect current flowing between its IP+ and IP- pins, then ideally it will output 2.5V on the VIOUT pin. You can make sure by reading ACS712 datasheet.

In reality, the VIOUT reading when there is no current flowing will be half of the VCC to GND. So if the VCC is for example 5.024V, then VIOUT when no current is flowing will be about 2.512V. There are some factors that will cause drift in VIOUT reading, such as magnetic field and temperature. Just read the datasheet.

So here’s how I wanted to test the live zero:

  1. Use a L7805 linear voltage regulator to generate clean 5V for the ACS712’s VCC.
  2. Use a multimeter to make sure that the VCC is indeed 5V.
  3. Use another multimeter to read the VIOUT, the expected value is \(\frac{5V}{2} = 2.5V\).

Here’s how it look:

The left multimeter measured the VCC. The right multimeter measured the VIOUT.

So:

  1. The left multimeter showed that the L7805 output between 5.024V and 5.025V.
  2. The expected zero live value is between \(\frac{5.024V}{2} = 2.512V\), and \(\frac{5.025V}{2} = 2.5125V\). My multimeter does not have enough digits to display 2.5125V, so I expected to see between 2.512V and 2.513V.
  3. The right multimeter showed that ACS712 actual live zero reading between 2.514V to 2.516V.
  4. This means there is around +1mV to +3mV drift when there is no current flowing between IP+ and IP- pins.

Personally I think mere +1mV to +3mV drift is very good. ACS712 does not make any claim to be a precision sensor. If it does, I probably cannot afford to buy it. Then if the drift is only between +1mV to +3mV, why does during the previous test with Arduino Uno VIOUT pin reading were so wildly different from my multimeter? I have no idea 😑. I was using a battery as power source and a resistor as load. The reading shouln’t jump around like that. It’s OK for me to leave it at that though. This is a hobby after all.

All I can conclude from this test is that the ACS712 sensor is not broken. At least it gives the correct reading when there is no current flowing.

Laters!