Please! Help with high speed photodiode receiver
Hello,
I want to test the frecuency limit of one high speed photodiode (SFH203) that
I have with one high speed IR emmiter (TSFF5400).
First test was with one normal LED as transmmiter directly connected at Pin 0,
through a 100 ohms resistor to ground .
I have made some receivers (searching at google) with FET and OPAMPs, but
I cannot get more than 19 KHz. When I put more than 19 KHz I starts counting
down to 0 Hz.
I think the problem is at the receiver. ¿Could anyone give me some schematic
of photodiode receiver?.
Thanks in advance !
Here is the code:
I want to test the frecuency limit of one high speed photodiode (SFH203) that
I have with one high speed IR emmiter (TSFF5400).
First test was with one normal LED as transmmiter directly connected at Pin 0,
through a 100 ohms resistor to ground .
I have made some receivers (searching at google) with FET and OPAMPs, but
I cannot get more than 19 KHz. When I put more than 19 KHz I starts counting
down to 0 Hz.
I think the problem is at the receiver. ¿Could anyone give me some schematic
of photodiode receiver?.
Thanks in advance !
Here is the code:
{{ Some code modified from CountEdgeTest (PE-Kit-Counters-Lab-v0.81) This code uses libraries from http://www.parallax.com/propeller/object.asp }} CON _clkmode = xtal1 + pll16x ' System clock → 80 MHz _xinfreq = 5_000_000 Emitter = 16 'Emmiter LED pin Photodiode = 15 'Photodiode pin LED = 0 'This pin changes acording to photodiode input OBJ Freq : "Synth" debug : "FullDuplexSerialPlus" PUB TestFrequency | delay, cycles, frecuency Debug.Start(31, 30, 0, 57600) waitcnt(clkfreq * 3 + cnt) ctrb[noparse][[/noparse]30..26] := %01110 'ctrb module to NEGEDGE detector ctrb[noparse][[/noparse]5..0] := Photodiode frqb:= 1 Debug.str(String(10, 13, "Photodiode frecuency limit tester")) dira[noparse][[/noparse]LED] := 1 repeat Debug.str(String(10, 13, "Insert frecuency (Hz): ")) frecuency := Debug.GetDec Freq.Synth("A", Emitter, frecuency) 'Synth({Counter"A" or Counter"B"},Pin, Freq) delay := clkfreq + cnt 'Precalculate delay ticks dira[noparse][[/noparse]Emitter]~~ 'Emitter → output phsb~ waitcnt(delay) 'Wait 1 s. cycles := phsb 'Store cycles dira[noparse][[/noparse]Emitter]~ 'Emitter → input Debug.str(String(10, 13, "f = ")) 'Display cycles as frequency debug.dec(cycles) debug.str(String(" Hz", 10, 13)) if ina[noparse][[/noparse]Photodiode] == 1 'Set LED to show that we are receiving. outa[noparse][[/noparse]LED] := 1 else outa[noparse][[/noparse]LED] := 0
Comments
The fastest amplifiers for photodiodes usually use a transistor as a common base cascode, in order to remove the voltage swing from the photodiode so the the junction capacitance does not have to charge and discharge. The current is passed through into a resistor or more commonly into the inverting input of an op-amp. The photodiode can feed directly into the inverting input of the op-amp, but that is not as fast as the added cascode. It should however be able to get higher than 19 khz.
In your program, I was surprised by the syntax, ctrb[noparse][[/noparse]5..0] := photodiode. I thought that range syntax only worked with the i/o registers, as in outa[noparse][[/noparse]5..0]. Does it work okay?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Tracy Allen
www.emesystems.com
Nevertheless:
(a) It works with all 16 "special registers"
(b) It also works "reverse", i.e. outa[noparse][[/noparse]7..0] := 1 will set pin 0!
(c) It also works with variables, i.e. outa[noparse][[/noparse]x..y]
(d) It also works with outb !
with another resistor to an output pin, and a 10nf cap (probably not even needed but I used it),
in ADC mode, works quite well at high speeds. This is because the EC voltage stays very constant
(right about at 1.65V), and the only thing that changes is the current. Try it, you might like it! It's also
very simple.
Let me be clear about the diagram. The emitter is grounded. The collector is tied to one leg of the
10nf, one leg of (say) a 10K pullup, one leg of (say) a 1K resistor, and some propeller input pin.
The other leg of the 10nf is grounded; the other leg of the 10K goes to +3.3V, and the other leg
of the 1K goes to some propeller output pin.
You'll need to tune the resistor values for your particular application (note that you can use
multiple output pins with different values of resistors, selecting which one works for a particular
input range, if you can afford the pins.)
Rokicki, I think Ramon is talking about a photodiode, not a phototransistor. Nonetheless, a sigma-delta circuit would be a super bet for reading the current so long as it is above the noise floor. For a photodiode there would be no need for a pullup resistor. One side of the photodiode would go to the sigma-delta input pin, and the other side to a bias voltage so as to keep the diode reverse biased. That could be cathode to input pin and anode to ground. Increasing current sinking through the diode due to light would cause a increase in duty cycle from the output pin to provide the compensating current. The diode capacitance is effectively in parallel with the integrating capacitor, and effectively out of the equation except for the issue of response time. The sigma delta could provide a curve trace of the response of the diode. But if it is really a superfast diode, the response will occur in picoseconds, way faster than the Prop could measure it.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Tracy Allen
www.emesystems.com
Tracy, ditto on the schematic.
It would be something like the attached if the photodiode is referenced to ground.
The DC design equation is included for the choice of R2 in relation to the full scale current. When the photodiode is dark ( ~ 0 current), the input pin will rest at Vdd/2 (nominally 1.65 volts) and the output pin will be high H=1/2 of the time. When light increases, the value of H will increase to compensate, but the maximum value of H is 1, so the constraint in choosing R2 is, I1*R2/3.3 < 0.5.
It would in fact be possible to provide an offset, and that could be simply a pullup resistor to Vdd. That would be very useful if the photodiode light level fluctuates about a steady state instead of reference to zero. The circuit could be made differential with a second photodiode, cathode to Vdd and anode to the input.
Ramon, how will this be applied? Digital on-off as in a communication system, or analog as in a measurement system?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Tracy Allen
www.emesystems.com
Post Edited (Tracy Allen) : 8/30/2007 10:41:59 PM GMT
Rokicky, please can you post a schematic?
I have redesigned the emitter. It now switchs with a mosfet betwen 1000 omhs (Low led
emission) and 100 ohmh (High led emission).
In the receiver I have made some new designs of OPAMPS but it hasn't been successful.
I was not able to make the configuration proposed by rokicki. As suggested Tracy, I
also have tried to make a FET cascode without success.
!!! But finally by some trial an error I have found a working configuration !!!
(I have made two mistakes, one in the receiver and one in the emitter. But it works).
PS: tracy, I haven't noticed any strange behaviour in ctrb[noparse][[/noparse]5..0] := photodiode (It works also)
I want to make digital on/off like a communication system. I want to make a FSO link.
With the Propeller I can dedicate one cog for transceiver #1, and another cog for transceiver #2.
Ramon, I think your photodiode needs to flip its arrows.
Tracy, what are the range of values for R2? (I see your equation but can't make sense of it. Sans magic smoke, that is. In short, I don't get it.)
For both, why is Tracy's example less complicated? In other words, why bother with a transistor and mosfet?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Tracy Allen
www.emesystems.com
http://sales.hamamatsu.com/assets/applications/SSD/si_pd_circuit_examples.pdf
#1 is an FET version of Ramonds
#5 is similar in function to what Tracy has, but instead of the Propeller it uses a high speed Op-Amp
Ramond,
Is there a specific carrier frequency goal that you want to use with the Photodiode and IR Emitter at in your design?
Knowing that might provide the possibility of another solution.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Beau Schwabe
IC Layout Engineer
Parallax, Inc.
The mosfet can be supressed. The propeller can drive 20 mA to the led. I have made some test and there is no advantage using the mosfet.
(I want to use the mosfet because I have a schematic that drives a constant current to a led with a mosfet.)
---
Tracy, I have tried your schematic but I haven got it to work. The expected data rate is unknown, I want to reach the limit for testing purposes.
I have made some test and I can get easily 30 Mhz (frecuency counter) With the green and yellow LED supplied with the propeller education kit, and with a normal 3mm brigth red LED. The Emitter and detector ar at a distance of 10cm (4 inch)
When I try any IR LED I cannot get an good operation point (I cannot adjust the potentiometer to read well any frecuency, it is very inestable). The receiver has its peak responsivity at 900 nm ¿maybe it's saturated?.
For some unknown reason the Yellow LED have a low frecuency bad response. I cannot detect frequency until 10KHz, but I can reach 36 MHz - 39 MHz with the yellow LED, about 5-6 MHz more frecuency than Red or Green LED. (¿maybe the junction capacitance?)
---
Beau,
I am beginner. I am learnig about photodiodes and emitters. I don't have any specific carrier frecuency or speed goal. It's just for experimenting how much speed can communicate two propeller (or cogs).
Thanks for the link. I have tried the first schematic of hamamatsu, but the FET amplifier doesn't work as well as the NPN. I cannot use 15V (I am using 3.3V of propeller and I think that the FET has lower amplification than the NPN transistor with 3.3V)
Maybe another student can find interesting these other Application Notes that I have found on google:
www.national.com/onlineseminar/2004/photodiode/PhotodiodeAmplifers.pdf
I am still investigating new schematics ...
(Sorry about my english, It's not my natural language)
LEDs are great photodectors, low leakage and low capacitance and narrow bandwidth. I am impressed that you got 30 mhz response at 10cm. Were you using the same type of LED for both transmit and receive?
The references you have collected especially for fiber optic communications will be very useful I think. Here are a couple more of book length, expensive, but maybe you can find them in a library:
Photodiode Amplifiers: OP AMP Solutions
by Jerald Graeme, who has written lots of op amp application books in the Burr-Brown series.
Building Electro-Optical Systems: Making It All Work
by Philip Hobbs, This is in the same 5-star league as "Art of Electronics", and has a chapter on how to push the limits in the sensitivity versus speed of response tradeoffs. It is pretty advanced but also very practical.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Tracy Allen
www.emesystems.com
Your english is fine. As for the arrows, almost any graphics program can just flip the arrows in the jpg.
Fred
I am not using a LED for receiver. I am using an high speed photodiode TEYD-5500.
(I bought a lot of 25 on ebay last year at $10 USD)
The book of Philip Hobbs (Building Electro-Optical Systems: Making It All Work)
has very good reviews on Amazon, but it is very expensive (about $100 USD).
I have this book: "Lightwave Technology: An Introduction" by J. C. A. Chaimowicz
It is an introductory book about Electro-optical systems, and have a chapter
dedicated to FSO.
There are integrated circuits meant for optical communication and fiber optics that include a high performance photodiode amplifier. I've been looking at the available diode laser drivers for a project we have, and most of those also include a connection for the back-side diode that regulates the average laser power, as well as inputs for high data rate modulation. (But our project does not involve communication--it is analog measurement) A suitable external receiver chip might save you a lot of work.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Tracy Allen
www.emesystems.com