I’m designing a project using a 3V3 MCU and want to interface to a 5V QR701 thermal printer that says it has a TTL interface. Distance will be no more than 12 inches (it’s the length of the attached cable, but I can shorten it if necessary).
It should be fine; you might not even need a level shifter if the printer accepts 3v3 TTL (it looks like some version of that model do/don’t, check your specific version)
Make sure to use a decent (2A or more) power supply
If the printer’s TX output is genuine TTL, the output voltage is significantly less than 5V.
TTL outputs are rather weak current sources when HIGH, with a series diode drop, and the output is typically below 4V.
So the connection to 3.3V inputs is probably OK, especially if you put a 1K resistor in series between TX output and RX input. Take a look at the conventional schematic diagram for a TTL NAND gate to see why (the output is primarily intended as a current sink when LOW).
I understand the TTL output is primarily intended as “sink” output, and would normally be connected using an external “pull-up” resistance, but your diagram shows that the output can also source a voltage when Q3 is turned off, presumably Q4 is turned on at this point.
That voltage (when the output is high) will depend on the voltage drops of Q4, and D1, plus the voltage drop across R4 at the current the driven input is taking.
There are many “typical” or “conventional” output stages published you can never be certain what the device you are using is has.
“So the connection to 3.3V inputs is probably OK,” … I dislike the term “probably”, and want to be sure that the interface will stand the test of time. The use of a level converter is my attempt to make things right.
Anyway, after analysing what I have researched, I’m almost certain (sic) that the 5V/3V3 level converters will work admirably in this instance, and provide maximum protection to my MCU inputs, whatever the printer decides to “send”.
I also question why the printer even has a Tx… What responses can a simple printer give that an Arduino "Serial.print(“xxxx”); statement can even respond to. Surely the “DTR” signal from the printer is more important, yet none of the examples of using this printer even uses it.
I will have spare Logic Level Conversion channels to use for Tx and Rx, so using them will be the best policy, and I am leaning towards ignoring the printer’s Tx, and monitoring the DTR signal instead, no point sending print commands to a printer that isn’t “Ready” to receive them…
I will be using a 3A buck converter to power the 9V “VH” required by the printer. I will also be adding a 4700uF capacitor to the 9V supply line to smooth out the peaks.
I tried the printer on a stable (bench-top power supply) at 5V (It is quoted as 5V-9V), but that was a complete no-no, not even driving any paper feed. At 6V it would print, but the print density was p1$$-poor…
Well, you can certainly be proactive, and use your multimeter to determine the actual output voltage and current sourced in a typical connection scenario. Or open the printer and determine what the output IC actually is.
Asking on a forum is very unlikely to produce a definitive answer for a random gizmo.
Sorry about that, it was in one of your later replies, here:
I also question why the printer even has a Tx… What responses can a simple printer give that an Arduino "Serial.print(“xxxx”); statement can even respond to. Surely the “DTR” signal from the printer is more important, yet none of the examples of using this printer even uses it.
I’d be surprised if a printer like that actually supported hardware handshaking/DTR. If there’s any flow control at all, it’s probably xon/xoff and which does require tx & rx. However, the strings to a printer are usually short ASCII and unlikely to hit up against its input memory limitation. But it might. In conclusion: try it and see.