Prev: Magnetism is really -- WHAT?
Next: low-end scope
From: MooseFET on 3 Mar 2010 09:49 On Mar 2, 9:06 am, dagmargoodb...(a)yahoo.com wrote: > On Mar 1, 10:03 pm, MooseFET <kensm...(a)rahul.net> wrote: > > > > > On Mar 1, 8:54 am, Charlie E. <edmond...(a)ieee.org> wrote: > > > > 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%20color%20Reader%20.... > > > > 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 > > > How about: > > > Schottky LED > > Vcc ---->!--------+-----/\/\---->!----GND > > ! > > ===C > > ! > > PIC port > > > When you pull the port pin low, the capacitor gets > > charged. When you take it high again you get a pulse > > of light from the LED. > > Absolutely. Instead of using a PIC port, he could tie the cap to his > DC-DC converter's switch node. That makes a common Vled supply, ... > > Vcc > -+- > | > V D1 > ._. --- > _| |_ C1 | D2 Vled > >------||---o-->|--o-----. > | | > --- C2 | > --- | > | | > === | > | > .--------+--------+ > | | | > R1 R2 R3 > | | | > | LED-R |LED-G | LED-B > V ~> V ~> V ~> > --- --- --- > ----. | | | > | Q1 | | | > |-|>-' Q2 | | > PIC |------|>-----' Q3 | > |---------------|>-----' > | > ----' > > The phototransistor Hfe drifts a lot with temperature, but that's > common to all channels; software can remove it. > > Seconded: Tim's suggestion for optical feedback on the LEDs' output. If this is just about "color", the ratio of the photocurrents will be used so the gain drift won't matter. I suggest something like: repeat many times averaging answers: All LEDs off measure BackGround R LED on Measure Red G LED on Measure Green B LED on Measure Blue All LEDs off Red -= BackGround Green -= BackGround Blue -= BackGround Sum = Red + Green + Blue Find "Smallest" of Red, Green and Blue Process other 2 with: Y = sqrt(A^2 + B^2 - 2ABcos(120 degrees)) Dilution = Smallest / Y Find the "Smaller" of A and B X = Smaller / Bigger New you need some table look ups. The Smallest and smaller selects which table you look in The X is where index into the table to pull out the entry "N". N is which table to look into for Dilution.
From: Jon Kirwan on 3 Mar 2010 12:38 On Tue, 2 Mar 2010 19:11:30 -0800 (PST), George Herold <ggherold(a)gmail.com> wrote: >> +3.3v >> -+- >> | >> .--------+--------+--------. >> | | | | >> |<' |<' |<' |<' >> -| Q1 -| Q2 -| Q3 -| Q4 >> |\ |\ |\ |\ >> | | | | >> | | | | >> | | LED-R |LED-G | LED-B >> | V ~> V ~> V ~> >> | --- --- --- >> | | | | >> | D1 | | | >> +---|<---+--------+--------' >> | | >> |_ L1 --- C1 >> )|| --- >> )|| | >> _)|| === >> | >> +--->Vsense (to switching current regulator, >> | e.g. ZXSC310) >> .-. >> | | >> | | Rsense >> '-' >> | >> === >> GND >><snip> >Dang, Sorry I don't get this. I turn on one of the transistors and >nothing happens right away because of the inductor. But current >starts to flow with an L/R time constant... now what? It might be 'easier' to see this way: B | | v Vin Rsense L1 |\ | (+) ---/\/\---UUUU-----+----| >|----+---> Vout ==== | |/ | | ^ | D1 | | O | | Q1 / --- A / --- C1 O | | | | gnd gnd I've reversed D1 and the voltage polarity and replaced Q1 with a switch. But it is very basic switcher topology for cases where Vout > Vin (if Vout < Vin by much, then D1 is always active and the whole idea doesn't work "well.") Q1 goes on. This places a near-constant voltage across L1. Since V=L*dI/dt and you know V and L, you can see that dI/dt is a constant value. In other words, 'I' ramps upward, linearly, from some starting point often assumed to be zero. At some later time, when 'I' reaches some desired value that might be called Ipeak [which can be measured as a drop across Rsense as (Rsense*Ipeak)] Q1 is turned off. L1 cannot permit the sudden demise of 'Ipeak' (a change in I requires, by definition, some time t to do that), so L1's voltage polarity flips and sends the current via D1 to drop it's energy onto C1. Joules is 1/2*L*I^2 (use Ipeak for I) and on the cap is 1/2*C*V^2. So Ipeak energy is translated to a change in V on C1, such that 1/2*C*(Vnew^2-Vold^2) is equal to the energy on L1. If you don't see why L1's polarity changes, it might be easier to simply assign a direction to Ipeak, first. Imagine that the direction arrow of Ipeak points from point A to point B. Now, when Q1 opens and prevents further current down through it to ground, L1 "needs" to maintain that arrow direction somehow. Since point A is "nailed" to Vin, that side remains at the same Vin value. However, point B is now floating, in effect. L1 "wants" to maintain Ipeak and its direction, until enough time t can take place to allow Ipeak to return to zero. To do that, I must flow via D1. To do that, the V at point B must rise up to some "more positive" value such that D1 is forward biased and can permit this. If C1 has some arbitrary Vc on it, then point B must be at least one diode drop above that. The math way to see it is, again, that V=L*dI/dt. Assume dI/dt is positive when Q1 is closed at t=0, for convention's sake, and that I=0 at t=0. Then Ipeak will be positive when Q1 opens at t=t1. At that point, I will decline from Ipeak. But this means that dI/dt is now negative, not positive. Which means that the V across L1 must reverse to the opposite of what it was beforehand. Before, the voltage moving from A to B declined. So now the voltage moving from A to B must increase. Which also confirms the point made, which is that point B will rise to a value higher than Vin and sufficiently higher than the voltage across C1 that D1 can forward conduct and permit L1 to lose energy in such a way that C1 can accept it (energy is neither created nor destroyed.) It really doesn't matter where the other end of C1 is tied, so long as it is a low impedance voltage rail. So I hope you don't mind that I kept it at ground. I might as well have placed it at Vin (which would mirror the circuit better, but wouldn't change the time-domain considerations above.) Jon
From: Joerg on 3 Mar 2010 12:43 Charlie E. wrote: > On Tue, 02 Mar 2010 13:12:46 -0800, Joerg <invalid(a)invalid.invalid> > wrote: > >> Charlie E. wrote: >>> On Tue, 02 Mar 2010 10:48:15 -0800, Joerg <invalid(a)invalid.invalid> >>> wrote: >>> >>>> Charlie E. wrote: >>>>> On Mon, 01 Mar 2010 17:35:29 -0800, Joerg <invalid(a)invalid.invalid> >>>>> wrote: >>>>> >>>>>> Charlie E. wrote: >>>>>>> On Mon, 01 Mar 2010 14:30:26 -0800, Joerg <invalid(a)invalid.invalid> >>>>>>> wrote: >>>>>>> >>>>>>>> langwadt(a)fonz.dk wrote: >>>>>>>>> On 1 Mar., 20:12, Joerg <inva...(a)invalid.invalid> wrote: >>>>>>>>>> Charlie E. wrote: >>>>>>>>>>> On Mon, 01 Mar 2010 10:38:45 -0800, Joerg <inva...(a)invalid.invalid> >>>>>>>>>>> wrote: >>>>>>>>>>>> Charlie E. wrote: >>>>>>>>>>> <snip original problem...> >>>>>>>>>>>>> Joerg, >>>>>>>>>>>>> Thanks for the advice. Yes, I had been concentrating so hard on the >>>>>>>>>>>>> amplifiers I never really considered the LEDs. In my mind, they would >>>>>>>>>>>>> just 'work' and I could then adjust accordingly. Didn't realize that >>>>>>>>>>>>> they would vary that much. Will have to look at maybe adding a higher >>>>>>>>>>>>> voltage, and go with the constant current drives for them. This does >>>>>>>>>>>>> need to be pretty accurate! >>>>>>>>>>>> Where is your VCC coming from? Regulator? If so, what's the minimum >>>>>>>>>>>> voltage going into that regulator? If it is a battery that won't drop >>>>>>>>>>>> below about 4.5V and has low load ripple (low source resistance, added >>>>>>>>>>>> capacitors) fixing this part of the circuit would become fairly simple. >>>>>>>>>>> Hi Joerge, >>>>>>>>>>> I only have two AA batteries, so voltage is only about 2.5-3.1 volts. >>>>>>>>>>> That was why I added in the power supply, to try and stabilize that >>>>>>>>>>> voltage. Most of the parts were pretty power tolerant, but I figured >>>>>>>>>>> (somewhat correctly) that the LEDs would be pretty voltage sensitive. >>>>>>>>>> That will require switch mode conversion, no other choice. >>>>>>>>>> >>>>>>>>>>> What do you think of this idea? Take an LED driver chip, like an >>>>>>>>>>> LM3519 to do the voltage step up and current control, and then three >>>>>>>>>>> fets to switch that current to each of the LEDs. Means a chip, a >>>>>>>>>>> small inductor and schottkey, a couple of caps, and three fets. >>>>>>>>>>> Shouldn't take up too much board space or budget... >>>>>>>>>> Nope, it ain't quite that easy. It doesn't have an external sense >>>>>>>>>> resistor and, consequently, the "accuracy" to which it holds the current >>>>>>>>>> is really horrid. Look at the Iout versus Vin, that's just not good >>>>>>>>>> enough. If you want to use a chip (or three) you need to find one with >>>>>>>>>> at least and external Rsense. >>>>>>>>>> >>>>>>>>>> It is usually easier and less expensive to boost that voltage from the >>>>>>>>>> two AA cells to 5V and add the analog current source circuits I >>>>>>>>>> mentioned in my other post (one per LED section). The PIC could be >>>>>>>>>> supplied directly from the AA cell if it's happy with 2.5V. >>>>>>>>>> >>>>>>>>> something like: http://www.national.com/ds/LM/LM2705.pdf >>>>>>>>> could be used either as constant current or as high voltage supply >>>>>>>>> >>>>>>>> AFAIK those become iffy unde 2.5V. Something like this could work, and >>>>>>>> it's cheap: >>>>>>>> >>>>>>>> http://www.diodes.com/datasheets/AP6714.pdf >>>>>>>> >>>>>>>> If Charlie would prefer a nicely regulated 3.3V as well which would be >>>>>>>> nice to keep the detector side in check he could use the same chip for >>>>>>>> that rail. >>>>>>>> >>>>>>>> >>>>>>>>> I think you could have three npns floating on top of a shared sense >>>>>>>>> resistor >>>>>>>>> to do the switching between leds. >>>>>>>>> >>>>>>>> That's a good option. Just make sure any load change reactions have >>>>>>>> petered out when the measurement window cometh. >>>>>>> Joerg, et.al. >>>>>>> >>>>>>> Ok, I think I like the idea of using the 1253adj in the current >>>>>>> feedback mode, with three transistors to switch the anodes of the >>>>>>> LEDS. Now, for a really controversial subject - transistor selection! >>>>>>> I could just throw 2N2222s in there, but are there any better options >>>>>>> available, like logic-level FETs that I should use? Looking through >>>>>>> the Digikey selections, I found AO9926B, dual FETS that look pretty >>>>>>> good, while still being big enough to solder by hand! >>>>>>> >>>>>>> Any good, cheap through hole logic level FETs for prototyping? >>>>>>> >>>>>> Don't you need P-channel? These look good but there won't be much in >>>>>> through-hole, that era is over: >>>>>> >>>>>> http://www.diodes.com/datasheets/ds30933.pdf >>>>>> >>>>>> But make sure the source doesn't get much above 3.3V or it won't turn >>>>>> off and your current regulator could hang. IIRC on of your LEDs may >>>>>> require more than 3.3V. So you could, for example, hang a BAV99 up front >>>>>> to drop 1.2V and a resistor from gate to source. >>>>>> >>>>>> >>>>>>> Thanks again for all the great advice! >>>>>>> >>>>>> As one SW guy put it, we are here to serve :-) >>>>>> >>>>>> >>>>>>> Charlie >>>>>>> >>>>>>> (at least, this has been on on-topic discussion... ;-) ) >>>>>> Yeah, amazing, not even the slightest rant. >>>>> Ok, this has been bothering me all night. The circuit is now looking >>>>> like >>>>> >>>>> Vout from regulator >>>>> | point A >>>>> FET switch >>>>> | point B >>>>> LED >>>>> | point C >>>>> FB resistor >>>>> | >>>>> GND >>>>> >>>>> (Ok, it isn't ASCII art, but hopefully gets the point across...) >>>>> >>>>> So, working from the bottom, point C is at 1.21 volts. The green LED >>>>> has a Vforward of 3.4V, so B is at 4.6V. I have 3.1VDC (typically) >>>>> from the PIC pin to switch the FET. Not an easy problem. >>>> It is easy: Spring for two logic level FETs that are guaranteed to have >>>> low Rdson at 3V drive. One P and one N. The P-channel goes where your >>>> FET switch ist between points A and B, source to point A. It's gate has >>>> a resistor of 10k or whatever to "Vout from regulator". Now place a >>>> N-channel, source to GND, drain to gate of the P-channel and it's gate >>>> is directly driven by the PIC. >>>> >>>> >>>>> Unfortunately, the RGB LED is common cathode, so needs to be switched >>>>> above, not below, so need to somehow raise the level of the turn on >>>>> signal to be able to control the FET, and still be able to turn it >>>>> off. Of course, this is just one of three circuits, so I need to be >>>>> sure the others don't turn on at the same time... ;-) >>>>> >>>> Consider it done :-) >>>> >>>> >>>>> Of course, no parts around here to play with. time to get out the >>>>> spice! >>>>> >>>> Nah, this does not need SPICE ... >>> Ok, looks good. >>> >>> I still spice it, cause I don't have the parts on hand to breadboard >>> (not that you can breadboard SM parts...) so gives me a chance to test >>> things without releasing magic smoke! >>> >> But it can cost some time to obtain models for the logic-level FETs. >> Sometimes that takes as much time as just whipping it up. >> >> >>> I really need to play with this analog stuff more. I know the basics, >>> but don't have enough practice to know what works, and why. Ya'll >>> have really pulled my bacon from the fire this time. Maybe if Jim has >>> his BBQ next month, I will buy a round (or two... ) >>> >> I think Jim needs to order some more global warming before people will >> come, or everyone has to bring jackets :-) > > Actually, the FETs you suggested have spice models on their sites that > worked like a charm. Order some complementary pairs this afternoon, > some in DIP8 and some in SOT23 form factors. I will crank them up on > friday and see how things perform! > > Naw, by April the weather will be perfect here and in Phoenix. I > actually went swimming a week ago, and should be able to again next > week! Just need a few days in a row of 76+ highs... > Are you in Florida? A client near Palm Beach told me that they regularly dive into the pool now. Wish I lived there ... -- Regards, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.
From: Joerg on 3 Mar 2010 12:47 dagmargoodboat(a)yahoo.com wrote: > On Mar 2, 10:29 pm, Joerg <inva...(a)invalid.invalid> wrote: >> dagmargoodb...(a)yahoo.com wrote: >>> On Mar 2, 9:45 pm, Joerg wrote: >>>> dagmargoodb...(a)yahoo.com wrote: >>>>> On Mar 2, 9:15 pm, Joerg wrote: >>>>>> dagmargoodb...(a)yahoo.com wrote: >>>>>>> The RGB LED is common-cathode? Oh. Then this would work: >>>>>>> +3.3v >>>>>>> -+- >>>>>>> | >>>>>>> .--------+--------+--------. >>>>>>> | | | | >>>>>>> |<' |<' |<' |<' >>>>>>> -| Q1 -| Q2 -| Q3 -| Q4 >>>>>>> |\ |\ |\ |\ >>>>>>> | | | | >>>>>>> | | | | >>>>>>> | | LED-R |LED-G | LED-B >>>>>>> | V ~> V ~> V ~> >>>>>>> | --- --- --- >>>>>>> | | | | >>>>>>> | D1 | | | >>>>>>> +---|<---+--------+--------' >>>>>>> | | >>>>>>> |_ L1 --- C1 >>>>>>> )|| --- >>>>>>> )|| | >>>>>>> _)|| === >>>>>>> | >>>>>>> +--->Vsense (to switching current regulator, >>>>>>> | e.g. ZXSC310) >>>>>>> .-. >>>>>>> | | >>>>>>> | | Rsense >>>>>>> '-' >>>>>>> | >>>>>>> === >>>>>>> GND >>>>>>> This approach is efficient, stable, inexpensive, small, and provides a >>>>>>> wide-compliance range. It needs no level-translation, which saves six >>>>>>> parts or so. A resistor-DAC to the Vsense node could modify the >>>>>>> individual LED currents, if desired. >>>>>> A negative voltage can work and if you use FETs instead of the BJTs you >>>>>> save three more parts, the base resistors. >>>>> I personally like FETs; I put in the PNPs for you. They're cheaper. >>>>> <grin> >>>> But only in mass production where SMT placement is cheap :-) >>>>>> However, make sure the 3.3V hangs on, is strong enough. Also the >>>>>> switcher frequency must be high so load changes are handled fast enough. >>>>>> C1 can't be too large. >>>>> Or omit it altogether. C1's optional, really. >>>> Careful, then you modulate the LED current with tons of switcher ripple. >>>> That could lead to weird color shifts. >>> I actually /was/ going to suggest modulating the LEDs deliberating, > > Arrgh. "deliberately" > Yeah, I was wondering whether LEDs can get into heated political discourses :-) >>> then using a.c. amplification and synchronous demodulation on the >>> detector side. That rejects ambient light and eliminates drift. >> I don't know enough about Charlie's LED but modulating might result in >> it sweeping through a narrow swath of spectrum all the time. And if >> Murphy strike this will modulate or beat with some other stuff from >> fluorescents in the room and the poor uC doesn't know what to do with >> all that. > > I doubt the spectral sweep's a disadvantage here, but you do have to > choose intelligent chopping frequencies to avoid beats. That's easy-- > just integrate over a line cycle. Half a line cycle, to reject > fluorescents. > But I'd check. I only know laser diodes and VCSELs well enough and they can be spectrum-steered by current changes within nanoseconds. [...] -- Regards, Joerg http://www.analogconsultants.com/ "gmail" domain blocked because of excessive spam. Use another domain or send PM.
From: Jim Thompson on 3 Mar 2010 12:57
On Wed, 03 Mar 2010 09:43:27 -0800, Joerg <invalid(a)invalid.invalid> wrote: >Charlie E. wrote: >> On Tue, 02 Mar 2010 13:12:46 -0800, Joerg <invalid(a)invalid.invalid> >> wrote: >> [snip] >>>> >>> I think Jim needs to order some more global warming before people will >>> come, or everyone has to bring jackets :-) >> >> Actually, the FETs you suggested have spice models on their sites that >> worked like a charm. Order some complementary pairs this afternoon, >> some in DIP8 and some in SOT23 form factors. I will crank them up on >> friday and see how things perform! >> >> Naw, by April the weather will be perfect here and in Phoenix. I >> actually went swimming a week ago, and should be able to again next >> week! Just need a few days in a row of 76+ highs... >> > >Are you in Florida? A client near Palm Beach told me that they regularly >dive into the pool now. Wish I lived there ... Charlie is near Palm Springs, Californica. Virtually the same kind of climate as around here... hot enough to keep the riff-raff away ;-) ...Jim Thompson -- | James E.Thompson, CTO | mens | | Analog Innovations, Inc. | et | | Analog/Mixed-Signal ASIC's and Discrete Systems | manus | | Phoenix, Arizona 85048 Skype: Contacts Only | | | Voice:(480)460-2350 Fax: Available upon request | Brass Rat | | E-mail Icon at http://www.analog-innovations.com | 1962 | I love to cook with wine. Sometimes I even put it in the food. |