Printer from calculator, part 1

In a pile of e-waste I found a printing calculator, Citizen CX-123II. It is a regular calculator (with some wicky calculations), but with a printer- all output from the screen are hard-copied to paper roll. It can print only numbers and some special symbols. But it has two colors- red and white.

Citizen printing calculator Citizen CX-123II
The printer inside (printer module or body) is made by Espon, M-71T. But I didn’t find any documentation about this device. The only way to play with it is reverse engineering. There are only a few lines connecting the printer to the mainboard, so I hooked my logic analyzer and watched what was happening when printing.

logic analyzer output for Epson M-71 printer
The hardware inside the calculator (regarding printer) is very simple – two transistors and 3 lines directly going to MCU. Printing is “very intensive” job for a calculator’s MCU- even LCD images are switched off during printing. Mainly because the printer is asynchronous and MCU must wait for specific data on those 3 lines. Meanwhile output lines are very simple- just motor (PWM) power and single pulse for print. Depending on print pulse timing, different symbols are printed. And more, depending on the time used to hold the print command, new line and maybe color is selected. (I didn’t manage to decode how color is changed and how the first [leftmost] character is printed).

Epson printer to MCU
There are some tricks in this mechanical device, like it is impossible to print two nearby symbols on a rubber stamp (“1234..”) because mechanics are too slow, but there is no problem printing alternative patterns (“1357..”). So, when printing some numbers, the printer is printing slower and some numbers are printed at a remarkable speed.
The Printer is about a 5V device (~4V for motor, 5V for clutch), meanwhile the STM32F103 device I used is a 3V device. But using two mosfets from computer mainboards made good interface and level shifting. Input data from the rotor position encoder is used with MCU pullup- automagic 3V interface. This encoder is a mechanical switching device, there is very bouncy data from it. In my software, I used quite complicated debouncing software tricks. But all software stuff is in the next article.

About Administrator

I am owner of this site.
This entry was posted in MCU and tagged . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>