The project (together with this description) can be downloaded as a single zip file.
Initially the project has been designed for EPP PC parallel
port, but later it has been altered to make it work over SPP.
The project consists of two parts: hardware (the circuit and firmware) and PC software
for preparing and sending data into a controller.
The following components are used: LTP3445 thermal printing head, Atmel AVR AT90S8515
microcontroller, MOSFET transistors IRF9540 or IRF7309 and glue logic. The circuit is
in zip archive, or here (110 K)
(a microcontroller part)
and here (180 K) (overheat protection and power management).
The basic characteristics:
Power requirements: +3,3 V 0,1 A; +5 V, 0,2 A; +8 V max 3,6 A (peak value, depends on printing speed and blackness of the image. Basically, it is possible to print even from battery source).
Printing speed: up to 50 mm
Resolution: 8 points / mm
The firmware for this thermoprinter was written on free-of-charge C.
In brief: a FIFO buffer approximately for two-three printed lines is organized in controller RAM.
The data are transferred through LPT (controller is interrupted for this operation).
Thermal head state (no paper, the mechanism is open, overheating, etc.) and number of bytes
in FIFO are sent to PC side. Duration of a heating pulse depends on the measured printing head
temperature to prevent image contrast changes. For a given head it is possible to
adjust heat pulse width table.
Some comments on installation and compiling the project (sorry, in Russian yet) can be found in a file howto.txt. It is convenient to compile the project from inside Visual C ++ 6 IDE or from command line (assume WinAVR C is installed in default location).
In July, 2004 I have put newer source codes It could be compiled under WinAVR 20040404.
PC program part was written in Borland C 3.1. The basic sequence is to generate a bitmap file
in the size (104*8) *n byte with
the raster image to be printed, and to send it into the
controller FIFO byte by byte over LPT parallel port. The program for monochrome *.bmp files printing can be found
here. It can be used as
a sample for own program or driver. It is easily debugged and everything should be clear.
A probably unclear item: it is necessary to send commands to printer, for example, change maximal printing speed, etc. (For the list of commands, see mail loop in thermo.c) They are sent in the same sequence as the printed data.
Probably, this program won't work with the latest firmware (from the moment of its creating something could change), but you can try and will see.
The project has been completed in a couple of months in the evenings.
As this project was paid it would be dishonest to distribute the release version. However, the firmware placed here is a fine working pre-release.
You can use and modify it freely as you leave a line about me in the beginning of source code. The Line can look like: "The developer of the original firmware version - D.Korobkov, email@example.com"