I am currently working on the design of a low-cost communication system based on IR LEDs and photodiodes for my research project. The goal is to transmit data with ~100ns pulses across ~0.5m distance (the longer, the better). While seemingly easy, I simply cannot get the signal quality to be good enough, so I am here to ask if this task is even possible (more details below).

I am currently using a high-speed IR LED (IN-P281ASGHIR) as the transmitter and a high-speed photodiode (OP950) followed by a transimpedance amplifier, an op-amp, and a comparator as the receiver.

I found that even if I drive ~500mA through the LED, when the LED and the photodiode is 50cm away, the photocurrent is merely ~200nA. Because I need a bandwidth of >20MHz to detect 100ns pulses, even with a low noise op-amp (<10pA/rtHz input current noise,) the total input current noise would be of the same magnitude. Switching to larger LEDs or photodiodes with larger sensitive area can increase the signal, but I will lose frequency response at the same time. The project requires the transmission and reception to be omni-directional, which means I cannot use directional LEDs and photodiodes to increase the photocurrent.

It feels quite weird that we can spot faint visible light LEDs (~1mA current) in a few meters but cannot make a sensor that sense super bright LEDs just 50cm away. Are there any other ways around or should I adjust the goal?

Details about implementation

The emitting circuit is just a FET driving the LED and a resister in series, with some simple measures to prevent oscillation. The receiving circuit is as follows:

receiver circuit

The simulated passband for this circuit is 400kHz~40MHz, and total output noise is ~3mVrms. I've built the circuit, and while it can pick up 100ns pulse at close range, the noise is too large (20~30mVp-p) and blurred the edges of the real signal, making the output of comparator noisy as well. When emitter and receiver are 40cm away, though I can still see the signal using an oscilloscope, I cannot simply use a comparator to extract it.

We are building low-cost systems, so while I know I can use modulation to increase SNR, it requires high-speed ADCs and FPGA/DSPs, making this solution not suitable.

A bit more detail about the requirements

This system is used to create a network between a bunch of free moving robots in 3D, and that's why I want omnidirectional emitter and receivers. Using spinning emitter / receiver might work in 2D scenarios, but it's hard to spin a narrow beam and cover all 3D space quickly.

There's also a requirement that the receiver need to constantly track the presence of the sender with a precision down to 50us. This is the major limiting factor, but I can tolerate slow transmission speed. However, In order to track the sender, the message at least need to contain the ID of the robots, let's say 10 bits. Also, to enable time division multiplexing (frequency division multiplexing and other more advanced techniques usually requires ADCs), and let's say we need 5 channels for TDMA. This brings the time for each transmission down to 50/5=5us, and to send 10bits within 5us, we need at least 4MHz bandwidth. (analysis for code division multiplexing will reach similar results.)

From a communication perspective, the previously stated requirements translates to >2Mbps continuous data transfer between peers without multiplexing.

And because it's a research project, these devices will not be manufactured in large quantity, so PFGAs and ASICs are not possible.

About IrDA standard

I have researched about the standard's physical layer(IrPHY), but to satisfy >2Mbps communication, I have to use FIR standard, and cannot use the common SIR standard (115.2kbps time at max). While there are many existing ICs for SIR standard like this, I failed to find any that supports higher speed standards. An IC for higher speed protocol might directly solve the problem.

The IrPHY FIR standard use 4ppm modulation, and I am currently using a slightly modified 4ppm modulation technique.

  • \$\begingroup\$ HP had a series of calculators that sent data to printers using LEDs. The ambient conditions may have an effect - bright sunlight etc. \$\endgroup\$
    – Solar Mike
    Sep 17, 2022 at 9:35
  • \$\begingroup\$ What data rate do you need on the link? That's the key specification, more important than (prematurely decided) implementation details like 100 ns pulses. Once you know the final data rate, you know what you can shrink the detection, and hence noise, bandwidth to. Detecting wideband pulses needs a wide, therefore noisy, bandwidth. There may be low cost ways other than brute force fast ADCs and FPGAs to achieve low final detected bandwidth. \$\endgroup\$
    – Neil_UK
    Sep 17, 2022 at 11:25
  • \$\begingroup\$ A lens on either end, or light-pipe is the obvious solution. Why is this not acceptable? \$\endgroup\$
    – glen_geek
    Sep 17, 2022 at 12:40
  • 1
    \$\begingroup\$ Do you want both the transmitter and the receiver to be omnidirectional, or just the transmitter? \$\endgroup\$
    – The Photon
    Sep 17, 2022 at 15:36
  • 1
    \$\begingroup\$ A photocurrent of 200nA is over 1 trillion photons detected per second, which a LOT of signal. If your goal is 2 Mbit, you have over 600,000 photons per bit and a shot noise limited SNR of of almost 800:1. To put those numbers in perspective, your cell phone camera probably generates a 10 bit image with even bright pixels have less than 1% of that photon count. What jumps out at me is that your TIA is way too fast for your application and thus adding a lot of noise, and that you probably want an avalanche diode so that your TIA isn't doing all the work. \$\endgroup\$ Sep 17, 2022 at 19:54

1 Answer 1


I don't see any reason you cannot do this. Light-based communications are unpopular because light is highly directional the components are more expensive than RF, but your requirements are fairly modest (extremely bright source at short distance with line of sight).

The problem with your design is that you're trying to use a photodiode (so 1 e- per photon) but you're also running at extremely high bandwidth with a 350 MHz TIA that adds a lot of noise. They're really mismatched, so even though you have enormous signal (~600,000 photons per bit), you're losing almost all of it due to the front end noise. A simple solution is to add photoelectron gain. A common APD will give you ~50-100x gain, and thus 50-100x higher SNR from your existing front end. A Geiger mode APD array (silicon photomultiplier) can give you more like 100,000-1,000,000x gain, in which case even your existing front end would be single photon sensitive, or at least close to it. Downside is that QE is more limited in NIR than an APD or PD.

For example, the Hamamatsu S15639 would be a lot better at 800 than 900nm:

enter image description here

But you get a gain of at least 1 million and a saturation photocurrent in the milliamps:

enter image description here

That said the impulse response of these detectors is weird because of the array, but you can pulse shape them easily enough with an extra filter, and 20 MHz is fairly slow. I would do some basic calculations and see how much gain you really need to get the SNR you want.

To answer your more specific questions:

BTW, do you know if there is any design resources for APDs in bright environment?

Here is an open source project for high dynamic range imaging using them: https://github.com/OpenSiPM/sipm-bias-control

There is also an attached publication that has more information. The design there is 60 MHz, so faster than you need, but is a good starting point.

I thought that lidars use lasers and very selective wavelength filters? and this cannot apply to LEDs or cases where omni-directional emission is needed?

Assuming you have no incandescent lighting, you should have almost no NIR in the room, so a simple colored glass filter will work. You can get RG780, RG830 or RG850 glass windows for a few dollars from Chinese sellers, or a little more from EU/US vendors. Pick to match your LED.

  • \$\begingroup\$ Thanks for the answer! I searched for PMTs and SiPMs, they are really expensive and large, and it seems that both still suffer from saturation problems. Taking the SiPM you've shown as an example, while it saturates at a current in milliamps, true. But the gain is on the order of 10^6, which means if it's a PD instead of SiPM, it only takes several nA to saturate it, and I am pretty sure that the environment I am working in has ambient light exceeding that intensity. I reached the same conclusion from the github repo / paper you cited. \$\endgroup\$
    – Wjx
    Sep 18, 2022 at 18:27
  • \$\begingroup\$ I guess that's why people use them in either dark environments like in optical experiments/microscope or together with lasers where a very narrow band filter can be used to filter out any other light except for a particular wavelength. \$\endgroup\$
    – Wjx
    Sep 18, 2022 at 18:30
  • \$\begingroup\$ @Wjx I think you have some misconceptions. PMTs are vacuum tubes, SiPMs are photodiodes. A 1mm SiPM is the same size as any other 1 mm photodiode, and are fairly similar in price. Since you are working indoors you can lower your illumination power or the gain on your detectors as needed, and would probably need to depending on distance. \$\endgroup\$ Sep 18, 2022 at 18:53
  • \$\begingroup\$ Correct me if I am wrong, I thought SiPMs consists of tens to thousands of micro-cells, and each cell will avalanche and generate an output pulse if one photon hits the cells. And due to the cell's physical properties, each pulse will last for a few ns. so if the flux of ambient light is higher than several hundreds of photons/nsec, then the whole device will be saturated. \$\endgroup\$
    – Wjx
    Sep 19, 2022 at 20:56
  • \$\begingroup\$ @Wjx You can get models that have very high dynamic range, but it doesn't sound like you have need for that if you are trying to send data at 2MBit/s. \$\endgroup\$ Sep 20, 2022 at 1:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.