Measuring very very small voltage fluctuations?

I have a DC voltage (1v) that I would like to log using an Arduino. The voltage hovers at the same point, fluctuating by a few millivolts. What would be the easiest way to interface this voltage to be measured by the Arduino's 0-5v input? 8)

You didnt give any real details to what you are doing. So one option is you could use the analog input. Set the ADC's reference to the 1.1V INTERNAL reference.

Read up on analogReference() and analogRead()

edit: thanks for catching my typo MarkT

approximately 1.1V, not 1.1mV - won't help much.

Are you only interested in the variation, not the DC value? If so then you can couple the signal with a capacitor to an opamp gain-block and then sample that.

You have to decide what you are more interested in, the absolute voltage or the "noise". Of course you could use two adc pins to measure both. Measure one directly, and then feed the other to an op amp via a capacitor to measure the noise after amplifying it.

Are you more concerned with the small fluctuations or the absolute value or just it's presence? Some more information would be good...

Doc

I'm more interested in the relative fluctuations, as it's a sign wave. I would like to capture the wave with enough resolution to plot it graphically. XD

What frequency? is the sine wave and how much data will you want to return?

Doc

Around 300hz and under. I'm trying to get enough vertical resolution to be able to graph. Horizontal resolution should be plentiful.

well I guess one more question, How much resolution and what are you going to do with the data as you can get. The period is 3.3333... mS lots of time to measure but are you trying to get cycle by cycle data or measure the amplitude of every sine wave and mark or store or are you looking to measure the signal on a more relaxed basis. at 100 uS / sample that's a lot of data/cycle, about 33.+ samples a second.

Doc

Reply #2 has the right solution for you.

Doc, I would like to be able to do math analysis on the data, primarily getting the frequency at any point in time. It will vary between 0 and 300hz. I'd say a vertical resolution of about 30 steps would be adequate.

Grumpy_Mike, so if I have a source at +1v, that fluctuates by 0.01v, and I use a voltage divider to bring that down to 0.02v. Then set my ref voltage to 0.03v. Does that mean that I will be able to measure the fluctuations at a resolution of 0.00003v? I think my theory is right, the question is how will it work in practice? How low can my ref voltage go with decent output?

Keep your ref at 5V. Connect the incoming signal to a capacitor, then that to an Op-amp. Set the op-amp up so that it swings around a 2.5V virtual ground, and enough amplification so your tiny variations are now around +/- 2V.

Simplest arrangement is an inverting amplifier. 50/50 voltage divider on to non-inverting. Signal via capacitor and resistor Rin to inverting. Output through resistor Rf back to inverting. The gain is -(Rf/Rin).

Note that the values then sampled by the ADC will be backwards, so subtract them from 1024 to get the real values.

MikeX: Doc, I would like to be able to do math analysis on the data, primarily getting the frequency at any point in time. It will vary between 0 and 300hz. I'd say a vertical resolution of about 30 steps would be adequate.

Grumpy_Mike, so if I have a source at +1v, that fluctuates by 0.01v, and I use a voltage divider to bring that down to 0.02v. Then set my ref voltage to 0.03v. Does that mean that I will be able to measure the fluctuations at a resolution of 0.00003v? I think my theory is right, the question is how will it work in practice? How low can my ref voltage go with decent output?

A reference voltage has to be stable, so a voltage divider on your Vcc doesn't really cut it. In post #3, the suggestion is to use the internal 1.1V reference which would give a resolution of 1.1/1024 or about one milivolt of resolution. If that isn't enough than you can either obtain a small (0.1 - 0.01V) precision voltage reference device (which I don't know if they exist) or you can amplify the voltage variance, since as you mentioned you don't need to know the base (1V) voltage... If you used a two stage operational amplifier to obtain a 100 amplification (easy to do) fed through a capacitor you would have a resolution of about 10 nanovolts...

If you don't want to wire your own op amp, Sparkfun, has a predone breakout with a 100 amplification; http://www.sparkfun.com/products/9816

Reference voltage can't be set below 1.0 V. Few millivolts is about voltage provided by electret mic. Search for mic amplifiers, some of them pretty simple, 1-2 transistors + few R & C

wanderson, I had a brain freeze, and forgot that putting a voltage divider on the signal would also divide the swing :grin: So it doesn't bring me any closer. 1mv resolution would indeed be too course.

majenko, that's pretty much what I planned from the begining, an op-amp. I'm wondering what purpose does the (not pictured, but mentioned) capacitor serve on the input?

It removes the DC offset, so the op-amp only sees the +/-0.000001 (or whatever) voltage variations and not the 1V offset. It then uses the offset applied to the non-inverting input to place those variations at the mid-point of the ADC.

Check on this link http://coolarduino.wordpress.com/2012/06/22/audio-input-to-arduino/

majenko, I'm not sure I follow how the capacitor fits into the picture. So I have a voltage that fluctuates between 1.000v and 1.005 volts.

In this diagram I'll bring up the ground (non inverting on the op-amp) to 1.000v using a voltage divider. Now the op-amp will amplify the 0.005v fluctuation. Where does the capacitor go again?

Where does the capacitor go again?

Between Vin and the voltage you want to measure.