# Diminished data rate with logic output optoisolator

I am using a logic output type optoisolator (H11L1S) that has a nominal data rate of 1 MHz, yet in practice I can't even achieve 100 kHz. Where am I going wrong? Is this maximum data rate unattainable?

Here is the relevant circuitry:

I am driving the LED at 2.8 mA, which is well above the minimum turn-on current of 1.6 mA (plus 10 % guard band suggested by the datasheet). Q18 is a prebiased NPN with 2K2 base resistance and 47K pull-down resistance. Below is a scope capture of the clock signal (ADC_SCK, yellow) and LED cathode (blue). Once the transistor turns off the cathode voltage takes more than $$\5\mu s\$$ to reach +3V3 -- i.e. the LED turns off very slowly -- such that the receiver does not register the change in state.

This means the hot-side circuitry (ADC_SCLK, blue) sees a very slow clock:

• What's all the FET business for? Is this ultimately driving a single logic input? Would it in fact be simpler and faster to directly couple it to a CMOS logic input? – pjc50 Sep 25 '19 at 9:11
• @pjc50 Good point -- it does just connect directly to a single IC input. I had it there in the chicken-scratch phase but it should have been removed. – calcium3000 Sep 25 '19 at 12:28
• You forgot to specify the values on the components (resistors?) near the ADC_SCK input. – Dmitry Grigoryev Sep 25 '19 at 14:09
• @DmitryGrigoryev Indeed -- done. – calcium3000 Sep 25 '19 at 15:04

The switching time test circuit from the linked datasheet shows that the LED is controlled with a push/pull driver with a rise/fall time of 10 ns:

Your open-collector driver will not be able to manage that. Consider using some logic inverter (e.g., (SN)74AHC1G14) instead.

Furthermore, the circuit uses a speed-up capacitor. Fairchild's application note High Speed Optocoupler and its Switching Characteristics H11LxM, H11NxM shows that it should be 470 pF. However, should not be needed for 100 kHz.

The output pull-up resistor should be smaller. Q40 just inverts the signal; you can omit it if you use a non-inverting buffer to drive the LED (or if you use a PNP to drive the anode).

• That buffer certainly did the trick on the LED side! – calcium3000 Sep 26 '19 at 13:54

Take another look at the datasheet, specifically at the 'recommended' RL pull-up resistor value.
That's 270 Ohms, while you're using 15k.

That device sources very little (if any) current when the output goes high, so the rise time you're seeing is directly proportional to that RL pullup resistor you're using (combined with the gate capacitance of your Q40 and any parasitics).

• Ah, good call. But that shouldn't affect the slow LED fall times, right? Do I need a push-pull circuit there? – calcium3000 Sep 24 '19 at 19:18
• LED voltage transition time isn't important - it's the current that matters. Voltage drop is nearly constant when the LED is on, so the slow rise time you see is when it is already off. – Bruce Abbott Sep 25 '19 at 16:52

Once the transistor turns off the cathode voltage takes more than 5μs to reach +3V3 -- i.e. the LED turns off very slowly

The problem here is that the transistor doesn't turn off instantly after being in saturation. You can reduce the effect by either reducing the base resistor value, putting a small speed-up capacitor in parallel with the base resistor, or by using a Baker clamp:

The FET contributes to the distortion of ADC_SCLK signal as well, so I would see if it could be avoided or replaced by a buffer/invertor IC if you need to increase the fan-out. Using a recommended pull-up resistor on the opto-isolator output is also essential if you expect the frequency to be near the nominal maximum.

The FET can pull up but it can't pull down. There is only the 15k resistor to pull down. It's the falling edge at R187 that is slow.

To speed up the opto's input, two things can be done.

1. Decrease R189 to 150Ω to supply ~10mA to the LED when ADC_SCK is active. (3.3v - 1.15v)/10mA = 143.3Ω
2. Add a small "speed-up" capacitance across R189. For Z=50Ω and R189=150Ω, Xc should be:

$$\150Ω || X_C = 50Ω\$$

$$\\frac{1}{150Ω} + \frac{1}{X_C} = \frac{1}{50Ω}\$$

$$\0.00\overline 6 + \frac{1}{X_C} = 0.02\$$

$$\0.02 - 0.00\overline 6 = 0.01\overline 3\$$

$$\\frac{1}{0.01\overline 3} = 75Ω\$$

$$\ X_C = \frac{1}{2\pi fC}\$$ , pluging in 1MHz for $$\f\$$ ,

$$\ 75Ω = \frac{1}{2\pi \cdot 1M\cdot C}\$$ and solving for C:

$$\ 75Ω\cdot 2\pi\cdot 1M = \frac{1}{C}\$$

$$\ 471,238,898.038 = \frac{1}{C}\$$

$$\C \approx 2.2\$$nF

You can also add a small speed-up cap across the unlabeled resistor on Q18-A's base. However, note in the datasheet that it specifies the maxiumum $$\t_{on}\$$ and $$\t_{off}\$$ of 4µs. $$\\frac{1}{4µs}\$$ = 250kHz, not 1MHz!

• Thanks! I'll try the speed-up cap. Q18 is a dual, prebiased NPN so the base resistor is not available. And I saw that $4 \mu s$ on the datasheet! Very confused how they can claim 1 MHz -- I thought maybe they had some trickery like, "Well, our output circuitry can switch at 1 MHz -- the LED just can't switch that fast. But imagine if it could!" – calcium3000 Sep 24 '19 at 20:18
• @calcium3000 There's nothing wrong with Ton / Toff times being longer than the data rate period, it simply means that the output signal will be delayed wrt. input. Additionally, 1MHz data rate is a typical rating, while Ton / Toff times are specified for the worst case. – Dmitry Grigoryev Sep 25 '19 at 14:19