- Especificação e conexões da impressora
- Pré-requisitos
- Diagrama de Circuito e Explicação
- Explicação do código
A impressora térmica geralmente é chamada de impressora de recibos. É amplamente utilizado em restaurantes, caixas eletrônicos, lojas e muitos outros locais onde são necessários recibos ou contas. É uma solução econômica e muito prática de usar tanto pelo lado do usuário quanto pelo lado do desenvolvedor. Uma impressora térmica usa um processo de impressão especial que usa papel termocrômico ou papel térmico para impressão. A cabeça de impressão é aquecida a uma determinada temperatura que, quando o papel térmico sai da cabeça de impressão, o revestimento do papel fica preto nas áreas onde a cabeça de impressão é aquecida.
Neste tutorial, faremos a interface de uma impressora térmica CSN A1 com o microcontrolador PIC amplamente usado PIC16F877A. Aqui neste projeto, uma impressora térmica é conectada ao PIC16F877A e um interruptor tátil é usado para iniciar a impressão. Um LED de notificação também é usado para notificar o status da impressão. Ele brilhará apenas quando a atividade de impressão estiver em andamento.
Especificação e conexões da impressora
Estamos usando a Impressora Térmica CSN A1 da Cashino, que está facilmente disponível e o preço não é muito alto.
Se virmos a especificação em seu site oficial, veremos uma tabela que fornece as especificações detalhadas-
Na parte traseira da impressora, veremos a seguinte conexão -
O conector TTL fornece a conexão Rx Tx para se comunicar com a unidade do microcontrolador. Também podemos usar o protocolo RS232 para nos comunicarmos com a impressora. O conector de alimentação é para alimentar a impressora e o botão é usado para fins de teste da impressora. Quando a impressora está sendo ligada, se pressionarmos o botão de autoteste, a impressora imprimirá uma folha onde as especificações e as linhas de amostra serão impressas. Aqui está a folha de autoteste
Como podemos ver, a impressora usa uma taxa de transmissão de 9600 para se comunicar com a unidade de microcontrolador. A impressora pode imprimir caracteres ASCII. A comunicação é muito fácil, podemos imprimir qualquer coisa simplesmente usando UART, transmitindo string ou caractere.
A impressora precisa de uma fonte de alimentação 5 V 2 A para aquecer a cabeça da impressora. Esta é a desvantagem da impressora térmica, pois ela consome muita corrente de carga durante o processo de impressão.
Pré-requisitos
Para fazer o seguinte projeto, precisamos das seguintes coisas: -
- Tábua de pão
- Fios de conexão
- PIC16F877A
- Capacitor de disco de cerâmica 2pcs 33pF
- Resistor 680R
- Qualquer cor led
- Interruptor tátil
- Resistores 2pcs 4,7k
- Impressora térmica CSN A1 com rolo de papel
- Unidade de fonte de alimentação com classificação 5V 2A.
Diagrama de Circuito e Explicação
O esquema para controlar a impressora com microcontrolador PIC é fornecido abaixo:
Aqui, estamos usando PIC16F877A como unidade de microcontrolador. Um resistor de 4,7k é usado para conectar o pino MCLR à fonte de alimentação de 5V. Também conectamos um oscilador externo de 20 MHz com capacitores 33pF para o sinal do clock. Um LED de notificação é conectado na porta RB2 com o resistor limitador de corrente LED 680R. O interruptor tátil é conectado ao pino RB0 quando o botão é pressionado, ele fornecerá Logic High, caso contrário, o pino receberá Logic low pelo resistor de 4,7k.
A impressora CSN A1 é conectada usando a configuração cruzada, o pino de transmissão do microcontrolador é conectado ao pino de recepção da impressora. A impressora também conectada com alimentação 5V e GND.
Construímos o circuito em uma placa de ensaio e o testamos.
Explicação do código
O código é muito simples de entender. O código completo para interface da impressora térmica com PIC16F877A é fornecido no final do artigo. Como sempre, primeiro precisamos definir os bits de configuração no microcontrolador PIC.
// Configurações de bits de configuração PIC16F877A // instruções de configuração da linha de origem 'C' // CONFIG #pragma config FOSC = HS // Bits de seleção do oscilador (oscilador HS) #pragma config WDTE = OFF // Bit de habilitação do temporizador de watchdog (WDT desativado) # pragma config PWRTE = OFF // Bit de habilitação do temporizador de inicialização (PWRT desabilitado) #pragma config BOREN = ON // Bit de habilitação de redefinição de Brown-out (BOR habilitado) #pragma config LVP = OFF // Low-Voltage (Single-Supply) Bit de habilitação de programação serial em circuito (o pino RB3 / PGM tem função PGM; programação de baixa tensão habilitada) #pragma config CPD = OFF // Bit de proteção de código de memória EEPROM de dados (proteção de código EEPROM de dados desativada) #pragma config WRT = OFF // Bits de habilitação de gravação de memória de programa Flash (proteção contra gravação desligada; toda a memória de programa pode ser gravada pelo controle EECON) #pragma config CP = OFF // Bit de proteção de código de memória de programa Flash (proteção de código desligada)
Depois disso, definimos macros relacionadas ao hardware do sistema e usamos o arquivo de cabeçalho eusart1.h para o controle de hardware relacionado ao eusart. O UART é configurado a uma taxa de 9600 Bauds dentro do arquivo de cabeçalho.
#incluir
Na função principal , primeiro verificamos o 'pressionamento de botão' e também usamos as táticas de debounce switch para eliminar as falhas de switch. Criamos uma instrução if para a condição de 'botão pressionado'. Primeiro, o led acenderá e o UART imprimirá as strings. Linhas personalizadas podem ser geradas dentro da instrução if e podem ser impressas como uma string.
void main (void) { system_init (); while (1) { if (printer_sw == 1) {// interruptor pressionado __delay_ms (50); // atraso de debounce if (printer_sw == 1) {// switch ainda está pressionado notification_led = 1; put_string ("Olá! \ n \ r"); // Imprimir em impressora térmica __delay_ms (50); put_string ("Tutorial da impressora térmica. \ n \ r"); __delay_ms (50); put_string ("Circuito Digest. \ n \ r"); __delay_ms (50); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("---------------------------- \ n \ r"); put_string ("Obrigado"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); notificação_led = 0; } } } }
O código completo e o vídeo de trabalho são fornecidos abaixo.