サーマルプリンターは、レシートプリンターと呼ばれることがよくあります。レストラン、ATM、ショップなど、領収書や請求書が必要な場所で広く使用されています。これは費用効果の高いソリューションであり、開発者側だけでなくユーザー側からも非常に便利です。サーマルプリンターは、サーモクロミック紙または感熱紙を使用した特殊な印刷プロセスを使用して印刷します。プリンタヘッドは特定の温度で加熱され、感熱紙がプリントヘッドを通過すると、プリンタヘッドが加熱された領域で紙のコーティングが黒くなります。
このチュートリアルでは、サーマルプリンターCSNA1を広く使用されているPICマイクロコントローラーPIC16F877Aと接続します。このプロジェクトでは、サーマルプリンターをPIC16F877Aの両端に接続し、触覚スイッチを使用して印刷を開始します。通知LEDは、印刷ステータスを通知するためにも使用されます。印刷アクティビティが実行されているときにのみ点灯します。
プリンタの仕様と接続
私たちは、使用しているCSN A1サーマルプリンタを容易に入手可能であるCashino、から、価格は高すぎではありません。
公式サイトで仕様を見ると、詳細な仕様をまとめた表があります-
プリンタの背面には、次の接続が表示されます-
TTLコネクタは、マイクロコントローラユニットと通信するためのRxTx接続を提供します。RS232プロトコルを使用してプリンタと通信することもできます。電源コネクタはプリンタに電力を供給するためのものであり、ボタンはプリンタのテスト目的で使用されます。プリンタの電源が入っているときにセルフテストボタンを押すと、プリンタは仕様とサンプルラインが印刷されるシートを印刷します。これがセルフテストシートです-
ご覧のとおり、プリンタは9600ボーレートを使用してマイクロコントローラユニットと通信します。プリンタはASCII文字を印刷できます。通信はとても簡単で、UARTを使って文字列や文字を送信するだけで何でも印刷できます。
プリンタには、プリンタヘッドを加熱するための5V2A電源が必要です。これは、印刷プロセス中に大きな負荷電流を消費するため、サーマルプリンターの欠点です。
前提条件
次のプロジェクトを作成するには、次のものが必要です。-
- ブレッドボード
- ワイヤーを接続します
- PIC16F877A
- 2個の33pFセラミックディスクコンデンサ
- 680R抵抗
- 任意の色のLED
- 触覚スイッチ
- 2個の4.7k抵抗器
- ペーパーロール付きサーマルプリンターCSNA1
- 5V2A定格の電源ユニット。
回路図と説明
PICマイクロコントローラーでプリンターを制御するための回路図を以下に示します。
ここでは、マイクロコントローラユニットとしてPIC16F877Aを使用しています。MCLRピンを5V電源に接続するために4.7kの抵抗が使用されます。また、クロック信号用に33pFのコンデンサを備えた20MHzの外部発振器を接続しました。通知LEDは、680RLED電流制限抵抗を備えたRB2ポートの両端に接続されています。触覚スイッチは、ボタンは、それが提供する押されたときにRB0ピンの両端に接続された ロジックハイを さもなければピンが受け取る 論理ローを 4.7kの抵抗によって。
プリンターCSNA1はクロス構成を使用して接続され、マイクロコントローラー送信ピンはプリンターの受信ピンに接続されます。プリンタは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ボーレートで構成されています。
#include
では メインの 機能は、我々は最初のスイッチの不具合を解消する「ボタンを押して」とも使用されているスイッチのデバウンス戦術を確認しました。'ボタンが押された'条件の if ステートメントを作成しました。最初にLEDが点灯し、UARTが文字列を出力します。カスタム行はifステートメント内で生成でき、文字列として出力できます。
void main(void){ system_init(); while(1){ if(printer_sw == 1){//スイッチが押された __delay_ms(50); // (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"); notify_led = 0; } } } }
完全なコードと作業ビデオを以下に示します。