3.3V to aref via a voltage divider

Hi all,

Is this just a bad idea? I want to reference a 500mV potential to the aref pin. For my current project it wouldn't be difficult to just do this off my power supply via a resistive divider, but I was wondering if it's possible to directly use the Arduino's 3V3 or 5V supplies to make a reference.

Or will I just make smoke?

The minimum Aref voltage is 1.0V. You can select the internal 1.1V reference and save the trouble of a voltage divider.

If you want maximum accuracy you can use an external 1.0V voltage reference chip.

Alternatively you can use an op-amp set to multiply by 10 to get 5V from your 0.5V signal.

johnwasser:
The minimum Aref voltage is 1.0V. You can select the internal 1.1V reference and save the trouble of a voltage divider.

I was hoping for a 500mV reference. I'll have to move to an external ADC.

If you want maximum accuracy you can use an external 1.0V voltage reference chip.

Alternatively you can use an op-amp set to multiply by 10 to get 5V from your 0.5V signal.

This would also amplify the noise I'm seeing in my signals.

The observed noise is most likely in the signal being read, not the ADC reference. The ARef is what the 1023 max scale count of the ADC relates to. IE. 5.0V when ARef = 5V or 3.3V when ARef is 3.3V. A lower ARef will give you more granularity but won't help the noise figure, it will just make your sensed voltages seem larger numerically.

ajofscott:
The observed noise is most likely in the signal being read, not the ADC reference. The ARef is what the 1023 max scale count of the ADC relates to. IE. 5.0V when ARef = 5V or 3.3V when ARef is 3.3V. A lower ARef will give you more granularity but won't help the noise figure, it will just make your sensed voltages seem larger numerically.

This is the problem. I'm already battling noise on my incoming signal. That's another headache. The problem is my signals are on the order of fractions of millivolts. My current setup has a gain of about 105, and with that comes amplified noise. I'm trying my best to avoid more amplification. I've found an external 20-bit ADC that communicates via SPI to the Arduino. It has good reference ranges for my application. I'm going to try that.

What are you measuring If I might ask?

ajofscott:
What are you measuring If I might ask?

Tiny signals produced when laser light scatters off single molecules of particular substances.

You need a scintillation detector, in other words a light amplification tube, the same thing used to count radio isotopes. Even oscillosopes don't read noiseless at levels below 10 millivolts.

Adding more amplification won't make the signal to noise ratio any worse, that's determined by the input stage of the first amplifier. So using an external ADC isn't going to help unless you need more resolution or linearity than the ADC on the atmega328 provides. What you need is an ultra-low-noise (possibly cooled) first amplifier stage that's matched (from a minimum-noise point of view) to the source impedance of the sensor.

ajofscott:
You need a scintillation detector, in other words a light amplification tube, the same thing used to count radio isotopes. Even oscillosopes don't read noiseless at levels below 10 millivolts.

The detector is done, and quite robust. However, we're moving from a LabView-based system weighing 300 pounds to a portable system weighing less than 5. Hence the Arduino. We're working on a programmable-gain amplifier setup now to boost the signal from the detector into an acceptable range.

dc42:
Adding more amplification won't make the signal to noise ratio any worse, that's determined by the input stage of the first amplifier. So using an external ADC isn't going to help unless you need more resolution or linearity than the ADC on the atmega328 provides. What you need is an ultra-low-noise (possibly cooled) first amplifier stage that's matched (from a minimum-noise point of view) to the source impedance of the sensor.

We do need more resolution. We need to be able to detect down to a fraction of an inverse megameter, and be able to get a good resolution between, say, 0.1 Mm^-1 and around 50,000 Mm^-1. The first stage amplifier is a transimpedance amp with whatever noise it's going to carry. However, its full range isn't anywhere close to detectable by the Arduino's ADC. So we're moving to an external ADC, but we'll need some amplification between the detector and the ADC. Our lab instruments filter the noise with a lock-in amplifier, but that's not an option for the portable instrument. So we need to be able to separate the noise from the actual readings. We're hoping that a well-characterized programmable gain device will be a positive step.

Verdris:
We do need more resolution. We need to be able to detect down to a fraction of an inverse megameter, and be able to get a good resolution between, say, 0.1 Mm^-1 and around 50,000 Mm^-1. The first stage amplifier is a transimpedance amp with whatever noise it's going to carry. However, its full range isn't anywhere close to detectable by the Arduino's ADC. So we're moving to an external ADC, but we'll need some amplification between the detector and the ADC. Our lab instruments filter the noise with a lock-in amplifier, but that's not an option for the portable instrument. So we need to be able to separate the noise from the actual readings. We're hoping that a well-characterized programmable gain device will be a positive step.

If I understand you correctly, the problem isn't that you can't amplify the signal to bring it within the ideal range of the Arduino's ADC, the problem is that you want a dynamic range of more than 500,000:1. So you'll need an ADC with a resolution of 20 bits or more, or several different ranges (by adjusting the gain of the amplifier that feeds the ADC), or a log-law amplifier.

What do you mean by a lock-in amplifier: do you mean that the signal you are detecting is modulated and the amplifier uses a coherent filter? If so, that is entirely possible to do in a portable device.

Does he mean a Sample and hold?

dc42:

Verdris:
We do need more resolution. We need to be able to detect down to a fraction of an inverse megameter, and be able to get a good resolution between, say, 0.1 Mm^-1 and around 50,000 Mm^-1. The first stage amplifier is a transimpedance amp with whatever noise it's going to carry. However, its full range isn't anywhere close to detectable by the Arduino's ADC. So we're moving to an external ADC, but we'll need some amplification between the detector and the ADC. Our lab instruments filter the noise with a lock-in amplifier, but that's not an option for the portable instrument. So we need to be able to separate the noise from the actual readings. We're hoping that a well-characterized programmable gain device will be a positive step.

If I understand you correctly, the problem isn't that you can't amplify the signal to bring it within the ideal range of the Arduino's ADC, the problem is that you want a dynamic range of more than 500,000:1. So you'll need an ADC with a resolution of 20 bits or more, or several different ranges (by adjusting the gain of the amplifier that feeds the ADC), or a log-law amplifier.

It's both. Yes, we want that resolution (we're testing 16- and 20-bit ADCs this week) but it definitely needs to be amplified. Without any gain, we're only getting signals from fractions of a millivolt to slightly more fractions of a millivolt. We're looking at ADCs that have references around 1-2.4V and a logic-controlled switching device to dynamically select gain.

What do you mean by a lock-in amplifier: do you mean that the signal you are detecting is modulated and the amplifier uses a coherent filter? If so, that is entirely possible to do in a portable device.

Exactly this. For some instruments we do non-modulated signals to look for one particular optical signal and modulated signals to look for other types. Ideally, we would use modulated signals for both, although for this instrument, which looks for scattered light, a direct DC measurement is perfectly acceptable.

Verdris:

dc42:

Verdris:
We do need more resolution. We need to be able to detect down to a fraction of an inverse megameter, and be able to get a good resolution between, say, 0.1 Mm^-1 and around 50,000 Mm^-1. The first stage amplifier is a transimpedance amp with whatever noise it's going to carry. However, its full range isn't anywhere close to detectable by the Arduino's ADC. So we're moving to an external ADC, but we'll need some amplification between the detector and the ADC. Our lab instruments filter the noise with a lock-in amplifier, but that's not an option for the portable instrument. So we need to be able to separate the noise from the actual readings. We're hoping that a well-characterized programmable gain device will be a positive step.

If I understand you correctly, the problem isn't that you can't amplify the signal to bring it within the ideal range of the Arduino's ADC, the problem is that you want a dynamic range of more than 500,000:1. So you'll need an ADC with a resolution of 20 bits or more, or several different ranges (by adjusting the gain of the amplifier that feeds the ADC), or a log-law amplifier.

It's both. Yes, we want that resolution (we're testing 16- and 20-bit ADCs this week) but it definitely needs to be amplified. Without any gain, we're only getting signals from fractions of a millivolt to slightly more fractions of a millivolt. We're looking at ADCs that have references around 1-2.4V and a logic-controlled switching device to dynamically select gain.

What do you mean by a lock-in amplifier: do you mean that the signal you are detecting is modulated and the amplifier uses a coherent filter? If so, that is entirely possible to do in a portable device.

Exactly this. For some instruments we do non-modulated signals to look for one particular optical signal and modulated signals to look for other types. Ideally, we would use modulated signals for both, although for this instrument, which looks for scattered light, a direct DC measurement is perfectly acceptable.

Hi guys, I'm interested and also would like to design a lock-in amplifier circuit in a single board. I means, it is possible for us to manipulate arduino development board which have a function like lock-in amplifier? Generally, it should be able to amplifier both signal input and reference, demodulate or compare the signal, passing through the low-pass filter before feed to the Digital converter.

The phase sensitive detector (aka lock-in amplifier) I was talking about is implemented in software. The Arduino isn't a DSP, so doing this only practical at low frequencies. The input signal has to be large enough for the ADC to work with, or you have to amplify it first. I have got it working at 40kHz (sampling the input at 80kHz, which is pushing the ADC a little beyond its recommended max clock speed) when the Arduino is generating the reference signal.

If the Arduino were taking an external reference signal, then there would be a lot more calculation to do, and the frequency range would be more restricted. You would also have to sample both input and reference signal. I doubt whether you would get good performance beyond 1 or perhaps 2kHz. So you are probably better off using a hardware solution based on a multiplier chip, and feeding the output of that chip into the Arduino ADC or another ADC.