After making failed circuits in the past, I learned that the cause is that the parallel port was producing "phantom power" (aka powering the circuit). This is because I plugged my circuit into the parallel port before adding the external 5VDC to it.

Based on other ideas, My circuit idea is this:

On power-up, the 555 timer makes the output disable a 3-state buffer for a short period of time so that all outputs are high-impedance. (I forgot pull-up resistors on the buffer outputs). Shortly after, the left-most buffers are always enabled and then data from the port can communicate bidirectionally with the micro-controller. (data returns as parallel port statuses).

The micro-controller is on a separate board and the thick lines represent ribbon cable. VCC is 5VDC and both VCC and GND are connected to the separate board through the same ribbon cable as well.

My question is, will this circuit work well for two lines of bi-directional data between the parallel port and the micro-controller without having any phantom power? (I'll be plugging the circuit into the parallel port first before VCC is connected to any power).

phantom power reduction attempt

  • \$\begingroup\$ Where are you going to power the 74HC125 from? How will you avoid its input protection diodes shunting power to what looks like it is going to be a shared supply rail? If your rate is slow enough to work with pullup resistors, you can use a MOSFET level shifter where the low voltage side is powered only when your circuit is. \$\endgroup\$ Jun 27, 2018 at 2:07
  • \$\begingroup\$ Parallel printer's never had this problem. but old PS2 keyboards did. \$\endgroup\$ Jun 27, 2018 at 2:16
  • \$\begingroup\$ I could be wrong, but am I better to use 74HCT125 instead of 74HC125 because I think the HC series IC's have protection diodes and the HCT ones don't? or should I go LS style? \$\endgroup\$ Jun 27, 2018 at 2:28
  • \$\begingroup\$ They all have same protection with 4 diodes and 10k resistors between, but limited to 5mA only per diode. but HCT has TTL thresholds of 1.5V approx But if the Vdd rail has a big cap, then current can be exceeded on phantom power from 1 diode signal high. \$\endgroup\$ Jun 27, 2018 at 2:30
  • \$\begingroup\$ Am I better off using just plain old transistors instead of IC's? \$\endgroup\$ Jun 27, 2018 at 3:27

1 Answer 1


I just want to tell the community that I figured this out myself.

Optocouplers work!

Rather than use logic gates, I went a little more analog and decided to use opto-couplers (chip #4N35) to prevent the logic high from any of the the parallel port data bits from entering into the VCC line of the microcontroller.

The other lines connected to the port are connected to the inputs of the parallel port and since those lines are generally "weakly" pulled high by the port instead of strongly pulled high (which is what happened with the data ports), this circuit is a winner for me.

All resistors are 220 ohm except for the left-most one which is a 0-ohm resistor because I used it as a jumper wire on the PCB.

Also, I noticed the PCB was easier to route plus I was able to make the PCB about 10% smaller while still fitting every part on.

Only caveat to this design which I am ok with dealing with is that when sending data out, I must specify the inverted bit values from the PC side. (example, if I want to output a 70h to the hardware, then I must specify to the software a value of 00h, and if I wanted to output a 40h then I must specify 30h)

optocoupler for no phantom power

  • \$\begingroup\$ This probably works, but it may draw more current than the parallel port is theoretically rated to supply. For older port implementations, it would be better if you did it the other side up, driving the cathodes of the LEDs; that would also remove your need to invert. Not quite clear what the resistors after the optos are doing. They should be pullups but are not drawn as such. \$\endgroup\$ Jun 28, 2018 at 23:01
  • \$\begingroup\$ The bank is pull-ups but the individual resistors connected to the port lines are 220 ohm resistors as a small measure of protection against blowing up the optocoupler LED and to prevent excessive current from entering the status lines of the port. \$\endgroup\$ Jun 30, 2018 at 4:21

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.