Developing highly-integrated thermal printer-based applications -

Developing highly-integrated thermal printer-based applications

Whenever a money transaction is completed, there is always the need for a printer-based system for printing receipts of transactions, be it a sales terminal, ticket dispenser, weighing scale, gas station, or ATM. Almost all of these systems use thermal printers. The reason thermal printers are more common as compared to other printer technologies is because of their reliability and lower maintenance costs given they are inkless printers. These printers work by selectively heating regions of heat-sensitive paper that is infused with a chemical that changes color when it comes in contact with the heated print head.

Thermal printers, however, are much more than just a printing unit. They have many other components, including a key matrix to enter data, some communication protocols to communicate with the host, an LCD to display data, an ADC for measuring voltage, and so on. This article talks about the basics of designing a thermal printer based system.

Before we jump into the complete system, let us quickly go through what comprises a thermal printer unit. Figure 1 below shows the block diagram of a thermal printer module, though there can be variations based upon the manufacturer and model of module.


Figure 1: Thermal Printer module

Thermal head: The primary block of a thermal printer unit is the thermal head. It consists of a number of heating elements (dots). Figure 2 shows the diagram of the thermal head with its associated signals.


Figure 2: Thermal Head

The number of elements varies from model to model. The distance between one heating element (dot) and another, called pitch, determines the printing quality and font size which can be achieved. Each heating element is controlled by a register bit. The thermal head has two registers called the latch register and shift register.

The size of these registers is equal to the number of dots. In these registers, ‘1’ corresponds to the pixel needing to be printed and ‘0’ otherwise. These values are shifted into shift registers by the host. Each shift takes one clock cycle. Then a latch signal is applied to latch the shifted data into the latch register which in turn controls each dot.

Now the strobe signal comes into the picture. Dots are divided into a number of groups (defined by manufacturer) and each group has one strobe signal associated with it. To heat the elements which have a value ‘1’ in their corresponding latch register cell in that group, the strobe should be asserted.

Care should be taken while selecting the strobe signal’s duration. The longer the duration of the strobe signal, the darker the printing. However, if the strobe is asserted for too long, it may burn the paper and heating element. Also, it will increase the thermal head’s temperature, resulting in slower printing. The reasons for how temperature affects printing speed are explained later in this article.

Temperature Sensor:   For the best printing quality, the temperature of the head should operate within a specified range. Also, to avoid permanent damage of the head, the temperature should not go outside the absolute maximum rating. So, if the temperature goes outside the reliable operating range, printing should be halted, which requires the need for a temperature sensor to be integrated in thermal printer module to measure head temperature.

Note that there are thermal printer modules available which do not have an integrated temperature sensor for temperature measurement in order to keep cost down. While this does affect the reliability of the system, there are ways to reduce the probability of damaging the head due to overheating, discussed later in this article.

Stepper motor: Another integral part of this module is a stepper motor.  The speed of the motor is a function of the operating voltage, and so the maximum speed is defined by the operating voltage of the motor. Commonly drive current for the motor is on the order of 1A so an H-bridge circuit is needed to drive the motors. There are numerous options available in the market for the H-Bridge ICs and one can be selected based upon local availability and pricing.

Selecting a device with internal freewheeling diodes reduces the BOM and board space. For stepper motor control, current sense output of the H-bridge is not needed as the speed is directly controlled by the control signals. However, if higher reliability is needed, current sense output can be used to check is there is excessive current flowing through the winding and any required action can be taken.

There should be bulk capacitors connected on the thermal head and motor supply pin as they consume very high current on switching. Also, decoupling capacitors should be connected in parallel to bypass noise. Paper sensor: A paper sensor circuit is needed to check if paper is there between the roller and thermal head. Figure 3 below shows a typical paper sensor circuit.

Figure 3: Paper sensor circuit

A reflective photosensor is used for detecting paper and is an integral part of the thermal head unit. However, R1, R2, and C1 need to be connected externally. In this circuit, R2 is the current limiting resistance for LED, R1 is the emitter resistance, and C1 is the bypass capacitor. 

The output of this circuit may not be as per the Vih and Vil of the controller. Therefore, the output of this circuit should go to the comparator. Printing must be started after making sure that paper is available by checking the comparator output. Now let’s look into the block diagram of a basic thermal printer controller system, shown in Figure 4 below ..


Figure 4: Basic building block of thermal printer module control system

The first thing needs to be done in the system is to send the bit stream to thermal head via a shift register. Since most controllers do not have a hardware shift register, this requires the CPU to do this job in firmware. Once all the bits are sent, the latch signal is asserted. This is the time to check if paper is available.

Then ADC is used to measure the voltage across the thermistor circuit. The temperature sensing circuit does not need to be very much accurate as the major requirement is to make sure that printing is being done within the specified temperature range. So, it does not need a current or voltage DAC for temperature sensing circuit excitation.

The supply voltage can be used to excite the temperature sensing circuitry provided we have a stable power supply. If such supply is not available, then a DAC can be used. Instead of an ADC, a window comparator can be used to detect whether the temperature of the head is within the valid range or not.

The upper and lower reference of the comparator has to be selected according to the temperature range. However, if an ADC is used, printing speed can be made adaptive to the instantaneous temperature to make sure that system is never driven in red zone.

One of the major points to be looked at in such system is the power supply. The instantaneous current needing to be supplied is proportional to the number of elements being energized. Designing a power supply which has to supply high current is costly.

One solution is not to apply all the strobe signals at the same time. One may apply the first half (or any number based upon how many groups strobes need to be divided). A better approach is to alternate strobe signals in the same group because there will be more area for each strobe segment to dissipate the power.

When the same element is being energized continuously, its temperature will increase. This may result in a need to halt printing due to high head temperature. When it comes to the speed of printing, it will not be effective method to wait for long enough before the strobe is applied again, so that thermal head can cool down. However, there are multiple ways to handle this.

One is to write an algorithm which checks and makes sure that the same element is not energized more than a particular number of times consecutively. If one has, the head can move to next the row not printing that pixel and then can come back to that row again. This will help in increasing header life but will require a lot of firmware overhead. However, in systems where a temperature sensor is not used, this practice will ensure maximum reliability of the system though there is no temperature feedback.

As these systems have both analog subsystems and high-speed communication lines/clock/data signals to the thermal head, care must be taken during board layout that analog and digital ground are kept separate. All the current carrying traces back to the source must be as short as possible to reduce the current loop as this helps in reducing electromagnetic emissions. Also, whenever a high frequency digital signal is routed, it should be guarded with the ground traces.

Now let us look at the complete picture of a thermal printer based system. If we consider a ticket dispenser system, its block diagram will be similar to as shown in Figure 5 below ..


Figure 5: Block diagram of the ticket dispenser system

In this diagram, apart from the thermal printer unit control, two of the most important blocks – keyboard and LCD, make up the user interface. Today, mechanical switches can be considered ancient as every user prefers a capacitive sensing interface due to higher reliability and their streamlined look.

From the designer’s perspective, the use of capacitive sensing buttons drives down system cost as the sensors are nothing but traces on the PCB. A graphic or segment LCD can be used as an output interface based upon the system requirement and cost constraints.

Of course one can have discrete modules which can do the job of printing, LCD driver, keypad interface, analog input measurement etc. Looking at the need for higher integration and system cost concerns, rather than designing a system with discrete components and an independent MCU for each function, developers can utilize SoC-based devices that can perform many of such tasks and consolidate a design to optimize, power, cost, and space.

Figure 6 below shows one of the possible implementation of this system using PSoC3/5. In this implementation, a SPI master is used to generate the clock and data for the printer in place of shift register. The reason is that SPI natively uses a shift register and it has both clock and data output.

Figure 6: SoC-based implementation of ticket dispenser ( To see enlarged image click here.)

High-end SoCs are capable of handling almost all of these tasks in a single chip. These SoCs have on-chip ADCs, DACs, comparators, PGA, hardware shift register, LCD controllers, etc. DMA is one of the most important features in advanced SoCs. They offload CPU to do other tasks related to data manipulation; for example, some mathematic calculations, execution of an algorithm to selectively control the thermal element excitation, communicating with other host processors in the system, etc. DMA can also be used to write data to the shift register to be sent to the thermal head.

An implementation using DMA and hardware shift register/SPI, avoids having to impose overhead on the CPU to generate the bit stream as is required for a conventional microcontroller-based implementation. For  motor control and generation of control signals, the CPU should run at a reasonably high frequency as compared to when most of these tasks are being handled in hardware.

Due to higher CPU operating frequency requirements in such implementation, dynamic power consumption is very high. Also, in a discrete based solution, it is hard to power down the peripherals which are not being used on the moment. However, in SoC-based architectures, every peripheral can be powered down individually.

For battery-operated devices, power consumption is a major consideration, so SoCs fit well. As SoC integrate almost all the system hardware required, they prove to be cost-effective as well. Though SoCs have enough hardware resources on chip, it may fall short of IO pins based upon the number of keys required and number of commons/segments needed to be driven for the segment LCD glass. Based upon the requirements, more than a single chip may be needed.

One of the most important aspects of any design in today’s competitive market is design reusability, dealing with changing product specifications, and time to market. No doubt, R&D cost is nothing but the expense in any product’s development cycle and everyone wants to cut it down as much as possible. Any design architecture needs to be easy to incorporate small changes in the product specification without major changes in hardware or firmware.

Let us take an example. A thermal printer based system can be used in a restaurant, in ATM machines, in a transport facility for dispensing tickets, or a departmental store. Few things are common in all of these systems and those are a thermal printer driver unit with all of the associated circuitry to accomplish the task of printing, input user interface, and output user interface.

What may change in each design are thermal printer’s specifications such as number of elements, number of strobe signals, maximum RPMs of motor, reliable printing temperature range, etc. The number of keys may change. The LCD glass needed to be driven may have different specifications in terms of number of segments and number of commons etc.

One system may need some mechanism for the blade, another may not.  SoCs also allow frequent and fast changes in design to assist in customizing existing designs into altogether different applications. In So- based system where most of the peripherals are programmable, it is easy to incorporate these changes without spending much design time. If the same system is developed around discrete components, it may be challenge to look for another part which can do the job every time the requirements change.

SoCs fit well to develop applications around thermal printer unit for today’s market meeting timing, cost, and power requirements. Also, they enable the designers to enter in different market segments with only minor changes in their existing design.

Sachin Gupta is a Senior Applications Engineer with Cypress Semiconductor. He loves working on different types of analog and digital circuits, as well as synthesizable codes. He can be reached at .

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.