Internal Resistance Measurement

Hi I'm trying to measure the internal resistance of my lithium ion batteries, I made this schematic. I made some calculations but is my schematic going to work? or do I need to put other components in this? I tried it using breadboard but I'm not sure if I'm doing this right.. Thank you so much appreciate your help <3

Looks alright to me. not so sure what R is but

Battery resistance = (V bat open circuit - V batt on load)/ Load Current

Battery resistance = (V bat open circuit - V batt on load)/ (V load resistance/Load restance)

Battery resistance = (Load resistance * (V bat open circuit - V batt on load))/ V load resistance

which I think is what you have.

Dead_Ard

Dead_Ard:
Looks alright to me. not so sure what R is but

Battery resistance = (V bat open circuit - V batt on load)/ Load Current

Battery resistance = (V bat open circuit - V batt on load)/ (V load resistance/Load restance)

Battery resistance = (Load resistance * (V bat open circuit - V batt on load))/ V load resistance

which I think is what you have.

Dead_Ard

Hi dead_ard! thank you for replying, R is the resistance rating of the resistor im using to get the Vload, my concern right now is the program, I'm having problems with it. Vopen is the same with Vload :frowning:

You must turn the load on and off, to measure Vload and Vopen at A0. Use a relay or MOSFET for the switch. Reduce R until you get a reasonable difference between both voltages.

If you measure the same voltage at A0 and A1, you may have forgotten to connect the grounds.

In your circuit diagram:
A0 can only read Vopen when R is disconnected.
A1 will not read Vload, it will only read Ground.
You can read Vload from A0 when R is connected. I think a logic-level MOSFET between R and Ground would allow you to do the switching.

If the 10 Ohm load doesn't load the cell enough, try a 1 Ohm 15W resistor for R. That should draw about 3.7A at the batteries nominal 3.7V. 3.7V at 3.7A is 13.69W.

Hi guys is this what you are talking about(attached)? Does this mean A0 will read Vopen and A1 will read Vload? Not really familiar on how to use mosfet or how its going to work. Thanks guys!

photo from: lazyelectronics

Int Res.PNG

Does this mean A0 will read Vopen and A1 will read Vload?

No. All you need is the A0 connection (the direct battery connection/measurement) which will read differently with and without a load (if the load resistance is low enough to make a difference).

Not really familiar on how to use mosfet or how its going to work.

When the MOSFET is on, you have a short (almost) to ground and A1 should read (nearly) zero. When the MOSFET is off you have an open and A0 & A1 will read the same.

If this is a one-time measurement you don't need the MOSFET. Just wire the resistor across the battery for long-enough to make a measurement.

Note what John said about the resistor! It has to be a power resistor! A regular 1/4W resistor is going to burn-up with a few watts.

P.S.
Although the resistance is real, it's not a "resistor". The resistance may change depending on the load, the state of the charge, the age of the battery, the temperature, etc.

Great! Thank you I'm gonna try it later.. I think I'm going to use a MOSFET, btw my project is solar powered generator using lithium ion batteries, my professor ask me to measure the internal resistance of the banks and display it on an LCD. Thank you for this, I will try the schematic above with mosfet if that will work. Thanks

DVDdoug:
Note what John said about the resistor! It has to be a power resistor! A regular 1/4W resistor is going to burn-up with a few watts.

A few watts?

Tell me more about your batteries

Otherwise everything is based on speculation.
Lihium batteries can explode when overloaded (ask Samsung and Boeing and other companies).

However, the inputs on this thread are very helpful. Connecting A1 to ground does not really help (mentioned above by johnwasser)

Guyssss.. there's no available IRLZ44N in electronics shop here however IRFZ44N is available. Can I replace the IRLZ44N with IRFZ44N? If not what is the replacement for IRLZ44N? Please see attached at #5 thank you guys

arduinoaleman:
Tell me more about your batteries

I'm using 4.2V,2250mah lithium ion battery

Banks are consist of 16pcs batts connected in parallel..

JacksonJoe21:
Guyssss.. there's no available IRLZ44N in electronics shop here however IRFZ44N is available. Can I replace the IRLZ44N with IRFZ44N? If not what is the replacement for IRLZ44N? Please see attached at #5 thank you guys

i don't think so. I believe that the IRL version is the Logic Level version which can switch fully on 5V and the IRF version is the normal version that requires closer to 10V to switch fully. Look in the datasheet for the gate voltage at which they measure R(on) (On Resistance). If it's 5V or lower (often 4.5V) you can use it. If it's around 10V then you have the wrong MOSFET for a 5V logic output.

Can't you simply ask for a Logic Level FET in your local store?

I tried the irfz44n and I was able to measure the voltage drop on load at state == measuring but after state waiting and ended I'm only getting the Voltage at no load result. Do you have ideas regarding my code? Appreciate all your help. Thank you

#define STATE_WAITING 0
#define STATE_MEASURING 1
#define STATE_MEASURING_ENDED 2
#define BAT_LI 0


float vtgBatUnlod;
float vtgBatLoaded;
float vtgBatUnloaded;
float vtgLoad;
float vtgDropOnLoad;
float vtgDropRin;
float rLoad= 10.0 ; //resistanse of the load in Ohms
float rIn;
float batCurrent;
float mAh;
uint8_t FET_Base=7;
uint8_t state=STATE_WAITING;
float cutoff;
boolean DischargeAllowed=false;



void setup() {

Serial.begin(9600);

pinMode(FET_Base,OUTPUT);
digitalWrite(FET_Base,LOW);

}

void loop() {

   if (state==STATE_MEASURING)
   {
  
  vtgBatUnloaded=analogRead(8)*5.0/1024.0; //get the voltage of UNLOADED battery
  
  if (vtgBatUnloaded<cutoff)
  {
    state=STATE_MEASURING_ENDED;
  
  }
  
   digitalWrite(FET_Base,HIGH); //turn the MOSFET on
   
   delay(1000);
   
   vtgBatLoaded=analogRead(8)*5.0/1024.0;   //get the voltage of LOADED battery
   
   vtgLoad=analogRead(9)*5.0/1024.0;
   
   digitalWrite(FET_Base,LOW);//turn the MOSFET off
   
   vtgDropOnLoad=vtgBatLoaded-vtgLoad;


  vtgDropRin=vtgBatUnloaded-vtgBatLoaded;
 

 rIn = ( 10.3* (vtgBatUnloaded - abs(vtgDropOnLoad) ) / abs(vtgDropOnLoad));


   }
   
   else if (state==STATE_WAITING)
   {
digitalWrite(FET_Base,LOW);//turn the MOSFET off
     vtgBatUnloaded=analogRead(8)*5.0/1024.0; //get the voltage of UNLOADED battery

 Serial.println(vtgBatUnloaded);
 Serial.println(vtgDropOnLoad); Serial.print("vtgdr");
 
   }    

   else if (state==STATE_MEASURING_ENDED)
   {
   digitalWrite(FET_Base,LOW);//turn the MOSFET off
    vtgBatUnloaded=analogRead(8)*5.0/1024.0; //get the 

    Serial.println(vtgBatUnloaded);
  

   }

   }

The measured voltages would be very helpful.

JacksonJoe21:
I'm using 4.2V,2250mah lithium ion battery
Banks are consist of 16pcs batts connected in parallel..

I think you will have to say more than that. Are you saying that the entire battery is 2250 mAh? Those would be very tiny cells. Are you saying each cell is 2250 mAh (like an 18650 cell)? That would mean a 36 Ah battery and even if they were only capable of a 1C discharge rate (36 Amps) you would probably need a much heavier load to cause measurable dip in voltage. If you drop the resistance to, say, 0.1 Ohm 200W (3.2V to 4.2V would give currents of 32 to 42 Amps and power of 102 to 176.4 Watts) you are going to need bigger MOSFETS.
If it's 16 x 2250mAh LiPo cells capable of 20C discharge rate you may have to load them at 10C (360 Amps!) to get a measurable voltage drop. That's 0.01 Ohms, 320 to 420 Amps, 1020 to 1764 Watts. You'd need a 2 KW resistor and a bank of MOSFETS.