Drukarka termiczna jest często nazywana drukarką pokwitowań. Jest szeroko stosowany w restauracjach, bankomatach, sklepach i wielu innych miejscach, w których wymagane są paragony lub rachunki. Jest to ekonomiczne rozwiązanie i bardzo poręczne w obsłudze zarówno od strony użytkownika, jak i dewelopera. Drukarka termiczna wykorzystuje specjalny proces drukowania, który wykorzystuje do drukowania papier termochromowy lub papier termiczny. Głowica drukarki jest podgrzewana do określonej temperatury, która po przejściu papieru termicznego z głowicy drukującej powoduje czernienie powłoki papierowej w obszarach, w których głowica drukarki jest podgrzewana.
W tym samouczku połączymy drukarkę termiczną CSN A1 z szeroko stosowanym mikrokontrolerem PIC PIC16F877A. Tutaj, w tym projekcie, drukarka termiczna jest podłączona do PIC16F877A, a przełącznik dotykowy jest używany do rozpoczęcia drukowania. Dioda LED powiadamiająca jest również używana do powiadamiania o stanie drukowania. Będzie świecić tylko wtedy, gdy trwa czynność drukarska.
Specyfikacja drukarki i połączenia
Używamy drukarki termicznej CSN A1 firmy Cashino, która jest łatwo dostępna, a cena nie jest zbyt wysoka.
Jeśli zobaczymy specyfikację na jego oficjalnej stronie internetowej, zobaczymy tabelę, która zawiera szczegółowe specyfikacje-
Z tyłu drukarki zobaczymy następujące połączenie-
Złącze TTL zapewnia połączenie Rx Tx do komunikacji z jednostką mikrokontrolera. Do komunikacji z drukarką możemy również wykorzystać protokół RS232. Złącze zasilania służy do zasilania drukarki, a przycisk służy do testowania drukarki. Gdy drukarka jest zasilana, jeśli naciśniemy przycisk autotestu, drukarka wydrukuje arkusz, na którym zostaną wydrukowane specyfikacje i linie próbne. Oto arkusz autotestu
Jak widać drukarka komunikuje się z jednostką mikrokontrolera o szybkości 9600 bodów. Drukarka może drukować znaki ASCII. Komunikacja jest bardzo łatwa, możemy wydrukować wszystko używając UART, przesyłając ciąg lub znak.
Drukarka potrzebuje zasilacza 5 V 2 A do podgrzewania głowicy drukarki. Jest to wada drukarki termicznej, ponieważ podczas procesu drukowania pobiera ogromny prąd obciążenia.
Wymagania wstępne
Aby wykonać następujący projekt, potrzebujemy następujących rzeczy: -
- Płytka prototypowa
- Podłącz przewody
- PIC16F877A
- 2szt 33pF ceramiczny kondensator dyskowy
- Rezystor 680R
- Dowolny kolor
- Przełącznik dotykowy
- 2 sztuki rezystorów 4.7k
- Drukarka termiczna CSN A1 z rolką papieru
- Zasilacz znamionowy 5V 2A.
Schemat obwodu i wyjaśnienie
Schemat sterowania drukarką za pomocą mikrokontrolera PIC przedstawiono poniżej:
Tutaj używamy PIC16F877A jako jednostki mikrokontrolera. Rezystor 4,7 k jest używany do podłączenia pinu MCLR do zasilacza 5 V. Podłączyliśmy również zewnętrzny oscylator 20 MHz z kondensatorami 33pF dla sygnału zegara. Dioda powiadamiająca jest podłączona do portu RB2 z rezystorem ograniczającym prąd 680R. Przełącznik Dotykowy jest podłączony przez RB0 pin, gdy przycisk jest wciśnięty będzie dostarczać logiki wysokiej inaczej kołek otrzyma Logic nisko przez rezystor 4.7K.
Drukarka CSN A1 jest podłączona za pomocą konfiguracji krzyżowej, pin transmisyjny mikrokontrolera jest połączony z pinem odbioru drukarki. Drukarka jest również podłączona do zasilania 5V i GND.
Mamy skonstruował obwód w makiet i przetestowane.
Objaśnienie kodu
Kod jest dość prosty do zrozumienia. Kompletny kod połączenia drukarki termicznej z PIC16F877A znajduje się na końcu artykułu. Jak zawsze, najpierw musimy ustawić bity konfiguracyjne w mikrokontrolerze PIC.
// PIC16F877A Ustawienia bitu konfiguracji // Instrukcje konfiguracji linii źródłowej „C” // CONFIG #pragma config FOSC = HS // Bity wyboru oscylatora (oscylator HS) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT wyłączony) # pragma config PWRTE = OFF // Power-up Timer bit Enable (PWRT wyłączony) #pragma config BOREN = ON // Brown-out Reset Enable bit (BOR włączony) #pragma config LVP = OFF // Niskie napięcie (pojedyncze zasilanie) Bit włączenia programowania szeregowego w obwodzie (pin RB3 / PGM ma funkcję PGM; programowanie niskonapięciowe włączone) #pragma config CPD = OFF // Bit ochrony kodu pamięci EEPROM danych (ochrona kodu danych EEPROM wyłączona) #pragma config WRT = OFF // Zapisywanie pamięci programu Flash Włącz bity (ochrona przed zapisem wyłączona; cała pamięć programu może być zapisywana przez sterowanie EECON) #pragma config CP = OFF // Bit ochrony kodu pamięci programu Flash (ochrona kodu wyłączona)
Następnie zdefiniowaliśmy makra związane ze sprzętem systemowym i użyliśmy pliku nagłówkowego eusart1.h do sterowania sprzętem związanym z eusart. UART jest skonfigurowany na 9600 bodów w pliku nagłówkowym.
#zawierać
W głównej funkcji najpierw sprawdziliśmy `` naciśnięcie przycisku '', a także zastosowaliśmy taktykę odbicia przełącznika, aby wyeliminować usterki przełącznika. Stworzyliśmy instrukcję if dla warunku „wciśnięty przycisk”. Najpierw zaświeci się dioda, a UART wydrukuje struny. Niestandardowe wiersze mogą być generowane wewnątrz instrukcji if i mogą być drukowane jako ciąg.
void main (void) { system_init (); while (1) { if (printer_sw == 1) {// naciśnięto przełącznik __delay_ms (50); // opóźnienie odbicia, jeśli (printer_sw == 1) {// przełącznik jest nadal wciśnięty notification_led = 1; put_string ("Witaj! \ n \ r"); // Drukuj na drukarce termicznej __delay_ms (50); put_string ("Samouczek dotyczący drukarki termicznej. \ n \ r"); __delay_ms (50); put_string ("Podsumowanie obwodu. \ n \ r"); __delay_ms (50); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("---------------------------- \ n \ r"); put_string ("Dziękuję"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); notification_led = 0; } } } }
Pełny kod i działające wideo są podane poniżej.