ชื่อโปรเจกต์: นาฬิกา VFD IV-22 ทำเอง!
หลักการเบื้องต้น:
หลายท่านคงทราบดีว่าเรื่องราวเหล่านี้เป็นอย่างไร: คุณเริ่มต้นด้วยการทำนาฬิกา nixie แล้วก็จบลงด้วยชั้นวางที่เต็มไปด้วยนาฬิกาหลอดสไตล์โซเวียต! นั่นคือสิ่งที่เกิดขึ้นกับผมเช่นกัน: ขณะที่ค้นคว้าเกี่ยวกับหลอด nixie ผมก็ได้พบกับ VFD ซึ่งเป็นเทคโนโลยีจอแสดงผลที่เข้ามาแทนที่ nixie ในตอนนั้น ผมรู้เลยว่าโปรเจกต์ต่อไปของผมจะเป็นอะไร แตกต่างจาก nixie ตรงที่ ผมโตพอที่จะจำได้ว่าจอแสดงผลสีฟ้าเขียวสดใสแบบแบ่งส่วนนี้มีอยู่ทุกหนแห่ง ตั้งแต่ในรถยนต์ไปจนถึงระบบเสียง Hi-Fi ในสมัยที่ผมยังเป็นเด็ก นอกจากความรู้สึกคิดถึงแล้ว ความรู้สึกย้อนยุคแต่ก็ล้ำยุคที่ขัดแย้งกันนี้ดึงดูดใจผมมาก ดังนั้นมันต้องเป็น VFD เท่านั้น!
ในฐานะมือสมัครเล่นด้านอิเล็กทรอนิกส์และเรียนรู้ด้วยตัวเองทั้งหมด ผมพยายามทำให้ทุกโปรเจกต์ใหม่เป็นก้าวที่ไปข้างหน้าจากโปรเจกต์ก่อนหน้านี้ นาฬิกา nixie ของผมทำบน perfboard โดยใช้ Arduino Mega และพาวเวอร์ซัพพลายสำเร็จรูป (หากคุณสนใจที่จะลองดู นี่คือลิงก์: https://create.arduino.cc/projecthub/deathorion/diy-nixie-clock-on-perfboard-7c47d1?ref=search&ref_id=perfboard%20nixie%20clock&offset=0 )
ดังนั้น สำหรับนาฬิกา VFD ผมจึงตัดสินใจออกแบบ PCB และพาวเวอร์ซัพพลายของตัวเอง โชคดีที่มีเครื่องมือออกแบบ PCB ฟรีมากมาย และบริการหลายแห่งที่สามารถสร้าง PCB ของคุณได้ในราคาถูก ผมใช้ EasyEDA สำหรับการออกแบบ ซึ่งใช้งานง่ายและฟรีจริงๆ ครับ
ผมเลือกหลอด VFD IV-22 เพราะครั้งนี้ผมต้องการใช้ form factor ที่แตกต่างจากหลอด nixie IN-14 ที่ผมใช้ในนาฬิกาเครื่องก่อน หากคุณสนใจ คุณสามารถหาหลอด nixie ที่มี form factor เหมือน IV-22 ได้ ซึ่งมีชื่อเรียกว่า IN-12 แน่นอนว่าไม่สามารถใช้แทนกันได้เพราะทำงานต่างกันโดยสิ้นเชิง แต่หลอดมีรูปร่างและขนาดใกล้เคียงกัน หลอดประเภทเหล่านี้ทั้งหมดไม่ได้ผลิตแล้ว แต่ยังคงหาซื้อได้ทางออนไลน์ (ส่วนใหญ่คือ ebay) ไม่ว่าจะเป็นแบบมือสองหรือแบบที่ยังไม่เคยใช้งานจากสต็อกเก่า ซึ่งมักเรียกว่า NOS (New-Old Stock)
การออกแบบ:
ข้อควรพิจารณาหลักบางประการเป็นแรงผลักดันในการตัดสินใจด้านการออกแบบหลายๆ อย่าง:
- ผมต้องการให้ส่วนประกอบเป็นแบบ through hole เพื่อที่ผมจะได้บัดกรีเองได้อย่างสะดวกสบาย ซึ่งไม่ใช่เรื่องง่ายเลยในปัจจุบัน เนื่องจากชิปส่วนใหญ่ผลิตมาในแพ็คเกจแบบ surface mount มีหลายครั้งที่ผมพบชิปที่เหมาะกับงาน แต่มาในแพ็คเกจที่ผมรู้ว่าบัดกรีเองได้ยากมาก ผมจึงข้ามไป มีส่วนประกอบสองอย่างที่ผมหาแบบผ่านรู (through hole) ที่เทียบเท่ากันไม่ได้ เลยต้องใช้แบบ surface mount โชคดีที่ทั้งสองมีขาไม่กี่ขา
- ผมต้องการให้มันมีราคาค่อนข้างถูกในการสร้าง เพราะผมจะทำหลายชิ้น ไม่ใช่แค่ชิ้นเดียว เนื่องจากหลอดเป็นส่วนประกอบที่แพงที่สุดของนาฬิกา ผมจึงตัดสินใจใช้เพียงสี่หลอดและตัดการแสดงผล "วินาที" ออกไป
- เพื่อลดต้นทุนและขนาด ผมจำเป็นต้องใช้ VFD driver chip เพียงตัวเดียว ดังนั้นผมจึงต้องใช้การ multiplex หลอดต่างๆ การ multiplex เป็นเทคนิคในการส่งสัญญาณไปยังหลอดหลายหลอดที่ใช้การเชื่อมต่อสัญญาณร่วมกัน เคล็ดลับคือหลอดจะถูกสลับเปิดและปิดเพื่อแสดงตัวเลขที่ถูกต้อง และการสลับนั้นรวดเร็วมากจนตาของมนุษย์สังเกตไม่เห็น ในกรณีของผม หลอดที่ 1 และ 2 ใช้การเชื่อมต่อสัญญาณร่วมกัน เช่นเดียวกับหลอดที่ 3 และ 4 ดังนั้น เมื่อหลอดที่ 1 แสดงตัวเลขเฉพาะ หลอดที่ 2 จะปิด และในทางกลับกัน — คุณคงเข้าใจแล้ว
- เนื่องจากโปรเจกต์ก่อนหน้านี้ทั้งหมดของผม (ทั้งสามโปรเจกต์...) สร้างขึ้นโดยใช้ Arduino ผมจึงต้องการโปรแกรมโปรเจกต์นี้โดยใช้ Arduino IDE ซึ่งผมคุ้นเคยอยู่แล้ว ดังนั้นจึงตัดสินใจใช้ microcontroller ของ Arduino UNO อันโด่งดัง นั่นคือ ATMEGA328P ด้วยวิธีนี้ ในแง่ของซอฟต์แวร์ก็จะเหมือนกับการโปรแกรม Arduino UNO
- เมื่อ firmware เสร็จสมบูรณ์แล้ว ก็ไม่จำเป็นต้องอัปโหลดโค้ดไปยัง microcontroller เป็นประจำ ผมจึงตัดสินใจข้ามส่วนของ UART ที่ปกติมีในฮาร์ดแวร์ Arduino ทั่วไป และมีเพียง header สำหรับเชื่อมต่อบอร์ด FTDI เพื่อสื่อสารผ่าน Arduino IDE เท่านั้น
แล้วจะอัปโหลดโค้ดได้อย่างไร คุณอาจสงสัย? จริงๆ แล้วมันง่ายมาก: คุณเชื่อมต่อบอร์ด FTDI เข้ากับพอร์ต USB ของคอมพิวเตอร์ และเชื่อมต่อขา RXD, TXD, DTR และ GND ของ FTDI เข้ากับขาที่เกี่ยวข้องของนาฬิกา ซึ่งจะต้องเปิดเครื่องอยู่ ใน Arduino IDE ให้เลือก Tools-> Board:-> "Ardruino Uno" เขียนโค้ดของคุณเหมือนที่คุณเขียนสำหรับ Arduino Uno แล้วกดอัปโหลด เพียงจำไว้ว่าเพื่อให้การทำงานนี้ได้ microcontroller ATMEGA328p จะต้องถูกโหลดด้วย Arduino Uno bootloader คุณสามารถทำได้ด้วยตัวเอง(มีคู่มือมากมายทางออนไลน์) หรือคุณสามารถซื้อชิปที่โหลด bootloader มาแล้วได้
คุณสมบัติ:
นาฬิกามีคุณสมบัติดังต่อไปนี้:
- แน่นอนว่ามีการแสดงเวลา ทั้งในรูปแบบ 24 ชั่วโมงและ 12 ชั่วโมง พร้อมจุดแบ่งเวลาที่กะพริบและตัวบ่งชี้ am/pm
- การรักษาเวลาที่แม่นยำและแบตเตอรี่เพื่อรักษาเวลาเมื่อปิดเครื่อง
- แสดงอุณหภูมิและความชื้นในห้อง
- ไฟแบ็คไลท์ RGB LED บนหลอด พร้อมเอฟเฟกต์สีที่แตกต่างกันห้าแบบ
- เซ็นเซอร์วัดแสงและการหรี่ไฟอัตโนมัติของหลอดและ LED ขึ้นอยู่กับแสงในห้อง
- ปุ่มสี่ปุ่มที่สามารถควบคุมสิ่งต่อไปนี้ได้:
- - ตั้งเวลา
- - สลับโหมด (12 ชั่วโมง, 24 ชั่วโมง, แสดงอุณหภูมิและความชื้นเป็นช่วงๆ, แสดงอุณหภูมิและความชื้นเท่านั้น)
- - วนผ่านเอฟเฟกต์สีของ LED
- - เปิดและปิด LED
- ใช้พลังงานน้อยกว่า 500mAmps จึงสามารถจ่ายไฟได้แม้กระทั่งจากพอร์ต USB ของคอมพิวเตอร์
- ระบบป้องกันแรงดันไฟฟ้าเกิน (Overvoltage protection)
- ระบบป้องกันกระแสไฟฟ้าเกิน (Overcurrent protection)
- ระบบป้องกัน ESD (Electrostatic discharge)
- ง่ายต่อการเข้าถึงเพื่อซ่อมแซม
ผมยังวางแผนที่จะนำคุณสมบัติดังต่อไปนี้ไปใช้ใน firmware ด้วย:
- Routine t