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\$
  • \$\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 '15 at 14:21
  • \$\begingroup\$ @PlasmaHH how do I determine that? e.g. is 1K okay, or is 470K okay? \$\endgroup\$ – Can Poyrazoğlu Aug 17 '15 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 '15 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 '15 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 '15 at 16:16
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\$
  • \$\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\$ – Can Poyrazoğlu Aug 17 '15 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 '15 at 7:02
  • \$\begingroup\$ Okay, I'll be looking into that, thanks for the detailed explanation. \$\endgroup\$ – Can Poyrazoğlu Aug 18 '15 at 10:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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