Although the stripboard version of the SmartParallel board is working, one niggle remained.
When the printer was switched on, but the SmartParallel board wasn’t powered, I was getting random resets of the printer. They weren’t as frequent as with the breadboard prototype, but they were there, sometimes.
Also, there was a problem with signals effectively ‘back powering’ (I’m not sure if this is the correct term, but it works for me), the SmartParallel board. That is, even though the SmartParallel board wasn’t officially powered, voltages were working their way back through the connections and powering it from the printer.
[EDIT 02/07/2019: Apparently, ‘back powering’ is the correct term. And it can be A Bad Thing. But the solution can be complex. Not sure I’m up to it at my level of knowledge.]
And I’d begun to suspect that the two issues were connected.
My immediate suspicions fell on the pullup resistors I’d placed on signals such as /STROBE and /INIT. Because these are active low, the Epson MX-80 F/T III pulls these lines high by default. So there’s around 4.9V on those lines which, therefore, are connecting via the pullup resistors to the 5V rail of the SmartParallel. That voltage, in turn, is powering other things connected to that power rail.
On the stripboard prototype, I powered the pullups via a diode, to prevent this sneaking powering of the board. But that didn’t help. Oh-oh.
I started measuring voltages around the stripboard prototype – with the printer on and off, with various ICs plugged in or removed, with various signal lines connected or disconnected. But the combinations grew exponentially, the voltages seemed to change every time I measured them and, in the end, my head just went wobbly.
So I figured it was time to simplify things. Back to the breadboard…
I had a hunch the 74HC541 buffer IC was the culprit. So I plugged it into a breadboard, connected the various signals lines, but didn’t supply any power to the breadboard. When I switched on the printer, I measured 4.3V at the VCC pin of the chip. Sure enough, power from the printer’s signal lines can back-feed right through the chip.
Removing some of the signal lines actually boosted this to 4.9V at times.
However, the voltage on the /INIT line was 2.6V. This is in what I like to call the indecisive region. Avoiding this kind of ambiguous floating voltage – is it high or is it low? – is precisely why we use pullups in the first place.
The question is, what to do about it? Powering the IC via a diode would stop it back-powering the entire board, at the expense of the buffered signals dropping to around 4.2V (probably good enough). But to prevent the /INIT line from floating, I’d need to ensure that it is pulled up not to the board’s main 5V supply but to the VCC pin, so that it could benefit from the back-powering when the SmartParallel is unpowered. Would that work, or does it sound dodgy?
The thing is, the Epson also pulls the eight data lines high by default and I found similar back-powering on the 74HC585 shift register.
Maybe I simply don’t worry about these problems and accept that you don’t switch on the printer without powering the board first.
Answers on a postcard please…