# Multichannel Voltmeter + PC Display

Hello, i am new to this forum and arduino world. i have experience with programming and also electronics. i wanted to know if arduino is the answer to what i am looking for.

i would like to build a 30 channel voltmeter that will measure at the same time all channels and can log and display on PC the results. i need 28 low voltage (0-12v) and 2 high voltage (250v) all DC.

any help would be much appreciated!

Arduino UNO have only 6 analog input, but you can use multiplexer CD74HC4067 to expand the input.

ori793: i would like to build a 30 channel voltmeter that will measure at the same time all channels and can log and display on PC the results. i need 28 low voltage (0-12v) and 2 high voltage (250v) all DC.

but measure at the same time for all channels was not possible, it will do it in ms.

the Arduino library is enabling the ADC with a 128 prescaler, giving a 125 kHz ADC clock speed when the core clock is 16 Mhz. A 125 kHz clock speed will result in 125 kHz / 13 = 9600 Hz sample speed. The hardware limit is 9,600 samples per second or 96 samples per millisecond. We cannot physically do better than that at the desired 10 bit resolution.

Skip the HV for now (it will be sufficiently different from the 12 volt samples, and you will need different hardware.) Are you sure the voltage won't be over 12 volts? First determine the highest possible voltage, then build a voltage divider to bring the voltage to somewhat less than 0 to 5 volts, and hook each of these to a Mega.

This should give you the basic ability to read all 28 inputs within a few milliseconds. Then you can start improving the circuit and the program, but this will be a "quick and dirty" proof of concept that works.

ms between measurements is not a problem for me.

i will try to explain what am i doing,

i am working on high voltage DC batteries that are built of 28 NIMH cells, providing 7.2v each.
i test the whole battery pack on table, load testing the whole battery with 1000w and check voltage of each cell, so i can compare the performance of each cell in a relation to others on the same pack.

one problem i can think about, there is no common ground between these cells.

the HV measurement is to determine the average voltage each cell should provide and show the ones that are bellow average.

i want to make a software that will register each cell, and log its performance (they are QR labled to this should be relatively easy).

That's a long way from 'at the same time'! Would once a second be sufficient? Once a minute? An hour? How fast do they fail?

Your 'no common ground' statement seems significant. Is this on purpose? (Are you also wanting to determine the voltage of the battery's negative terminal above ground for some reason?)

‘no common ground’
You may use relay and sample and hold capacitor

your samples helped me very much.

sampling every 3 seconds would be enough to make a good performance graph.

the reason there is no common ground is because the batteries are connected in series + to - . so if i use whole ground, i will get different voltage depends of the cell location.

what are the U1, U2 components (connected to digital output) on the 2nd sample? some kind of relay driver?

sorry if my questions are silly im a newbie around arduino :confused:

the U1, U2 components is Darlington Driver 8-Channel ULN2803

i saw usage of 74HC595 to operate LEDs, you think it can drive a relay? (6mA at 5v) because using 4x74HC595 i dont have to use a Mega

I use a TPIC6C596 in that first diagram to drive 8 relays. There are others in that family, like the TPIC6B595 (ebay).

They work the same as the 74HC595, but have more powerful outputs. Leo..

If all voltage sources are connected together, build the difference between the test points to determine individual voltages. A higher resolution ADC will be required, and many of them or multiplexers for the intended number of channels.

I think OP wants to measure up to 30 LiPo cells in a stack (~126volt). Then voltage dividers on each tap are not practical anymore, because of the uneven drain on each cell.

There are special (= expensive) chips to do this, and they seem to be made of unobtainium.

I opted for "flying cap" and relays. DIY friendly, cheap, no drain on the cells, full isolation, and only one A/D to measure it all (no differences to calibrate). Stack voltage can be as high as the stand-off voltage of the relay contacts allow. The 24-cell system I made scans all 24 cells in about half a second. Only downside so far is the prrrrrrrrrrt noise of the relays every time the cells are sampled.

How does it work: 1) Go to your car with a capacitor, and connect it across the battery terminals. 2) Walk back to your workshop, and measure voltage on the cap with a DMM. 3) Go to the car again, and connect the cap across the battery terminals. 4) Leave it there, connected, untill you want to measure again.

If you do this at regular intervals, then you know the state of the battery. You only have used battery power once, when you charged the cap for the first time. Leo..

126V is about 25 times the usual 5V ADC range. An external 24bit ADC instead will have 16000 times the resolution of the Arduino ADC, so that I don't see any problem with measuring all the voltages with sufficient (more than 500 times better) precision.

True.
Theoretically you only need a 15-bit A/D to match the resolution of measuring a single Lipo cell with Arduino’s 10-bit A/D.
4.2volt / 1024 = ~4mV resolution.
For 126volt with the same resolution, 126 / 0.004 = 31500 steps are needed.

Problem are the ~30 voltage dividers.
They have to be trimmed/calibrated per cell.
And every divider for the next cell in the stack draws current from all the cell below.
The cell closest to ground has to supply current to all dividers, while the “top” cell only has to do one.

You could try to switch the divider on/off only during measuring, with mosfets.
This is the diagram I drew up (not tested).
Leo…

If the battery cells are tested with a 1000W load, the current through the voltage dividers is negligible.

Point taken. Just saw that these are 7.2volt NiMH (not LiPo) packs. 30 * 7.2volt = 216volt. If that 7.2volt is 6 cells in series (1.2volt/cell), then a pack could be almost 9volt when freshly charged. A total stack voltage of 30 * ~9volt = 270volt. I think relays could be a good option. Leo..

I think when in use the are only charged to 7.2 volts (80%) but when connected to an external charger (not in car) they may well reach 9v.

Did anything come of this project? I may actually pick this up as I want to do the exact same thing as the OP.

This diagram appears to be able to do what I and the OP need, Am i correct?

Dangerous diagram.

When two or more relays are active, then the batteries are shorted.
This could happen when code goes haywire, or during bootup.
If you use this diagram, then add protection resistors between cells and relays.

I would ues a TPIC6x59x (e.g. TPIC6B595) instead of a darlington array.
Leo…

Wawa: Dangerous diagram.

When two or more relays are active, then the batteries are shorted. This could happen when code goes haywire, or during bootup. If you use this diagram, then add protection resistors between cells and relays.

I would ues a TPIC6x59x (e.g. TPIC6B595) instead of a darlington array. Leo..

I build something based on this circuit, with the exception of using A5W-k relays instead of NTE-R40 relays, and 1N4148 diodes across the relay terminals instead of the resistor + LED combinations. I learned the hard way that two, or perhaps more, relays could be engaged at the same time.

You mentioned "protection resistors between cells and relays" - what size resistor would you use?

Hi, You should be charging capacitors and switching the cap from battery to ADC.

Tom.. :)