C
Charlie E.
- Jan 1, 1970
- 0
Hi Guys,
Ok, going to put myself in harms way, and ask for a little design
advice. I have been working on this project for a while now, and it
has gone through several iterations, and I keep having the same
problem!
First, the project: I am designing a small color reader for the
visually impaired. Really simple operation - put it against the
object you want to tell the color of, and it will say "RED" or
whatever the color is. Sensor is simply an RGB LED and a
phototransistor, buffered by some amps, and then digitized by a PIC24.
So, what's the problem? I can't get a stable reading. In normal
operation, this thing will run for about two seconds, and then be
turned off. To test, however, I run it in debug mode for hours. When
I first turn it on, and calibrate it to a white sample, I will get one
set of calibrations. Let it sit for about two minutes, and it starts
to drift. In about half an hour, I will have readings totally off the
scale.
So, why am I baring my soul to ya'll? I need your help identifying
where the gain drift is coming from, and some ideas on how to control
them. I have the schematic here:
http://edmondsonengineering.com/Documents/Rainbow color Reader Schematic.pdf
Basic description - MCU turns on an LED. The phototransistor is first
buffered by a non-inverting opamp with a gain of 2, and the signal is
split. Part goes directly to a PGA where it is first attenuated, and
then the PGA boosts it up. This gives me a calibration control to
deal with difference in output of the LEDs. The original and PGA
signal are added, and this is then applied to another non-inverting
opamp with a gain of 2. I also have one feed before this opamp to an
ADC input on the PIC.
Problems I have already solved:
First, each LED has a different output level. Red needs a gain of
around 2, BLUE a gain of around 5, and GREEN a gain of about 7. The
PGA was added to give me an adjustable gain from around 2 to 14, with
the two different taps into the separate input channels of the PGA.
This gives me 16 different gain levels to play with. Using the tap to
the second ADC channel, it actually gives me 32 different levels.
Right now, RED uses this lower gain channel, and is steady as a rock.
Part of this may be that my VCC is 3.3 volts, and only RED has a
forward voltage below this. Both GREEN and BLUE have forward voltages
of 3.4 volts.
So, potential problems? could it be that repeated use warms up the
GREEN and BLUE LEDs so that they become more efficient? Could the
power supply drift higher as it warms up? Could the opamps drift with
slight changes in temperature? Any advice ya'll can give will be most
appreciated.
Thanks,
Charlie
Ok, going to put myself in harms way, and ask for a little design
advice. I have been working on this project for a while now, and it
has gone through several iterations, and I keep having the same
problem!
First, the project: I am designing a small color reader for the
visually impaired. Really simple operation - put it against the
object you want to tell the color of, and it will say "RED" or
whatever the color is. Sensor is simply an RGB LED and a
phototransistor, buffered by some amps, and then digitized by a PIC24.
So, what's the problem? I can't get a stable reading. In normal
operation, this thing will run for about two seconds, and then be
turned off. To test, however, I run it in debug mode for hours. When
I first turn it on, and calibrate it to a white sample, I will get one
set of calibrations. Let it sit for about two minutes, and it starts
to drift. In about half an hour, I will have readings totally off the
scale.
So, why am I baring my soul to ya'll? I need your help identifying
where the gain drift is coming from, and some ideas on how to control
them. I have the schematic here:
http://edmondsonengineering.com/Documents/Rainbow color Reader Schematic.pdf
Basic description - MCU turns on an LED. The phototransistor is first
buffered by a non-inverting opamp with a gain of 2, and the signal is
split. Part goes directly to a PGA where it is first attenuated, and
then the PGA boosts it up. This gives me a calibration control to
deal with difference in output of the LEDs. The original and PGA
signal are added, and this is then applied to another non-inverting
opamp with a gain of 2. I also have one feed before this opamp to an
ADC input on the PIC.
Problems I have already solved:
First, each LED has a different output level. Red needs a gain of
around 2, BLUE a gain of around 5, and GREEN a gain of about 7. The
PGA was added to give me an adjustable gain from around 2 to 14, with
the two different taps into the separate input channels of the PGA.
This gives me 16 different gain levels to play with. Using the tap to
the second ADC channel, it actually gives me 32 different levels.
Right now, RED uses this lower gain channel, and is steady as a rock.
Part of this may be that my VCC is 3.3 volts, and only RED has a
forward voltage below this. Both GREEN and BLUE have forward voltages
of 3.4 volts.
So, potential problems? could it be that repeated use warms up the
GREEN and BLUE LEDs so that they become more efficient? Could the
power supply drift higher as it warms up? Could the opamps drift with
slight changes in temperature? Any advice ya'll can give will be most
appreciated.
Thanks,
Charlie