감열 식 프린터 는 종종 영수증 프린터라고합니다. 식당, ATM, 상점 및 기타 영수증이나 청구서가 필요한 곳에서 널리 사용됩니다. 비용 효율적인 솔루션이며 사용자 측과 개발자 측에서 사용하기에 매우 편리합니다. 열전 사 프린터는 인쇄에 감열지 또는 감열지를 사용하는 특수 인쇄 프로세스를 사용합니다. 프린터 헤드는 특정 온도에서 가열되어 감열지가 프린트 헤드를 통과 할 때 프린터 헤드가 가열 된 부분에서 종이 코팅이 검게 변합니다.
이 튜토리얼에서는 널리 사용되는 PIC 마이크로 컨트롤러 PIC16F877A와 열전 사 프린터 CSN A1을 인터페이스합니다. 이 프로젝트에서는 열전 사 프린터가 PIC16F877A에 연결되고 촉각 스위치가 인쇄를 시작하는 데 사용됩니다. 알림 LED는 인쇄 상태를 알리는데도 사용됩니다. 인쇄 작업이 진행 중일 때만 빛납니다.
프린터 사양 및 연결
우리는 쉽게 구할 수 있고 가격이 너무 높지 않은 Cashino의 CSN A1 Thermal Printer 를 사용하고 있습니다.
공식 웹 사이트에서 사양을 보면 자세한 사양을 제공하는 표를 볼 수 있습니다.
프린터 뒷면에 다음과 같은 연결이 표시됩니다.
TTL 커넥터는 마이크로 컨트롤러 장치와 통신하기 위해 Rx Tx 연결을 제공합니다. RS232 프로토콜을 사용하여 프린터와 통신 할 수도 있습니다. 전원 커넥터는 프린터에 전원을 공급하기위한 것이며 버튼은 프린터 테스트 목적으로 사용됩니다. 프린터에 전원이 공급 될 때 자체 테스트 버튼을 누르면 프린터가 사양과 샘플 라인이 인쇄 될 시트를 인쇄합니다. 다음은 자체 테스트 시트입니다.
보시다시피 프린터는 9600 전송 속도를 사용하여 마이크로 컨트롤러 장치와 통신합니다. 프린터는 ASCII 문자를 인쇄 할 수 있습니다. 통신은 매우 간단하며 UART를 사용하여 문자열이나 문자를 전송하여 무엇이든 인쇄 할 수 있습니다.
프린터 는 프린터 헤드를 가열하기 위해 5V 2A 전원 공급 장치가 필요합니다. 이것은 인쇄 과정에서 큰 부하 전류를 사용하기 때문에 열전 사 프린터의 단점입니다.
전제 조건
다음 프로젝트를 만들려면 다음이 필요합니다.
- 브레드 보드
- 전선 연결
- PIC16F877A
- 2pcs 33pF 세라믹 디스크 커패시터
- 680R 저항
- 모든 색상 주도
- 촉각 스위치
- 2pcs 4.7k 저항기
- 열전 사 프린터 CSN A1 with paper roll
- 5V 2A 정격 전원 공급 장치.
회로도 및 설명
PIC 마이크로 컨트롤러로 프린터 를 제어하는 회로도 는 다음과 같습니다.
여기에서는 PIC16F877A 를 마이크로 컨트롤러 장치로 사용하고 있습니다. 4.7k 저항은 MCLR 핀을 5V 전원 공급 장치에 연결하는 데 사용됩니다. 또한 클럭 신호를 위해 33pF 커패시터가있는 20MHz 의 외부 발진기를 연결했습니다. 알림 LED 는 680R led 전류 제한 저항으로 RB2 포트에 연결됩니다. 택트 스위치 버튼이 제공 누르면 RB0 핀을 통해 연결되는 로직 하이를 수신처 달리 핀을 논리 로우를 4.7K 저항에 의해.
프린터 CSN A1은 교차 구성을 사용하여 연결되고 마이크로 컨트롤러 전송 핀은 프린터의 수신 핀에 연결됩니다. 프린터는 5V 및 GND 공급 장치에도 연결되어 있습니다.
우리 는 브레드 보드에 회로를 구성 하고 테스트했습니다.
코드 설명
코드는 이해하기 매우 간단합니다. 열전 사 프린터와 PIC16F877A를 연결하기위한 완전한 코드 는 기사 끝에 제공됩니다. 항상 그렇듯이 먼저 PIC 마이크로 컨트롤러에서 구성 비트를 설정해야합니다.
// PIC16F877A 구성 비트 설정 // 'C'소스 라인 구성 문 // CONFIG #pragma config FOSC = HS // 오실레이터 선택 비트 (HS 오실레이터) #pragma config WDTE = OFF // 워치 독 타이머 활성화 비트 (WDT 비활성화) # pragma config PWRTE = OFF // 전원 켜기 타이머 활성화 비트 (PWRT 비활성화 됨) #pragma config BOREN = ON // 저전압 리셋 활성화 비트 (BOR 활성화 됨) #pragma config LVP = OFF // 저전압 (단일 공급) 인-서킷 직렬 프로그래밍 활성화 비트 (RB3 / PGM 핀에는 PGM 기능이 있음, 저전압 프로그래밍 활성화 됨) #pragma config CPD = OFF // 데이터 EEPROM 메모리 코드 보호 비트 (데이터 EEPROM 코드 보호 꺼짐) #pragma config WRT = OFF // 플래시 프로그램 메모리 쓰기 활성화 비트 (쓰기 방지 해제, 모든 프로그램 메모리는 EECON 제어에 의해 기록 될 수 있음) #pragma config CP = OFF // 플래시 프로그램 메모리 코드 보호 비트 (코드 보호 해제)
그 후 시스템 하드웨어 관련 매크로를 정의 하고 eusart 관련 하드웨어 제어를 위해 eusart1.h 헤더 파일 을 사용했습니다. UART는 헤더 파일 내에서 9600 Baud rate로 구성됩니다.
#포함
에서 주요 기능, 우리는 먼저 스위치 결함을 제거하기 '버튼을 눌러'도 사용 스위치 디 바운스 전술을 확인. '버튼 누름'조건에 대한 if 문을 만들었습니다. 먼저 LED가 켜지고 UART가 문자열을 인쇄합니다. 사용자 지정 줄은 if 문 내에서 생성 할 수 있으며 문자열로 인쇄 할 수 있습니다.
void main (void) { system_init (); while (1) { if (printer_sw == 1) {// 스위치를 눌렀습니다. __delay_ms (50); // 디 바운스 지연 if (printer_sw == 1) {// 스위치가 계속 눌러져 있음 notification_led = 1; put_string ("Hello! \ n \ r"); // 감열 식 프린터로 인쇄 __delay_ms (50); put_string ("열 프린터 자습서. \ n \ r"); __delay_ms (50); put_string ("서킷 다이제스트. \ n \ r"); __delay_ms (50); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("---------------------------- \ n \ r"); put_string ("감사합니다"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); notification_led = 0; } } } }
완전한 코드와 작동하는 비디오 가 아래에 나와 있습니다.