- Especificacions i connexions de la impressora
- Requisits previs
- Diagrama del circuit i explicació
- Explicació del codi
La impressora tèrmica es denomina sovint impressora de rebuts. S'utilitza àmpliament en restaurants, caixers automàtics, botigues i molts altres llocs on es requereixin rebuts o factures. És una solució rendible i molt útil d’utilitzar tant des del costat de l’usuari com des del desenvolupador. Una impressora tèrmica utilitza un procés d’impressió especial que utilitza paper termocromàtic o paper tèrmic per imprimir. El capçal de la impressora s’escalfa a una temperatura determinada que, quan el paper tèrmic passa del capçal d’impressió, el revestiment del paper es torna negre a les zones on s’escalfa el capçal de la impressora.
En aquest tutorial, connectarem una impressora tèrmica CSN A1 amb un microcontrolador PIC àmpliament utilitzat PIC16F877A. Aquí, en aquest projecte, es connecta una impressora tèrmica a través del PIC16F877A i s’utilitza un commutador tàctil per iniciar la impressió. També s’utilitza un LED de notificació per notificar l’estat de la impressió. Només brillarà quan estigui en marxa l'activitat d'impressió.
Especificacions i connexions de la impressora
Estem utilitzant la impressora tèrmica CSN A1 de Cashino, que està disponible fàcilment i el preu no és massa alt.

Si veiem les especificacions al seu lloc web oficial, veurem una taula que proporciona les especificacions detallades.

A la part posterior de la impressora, veurem la connexió següent:

El connector TTL proporciona la connexió Rx Tx per comunicar-se amb la unitat de microcontrolador. També podem utilitzar el protocol RS232 per comunicar-nos amb la impressora. El connector d'alimentació serveix per alimentar la impressora i el botó s'utilitza per provar la impressora. Quan s’està alimentant la impressora, si premem el botó d’autotest, la impressora imprimirà un full on s’imprimiran les especificacions i les línies de mostra. Aquí teniu el full d’autotest

Com podem veure, la impressora utilitza una velocitat de transmissió de 9600 bauds per comunicar-se amb la unitat de microcontrolador. La impressora pot imprimir caràcters ASCII. La comunicació és molt fàcil, podem imprimir qualsevol cosa simplement utilitzant UART, transmetent una cadena o un caràcter.
La impressora necessita una font d’alimentació de 5V 2A per escalfar el capçal de la impressora. Aquest és l’inconvenient de la impressora tèrmica, ja que requereix un gran corrent de càrrega durant el procés d’impressió.
Requisits previs
Per fer el següent projecte, necessitem les coses següents: -
- Taula de pa
- Connecteu els cables
- PIC16F877A
- Condensador de disc ceràmic de 2 peces de 33pF
- Resistència 680R
- Qualsevol color led
- Interruptor tàctil
- 2pcs resistències de 4,7 k
- Impressora tèrmica CSN A1 amb rotlle de paper
- Unitat d'alimentació nominal de 5V 2A.
Diagrama del circuit i explicació
A continuació es mostra l’esquema per controlar la impressora amb microcontrolador PIC:

Aquí estem utilitzant PIC16F877A com a unitat de microcontrolador. S'utilitza una resistència de 4,7 k per connectar el pin MCLR a la font d'alimentació de 5 V. També hem connectat un oscil·lador extern de 20 MHz amb condensadors de 33pF per al senyal de rellotge. Es connecta un LED de notificació a través del port RB2 amb una resistència limitadora de corrent LED 680R. El commutador tàctil es connecta a través del pin RB0 quan es prem el botó, proporcionarà Logic High en cas contrari, el pin rebrà Logic low per la resistència de 4,7 k.
La impressora CSN A1 es connecta mitjançant la configuració creuada; el pin de transmissió del microcontrolador està connectat amb el pin de recepció de la impressora. La impressora també es va connectar amb el subministrament de 5 V i GND.
Vam construir el circuit en una taula de proves i el vam provar.


Explicació del codi
El codi és bastant senzill d’entendre. Al final de l'article es dóna un codi complet per a la interfície de la impressora tèrmica amb PIC16F877A. Com sempre, primer hem d’establir els bits de configuració al microcontrolador PIC.
// bit de configuració Configuració PIC16F877A // declaracions de configuració de línia font 'C' // CONFIG #pragma config bits d'Fosc = SA // Selecció oscil·lador (SA oscil·lador) #pragma config WDTE = OFF // temporitzador de vigilància Activa bit (WDT desactivat) # pragma config PWRTE = OFF // Bit d’activació del temporitzador d’encesa (PWRT desactivat) #pragma config BOREN = ON // Brownable out Reset Enable bit (BOR enabled) #pragma config LVP = OFF // Low Voltage (Single-Supply)) Bit d’activació de la programació en sèrie en circuit (el pin RB3 / PGM té una funció PGM; la programació de baixa tensió està activada) #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) #pragma config WRT = OFF // Memòria del programa Flash Permet escriure bits (Protecció contra escriptura desactivada; tota la memòria del programa pot ser escrita pel control EECON) #pragma config CP = OFF // Bit de protecció del codi de memòria del programa Flash (protecció del codi desactivada)
Després, vam definir macros relacionades amb el maquinari del sistema i vam utilitzar el fitxer de capçalera eusart1.h per al control de maquinari relacionat amb eusart. La UART està configurada a una velocitat de 9600 baud dins del fitxer de capçalera.
#incloure
A la funció principal , primer vam comprovar el botó "prémer" i també vam utilitzar tàctiques de commutació per eliminar els errors del commutador. Hem creat una sentència if per a la condició de "botó premut". Primer el led brillarà i el UART imprimirà les cordes. Es poden generar línies personalitzades dins de la sentència if i es poden imprimir com una cadena.
void main (void) { system_init (); mentre (1) { if (printer_sw == 1) {// es prem el commutador __delay_ms (50); // retard de rebutge si (printer_sw == 1) {// es manté premut el commutador notification_led = 1; put_string ("Hola! \ n \ r"); // Imprimeix a la impressora tèrmica __delay_ms (50); put_string ("Tutorial de la impressora tèrmica. \ n \ r"); __delay_ms (50); put_string ("Circuit Digest. \ n \ r"); __delay_ms (50); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("---------------------------- \ n \ r"); put_string ("Gràcies"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); notification_led = 0; } } } }
A continuació es mostra el codi complet i el vídeo de treball.
