16 Channels of 15V Analog Inputs... Any Suggestions?

Hi All,
I'm trying to finish off a project I started a while ago but I've been having a bit of trouble with the Analog Inputs...

What I'm trying to do...
I need to be able to read the voltage of 16 individual inputs with a reasonable level of precision (12bit, maybe?). Input voltages could be anything between 5VDC and 15VDC.

Can anyone provide any suggestions on a way to do something like this?

Any help would be greatly appreciated.
Thanks Guys,
Alex

Is 10 bits (1024 steps) not enough? 12 bits places a lot more effort on you rpart to get everything just right.

IF 10 bits is enough than some of these:

Along with your analog inputs should work.

You can also google 12 bit ADC SPI

I also found this:

KeithRB:
Is 10 bits (1024 steps) not enough? 12 bits places a lot more effort on you rpart to get everything just right.

IF 10 bits is enough than some of these:
https://www.sparkfun.com/products/8636

Along with your analog inputs should work.

You can also google 12 bit ADC SPI

That's not 15V compatible.

That's the big issue. But we need more info about signal source before choosing an appropriate method of handling the signals - high impedance? low impedance? Definitely within the 0..15V range?

Clearly an analog multiplexer good for 15V would be a start (the original CMOS 4000 series can do that I think). But converting down to 5V needs either an active or passive attenuator circuit. And up-converting the signals to drive the analog multiplexer might be needed. I feel there is probably a modern 16way analog multiplexer that can handle 15V analog and use 5V digital - might be surface-mount though.

That is why they have a thing called a voltage divider.

DG408 into resistor divider into MCP3201.
Or signals into voltage dividers into MCP3208
www.maxim-ic.com for DG406
www.microchip.com for MCP320x

KeithRB:
That is why they have a thing called a voltage divider.

That's possible of course, but precision is potentially going to take a big hit even before the resolution of the ADC is factored in. From the perspective of the signal's information content a voltage divider going from 5 to 15 V down to 0 to 5 V means there will be roughly three times less usable information detectable in the output signal. For some applications that's not a problem, for others it will be. Instead, I would check to see if there is an affordable ADC chip/module that can handle the orignal input voltage and output serial communication of some sort at 5 VDC.

Assuming that you are not in the noise, which you shouldn't be if you choose the divider correctly, 4196 steps at 5 V gives you the same resolution as 4196 steps at 15 volts, you are not losing anything.

DG408 into resistor divider into MCP3201.

and to solve the Granularity issues a variable Vref (DAC) might be used to solve this:

voltage divider going from 5 to 15 V down to 0 to 5 V means there will be roughly three times less 1/3 less usable information detectable in the output signal

so change the Vref as required to increase the effective available information by providing a Vref suitable to the measurements.

Bob

Far-seeker:

KeithRB:
That is why they have a thing called a voltage divider.

That's possible of course, but precision is potentially going to take a big hit even before the resolution of the ADC is factored in. From the perspective of the signal's information content a voltage divider going from 5 to 15 V down to 0 to 5 V means there will be roughly three times less usable information detectable in the output signal. For some applications that's not a problem, for others it will be. Instead, I would check to see if there is an affordable ADC chip/module that can handle the orignal input voltage and output serial communication of some sort at 5 VDC.

I suspect you will have a very hard time trying to find, if any indeed exist, any ADC chips that allow input signal voltages to be higher then it's Vcc voltage (or lower then Vdd), which in most cases I'm aware of is limited to standard Vcc values of 5 vdc or lower. And any ADC type module that can handle that high of input voltages would just be using some kind of programmable front end attenuator (voltage divider) and still process the ADC conversion at standard Vcc values.

Lefty

lxmyers:
Hi All,
I'm trying to finish off a project I started a while ago but I've been having a bit of trouble with the Analog Inputs...

What I'm trying to do...
I need to be able to read the voltage of 16 individual inputs with a reasonable level of precision (12bit, maybe?). Input voltages could be anything between 5VDC and 15VDC.

Can anyone provide any suggestions on a way to do something like this?

Any help would be greatly appreciated.
Thanks Guys,
Alex

There's bound to be an I2C device for this. Google for "I2C DAC" or something like that.

Most ADCs seem to be limited to +/-10V signals.
For instance, this Anaog Devices part
http://www.analog.com/static/imported-files/data_sheets/AD7656_7657_7658.pdf
uses +/-15V supply, Performs 6 simultaneus conversions, and looks to have good performance #s.
So take the +/-15 input, get some trimmed resistors to divide it down by 1/3, and off you go.

They have a good parametric search feature so you can find a part that meets your needs.

KeithRB:
Assuming that you are not in the noise, which you shouldn't be if you choose the divider correctly, 4196 steps at 5 V gives you the same resolution as 4196 steps at 15 volts, you are not losing anything.

I was refering to usable information, so noise is a potential factor unless everything is in a Faraday cage. No matter how well chosen the divider configuration is it can't prevent EMF induced noise as it travels from the output of the divider to either an analog pin on the Arduino board or a separate ADC chip. Divide 4196 steps into 5 V and then into 15 V, that will give you what the respective difference if voltage is between each step for each voltage level. 15 V is simply going to be more tolerant, as in a given level of noise is going to impact the ultimate digital signal level less than at 5 V.

Obviously, a voltage divider right next to an Arduino's/ADC's input pin will be better in either cases than one that has to go an inch or more through a wire or trace. If there are chips with voltage dividers on the same piece of silicon as the ADC that would be the closest to ideal as possible. That's why I suggesting looking to see if such a thing was available (if I knew such a thing existed I would have linked to an example). Depending upon the application it might not be necessary, but IMHO it's worth a little time to investigate the possibility.

Docedison:

voltage divider going from 5 to 15 V down to 0 to 5 V means there will be roughly three times less 1/3 less usable information detectable in the output signal

so change the Vref as required to increase the effective available information by providing a Vref suitable to the measurements.

Thanks for the correction, I was conflating a couple of different ideas in my head while typing... :blush:

As for the VRef, in a Arduino it can be anything on a range of 0 to 5 VDC and the default for most Arduinos will be 5 VDC. Unless you are refering to doing the ADC outside of the Arduino with the signal at a higher voltage level, I'm not sure what changing VRef on the Arduino would improve.

retrolefty:
I suspect you will have a very hard time trying to find, if any indeed exist, any ADC chips that allow input signal voltages to be higher then it's Vcc voltage (or lower then Vdd), which in most cases I'm aware of is limited to standard Vcc values of 5 vdc or lower. And any ADC type module that can handle that high of input voltages would just be using some kind of programmable front end attenuator (voltage divider) and still process the ADC conversion at standard Vcc values.

As mentioned before I didn't know of any off-hand. If they do exist they would be potentially better, even if they used chip-level voltage dividers to step-down to 5 V or some other VCC level, than implementing a voltage divider by either through-hole or surface-mount resistors for reasons I also mentioned above. An exhaustive search is probably not warrented, but in my mind perhaps 15 to 30 minutes of Googling would be justifible.

Edit: Looks like CrossRoads found something similar while I was typing.

AS to voltage dividers has anyone considered that an op-amp can have less than unity gain, that they make great attenuators as well and handle +/- 15 Vin as well? at ANY input impedance? 10 ohms to a T ohm are readily possible.

Bob

Op amps can add some noise to the signal tho. Resistors not so much.

Docedison:
AS to voltage dividers has anyone considered that an op-amp can have less than unity gain, that they make great attenuators as well and handle +/- 15 Vin as well? at ANY input impedance? 10 ohms to a T ohm are readily possible.

Bob

Non-inverting attenuation is easier as buffer followed by voltage divider. Attentuating op-amp configuration is inverting so has finite input impedance.

Far-seeker:

KeithRB:
That is why they have a thing called a voltage divider.

That's possible of course, but precision is potentially going to take a big hit even before the resolution of the ADC is factored in. From the perspective of the signal's information content a voltage divider going from 5 to 15 V down to 0 to 5 V means there will be roughly three times less usable information detectable in the output signal. For some applications that's not a problem, for others it will be. Instead, I would check to see if there is an affordable ADC chip/module that can handle the orignal input voltage and output serial communication of some sort at 5 VDC.

I'm afraid you are wrong in nearly every detail in that paragraph!

Firstly information is a logarithmic measure so a loss of a factor of 3 in precision is a loss of 1.6 bits of information. Given a good ADC can give 20 bits, that would be only a loss of 8% information (18.4 bits / 20 bits).

Secondly a voltage divider doesn't throw away information like that - you need to know the signal/noise ratio and bandwidth of the source and the actual resistance values and their temperature, then you can calculate degradation in signal/noise ratio. If the source is already noisy the potential divider might have almost no effect. If the source is clean and low-impedance then a high-resistance voltage divider might be injecting massive amounts of noise compared to the source.

Resistors generate voltage noise proportional to temperature and to the square-root of the resistance value and to the square-root of bandwidth.

Thirdly the ADC might be introducing quantisation noise that's far greater than the signal noise - in which case everything else would be academic. If you are only using a 8 / 10 / 12 bit ADC its likely to be the dominant source of error.

lxmyers:
Hi All,
I'm trying to finish off a project I started a while ago but I've been having a bit of trouble with the Analog Inputs...

What I'm trying to do...
I need to be able to read the voltage of 16 individual inputs with a reasonable level of precision (12bit, maybe?). Input voltages could be anything between 5VDC and 15VDC.

Can anyone provide any suggestions on a way to do something like this?

Any help would be greatly appreciated.
Thanks Guys,
Alex

If you want full accuracy in the 5v to 15v range, then you will probably need to electrically block the lower 5v before sending the resulting 10v to the A/D pin/device. You might be able to use one of the below to multiplex the voltages and multi turn trim pots to act as the voltage bridges.

a follower/inverting or non inverting amp is readily possible and easily done. It was my standard configuration for most of my A/D inputs mainly because I could also tailor the frequency response and or make the output uni/bi polar as well. I used LMC662's and one was both follower and gain stage. The LMC662 is a middle of the road +/- 15V - 5V Cmos Op-Amp, inexpensive and good for all but the most demanding uses. I uses several thousand in the early 2000's and perhaps had 4 or 5 fail. I took the liberty of enclosing a data sheet.
There was mention of a CD4067, I've used them and I prefer the ADG408 X 2 to a single CD4067. to use the 2 8 channel devices the enable is the control for the second device and I use a transistor to invert the enable on one device to get a 4 bit address. This works well If you use the 5th bit (16CH enable) as the source for the voltage used to enable either 8 bit device. When the enable pin is high then it can be used to select either 8 bit device and the 4th control bit is the control for the inverter and the first switch. I had somewhat less noise and in production I could choose to make 8 or 16 input channels available. I also included it's data sheet as well as the 4067/97
data sheet.

Bob

LMC662.pdf (481 KB)

DG408_09_a.pdf (230 KB)

CD4097B-mil.pdf (695 KB)

MarkT:
I'm afraid you are wrong in nearly every detail in that paragraph!

Perhaps, I don't claim to be perfect. However, that's an awfully strong statement from someone who apparently needs a refresher on their reading comprehension skills.

MarkT:
Firstly information is a logarithmic measure so a loss of a factor of 3 in precision is a loss of 1.6 bits of information. Given a good ADC can give 20 bits, that would be only a loss of 8% information (18.4 bits / 20 bits).

The OP mentioned perhaps using a 12 bit ADC, not 20 bits. If you are going to correct someone with math, use numbers pertient to the conversation at hand (and yes I know they the resulting information loss is still rather low but not as low as 8%). However that's a nitpick, where the lack of reading comprehension comes in is below.

MarkT:
Secondly a voltage divider doesn't throw away information like that - you need to know the signal/noise ratio and bandwidth of the source and the actual resistance values and their temperature, then you can calculate degradation in signal/noise ratio. If the source is already noisy the potential divider might have almost no effect. If the source is clean and low-impedance then a high-resistance voltage divider might be injecting massive amounts of noise compared to the source.

Resistors generate voltage noise proportional to temperature and to the square-root of the resistance value and to the square-root of bandwidth.

Thirdly the ADC might be introducing quantisation noise that's far greater than the signal noise - in which case everything else would be academic. If you are only using a 8 / 10 / 12 bit ADC its likely to be the dominant source of error.

Where did I explicitly or implicitly suggest that the divider was significant source of noise, or for that matter even address it? My concern was always about how reducing the voltage range makes the analog signal more susceptible to externally generated noise (e.g. from EMI), not the amount of noise generated internally by the circuit. My approach was if possible to do the ADC at the voltage range of the raw signal, then lower the ~15 VDC logic pulses down to a 5 VDC level for the Arduino. This was because at lower voltage levels a digital signal is normally more tolerant to EMI than the analog.

If you think I'm wrong on to focus on what I did, that would be a valid critical opinon. But how can I be wrong on a point or two I didn’t even address?