Sensor suggestions for measuring DC amps, from +100A to -10A

roypogi:
One of my current sensors might be a fit for what you're looking for.
100Amp Hall-Effect Current Sensor
Some users I've talked to are using them on electric scooters similar to yours.
Thanks
Roy

Roy,

I've started testing the Panucatt CS-100 unit and have a few questions if I may:

With the sensitivity of 20mV/A if I theoretically put +100A through, Vout would be (2+2.5) = 4.5V and if I put -100A it would be (-2+2.5) = 0.5V. Given analogRead on the arduino can read 0 - 5V range then in theory the current reading range is -125 to +125 amps. So ...

  1. Is the 100A limit simply a heat management issue, with suitable heat could it read up to 125A sink and still produce a valid Vout voltage?

In my project I want to read scooter amps in range from +70A to -10A with reasonable accuracy even at low currents. I put the CS100 in a circuit with 12V battery and 2 x 1 ohm 50W accurate resistors and the CS100 reported values jumped around a little, with values in a range like this (actual current was 5.8A):

analogRead Amps
533 5.13
535 5.62
537 6.10
539 6.59

It's in right range, but 1.4 amps uncertainty is a bit too much for my purposes. So now I'm interested in two issues: sensitivity and stability.

  1. If the CS100 can actually handle 125A, then could the CS50 possibly handle 62.5A, with heat sink ? (this would give me its higher sensitivity of 40mV/A)

  2. is the instability for reporting a constant current that I'm seeing above normal, or do I have a noise problem ? (my prototype is pretty rough)

if it's normal then I'll have to resort to averaging readings over a time window

Lastly I'm going to make a bold suggestion regarding the formula in your application sheet:

Current = ((analogRead(1)*(5.00/1024))-2.5)/0.02

I believe the 1024 should be 1023. I have a spreadsheet which maps the range of analogRead values 0 - 1023 against voltages. Assuming the reading for 0 volts = 0 and for 5 volts = 1023. This shows that using 1024 increments gives max range of 4.9951 Volts, not 5 volts. Whereas using (1024-1) increments gives full range of 0 - 5.00 volts. (how do I attach my spreadsheet file to this thread?). So I believe the formula should be

Current = ((analogRead(1)*(5/1023))-2.5)/0.02

An easy way to see the issue is consider it resolution of analogRead was just 2 bits instead of 10 bits, then only four voltages can be resolved:

Volts analogRead Amps
5.00 3 125
3.33 2 42
1.67 1 -42
0.00 0 -125

so the correct voltage increment for each bit is 5/3 = 1.67 V/bit and if I use 5/4 = 1.25 V/bit the range drops to just 0 - 3.75 volts.

For your consideration ...

(BTW I believe the Arduino analogRead reference is the source of this mistake http://arduino.cc/en/Reference/AnalogRead and it should e corrected to 1023 as well.)