Optoisolated ET227 Transistor Driver

Because the ET227 transistor operates at power line voltages through a full wave rectifier, the base drive circuit requires an optoisolator. The ET227 is a low-gain device with hFE < 10, so it takes about 100 mA of base drive to control an amp of motor current, soooo the optoisolator needs a current amplifier.

I used an MJE2955T PNP transistor, with the emitter powered from an isolated +5 V supply to let the optoisolator pull current from the base. You could use an NPN transistor as a Darlington amp, but wiring the collectors together means the driver dissipates way too much power; the PNP seemed all-around easier.

That circuitry sprawls across the middle of the schematic:

AC Power Interface

AC Power Interface

The ET227 base runs at about 900 mV, so the MJE2955 PNP transistor will dissipate half a watt and needs a little heatsink, seen over on the right (with the hulking ET227 heatsink at the edge):

HV Interface board - detail

HV Interface board – detail

With all those parts safely secured, I ran some end-to-end current measurements from the optoisolator’s LED to the ET227’s collector current, with a safe 10 VDC applied to the collector:

ET227 - base drive - optoisolators

ET227 – base drive – optoisolators

It’s worth noting that the two optoisolators have different pinouts. The DIP socket has wiring for both of ’em, so I could swap the two without rewiring the board. No, I didn’t notice that the first time around.

The curves are nicely linear above 250 mA, which is about what you’d expect for bipolar transistors driven from a current source. Below that, the current into the 13 Ω base-emitter resistor starts to overwhelm the actual base junction current and makes the curves all bendy. Given that the motor doesn’t start spinning the sewing machine with less than half an amp, that region doesn’t matter.

It’s also worth noting that the ET227 normally sees tens of amps (!) into the base terminal to control up to 200 A pulsed collector current with up to 1 kV collector voltage. That puppy loafs along here…

The ratio between the isolator gains doesn’t match the ratio between the spec sheet values, so maybe they’re mismarked or I (once again) have an outlier. In any event, there’s no point in getting too fussy, because the transistor gains depend strongly on temperature. I picked the lower-gain SFH6106-2 for more headroom, but it probably doesn’t make much difference.

The voltage-to-current circuitry driving the optoisolator’s LED lives on the Low Voltage Interface board, with the MCP4725 DAC breakout board above the Arduino Pro Mini and the rest just beyond the LM324 op amp over on the left:

Low Voltage Interface Board - detail

Low Voltage Interface Board – detail

There’s nothing much to it:

Current Control DAC and Driver - schematic

Current Control DAC and Driver – schematic

I finally broke down and got some of Adafruit’s nice MCP4725 I2C DAC breakout boards: 12 bits, rail-to-rail output, no PWM ripple. What’s not to like?

R409 scales the gain so that +5 V tops out around 1.5 mA, which should deliver a collector current around 3 A: far more than seems absolutely necessary. R408 lets the op amp develop some voltage while trickling a few dozen microamps into the 2N3904’s base; the hFE runs around 50, so the error due to base current amounts to maybe 2% and, remember, the final current depends on the temperature anyway.

It’s getting closer to working…



  1. #1 by Chas on 2014-10-09 - 08:18

    Hello, your schematic notes shows 25 turns x2 for the toroidal inductor but only one side appears to be shown in this part of your schematic. What is the second winding use for or did you wire them in series ( with reverse rotation )?

    • #2 by Ed on 2014-10-09 - 08:57

      It’s a pair of 25 turn windings in parallel, giving the effect of the same number of turns with twice the wire area. They started as a single 56 turn winding and the second photo shows the result, but you definitely can’t figure out the connections from that jumble.

      There’s more detail and some measurements in the Powered Iron Toroid writeup, showing why I didn’t use a random iron toroid harvested from the system board.

  2. #3 by madbodger on 2014-10-09 - 08:50

    I like those cute little 4-pin optoisolators, I was thinking of using them in my computer control multichannel dimmer, but the matching 4-pin sockets are hard to find. I ended up using 8-pin dual optoisolators and 8-pin sockets, which worked nicely. In your case, the extra socket pins give you pinout flexibility, so you win too.

    I’m looking at DACs for a “drawing on a CRT” project and PWM isn’t going to work there, so I’ll look at those Adafruit breakout boards.

    • #4 by Ed on 2014-10-09 - 09:14

      a “drawing on a CRT” project

      For slow values of drawing, they might work OK.

      The library code sets the Arduino I2C hardware to full throttle, but it’s not blazingly fast. Updating the current every time around a trivial main() loop worked out to about 600 µs, so that’s not going to be a problem for my just-about-DC motor controller. IIRC, most of the delay came from the loop, not the DAC updates.

      With some careful hand-tweaking, you could probably update two channels on each pass, but refreshing 1000 XY points/sec isn’t nearly enough to Bresenham your way through a vector list.

      • #5 by madbodger on 2014-10-09 - 09:17

        Yeah, that’s the sort of thing I’m concerned with. Granted, I’m not looking for any great speed, but I’d like to draw a few simple shapes without too much flicker. So I’m examining the possibilities. If I have to, I’ll use parallel ones.

  1. Kenmore 158: Recalibrated Optoisolator Drive | The Smell of Molten Projects in the Morning