Go Down

Topic: Sensor suggestions for measuring DC amps, from +100A to -10A (Read 3 times) previous topic - next topic

MarkT

There's a nice current shunt sensor module at Sparkfun and others: http://www.sparkfun.com/products/9028 - also measures voltage for complete power monitoring.
[ I won't respond to messages, use the forum please ]

roypogi


so panucatt is your gig Roy? Really like the design of those current sensors ... and your web site intro where you crossed out "mission critical applications" and change it to "mad scientist projects" (from memory). ... funny  :)


There's this guy who mentioned that he used the sensor in an experimental rocket so I was thinking JPL type stuff, but when he sent me a video of a test launch and its super awesome and qualifies as Mad scientist's stuff. I have a lot of ebay buyers from Australia, mostly for Wind/Solar and other power generating systems.

Thanks

Roy
Panucatt Devices

robtillaart

#7
Jan 29, 2012, 12:17 am Last Edit: Jan 29, 2012, 12:21 am by robtillaart Reason: 1
- http://www.sparkfun.com/products/10644 - ?

The punacatt looks very good (see PDF, mounting tips for such a current are not trivial)
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

ninja2

#8
Mar 18, 2012, 12:02 am Last Edit: Mar 18, 2012, 10:30 am by ninja2 Reason: 1

One of my current sensors might be a fit for what you're looking for.
http://www.panucatt.com/Current_Sensor_for_Arduino_p/cs-100a.htm
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.

2) 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)  

3) 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.)

dc42

#9
Mar 18, 2012, 03:08 pm Last Edit: Mar 18, 2012, 03:13 pm by dc42 Reason: 1

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.


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.
Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

Go Up