1
\$\begingroup\$

(Full disclosure: I'm a newbie.)

I'm trying to measure my 4S lipo's cell voltages using an Arduino Mega. I know that I should use a voltage divider (actually, several of them) and I think I understand how it works. I also know about the voltage difference relative to GND would increase by up to 4.2V for each cell, and at 4th cell, it can be over 16V so I should be safely dividing it down to max 5V. However, I'm confused with what resistance values should I use for the divider(s). Wouldn't a low resistance value mean effectively shorting the lipo? Would a too high resistance value cause incorrect readings? In this context, what is a "low" resistance value and what is a "high" resistance value? Or are all resistors already way above that limit and I can use them safely? I've got all types of resistors from 47R to 1M, but I don't know what to use.

\$\endgroup\$
10
  • \$\begingroup\$ Make it small enough to not be influenced by the measurements devices input impedance, make it large enough to not draw too much current. \$\endgroup\$
    – PlasmaHH
    Aug 17, 2015 at 14:21
  • \$\begingroup\$ @PlasmaHH how do I determine that? e.g. is 1K okay, or is 470K okay? \$\endgroup\$ Aug 17, 2015 at 14:22
  • 1
    \$\begingroup\$ Without looking up the data sheet - if you don't mind needing to disconnect it when not in use - ie on the load side of the on/off switch or break plug, then a total of 10k-20k range will be very safe. If Full scale is say 20V then you want a 4:1 divider to 5V so 3R:R so say 15k Bat to ARduino and 4k& Arduino to ground. You could use a pot for part of that OR adjust in software or trim with parallel resistors. || Odds are you can go to 50k or even 100k and be not too inaccurate but lower is better. Arduino uP will have an ADC Rinmax spec somewhere. At 20 V and 10 =bits = 1024:1 divide you... \$\endgroup\$
    – Russell McMahon
    Aug 17, 2015 at 16:04
  • 1
    \$\begingroup\$ ... get about 20 mV per bit so accuracy of about 0.1V allows 1+ bits of error. Error is caused both by Verror = Rin x (Ibias + Ioffset) PLUS by time constant issues where input c takes time to charge and if R is too large the cap will not be charged enough by next ADC samople time. \$\endgroup\$
    – Russell McMahon
    Aug 17, 2015 at 16:07
  • 2
    \$\begingroup\$ ... You also can use an opamp buffer that can tolerate very high Rin. At say 1M the drain usually does not matter over usual time periods. || (Past bed time in NZ . 4:15am and I have to be up at 8:15 so ... TTFN). \$\endgroup\$
    – Russell McMahon
    Aug 17, 2015 at 16:16

1 Answer 1

1
\$\begingroup\$

Wouldn't a low resistance value mean effectively shorting the lipo? Would a too high resistance value cause incorrect readings?

You are absolutely correct so, some people use a low value potential divider (in order to obtain decent accuracy) but disconnect this potential divider from the LiPo when not requiring a measurement. In effect, the low duty cycle measurement dramatically increases the effective resistance of the potential divider.

You can disconnect the potential divider with a P channel MOSFET and a BJT - the BJT is activated from a spare IO line. I'm not saying this suits your application of course.

\$\endgroup\$
3
  • \$\begingroup\$ Thanks, I think it would be an overkill, but I've got the idea. I don't have a MOSFET but I've got many simple NPN transistors, I think I can use them too in order to get the same effect. Lastly, if I don't do it and go straight, what would be a good resistance value? \$\endgroup\$ Aug 17, 2015 at 15:10
  • 1
    \$\begingroup\$ You need to check the data sheet of the Arduino, specifically the ADC input - it may be high impedance buffered allowing you to have circa 100k resistor values OR it might specify something like the maximum source impedance to achieve a certain accuracy. ADC input pin bias currents are also very relevant to this too. \$\endgroup\$
    – Andy aka
    Aug 18, 2015 at 7:02
  • \$\begingroup\$ Okay, I'll be looking into that, thanks for the detailed explanation. \$\endgroup\$ Aug 18, 2015 at 10:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.