And so back to the back-powering problem on my ever-imminent SmartParallel interface board.
The issue is that, when the printer is powered on but the SmartParallel board isn’t, voltages coming from the printer via signal lines being held high are part-powering the board.
One option was to simply ignore this problem. I find that works for a lot of things in life, but I know (now) that back-powering ICs is not good for their long-term health.
Plus, one consequence of this problem is that, with the buffer IC kind of powered, any slight blip on the /INIT line would cause the printer to perform a reset.
The back-powering was happening via one or more of the three ICs on the board – the 74HC595 shift register, the 75HC541 buffer and/or the 74HC14 inverter. I confirmed this experimentally.
It was time to turn to my most knowledgeable friend, the Interwebz. And sure enough it turns out that such back-powering is a well-known problem. It typically happens via electrostatic discharge (ESD) protection diodes built into the chips, which are intended to allow for the dissipation of stray transient voltages.
But what to do about it?
Many of the ‘solutions’ I read about online were complex, involving multiple components per line – and my problem involved at least 14 lines.
And then a kind soul, ‘kubeek’, on the All About Circuits forum, mentioned trying a different family of chips.
Most chip designs come in a variety of families, denoting the underlying technology. I’ve been using the ‘HC’ high-speed CMOS family of the 74 series chips because … well, because that’s what I’ve got. But, it was suggested, the low-voltage LV family might be a better choice. These usually include so-called Ioff functionality, supporting partial power-down to limit current consumption when the chip’s not directly powered. As a consequence, they also offer ‘back-drive’ or back powering protection. That seemed just the ticket.
Time to test
I ordered LV versions of all three chips (plus some others to play with) from that nice Mr Mouser. And then, to get a direct comparison, I re-ran my tests.
First, I set up the 74HC541 buffer chip that I had been using.
In the image, you can see that the VCC pin (pin 20, top-right) is not connected to the power rail. Its only external connection is to the multimeter. The GND pin (pin 10, bottom left) is connected to GND on the power rail and is therefore emulating the GND connection to the printer. I’ve also connected the /OE1 and /OE2 pins (1 and 19) to GND, via the yellow wires, as they would be in my circuit. The power rail’s 4.9V supply is connected to several of the input pins via 100Ω resistors, to simulate the voltages coming via the various signal lines from the printer. I also connected one of the input pins to GND as a control.
And you can clearly see that the VCC pin is sitting at 4.39V. This is due to back-powering through the chip. I measured the output pins: the ones that related to the high inputs were also at 4.39V, so the chip was basically powered and running. The one whose input was low tended to vary a bit, but the maximum was 0.1V.
According to my bench power supply, this setup was drawing 0.000A – or, to put it another way, too little to measure.
Then I replaced the 74HC541 with the 74LV541. That wasn’t simple because I could get the LV version only in a SOIC-20 SMD package, and so had to use an adapter board. But aside from that, the setup is identical.
As you can see, the voltage on the VCC pin is only 0.12V. Voltages on the output pins were 0.32V (where input was high) and 0.2V (input low).
I also decided to see if the pins were capable of sinking current in this state. I hooked up an LED to the power rail and put the meter in series with it and the output pins. Where the input was high, it showed a draw of 0.1mA. Where the input was low, a current of 0.32mA.
Once I’d powered the chip, the outputs were where they should be – 4.9V where the inputs are high, 0.00V where the input was low. I did that simply to test my soldering was okay and that the chip was actually working.
The good news is that the three ICs are all available in LV versions that are pin compatible with the HC versions. I didn’t even have to change my schematic (although I did anyway, because OCD).
So, the next step is to lay out the PCB. I’ve done this once already, but I’ve made so many changes since then that it’ll probably be easier to start from scratch rather than faff around trying to amend the existing version. In any case, there were some rather clunky hacks in that first try that, while they might have worked, left me feeling unclean.
Perhaps the end of this long-running saga is finally in sight.