Need help designing a UART to Fiber LED drive strength controller.

Thread Starter

CircuitMan7191

Joined Dec 17, 2025
4
I currently have a circuit where I use UART to communicate over fiber. This is done by the UART data packet toggling the Base of an NPN transistor which pulls the LED low and flashes it in sync with the UART bits. I would like to be able to electronically control the drive strength of the LED. This would likely mean implementing some kind of op amp-based Voltage controlled current source or Laser driver IC. Given the max baud rate is 115200, and I would like to control the current 0-40mA this should be very doable. However, I am struggling on how to implement the current limiter while maintaining the ability to transmit data packets. I am working on an EHCS(Enhansed Howland Current Source) circuit currently to attempt this.


Does anyone have any thoughts? Maybe I am overlooking a simple solution.
LED forward voltage is 3.1V, digital Pots are out of the question due to their large step size and low power rating.



Screenshot 2025-12-17 155802.png
 

ericgibbs

Joined Jan 29, 2010
21,390
I would like to be able to electronically control the drive strength of the LED.
Hi C7191,
Welcome to AAC

Will the required LED current be set manually [adjustable pot], or be electronically adjusted by some other current sensing circuitry?
E
 

Thread Starter

CircuitMan7191

Joined Dec 17, 2025
4
Hi C7191,
Welcome to AAC

Will the required LED current be set manually [adjustable pot], or be electronically adjusted by some other current sensing circuitry?
E
I want to control the drive strength without human intervention. It won't be changing dynamically during data packet transfer only when data is not being sent. The Fiber receiver is optimized for a 1uW input power so the ability to adjust the drive strength of the transmitter is vital to prevent oversaturation.
 

ericgibbs

Joined Jan 29, 2010
21,390
hi C,
Assuming the receiving end has the LED light intensity detector, how do you plan to send the required adjustment control setting back to the transmitter?
E
 

Ya’akov

Joined Jan 27, 2019
10,226
Something like a digipot might be the best bet. It will be limited in resolution by the number of taps but it won't have slew problems.

There are many types, attached is a random example datasheet. You will find app notes on device selection on sites like Digikey and Mouser.
 

Attachments

Thread Starter

CircuitMan7191

Joined Dec 17, 2025
4
hi C,
Assuming the receiving end has the LED light intensity detector, how do you plan to send the required adjustment control setting back to the transmitter?
E
The receiver is a photodetector, who's output is tied back a micros UART RX and both boards have a transmit receive fiber pair.
I have a created and average table showing output optical power from the transmitter based on drive current. Knowing the type of fiber, end finish, and length I can do some simple math to calculate the optical power seen at the opposing end of the fiber and adjust the drive strength accordingly to prevent over/under saturation of the photodetector. So, in this manner I don't really need to relay any information back, I will know if it worked based on successful UART transactions.

The over saturation of the photodetector causes it to hold "HIGH" bits "HIGH" for a few microseconds after the light pulse has turned off. So, at 115200 baud this is enough to throw the timing outside spec and gives bad data.
 

Thread Starter

CircuitMan7191

Joined Dec 17, 2025
4
Something like a digipot might be the best bet. It will be limited in resolution by the number of taps but it won't have slew problems.

There are many types, attached is a random example datasheet. You will find app notes on device selection on sites like Digikey and Mouser.
I looked at digipots but most are specked for a 20mA max pulse current. I could make my own I suppose but that would take a lot of board space with external resistors. I was hoping an easy opamp solution was possible.
 

ericgibbs

Joined Jan 29, 2010
21,390
hi C7191,
Is this circuit for LED current control inline with your requirement?
The LED current is set using the 2k5 linear trimpot Rpot
I have assumed the LED is White at approx 3.2Vfwd.

Two images, showing the LED current range and one showing an expanded view of the waveforms.

E
V3 only simulates the rotation of the Rpot for the simulation.

EG 1908.pngEG 1909.png
 

du00000001

Joined Nov 10, 2020
189
The most funny way I can imagine would be to use a voltage controller to adjust the LED's operating voltage :)To avoid the use of a boost converter you would have to lower the value of R10 to get enough voltage headroom for controlling the operating voltage. Now add an LDO and make its feedback resistive divider adjustable by using a digital potentiometer ;) (This could be by using the digipot as the resistive divider, or as one of the 2 resistors of the same.)

Considering your 0..40 mA specification my guess would be that controlling the current in 1 mA steps would already be an exaggeration although this might be achievable with a 256 step digipot.
(0 - 1 - 2 - 4 - 8 - 16 - 32 - 40 mA might already do - an optical receiver usually has some kind of AGC on board. Just make sure to always start with 0 mA - increasing the power until the link has been established. So 100 steps might already be enough. And the nominal resistance is not critical as well as the feedback divider usually operates with sub-mA currents.)

What you might have to add to get stability: a "bleeding resistor" constantly consuming 1..2 mA. Otherwise the LDO's load would be switched between 0 and 100 % - an operating mode usually not feasible (and hard to get implemented stable). And don't forget the buffer capacitor.
 
Top