Optoisolator Selection/Circuit Config

Status
Not open for further replies.

dauntless89

Well-known member
Hey guys,

I'm attempting to read a pulse signal from a Hitachi variable-frequency drive. The drive's reference guide states this output is a 0-10v square wave, with a limit of 2mA. This circuit must ground back to the drive. I was initially planning to use a voltage divider to drop the signal down to 3v3 tolerance and current-limit the drive's pulse output circuit to ~.5mA. The issue with this is it wouldn't allow for easy input protection on the MCU side because the MCU ground and VFD return would not be tied together due to noise concerns.

I then thought that an optoisolator might be a much safer and simpler way to go. However, I have never used one before.

One question I had is that the forward current seems to be defined as a maximum of what the light-emitting device can handle without blowing up. What isn't clearly defined is a required minimum forward current for operation. Is this because they assume the user will be operating close to the forward current rating, or is the forward current requirement so low it's not worth mentioning? For example, if I used this one (electrical specs on pages 9 and 10) with a forward current of 50mA, would it even work with <2mA supplied to it? I'm guessing this is where the CTR comes into play but I could use some guidance. The collector/emitter side will just be going to a digital input using the input pullup.

Thanks,
Tony
 
You are on the correct path. The MAX rating is 50 mA so you don't want to use all of it. 2 mA of LED current may be on the shy side especially if you get a weak opto. I recomend breadboard first to find out. If that does not work then use an NPN (2n3904) with a base resistor to limit current to 1mA and put the LED in series with the collector and a current limiting resistor, 5-10mA should be plenty for the LED, to the VFD supply. Don't forget the current limiting resistor in series with the VFD output.

Your theory about CTR is correct, more LED current translates into more collector current.

The opto collector would go to an input pin configured as INPUT-PULLUP while the emitter connects to ground on the Teensy side.
 
Awesome, thanks for the input. Most of my confusion was from a preconception the optoisolator was more of a switching element, but the CTR makes a lot more sense if ICE scales somewhat with LED current. I wish that datasheet was more clear on that component's CTR but I'll do some more research and see if I can make more sense of it.

Something else I wonder about is the Due I'm using on this project has internal pullups "guaranteed to be between 50k and 150k." I see a lot of threads with dudes griping about this on the Due forum but might it actually be helpful here? Such an internal pullup would limit current to 20-70μA, so that plus a little safety factor is all I need the optoisolator to move. Unless there's a hard lower limit on the C/E side? The Digikey part number doesn't have a CTR rank, if I'm reading the sheet correctly that means it has a minimum CTR of 50% and a maximum CTR of 600%. That should mean I can get my, say 80μA on the output side with no more than 160μA on the input side? I could be missing something fundamental but it seems like they don't do a very good job of defining that CTR curve.

I'll take a look at some more optoisolator datasheets, pick one, get resistors to drive it at .5, 1, and 1.5mA straight off the VFD, plus all the parts for the intermediate transistor driver you mentioned, and go from there. I happen to have a scope so I can generate a signal and view the output through the entire device, so I will be able to get it pretty finely tuned.
 
In case this helps anyone else, here are my results with the LTV-816 opto using a 20k (.5mA) current-limiting resistor right off the simulated drive output:

325Hz is the motor current with no load.
325_Hz_1.75_amps.png

750Hz represents full motor load of 4 amps.
750_Hz_4.04_amps.png

This configuration will work up to about 1.5kHz. Beyond that point, the rise time with the Due's internal pullup is too long to allow it to reach logic high.
1500_Hz_8.08_amps.png

This setup will suit my needs just fine. Thanks for the guidance.
 
Forgot to mention, now can't edit my last post:

Blue waveform is the signal generator output (simulating the signal from the drive). Red waveform is voltage at the pin on the Arduino configured as input/pullup. I did some further testing and settled on a 10k current-limiting resistor in the drive signal circuit (1mA). This dropped the fall time to 6 microseconds from 23-ish that a 20k resistor (.5mA) displays. A bit off-topic because this is an Arduino Due, but I found this is actually good up to exactly 2.4kHz in this configuration. The Due is registering a logic high down to about 1.65 volts.
 
Last edited:
Status
Not open for further replies.
Back
Top