- Spécifications et connexions de l'imprimante
- Conditions préalables
- Schéma de circuit et explication
- Explication du code
L'imprimante thermique est souvent appelée imprimante de reçus. Il est largement utilisé dans les restaurants, les guichets automatiques, les magasins et de nombreux autres endroits où des reçus ou des factures sont requis. C'est une solution économique et très pratique à utiliser tant du côté de l'utilisateur que du côté du développeur. Une imprimante thermique utilise un processus d'impression spécial qui utilise du papier thermochromique ou du papier thermique pour l'impression. La tête d'impression est chauffée à une certaine température que lorsque le papier thermique passe de la tête d'impression, le revêtement de papier devient noir dans les zones où la tête d'impression est chauffée.
Dans ce tutoriel, nous allons interfacer une imprimante thermique CSN A1 avec le microcontrôleur PIC PIC16F877A largement utilisé. Ici, dans ce projet, une imprimante thermique est connectée à travers PIC16F877A et un interrupteur tactile est utilisé pour démarrer l'impression. Une LED de notification est également utilisée pour notifier l'état de l'impression. Il ne brille que lorsque l'activité d'impression est en cours.
Spécifications et connexions de l'imprimante
Nous utilisons l' imprimante thermique CSN A1 de Cashino, qui est disponible facilement et le prix n'est pas trop élevé.
Si nous voyons la spécification sur son site officiel, nous verrons un tableau qui fournit les spécifications détaillées-
À l'arrière de l'imprimante, nous verrons la connexion suivante:
Le connecteur TTL fournit la connexion Rx Tx pour communiquer avec le microcontrôleur. Nous pouvons également utiliser le protocole RS232 pour communiquer avec l'imprimante. Le connecteur d'alimentation sert à alimenter l'imprimante et le bouton est utilisé à des fins de test de l'imprimante. Lorsque l'imprimante est sous tension, si nous appuyons sur le bouton d'auto-test, l'imprimante imprimera une feuille sur laquelle les spécifications et les exemples de lignes seront imprimés. Voici la feuille d'auto-test-
Comme nous pouvons le voir, l'imprimante utilise un débit de 9600 bauds pour communiquer avec l'unité de microcontrôleur. L'imprimante peut imprimer des caractères ASCII. La communication est très simple, nous pouvons tout imprimer en utilisant simplement UART, en transmettant une chaîne ou un caractère.
L'imprimante a besoin d'une alimentation 5V 2A pour chauffer la tête d'impression. C'est l'inconvénient de l'imprimante thermique car elle prend un courant de charge énorme pendant le processus d'impression.
Conditions préalables
Pour réaliser le projet suivant, nous avons besoin des éléments suivants: -
- Planche à pain
- Brancher les fils
- PIC16F877A
- Condensateur à disque en céramique 2pcs 33pF
- Résistance 680R
- Toute couleur led
- Interrupteur tactile
- Résistances 2pcs 4.7k
- Imprimante thermique CSN A1 avec rouleau de papier
- Bloc d'alimentation de 5V 2A.
Schéma de circuit et explication
Le schéma de contrôle de l'imprimante avec le microcontrôleur PIC est donné ci-dessous:
Ici, nous utilisons PIC16F877A comme unité de microcontrôleur. Une résistance de 4,7k est utilisée pour connecter la broche MCLR à l'alimentation 5V. Nous avons également connecté un oscillateur externe de 20 MHz avec des condensateurs 33pF pour le signal d'horloge. Une LED de notification est connectée sur le port RB2 avec une résistance de limitation de courant LED 680R. L' interrupteur tactile est connecté à travers la broche RB0 lorsque le bouton est enfoncé, il fournira Logic High, sinon la broche recevra Logic low par la résistance 4,7k.
L'imprimante CSN A1 est connectée en utilisant la configuration croisée, la broche de transmission du microcontrôleur est connectée à la broche de réception de l'imprimante. L'imprimante est également connectée à l'alimentation 5V et GND.
Nous avons construit le circuit dans une maquette et l' avons testé.
Explication du code
Le code est assez simple à comprendre. Le code complet d'interfaçage de l'imprimante thermique avec PIC16F877A est donné en fin d'article. Comme toujours, nous devons d'abord définir les bits de configuration dans le microcontrôleur PIC.
// Paramètres du bit de configuration PIC16F877A // Instructions de configuration de la ligne source 'C' // CONFIG #pragma config FOSC = HS // Bits de sélection de l'oscillateur (oscillateur HS) #pragma config WDTE = OFF // Bit d'activation de l'horloge de surveillance (WDT désactivé) # pragma config PWRTE = OFF // Bit d'activation de la minuterie de mise sous tension (PWRT désactivé) #pragma config BOREN = ON // Bit d'activation de la réinitialisation de Brown-out (BOR activé) #pragma config LVP = OFF // Basse tension (alimentation simple) Bit d'activation de la programmation série en circuit (la broche RB3 / PGM a une fonction PGM; programmation basse tension activée) #pragma config CPD = OFF // Bit de protection du code mémoire EEPROM des données (protection du code EEPROM des données désactivée) #pragma config WRT = OFF // Bits d'activation d'écriture de la mémoire de programme flash (protection en écriture désactivée; toute la mémoire de programme peut être écrite par la commande EECON) #pragma config CP = OFF // Bit de protection de code de mémoire de programme flash (protection de code désactivée)
Après cela, nous avons défini des macros liées au matériel système et utilisé le fichier d'en-tête eusart1.h pour le contrôle matériel lié à eusart. L'UART est configuré à un débit de 9600 bauds dans le fichier d'en-tête.
#comprendre
Dans la fonction principale , nous avons d'abord vérifié la `` pression sur le bouton '' et avons également utilisé des tactiques anti-rebond pour éliminer les problèmes de commutation. Nous avons créé une instruction if pour la condition «bouton enfoncé». Tout d'abord, la LED s'allumera et l'UART imprimera les chaînes. Des lignes personnalisées peuvent être générées à l'intérieur de l'instruction if et peuvent être imprimées sous forme de chaîne.
void main (void) { system_init (); while (1) { if (printer_sw == 1) {// commutateur est enfoncé __delay_ms (50); // délai anti-rebond if (printer_sw == 1) {// commutateur est toujours enfoncé notification_led = 1; put_string ("Bonjour! \ n \ r"); // Imprimer sur une imprimante thermique __delay_ms (50); put_string ("Tutoriel d'imprimante thermique. \ n \ r"); __delay_ms (50); put_string ("Résumé du circuit. \ n \ r"); __delay_ms (50); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("---------------------------- \ n \ r"); put_string ("Merci"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); notification_led = 0; } } } }
Le code complet et la vidéo de travail sont donnés ci-dessous.