ลูกชายให้จอ VFD48 มา แล้วตอนแรกก็ไม่รู้จะเอาไปทำอะไรดี
หาวิธีในเน็ตก็ไม่มีใครใช้กับ Arduino เลย
ก็เลยตัดสินใจเมื่อหลายเดือนก่อนว่าจะทำให้มันใช้งานได้ ดาวน์โหลด datasheet มา แล้วก็ทำตารางคำสั่งทั้งหมดใน Excel ให้เห็นภาพ
ใน datasheet บอกว่าแรงดันไส้หลอด (filament) ควรเป็น 2.4 VAC แต่ลองใช้ 1.5 VDC ก็ใช้งานได้ดีนะ วัดกระแสไส้หลอดได้ 280 mA ส่วนแรงดันกริด (grid) และแอโนด (anode) ควรเป็น 30 VDC แต่ใช้ 20 VDC ก็พอไหว มันมีกริด 12 อัน แอโนด 16 อัน
ที่ใช้ก็มี shift register 4 ตัว, ทรานซิสเตอร์ไดรเวอร์ 4 ตัว, RTC ds3231 และเซ็นเซอร์วัดอุณหภูมิ LM35
ต้องบัดกรีต่อสายไปที่ทรานซิสเตอร์ไดรเวอร์กันมือหงิกเลยจ้า ดูรูปด้านบนได้ ส่วนท่อหดสีดำซ้ายขวานั่นคือจุดต่อไส้หลอด
ดู schematic แล้วจะเห็นว่าจอ VFD48 นี้มีขาที่ 5 ไม่ได้ใช้ เพราะมันไม่ใช่ VFD48 แท้ แต่เป็นรุ่นที่หน้าตาเหมือนกันน่ะ บัคคอนเวอร์เตอร์ U8 เป็นตัวจ่ายแรงดันให้กริดและแอโนด ปรับให้ได้ 20 VDC นะ
ทำแหล่งจ่ายกระแสคงที่ด้วย LM317 ขึ้นมา (ดูรูปบน) เพื่อควบคุมกระแสไส้หลอด (จำกัดกระแสกระชาก) ใช้ตัวต้านทาน (Resistor) 5.6 โอห์ม กับ 22 โอห์มต่อขนาน จะได้ค่าเท่ากับ 4.46 โอห์ม กระแสก็จะเป็น 1.25 / 4.46 = 280 mA ใช้ FET (IRF520) ควบคุมโดยขา D6 ของ Arduino โปรแกรมก็เลยสั่งเปิดปิดไส้หลอดได้
ขาเอาต์พุต A0 ของ shift register IC1 ต่อกับขาที่ 6 ของ VFD48 นี่คือขาสีเขียวแรกทางขวา (ดูรูป) การนับขาจะจากขวาไปซ้าย คือขาที่ 6 ถึง 33 (เขียวขวาสุดคือขา 6, เหลืองซ้ายสุดคือขา 33)
ใน schematic ขา A0 ของ shift register ต่อกับอินพุตขาที่ 8 ของทรานซิสเตอร์ไดรเวอร์ แล้วเอาต์พุตขาที่ 8 นั้นก็ไปต่อกับขาที่ 6 ของ VFD48 ไปเรื่อยๆ
สรุปตามนี้ (ดูหน้า 6 ของ datasheet):
VFD48 - IC1 VFD48 - IC2 VDF48 - IC3 VFD48 - IC4
Pin 6 - A0 Pin 14 - A0 Pin 18 - A0 Pin 26 - A0
Pin 7 - A1 Pin 15 - A1 Pin 19 - A1 Pin 27 - A1
Pin 8 - A2 Pin 16 - A2 Pin 20 - A2 Pin 28 - A2
Pin 9 - A3 Pin 17 - A3 Pin 21 - A3 Pin 29 - A3
Pin 10 - A4 Pin 22 - A4 Pin 30 - A4
pin 11 - A5 Pin 23 - A5 Pin 31 - A5
Pin 12 - A6 Pin 24 - A6 Pin 32 - A6
Pin 13 - A7 Pin 25 - A7 Pin 33 - A7

การลงมือทำจริง: การมัลติเพล็กซ์และการขับแรงดันสูง
โปรเจกต์นี้เผยให้เห็นชั้นที่ซ่อนอยู่ของปฏิสัมพันธ์ง่ายๆ ระหว่างสุญญากาศกับแสง หัวใจหลักของการทำงานคือกลยุทธ์ มัลติเพล็กซ์ (หรือการสแกนกริด) โค้ด Arduino จะตีความค่าจาก RTC และวนสลับผ่านกริดทั้ง 12 ช่องของ VFD อย่างรวดเร็ว เพื่อจุดเซ็กเมนต์แอโนดที่เหมาะสมสำหรับแต่ละกริดตามลำดับ สร้างภาพลวงตาของหน้าจอที่สว่างคงที่และสมบูรณ์ ทั้งหมดนี้ประสานงานโดยชิฟต์เรจิสเตอร์และทรานซิสเตอร์ไดรเวอร์ ที่จัดการการสวิตช์แรงดันสูงที่จำเป็นสำหรับแอโนดและกริด
โปรแกรม
โปรแกรมจะตรวจสอบสถานะของสวิตช์ทั้งสามตัวในลูปหลัก
ด้วยสวิตช์สามตัว ก็จะมีฟังก์ชันการทำงานได้ 8 แบบ
ฟังก์ชันทั้ง 8 แบบคือ:
ฟังก์ชัน 000: แสดงเวลาพร้อมเข็มวินาทีแบบเล็ก
ฟังก์ชัน 001: แสดงเวลาพร้อมเข็มวินาทีแบบใหญ่
ฟังก์ชัน 010: แสดงเวลาโดยไม่มีเข็มวินาที
ฟังก์ชัน 011: แสดงอุณหภูมิ
ฟังก์ชัน 100: ปรับชั่วโมง
ฟังก์ชัน 101: ปรับนาที (และวินาที)
ฟังก์ชัน 110: โหมดสแตนด์บาย
ฟังก์ชัน 111: โหมดกลางคืน (ระหว่าง 0 - 8 โมงเช้า >> ไม่แสดงอะไรเลย)
ฟังก์ชัน 011 จะแสดงอุณหภูมิ: (ดูรูปด้านบน)
จุดไฟเล็กๆ ที่ตำแหน่ง 12, 2, 4, 6, 8 และ 10 จะสว่างขึ้น เข็มนาทีจะแสดงอุณหภูมิเป็นองศาเซลเซียส อย่างที่เห็นในรูป เข็มอยู่ที่ตำแหน่ง 25 นาที ซึ่งหมายถึงอุณหภูมิ 25 องศาเซลเซียส และยังมีเข็มเล็กๆ ระหว่างเลข 12 กับ 2 อีกอันหนึ่ง ซึ่งแสดงค่าทศนิยม เข็มเล็กนี้ชี้ที่เลข 5 ดังนั้นอุณหภูมิคือ 25.5 องศาเซลเซียส
นาฬิกาเรือนนี้กินไฟแค่ 5x0.43=2.15 วัตต์เท่านั้นเอง ดูรูปด้านล่าง
ผลของวงจรแหล่งจ่ายกระแสคงที่สามารถดูได้ในวิดีโอด้านล่าง นี่คือตอนสลับจากฟังก์ชัน 110 - โหมดสแตนด์บาย ไปเป็นโหมดปกติ จะเห็นได้ว่ากระแสไฟมีแค่ 80 mA เมื่อยังไม่ได้จ่ายไฟให้ไส้หลอด และเมื่อจ่ายไฟแล้วมันจะขึ้นไปที่ 0.43 A (430 mA) และหน้าจอก็จะค่อยๆ สว่างขึ้นจนเต็มที่
โครงสร้างพื้นฐานฮาร์ดแวร์
- Arduino Nano: "สมอง" ของโปรเจกต์ จัดการการสุ่มเวลาและประสานงานการมัลติเพล็กซ์ของ VFD
- VFD48-1202FN Display: ให้การแสดงผลสไตล์วินเทจคอนทราสต์สูง
- โมดูล DS3231 RTC: ทำหน้าที่เป็นหัวใจของการรักษาเวลาที่แม่นยำสูง ด้วยคริสตัลที่ชดเชยอุณหภูมิ
- High-Voltage Boost Converter/Module: จ่ายแรงดันไฟฟ้าที่สูงขึ้น (ปรับเป็น 20V DC ในบิวด์นี้) ที่จำเป็นสำหรับการขับกริดและแอโนดของ VFD
- แหล่งจ่ายกระแสคงที่ (LM317): จ่ายไฟที่ชัดเจนและเสถียรให้กับไส้หลอดแคโทดของ VFD และจำกัดกระแสไฟกระชากตอนเริ่มต้น
- Shift Registers & Transistor Drivers: เป็นอินเทอร์เฟซสำคัญที่เชื่อมระหว่างสัญญาณระดับลอจิกจาก Arduino กับความต้องการแรงดันสูงของ VFD
ต่อยอดในอนาคต
- เชื่อมต่อกับหน้าจอ OLED: ใส่หน้าจอ OLED ขนาดเล็กเพื่อแสดงค่าต่างๆ เช่น "แรงดันสูง (V)" หรือ "กำลังไฟที่กิน (mA)" ให้ดูเท่ห์ๆ
- เซ็นเซอร์หลายตัวทำงานพร้อมกัน: ต่อ PIR sensor เข้าไปเพื่อเพิ่มฟีเจอร์ "ปิดอัตโนมัติ" เมื่อไม่มีใครอยู่ในห้อง จะได้ไม่เปลืองไฟ
- ควบคุมผ่านคลาวด์: เพิ่ม WiFi/BT เพื่อบันทึกประวัติการใช้งานหรือปรับค่าต่างๆ ผ่านแอพในมือถือ สบายๆ
- ปรับความสว่างอัจฉริยะ: ใช้ PWM ในการปรับความสว่างไฟให้เปลี่ยนไปตามระดับแสงรอบข้างอัตโนมัติ ฉลาดสุดๆ
[!CAUTION] โปรเจคนี้เล่นกับ แรงดันสูง นะน้อง! ตรวจสอบให้แน่ใจว่าทุกจุดต่อถูกหุ้มฉนวนและยึดแน่นหนาอยู่ในกล่องแล้ว เพื่อความปลอดภัย ห้ามช็อตนะตัวนี้!