Shop OBEX P1 Docs P2 Docs Learn Events
Please! Help with high speed photodiode receiver — Parallax Forums

Please! Help with high speed photodiode receiver

RamonRamon Posts: 484
edited 2007-09-11 17:34 in Propeller 1
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:

{{
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

  • Tracy AllenTracy Allen Posts: 6,662
    edited 2007-08-29 21:34
    The thing about photodiodes is that they usually have a large junction capacitance. One way to reduce the capacitance and thereby increase the speed is by using a relatively large reverse bias across the diode, the so-called photoconductive mode. However, that increases the effect of leakage and dark current, which is not good if the signal is small. There is always a tradeoff between the size of the signal and the speed.

    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
  • deSilvadeSilva Posts: 2,967
    edited 2007-08-29 21:54
    Tracy Allen said...
    I thought that range syntax only worked with the i/o registers, as in outa[noparse][[/noparse]5..0]. Does it work okay?
    Well, somewhat OT... I wonder why it does not work with ALL longs....
    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 !
  • rokickirokicki Posts: 1,000
    edited 2007-08-30 02:51
    Actually, using a photodiode with the collector tied directly to a Prop input pin, pulled up by a resistor,
    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.)
  • Tracy AllenTracy Allen Posts: 6,662
    edited 2007-08-30 17:42
    deSilva, Thanks for the insight on the .. range syntax, as it applies to all the special registers. I don't think that is mentioned in the manual, is it?

    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
  • Fred HawkinsFred Hawkins Posts: 997
    edited 2007-08-30 21:41
    Rokicki, can you show a schematic? And which flavor, NPN or PNP?

    Tracy, ditto on the schematic.
  • Tracy AllenTracy Allen Posts: 6,662
    edited 2007-08-30 22:36
    Hi Fred,

    It would be something like the attached if the photodiode is referenced to ground.
    attachment.php?attachmentid=48956
    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
    300 x 221 - 7K
  • RamonRamon Posts: 484
    edited 2007-08-30 22:44
    Thanks to all for the replies,

    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)
    1024 x 702 - 105K
  • RamonRamon Posts: 484
    edited 2007-08-30 22:50
    Hi tracy,

    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.
  • Fred HawkinsFred Hawkins Posts: 997
    edited 2007-08-30 23:32
    Tracy, Ramon: thanks. I think I'm start to see what you mean.

    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 AllenTracy Allen Posts: 6,662
    edited 2007-08-31 16:25
    The circuit I posted for the sigma-delta is more for an analog system, where the goal is an analog measure of how much light or the time course of light intensity, whereas the one that Ramon posted is for an on-off comms system. Ramon's circuit has the photodiode across the emitter-base junction of the transistor, so the transistor turns on when there is enough light to forward bias the transistor and turn it on, a distinct threshold. However, I don't think that circuit will be particularly fast. Microseconds, not nanoseconds But it may be fast enough given the intensity of the light. Ramon, what is the expected data rate of your comms system? The circuit is fast enough?

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Tracy Allen
    www.emesystems.com
  • Beau SchwabeBeau Schwabe Posts: 6,560
    edited 2007-08-31 17:39
    Here is an application note with·a couple of ideas...



    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.
  • RamonRamon Posts: 484
    edited 2007-09-02 21:21
    Fred, You are right about the arrows but i cannot find the symbol of the photodiode in the program I used to draw the image (Linear SwitcherCAD III).

    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:
    • Amplifying a photodiode - National (Very good introduction)

      www.national.com/onlineseminar/2004/photodiode/PhotodiodeAmplifers.pdf
    • AN1122 HP, Inexpensive 2 to 70 MBd Fiber-Optic Solutions for Industrial, Medical, Telecom, and Propietary Data Communication Applications
    • AN243 Microchip, Fundamentals of the Infrared Physical Layer
    • AN1122 Philips, NE5300: A 50Mb/s - 100Mb/s LED for fiber optic communication
    • DN152 Linear Technology, The LT1328: A Low Cost 4Mbps IrDA Receiver (Here I found a mosfet driving the led)
    • ?? Agilent (HP), Agilent IrDA Data Link Design Guide

    I am still investigating new schematics ...


    (Sorry about my english, It's not my natural language)
  • Tracy AllenTracy Allen Posts: 6,662
    edited 2007-09-02 22:14
    I think the sigma-delta circuit is not at all appropriate for what you want to do. You need a strong on-off digital response, not analog.

    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
  • Fred HawkinsFred Hawkins Posts: 997
    edited 2007-09-02 22:20
    Ramon,

    Your english is fine. As for the arrows, almost any graphics program can just flip the arrows in the jpg.

    Fred
    1008 x 604 - 7K
  • RamonRamon Posts: 484
    edited 2007-09-10 19:19
    Hi Tracy,

    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.
    701 x 1019 - 473K
    754 x 991 - 461K
  • Tracy AllenTracy Allen Posts: 6,662
    edited 2007-09-11 17:34
    Maybe there is a copy of Hobb's book in a library? It has the most complete discussion on the tradeoffs in front end design with photodiodes I have seen, including the common base cascode. It is advanced both in the theory and the practice, but it is maddening too, because it covers a lot of ground between theory and practice with just a wave of the hand. I'd like to take a look at the book you referenced, too.

    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
Sign In or Register to comment.