Voltage and Current Sensor for a Car Battery

Hey, I'm in search of a voltage and current sensor for my project. They can be either seperate sensors or joined as one it won't make a difference.

They will be measuring the voltage and amps output of a 12V car battery.

The voltage sensor will need to be able to measure at least 15V as usually car batterys when being charged by the alternator ranged between 13-14V. From my research thus far I've found a few that measure up to 25V such as the 'Diymall voltage sensor'.

The current sensor is the tricky part as these 12V car batterys have a capacity of 400-1000 amps from my understanding. I am finding it very difficult to find a sensor to meet these needs.

Any info would be of great help.
Thanks.

You are working this backwards. Decide on the maximum current you will need to know and get a sensor that cannot be damaged by current more than that maximum.

2 Likes

The cable from battery negative to auto body ground is a shunt resistor and can be useful for measuring high currents (like starting currents).

The voltage drop across it is proportional to the current draw, but you do need some means of calibrating it.

2 Likes

You can use a voltage divider for the voltage sensor. A 4.1K from 12V and 2K to ground. the junction of the two resistors will give you a voltage good to at least 16V. For current use a low side shunt rated for about 200 Amps, depending on what your starter is. This might be a little light on a V8 but ok for the others.

1 Like

BUT! Be careful doing this if you have a car with a computer that monitors the current already.

1 Like

Just an off the cuff idea...

Perhaps an analog Hall sensor placed at the cable coming off the battery. It would have to be perpendicular to the centerline of the cable and would need to be calibrated.
However the unit would be isolated from the vehicle wiring and not risk any interaction with the ECU.
However it may be a little insensitive for what you might have in mind.

2 Likes

Hello magix_jazr
Take a view to get some ideas.

Have a nice day and enjoy coding in C++.

1 Like

NO. Capacity is amp-hours (or watt - hours) and a 12V lead-acid car battery is typically 60 Ah.

Maybe short circuit current could be 400A but you REALLY dont want to short circuit ANY battery.
Now your problem is the current polarity and range.
Cold starting a "typical" car engine could take around +500A.
Maintaining the electronics when the ignition is off and car is locked could be a few milliamps.
When being charged by the alternator the current could typically be around 6A (lead acid batteries should not be charged above the 0.1C rate) - so -6A.

Of course it depends on the application. Is the battery going to be used in a high current and or recharging situation?

1 Like

Hey, thanks for the reply!

I suppose I wouldn't really need to measure the start up current as my project involves measure the voltage and current, determining whether the car battery has enough 'juice' to start the car. If not there is a reserve battery wired up to charge the car battery in order to get the car started.

This is a project I planned on doing for college and currently I am in the planning process of it.

No, it doesn't work like that. You can't measure the 'current' 'inside' a battery.
But the good news is that the voltage alone will say quite a bit about the remaining capacity of the battery, so just by measuring the voltage, you can probably already get what you want.
Even better news - any Arduino or clone can do this with just two resistors and no additional external modules.

Edit: of course the tricky bit will be switching over between batteries. You'll need a pretty sturdy relay for this.

You can research this a bit, but I THINK a battery tester (for a car battery) measures the no-load voltage and then the voltage with a known-moderate load. My mechanic just changed the batteries in both of my vehicles, and I could have asked him... I knew one was weak but I didn't know about the other one (and I do trust him).

Of course the problem is... If you test the battery with a load you are draining it!!! That's not a big deal if you are going to charge it anyway but it's a bad idea if you need the car to start now! You could try measuring the voltage with the headlights on and comparing what happens when fully-charged and when "weak".

The no-load voltage should tell you something but I don't know how sensitive that is.

I don't know the "right way" to measure high currents. You don't want to add a shunt resistor because that makes a voltage drop across the shunt. It would be OK to use the existing battery wires BUT since the Arduino measures voltage relative to ground you have to use the ground wire. AND that will ONLY work for high currents because under "normal conditions" there won't be a measurable voltage-drop across the wires. AND you'd need a way to calibrate it.

One question is the level of current you wish to measure. Do you wish to measure the starting current?

Then you need to measure the internal resistance. You will find these useful

To measure the internal resistance you will need to read the open circuit voltage AND make a reading of the voltage under a load. As the internal resistance is milliohms you WILL need to draw a significant current - say an amp - for a short time. But long enough for the reading to stabilise.
And only infrequently or you will flatten the battery - (so perhaps your program can make a decision whether to do that based on the open circuit voltage reading.)

You can do this by using a MOSFET to switch a load resisitor across the battery for a few seconds.

As cell voltage and internal resisitance are both dependent on cell temperature you will also need to measure that.

Its an interesting project and you will need to work out how to use the data to give you a value for the state of charge. You may also need to add a "fiddle factor" to calibrate it to the particular battery you are using. Maybe readings taken while its on charge would help.

The ADC on a 32U4 (Micro Pro or similar) will give you sufficiently accurate and precise readings. Or if you want remote readings you could use an arduino or similar (NodeMCU or ESP32) to send the readings to a web page, or perhaps use bluetooth to link to an android phone?

FWIW

A "trick" for starting a vehicle on a very cold day, with a marginal battery is:

Turn on a heavy electrical load for a minute or so. This heats up the battery which increases its cranking power.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.