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

ninja2:
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.

The output from the Hall current sensor may well be jumping around a bit, in which case I suggest you average several readings. However, there are some other possibilities:

  1. The +5v supply feeding the Hall sensor and also used as the Arduino reference voltage needs to be stable. Ideally you should filter the 5v supply using an R-C or L-C network, and apply that filtered supply to the Aref pin and use it to power the Hall sensor. Then call analogReference() to select the external reference.

  2. You need to prevent ground noise reaching the analog input. Dedicate one of the ground pins on our Arduino to be analog ground. Use that ground pin only to connect the ground side of the Hall current sensor (and the ground side of any other analog sensors you are using), and the ground side of the filter capacitor if you are filtering the 5v supply as described above.

  3. The cable connecting the Hall sensor to the mcu could be picking up noise. Use shielded cable to connect the Hall current sensor to the Arduino, unless the distance is very short. The shield should be connected to analog ground.

ninja2:
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.

No, 1024 is correct. However, the reading you get from analogRead tells you the input voltage rounded down to the next step. For example, assuming the default analog reference of 5v, a reading of 0 means between 0v and 4.88mV on the input pin, a reading of 512 means between 2.5V and 2.50488V, and 1023 means between 4.99512V and 5V. This means there is a case for adding 0.5 to the reading you get before doing the maths on it.