מדפסת תרמית מכונה לעתים קרובות מדפסת קבלה. נעשה בו שימוש נרחב במסעדות, כספומט, חנויות ובמקומות רבים אחרים שבהם נדרשים קבלות או חיוב. זהו פתרון חסכוני ושימושי מאוד לשימוש מצד המשתמש וגם מצד היזם. מדפסת תרמית עושה שימוש בתהליך הדפסה מיוחד המשתמש בנייר תרמו-כרומי או נייר תרמי להדפסה. ראש המדפסת מחומם בטמפרטורה מסוימת שכאשר הנייר התרמי עובר מראש ההדפסה, ציפוי הנייר הופך לשחור באזורים בהם מחומם ראש המדפסת.
במדריך זה, נתממש מדפסת תרמית CSN A1 עם מיקרו-בקר PIC בשימוש נרחב PIC16F877A. כאן בפרויקט זה, מדפסת תרמית מחוברת על פני PIC16F877A ומתג מישוש משמש להפעלת ההדפסה. נורית התראה משמשת גם כדי להודיע על מצב ההדפסה. זה יאיר רק כאשר פעילות ההדפסה נמשכת.
מפרט מדפסת וחיבורים
אנו משתמשים במדפסת תרמית CSN A1 מבית Cashino, אשר זמינה בקלות והמחיר אינו גבוה מדי.
אם נראה את המפרט באתר הרשמי שלו, נראה טבלה המספקת את המפרט המפורט-
בצד האחורי של המדפסת נראה את החיבור הבא-
מחבר TTL מספק את חיבור Rx Tx כדי לתקשר עם יחידת המיקרו-בקר. אנו יכולים גם להשתמש בפרוטוקול RS232 כדי לתקשר עם המדפסת. מחבר החשמל מיועד להפעלת המדפסת והלחצן משמש למטרות בדיקת מדפסת. כאשר המדפסת מופעלת, אם אנו נלחץ על כפתור הבדיקה העצמית המדפסת, תדפיס גיליון שבו יודפסו מפרטים וקווי דוגמה. הנה דף הבדיקה העצמית-
כפי שאנו רואים המדפסת משתמשת בקצב שידור 9600 כדי לתקשר עם יחידת המיקרו-בקר. המדפסת יכולה להדפיס תווי ASCII. התקשורת קלה מאוד, אנו יכולים להדפיס כל דבר פשוט באמצעות UART, העברת מחרוזת או תו.
המדפסת זקוקה לאספקת חשמל 5V 2A לחימום ראש המדפסת. זהו החיסרון של המדפסת התרמית מכיוון שהיא דורשת זרם עומס עצום בתהליך ההדפסה.
תנאים מוקדמים
כדי לבצע את הפרויקט הבא, אנו זקוקים לדברים הבאים: -
- קרש לחם
- חבר חוטים
- PIC16F877A
- 2 יחידות קבלים דיסק קרמיקה 33pF
- נגד 680R
- כל צבע הוביל
- מתג מישוש
- 2 יחידות נגדים 4.7k
- מדפסת תרמית CSN A1 עם גליל נייר
- יחידת אספקת חשמל מדורגת 5V 2A.
תרשים מעגל והסבר
תרשים שליטה במדפסת באמצעות מיקרו-בקר PIC מובא להלן:
כאן אנו משתמשים ב- PIC16F877A כיחידת מיקרו-בקר. נגד 4.7k משמש לחיבור סיכת MCLR לאספקת החשמל 5V. חיברנו גם מתנד חיצוני של 20 מגה-הרץ עם קבלים 33pF לאות השעון. נורית הודעה מחוברת על פני יציאת RB2 עם נגד הגבלת זרם 680R. מתג המגע מחובר ברחבי סיכת RB0 כאשר הכפתור נלחץ זה יספק גבוה לוגיקה אחרת את הסיכה תקבול לוגיקה נמוך ידי נגד 4.7k.
המדפסת CSN A1 מחוברת באמצעות תצורה צולבת, סיכת העברה של מיקרו-בקר מחוברת עם סיכת הקבלה של המדפסת. המדפסת התחברה גם לאספקת 5V ו- GND.
בנינו את המעגל בתוך קרש לחם ובדקנו אותו.
הסבר קוד
הקוד די פשוט להבנה. הקוד השלם לממשק מדפסת תרמית עם PIC16F877A ניתן בסוף המאמר. כמו תמיד, ראשית עלינו להגדיר את סיביות התצורה במיקרו-בקר PIC.
// PIC16F877A הגדרות סיביות תצורה // הצהרות תצורה של קו המקור 'C' // CONFIG # תצורת פרגמה FOSC = HS // סיביות בחירת מתנד (מתנד HS) # תצורה פרגמה WDTE = OFF // טיימר כלב שמירה אפשר ביט (WDT מושבת) # פרגמה config PWRTE = OFF // טיימר הפעלה אפשר Bit (PWRT מושבת) # pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled) # pragma config LVP = OFF // מתח נמוך (ספק יחיד) תכנות סידורי במעגל מאפשר ביט (RB3 / PGM pin יש פונקציית PGM; תכנות מתח נמוך מופעלת) # config config CPD = OFF // נתונים EEPROM זיכרון קוד ביט הגנה (נתונים EEPROM הגנת קוד כבוי) # pragma config WRT = OFF // Flash Memory Memory Write אפשר ביטים (הגנת כתיבה כבויה; כל זיכרון התוכנית עשוי להיכתב באמצעות בקרת EECON) # config config CP = OFF // Bit Bit Memory Code Code Protection (Code code off)
לאחר מכן הגדרנו פקודות מאקרו הקשורות לחומרת המערכת והשתמשנו בקובץ כותרת eusart1.h לבקרת חומרה הקשורה ל- eusart. ה- UART מוגדר בקצב שידור 9600 בתוך קובץ הכותרת.
#לִכלוֹל
בשנתי ה העיקרית הפונקציה, בדקנו לראשונה את "קש הכפתור" וגם טקטיקות debounce מתג המשמשות לחסל תקלות המתג. יצרנו הצהרת if למצב 'לחיצת כפתור'. ראשית נורית ה- LED זוהרת ו- UART ידפיס את המיתרים. ניתן ליצור שורות מותאמות אישית בתוך הצהרת if וניתן להדפיס כמחרוזת.
בטל ראשי (בטל) { system_init (); בעוד (1) { אם (printer_sw == 1) {// מתג לחוץ __השהיה_ms (50); // עיכוב ההפצה אם (printer_sw == 1) {// מתג עדיין לחוץ notification_led = 1; put_string ("שלום! \ n \ r"); // הדפס למדפסת תרמית __השהיה_מס (50); put_string ("מדריך מדפסת תרמית. \ n \ r"); __השהיית_מס (50); put_string ("מעגל עיכול. \ n \ r"); __השהיית_מס (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; } } } }
הקוד המלא וסרטון העבודה מופיע להלן.