Using an ADC + Arduino or a DPM with BCD output + Arduino

Hi, all!

I've got a personal project where I want to replace an analogue meter with a 'smart' display--the idea is a bit of a feature creep in and of itself, when I was looking at swapping in an Analog Devices AD2010 (3.5 digit, +/-199.9mV DPM, 100M?, Datasheet) to an old piece of equipment.

The original meter has a 0~120 scale, with F.S. of 200uA.

My thought was to take one of these DPMs that I have, with its 100M? impedance, and putting it in parallel with a precision 600? resistor for the current division, would register '120.0' (mV) on the DPM (1.2nA through 100M?). Pretty straightforward and having 100µV resolution would be nice, too.

Now, here's where the gears started running--why use a fixed device with a fixed display? Why not employ some smart hardware and extend the usability of this device? Say I want to show the current reading and below it an average, or compare readings from one to the next, maybe shoving a 128x64 gLCD or a 12x4 cLCD screen in place with a button or two. I began looking at Arduino friendly ADCs and quickly realized that I was a bit out of my depth. Queue idea #2;

The second thought I had was to rig up and simply bury this AD2010 in the device, as it has all the circuitry already in place; an internal 200mV ref, 60Hz rejection, and the target resolution of 100µV. Another fun feature is that it has BCD outputs for each of the digits (1's, 10's, 100's, and 1 000's) as well. So, I can bury this meter in the device and pipe the BCD signals to an Arduino for math and LCD output. Not elegant, but would work for what I need, and I already have 'em.

Is there an ADC out there that I could use in this scenario? (ADC should expect 0~200µA, and display 0~120.0 accordingly, with 1/10th resolution, works out to roughly 166.7nA per 1/10th on the display)

Thanks! Philip.

What is the question ?

raschemmel: What is the question ?

Thanks for the reply,

thefragger: Is there an ADC out there that I could use in this scenario? (ADC should expect 0~200µA, and display 0~120.0 accordingly, with 1/10th resolution, works out to roughly 166.7nA per 1/10th on the display)

I suppose it's a question of application (or opinion) and how to deal with reading small signals using the Arduino, as opposed to the kludgy solution of having a 'slave' device do the signal reading.

The original meter has a coil resistance of 2365Ω, so at full scale 0.473V is observed across the terminals (2365Ω x 200µA = 0.473V). For 100µV resolution, 4730 'steps,' or 13 bits, is the minimum I need for ADC (out of what the Arduido Uno can handle, I imagine). Or maybe I don't understand how the ADC on the Arduino works (is it fixed measuring 0~5V?)

I guess I'm looking for general project guidance, raschemmel.

ADCs are not catagorized by their bias current. They classified by voltage range and resolution. Forget about the current. That is not part of the equation if you are shopping for an ADC. Restate you question without mentioning current.

raschemmel: ADCs are not catagorized by their bias current. They classified by voltage range and resolution. Forget about the current. That is not part of the equation if you are shopping for an ADC. Restate you question without mentioning current.

Thank you raschemmel for your reply. I'm sorry, in my earlier message I wrote:

thefragger: The original meter has a coil resistance of 2365Ω, so at full scale 0.473V is observed across the terminals (2365Ω x 200µA = 0.473V). For 100µV resolution, 4730 'steps,' or 13 bits, is the minimum I need for an ADC (out of what the Arduido Uno can handle, I imagine). Or maybe I don't understand how the ADC on the Arduino works (is it fixed measuring 0~5V?)

So, to summarize, there is an analogue meter in place (coil resistance of 2365Ω) to show a 0~200µA current on a 0~120 scale. I wish to replace this meter with a digital readout, of 1/10th resolution (ie. 120[u].0[/u] max reading), involving an Arduino.

I should have expanded my acronyms, maybe that's where the confusion is: I have a digital panel meter (DPM) which can take in 0~199.9mV and output the reading in Binary-Coded Decimal (BCD). Would the simpler solution be to hide this meter inside the piece of electrical equipment and have the BCD decoded, manipulated (to display averages, for example) and output all information to an LCD, or can I sidestep the use of the DPM and use an Analogue-to-Digital Converter (ADC) with the Arduino?

Guidance would be appreciated. I'm unsure about what additional information may be required. I've worked with ADC/DAC systems a long time ago, programming in Assembly.

It’s difficult to not mention current, raschemmel, as this new digital meter will be replacing an analogue current meter!

Since the original meter had a coil resistance of 2365?, and 0~200µA was the current being measured, I can safely assume that a 2365? resistor can be dropped in place and expect the voltage over this resistor to vary between 0v and 0.473V (473mV). Since I’m aiming for 100µV resolution, 4 730 ‘steps’ are required at a minimum, which is greater than a 12-bit ADC can provide (4096). I need an ADC with a 13-bit (8192 ‘step’) minimum, providing me (0.473 / 2^13) 0.000 0577 V (57.7µV) per ‘step,’ which should be ok (?).

If I’m reading this documentation correctly, the Arduino Uno has an ADC of 10-bit resolution built in. I previously assumed that this applied over the 0~5v range, however I not understand that the upper limit is adjustable. Still, with 10-bit resolution, each step is (0.473 / 2^10) 0.000 462 V (462µV), which is coarser than I want. I guess I need an external ADC chip? Bugger.

Let’s review our Ohm’s Law:

E = I X R ==> R = E/ I ==> 0.473V/0.000200A = 2365 ohms.

Ok , let’s remove the analog meter, throw it in the trash… what do we need to continue ?

5V/0.000100V=50000
Conclusion : In order to get 100 uV (or better) resolution you need a 16 bit ADC (0 to 65535)
My DPM has a FULL SCALE of 200mV , but in order to use that I need to have my full scale be 200mV, NOT 0.473V (473mV).

The original meter has a coil resistance of 2365?, so at full scale 0.473V is observed across the terminals (2365? x 200µA = 0.473V). For 100µV resolution, 4730 ‘steps,’ or 13 bits, is the minimum I need for an ADC (out of what the Arduido Uno can handle, I imagine). Or maybe I don’t understand how the ADC on the Arduino works (is it fixed measuring 0~5V?)

[ http://www.adafruit.com/blog/2012/11/05/new-product-ads1115-16-bit-adc/ ](http:// http://www.adafruit.com/blog/2012/11/05/new-product-ads1115-16-bit-adc/)

(SEE PAGE 3 of the attached datasheet. ) => Full Scale for 100M ohm impedance = +/- 0.512V (greater than 0.473V )
(See page 13 for how to set PGA to “8” for +/- 0.512V Full Scale.)

Somehow , I need to do TWO things,

  1. I need to find a precision resistor with a resistance of 2365 ohms.

  2. I need to reduce the 473mV to 200mV so I can use my DPM in a plug & play fashion.

Dropping resistor formula,
(V in- V load)/ I (load) => (0.473V-0.200V)/0.000200A = 1365 ohm => 1.365k ohms

This means if I put a 1.365k ohm resistor (precision resistor) between the DPM input and the 2365 ohm replacement resistor
that replaces the analog panel meter , then at FULL SCALE across the 2365 ohm resistor the voltage will be 473mV but at the
DPM it will be 200mV due to the 1.365 k ohm dropping resistor.

So where does that leave you ?
You need to find TWO precision resistors.
One to replace the analog meter with a resistance of 2365.
and one to drop the voltage from 0.473 FS to 0.200 FS.
You can get the adc1115 from Adafruit and skip the DPM but I think you still need the 2365 ohm resistor to replace the panel
meter (since I don’t think you want to leave it installed, but if you did then you’re good to go with just the ADC) Repeat, you needto get a precision (meaning 0.01% or better) resistor with a value of 2365 ohms to replace the panel meter (remove meter ,connect 2365 ohm resistor across points where meter used to be connected, and connect ADC wires (+ & GND) Across the same resistor. OR, leave the panel meter there and just add the ADC , configured for PGA of [8] (see pg 13)

see attached

ads1115.pdf (950 KB)

adafruit-4-channel-adc-breakouts.pdf (551 KB)

I'm well-versed in Ohm's law, sorry it wasn't more clear in my previous messages. Thank you for verifying my calculations :)

Well, I can do either. I have a cache of 1% and 0.5% Dale MIL Spec resistors, a couple handfuls of 10-and-20-turn potentiometers, and a couple 5.5 digit calibrated (ish) multimeters kicking around here. That part isn't the issue for me--analogue electronics are my forte, it just that fuzzy area where analogue meets digital and gives me a run for my money.

Thanks for the break down. 16 bit, eh. Alright. The ADS1115 seems like a winner.

Ideally at 200µA (full scale) the meter will show '120.0' as this is how the old meter was graduated.

To further review our Ohm's law, I will restate my first post:

In order to have my DPM, rated for 199.9mV and posing an impedance of 100M?, read '120.0' at full scale (200µA), I need a resistor in parallel with it. Ok, so we have 100 000 000M? in parallel with some resistor, and this current divider setup is fed 200µA. The 100 000 000M? DPM should read '120.0': the scale is in mV, so we solve for I,

V = IR
=> I = V / R = 0.120 / 100 000 000 = 1.2nA

A fundamental property of parallel circuits at DC is that the voltage in one branch equals the voltage in the adjacent branch, so the paralleled resistor will need to form a current divider with the DPM, and its value would need to be chosen to sink the remaining (120µA - 1.2nA) 199.988µA of current.

V = IR
=> R = V / I = 0.120 / 0.000 199 988 = 600.036?

Our paralleled resistor needs to be 600.036?, or 600? for simplicity.

Now, we want the replacement to pose the same load on the circuit as the original meter, 2365?. Because a fundamental property of a series circuit at DC is that the current is the same through each series'd component, we can shunt this (essentially) 600? element:

2365 - 600 = 1765?

Right! So, out circuit looks like this:

But I can hear you screaming! "1765? isn't a real resistor!" Well, here comes to the rescue a tool developed by IN3OTD hosted on his QSL.net site, where you give it the value you want and it will tell you what resistors you'll need to develop your required value: http://www.qsl.net/in3otd/parallr.html

E24 series:
1800    ||  91000   =   1765.086    (0.005 %)

E96 series:
1690    +   75  =   1765        (0 %)
1650    +   115 =   1765        (0 %)
1400    +   365 =   1765        (0 %)
1100    +   665 =   1765        (0 %)
1050    +   715 =   1765        (0 %)
1780    ||  210000  =   1765.039    (0.002 %)
2260    ||  8060    =   1765.078    (0.004 %)
2050    ||  12700   =   1765.085    (0.005 %)
1740    +   24.9    =   1764.9      (-0.006 %)

Can't I just pop out the DPM and plug in a 100M? resistor and differentially measure the expected the voltage over it (0~120mV) and feed this into the ADC?

Ack! This is some strong cider…

600.036 = 600.003 6,
199.988 = 199.998 8

!

I think your calculations are wrong. You can't put resistors in parallel with your DPM to change the FS. Your DPM is 200mV FS and that's it. It's a panel meter not an ammeter. You can't change it unless it was designed to be changed. I'm not going to discuss your calculations for the Your calculations for the analog meter are correct if the voltage is in fact 0.473V full scale at 200uA. If that is true then the rest about the ADS1115 will apply. You can calculate anything you want about the DPM but I don't want to get involved in a discussion about changing the full scale by a factor of 1000 by putting a 600 ohm resistor across a 100M ohm input impedance. I would like to be left out of that discussion please.

... I'm not talking about changing the full-scale at all. The full scale is still 200mV but the analogue meter at the full scale condition of 200µA displays "120" on its face. It's a painted-on 0-120% scale on the face with a needle that swings back and forth.

In the event that you haven't seen an analogue meter before *not my meter

Since the DPM looks like a 100M? resistor, 1.2nA through 100M? equals 120mV, so the meter will read '120' to match the usability of the old meter.

Old analogue meter shows full scale of '120%' at 200µA. New digital meter shows full scale of '199.9' at 199.9mV.

Why would I remove a '0-120%' meter and put in a '0-200%' meter? That's just silly.

The parallel resistor merely shunts the extraneous current around the digital meter. I'm not sure how else I can convey to you, otherwise I will need to leave you out of this discussion!

Have you already tried this idea?

Since the original meter had a coil resistance of 2365?, and 0~200µA was the current being measured, I can safely assume that a 2365? resistor can be dropped in place and expect the voltage over this resistor to vary between 0v and 0.473V (473mV).

E = I X R ==> R = E/ I ==> 0.473V/0.000200A = 2365 ohms.

Since the DPM looks like a 100M? resistor, 1.2nA through 100M? equals 120mV, so the meter will read '120' to match the usability of the old meter.

R = V / I = 0.120 / 0.000 199 988 = 600.036?

This is nonsense. Your on your own. I'm outta here. I don't want any part of this...

raschemmel: This is nonsense. Your on your own. I'm outta here. I don't want any part of this...

I appreciate your messages and your attempts at helping me.

The piece of equipment is out of commission however tomorrow evening I can construct a constant current source to demonstrate the functionality of the circuit in the real world.

For now, here is a simulation demonstrating how a current divider works to show the 120mV over the DPM's equivalent resistance of 100M?:

I am sorry this is over your head. Having worked with analogue circuits my whole life, I sometimes don't realize that Ohm's law is difficult for some to grasp.

Good luck to you

I've got a personal project where I want to replace an analogue meter with a 'smart' display--the idea is a bit of a feature creep in and of itself, when I was looking at swapping in an Analog Devices AD2010 (3.5 digit, +/-199.9mV DPM, 100M?, Datasheet) to an old piece of equipment.

The original meter has a 0~120 scale, with F.S. of 200uA.

My thought was to take one of these DPMs that I have, with its 100M? impedance, and putting it in parallel with a precision 600? resistor for the current division, would register '120.0' (mV) on the DPM (1.2nA through 100M?). Pretty straightforward and having 100µV resolution would be nice, too.

Now, here's where the gears started running--why use a fixed device with a fixed display? Why not employ some smart hardware and extend the usability of this device? Say I want to show the current reading and below it an average, or compare readings from one to the next, maybe shoving a 128x64 gLCD or a 12x4 cLCD screen in place with a button or two. I began looking at Arduino friendly ADCs and quickly realized that I was a bit out of my depth. Queue idea #2;

The second thought I had was to rig up and simply bury this AD2010 in the device, as it has all the circuitry already in place; an internal 200mV ref, 60Hz rejection, and the target resolution of 100µV. Another fun feature is that it has BCD outputs for each of the digits (1's, 10's, 100's, and 1 000's) as well. So, I can bury this meter in the device and pipe the BCD signals to an Arduino for math and LCD output. Not elegant, but would work for what I need, and I already have 'em.

Is there an ADC out there that I could use in this scenario? (ADC should expect 0~200µA, and display 0~120.0 accordingly, with 1/10th resolution, works out to roughly 166.7nA per 1/10th on the display)

The above was your original post. This was your question:

Is there an ADC out there that I could use in this scenario? (ADC should expect 0~200µA, and display 0~120.0 accordingly, with 1/10th resolution, works out to roughly 166.7nA per 1/10th on the display)

I answered your question here:

https://learn.adafruit.com/adafruit-4-channel-adc-breakouts see attached

If you have been working with circuits your whole life then why did you come here to ask us to do something you could do with Google in 2 minutes ?

Welcome back, raschemmel!

My original post was a question of project guidance, of whether to develop my own ADC system or to use the DPM I have at my ADC and rely on the BCD output piped into the Arduino.

Yes, you did link me to a seemingly useable part. Thank you for the suggestion. Do I put this directly into the DPM, or how would I employ it in my application?

I'm sorry you misread my message, maybe there is a language barrier--I have worked all my life in analogue circuit, this [u]digital[/u] stuff is weird for me.

Is there another forum that I can post for guidance with what to do in this project of mine?

P.

Truthfully , I think you still need project guidance because the DPM is a digital device and you have mistakenly drawn the conclusion that it is an IDEAL device and that the 100Mohm input impedance can be treated as a precision resistor. This is absolutely incorrect. (I want to say "nonsense" but I'm trying to be civil). You see , the DPM was manufactured to used by people who would see two leads, a (+) and a (-) and simply connect them across some voltage , not to exceed the full scale rating of the devise and everything would go as planned. If the manufacturer of your DPM is still in business you might want to give them a call and ask them if you can use the device as a SERIES device INSTEAD of a PARALLEL device (as intended). If on the other hand they are long since retired and out of business then there is nobody to stop you from proceeding with your doomed plan. The DPM cannot be used as a SERIES device as you suggest because unlike the IDEAL resistor in your SIMULATOR (which by the way is not aware there such a thing as "the REAL WORLD") the DPM is really just an ADC , a uC and a led driver, NOT an IDEAL series resistor.

I am sorry this is over your head. Having worked with analogue DIGITAL circuits my whole life, I sometimes don't realize that Ohm's law DIGITAL CIRCUITRY is difficult for some to grasp.

When you're ready to listen I'll explain why your plan won't work. If it's any help to you, the above does not mean that you cannot change (modify) the full scale of your meter it you wanted to. If the full scale is 200mV and you wanted it to be 120mV then 200-120=80mV/Bias current of DPM= R (bleed). Since you have not posted a datasheet for the meter nor a photo of the serial number label with model number, we cannot search for the datasheet on the web. Even if we could the bias current varies for each device because it is impossible for any two device to have exactly the same current, hence the labels "typical , min and max" for specs. These would give you a ball park value to use for your calculations and a starting point. The problem is the bias current is going to be so small (probably nA) that you would need a very large PRECISION resistor with a precision to many decimal places. For a bias current of 10 nA, you would need an 8M ohm resistor with a tolerance of say 0.001%. If you could only afford 0.01% tolerance then the bleed current would be +/-9.9990000999900009999000099990001e-9 mV , which would yield a Full scale of approximately 110mV - 130mV . Without knowing the bias current, you could use a precision regulator to apply 200mV across the DPM and then try different large resistance values until you are able to reduce the full scale to 120mV (from the original 200mV). Either way , this isn't going to solve your original problem with the analog meter which uses a SERIES current , as opposed to a PARALLEL voltage. Apples and Oranges.