- Specifiche e collegamenti della stampante
- Prerequisiti
- Schema del circuito e spiegazione
- Spiegazione del codice
La stampante termica viene spesso definita stampante per ricevute. È ampiamente utilizzato in ristoranti, bancomat, negozi e molti altri luoghi in cui sono richieste ricevute o fatture. È una soluzione economica e molto pratica da usare sia dal lato dell'utente che dal lato dello sviluppatore. Una stampante termica utilizza uno speciale processo di stampa che utilizza carta termocromica o carta termica per la stampa. La testina della stampante viene riscaldata a una certa temperatura che quando la carta termica passa dalla testina di stampa, il rivestimento della carta diventa nero nelle aree in cui la testina della stampante è riscaldata.
In questo tutorial, interfacciamo una stampante termica CSN A1 con il microcontrollore PIC PIC16F877A ampiamente utilizzato. Qui in questo progetto, una stampante termica è collegata attraverso PIC16F877A e un interruttore tattile viene utilizzato per avviare la stampa. Un LED di notifica viene utilizzato anche per notificare lo stato della stampa. Si illuminerà solo quando l'attività di stampa è in corso.
Specifiche e collegamenti della stampante
Stiamo utilizzando la stampante termica CSN A1 di Cashino, che è facilmente disponibile e il prezzo non è troppo alto.
Se vediamo le specifiche sul suo sito ufficiale, vedremo una tabella che fornisce le specifiche dettagliate-
Sul lato posteriore della stampante, vedremo la seguente connessione:
Il connettore TTL fornisce la connessione Rx Tx per comunicare con l'unità microcontrollore. Possiamo anche utilizzare il protocollo RS232 per comunicare con la stampante. Il connettore di alimentazione serve per alimentare la stampante e il pulsante viene utilizzato a scopo di test della stampante. Quando la stampante viene alimentata, se premiamo il pulsante di autotest la stampante stamperà un foglio in cui verranno stampate le specifiche e le linee campione. Ecco il foglio di autotest-
Come possiamo vedere, la stampante utilizza una velocità di trasmissione di 9600 baud per comunicare con l'unità microcontrollore. La stampante può stampare caratteri ASCII. La comunicazione è molto semplice, possiamo stampare qualsiasi cosa semplicemente usando UART, trasmettendo stringa o carattere.
La stampante necessita di un'alimentazione 5V 2A per riscaldare la testina della stampante. Questo è lo svantaggio della stampante termica in quanto richiede un'enorme corrente di carico durante il processo di stampa.
Prerequisiti
Per realizzare il seguente progetto, abbiamo bisogno delle seguenti cose: -
- Breadboard
- Collegare i cavi
- PIC16F877A
- Condensatore a disco ceramico da 2 pezzi 33pF
- Resistenza 680R
- Led di qualsiasi colore
- Interruttore tattile
- 2 resistori 4.7k
- Stampante termica CSN A1 con rotolo di carta
- Alimentatore da 5V 2A.
Schema del circuito e spiegazione
Di seguito è riportato lo schema per il controllo della stampante con il microcontrollore PIC:
Qui stiamo usando PIC16F877A come unità microcontrollore. Un resistore da 4,7 k viene utilizzato per collegare il pin MCLR all'alimentazione a 5 V. Abbiamo anche collegato un oscillatore esterno da 20 MHz con condensatori da 33pF per il segnale di clock. Un LED di notifica è collegato alla porta RB2 con un resistore limitatore di corrente a LED 680R. L' interruttore tattile è collegato attraverso il pin RB0 quando il pulsante viene premuto fornirà Logic High altrimenti il pin riceverà Logic low dal resistore 4.7k.
La stampante CSN A1 è collegata utilizzando la configurazione incrociata, il pin di trasmissione del microcontrollore è collegato al pin di ricezione della stampante. La stampante è collegata anche con l'alimentazione 5V e GND.
Abbiamo costruito il circuito in una breadboard e lo abbiamo testato.
Spiegazione del codice
Il codice è abbastanza semplice da capire. Il codice completo per l'interfacciamento della stampante termica con PIC16F877A è riportato a fine articolo. Come sempre, dobbiamo prima impostare i bit di configurazione nel microcontrollore PIC.
// PIC16F877A Impostazioni dei bit di configurazione // Istruzioni di configurazione della riga sorgente 'C' // CONFIG #pragma config FOSC = HS // Bit di selezione dell'oscillatore (oscillatore HS) #pragma config WDTE = OFF // Bit di abilitazione timer watchdog (WDT disabilitato) # pragma config PWRTE = OFF // Bit di abilitazione timer di accensione (PWRT disabilitato) #pragma config BOREN = ON // Bit di abilitazione ripristino brown-out (BOR abilitato) #pragma config LVP = OFF // Bassa tensione (alimentazione singola) Bit di abilitazione della programmazione seriale in-circuit (il pin RB3 / PGM ha la funzione PGM; programmazione a bassa tensione abilitata) #pragma config CPD = OFF // Bit di protezione del codice della memoria EEPROM dei dati (protezione del codice EEPROM dei dati disattivata) #pragma config WRT = OFF // Bit di abilitazione scrittura memoria programma flash (protezione da scrittura disattivata; tutta la memoria del programma può essere scritta dal controllo EECON) #pragma config CP = OFF // Bit di protezione codice memoria flash programma (protezione codice disattivata)
Successivamente, abbiamo definito le macro relative all'hardware di sistema e utilizzato il file di intestazione eusart1.h per il controllo hardware relativo a eusart. L'UART è configurato a 9600 Baud rate all'interno del file di intestazione.
#includere
Nella funzione principale , abbiamo prima controllato la "pressione del pulsante" e utilizzato anche le tattiche di antirimbalzo degli interruttori per eliminare i difetti degli interruttori. Abbiamo creato un'istruzione if per la condizione "pulsante premuto". Prima il led si illuminerà e l'UART stamperà le stringhe. Le righe personalizzate possono essere generate all'interno dell'istruzione if e possono essere stampate come una stringa.
void main (void) { system_init (); while (1) { if (printer_sw == 1) {// switch è premuto __delay_ms (50); // ritardo antirimbalzo if (printer_sw == 1) {// switch è ancora premuto notification_led = 1; put_string ("Hello! \ n \ r"); // Stampa su stampante termica __delay_ms (50); put_string ("Tutorial stampante termica. \ 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 ("Grazie"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); notifica_led = 0; } } } }
Di seguito vengono forniti il codice completo e il video funzionante.