I am trying to make a battery capacity tester (3.7v li-ion 18650 battery) using arduino uno. If possible i'd like to test 20 or more batteries at the same time. I need to measure the voltage of each battery every 1 second.

The uno has 6 anolog inputs iirc so too little for this application. I think using analog multiple extenders (connected using I2C) chained together to create enough analog inputs. For example this one: https://nl.aliexpress.com/item/32858973834.html?spm=a2g0o.productlist.0.0.57206143DNgWKp&algo_pvid=526d42f2-f7ee-4781-932b-947744ac631e&algo_expid=526d42f2-f7ee-4781-932b-947744ac631e-0&btsid=89c452fa-1d7c-4ae9-9dd5-ed8fc9bff128&ws_ab_test=searchweb0_0,searchweb201602_8,searchweb201603_52 Do you think I'll be able to get relatively accurate voltage measurements using this approach?

The purpose of the circuit is to measure the amount of mah (battery capacity) of the 18650 battery which is being discharged via the 10Ohm resistor. The battery will be discharged from 4.2volt (fully charged) to approx 2.5V using the 10ohm resistor, each second the voltage drop over the resistor will be measured and using it and the time passed the integral of time*current will be calculated to determine the capacity.

This is the basic circuit used to connect each 18650 battery, the ANALOG1 pin will be connected to the input of the analog extenders: enter image description here (I based it off of the circuit from this video: https://www.youtube.com/watch?v=WScPyfQz_f8) The idea is to measure the voltage drop over the 10Ohm10W power resistor and calculate the current using the known resistance value, calculate the integral of current*time to get a capacity value for the battery.

Is this a good approach? Would you recommend using analog extenders for this? If not what would be a better solution? Thank you very much!

  • @jsotola My mistake I don't indeed, only need 1, will edit post Nov 12, 2019 at 18:17
  • I'd go for a set of 8-input ADCs, such as digikey.com/product-detail/en/microchip-technology/MCP3208-BI-P/… 8 channels, 12-bit resolution, fast SPI access. That 10 ohm resistor may get pretty warm. How will you disconnect the battery when it gets low on charge so that it doesn't become damaged from over-discharge?
    – CrossRoads
    Nov 13, 2019 at 13:43
  • Your circuit will draw about 360 mA from each battery through your 10 Ω resistor. Do you have a way to disconnect the batteries when they are not being tested?
    – Duncan C
    Nov 13, 2019 at 13:46
  • @Duncan C For disconnecting the battery i will use a mosfet which i will turn off using arduino when battery voltage gets too low. I forgot to draw it in the circuit Nov 13, 2019 at 17:02
  • @Crossroads thank you for the suggestion i will look inyo using that approach. The battery will be disconnected using a mosfet which is controlled by arduino which turns off the mosfet when the battery voltage gets too low Nov 13, 2019 at 17:03

1 Answer 1


Actually it is two separate questions and I answer your first question of reading multiple analog values using one ADC and the answer is Yes you can use this approach but you should give enough time for each channel to charge internal ADC capacitor when you change channel .so if you use more independent ADC you get more time for each channel and result is better

Your Answer

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

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