หน้าแรก ดูโปรเจกต์ทั้งหมด
Intermediate

โปรเจกต์ Arduino Shield NCS314 NIXIE Tubes Clock IN-14

สร้าง NIXIE Tubes display ของคุณได้อย่างง่ายดาย

โปรเจกต์ Arduino Shield NCS314 NIXIE Tubes Clock IN-14

วิดีโอสาธิต

Video

▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์

รายการอุปกรณ์และเครื่องมือ

1x Shield Nixie Tubes IN-14 NCS314 Arduino for Nixie Tubes Clock etc.
-
1x Arduino Mega 2560
🛒 สั่งซื้อ
1x Power Supply 12V 1A
🛒 สั่งซื้อ
1x Shield Nixie Tubes Clock IN-12 NCS312 for xUSSR Nixie Tubes
-
1x Acrylic Case for SHIELD NCS314
-

รายละเอียดและวิธีทำ

ภาพรวม

เริ่มแรก หลังจากที่เราได้รับหลอด Nixie คุณภาพเยี่ยมจากโซเวียตอย่างรุ่น IN-12, IN-14 และ IN-18 มาจำนวนมาก เราตั้งใจจะสร้างตัวแสดงผลแบบง่ายๆ จากหลอด Nixie ในรูปแบบของ Shield สำหรับ Arduino ในตอนนั้นเรามี Arduino อยู่แล้ว ดังนั้นส่วนที่เหลือก็ดูเหมือนจะเป็นเรื่องเล็กน้อย (เราคิดอย่างนั้นในตอนนั้น) ในเวลานั้นเรายังไม่รู้อะไรเลยเกี่ยวกับวิธีการจัดการกับหลอดไฟเหล่านี้

ไม่นานหลังจากนั้น เราก็ได้พบวงจรการจ่ายไฟสำหรับหลอดเหล่านี้จากอินเทอร์เน็ต:

วงจรทดสอบ

ใช่เลย! มันสว่างขึ้นมา! สิ่งที่เห็นทำให้เราตะลึงราวกับเป็นปาฏิหาริย์เล็กๆ และเราก็ตระหนักได้ว่าเรามาถูกทางแล้ว จากนั้นเราจึงเริ่มเก็บภาพทันที:

วันต่อมา เราเริ่มหารือเกี่ยวกับแนวคิดของโปรเจกต์ในอนาคต: เพื่อให้เรียบง่ายและลดต้นทุน ในตอนแรกเราตัดสินใจใช้โครงสร้างแบบ dynamic display แต่ภายหลังได้เปลี่ยนใจมาใช้แบบ static display แทน แม้ว่าสำหรับหลอด Nixie รุ่น IN-14 จะมองไม่ค่อยเห็นความแตกต่าง แต่สำหรับหลอด IN-18 นั้นแตกต่างกันอย่างชัดเจน ในโหมด dynamic ความสว่างจะลดลงและมักจะเกิดปรากฏการณ์ที่เรียกว่า blue spots effect:

ปรากฏการณ์ Blue spots effect

โหมด dynamic display คือโหมดที่หลอดไม่ได้สว่างพร้อมกันทั้งหมดในคราวเดียว แต่จะสว่างทีละหลอด (ในหนึ่งช่วงเวลา) หรืออาจจะเป็นแบบอื่นๆ ที่สว่างพร้อมกัน เช่น ทีละสองหลอด

ในการหารือเกี่ยวกับตัวอุปกรณ์ในอนาคต เราตัดสินใจที่จะเพิ่มความสามารถในการแสดงข้อมูลจากคอมพิวเตอร์ผ่านหลอดเหล่านี้ ซึ่งจะช่วยให้ผู้ที่สนใจสามารถสร้างอุปกรณ์ของตนเองเพื่อแสดงข้อมูลต่างๆ บนหลอดไฟได้ เช่น จำนวนข้อความที่ยังไม่ได้อ่าน หรือจำนวนรอบในเกมอย่าง Fallout

จากนั้นเราเริ่มเลือกฮาร์ดแวร์ที่สามารถสลับค่า cathodes (ตัวเลข) ในหลอดได้ ตัวเลือกที่ชัดเจนคือ shift registers ที่ใช้การสื่อสารแบบ SPI เพื่อประหยัด Pins ของ MCU แต่เนื่องจากแรงดันไฟเลี้ยงของหลอดนั้นสูงมาก (สูงถึง 200 โวลต์) ตัวเลือกจึงมีไม่มากนัก เช่น HV513, HV5812, HV5122 และหลังจากที่เราได้ทดลองสร้างอุปกรณ์ด้วยชิปแต่ละตัว เราตัดสินใจเลือก HV5812 (ใน Shield เวอร์ชันใหม่ NCS314 V2.X และ NCS312 V1.X จะใช้ IC HV5122) ชิปนี้สะดวกมากเพราะช่วยให้ควบคุมหลอดไฟสองหลอดพร้อมกันได้ในฐานะ 20 bit register

ในการควบคุมหลอด 6 หลอด เราจำเป็นต้องใช้วงจรแบบนี้ 3 ชุดเชื่อมต่อกันแบบอนุกรม วิธีนี้ช่วยให้เราสามารถส่งแพ็คเก็ตข้อมูลผ่าน SPI เพียงครั้งเดียวและไม่ต้องกังวลเรื่องการอัปเดตข้อมูลบนหลอดตลอดเวลาเหมือนในกรณีของ dynamic display algorithm กล่าวคือ ตราบใดที่เราไม่จำเป็นต้องเปลี่ยนข้อมูลบนหลอด MCU ก็สามารถไปทำงานอื่นๆ หรือแม้แต่เข้าสู่โหมด sleep ได้เลย!

เราอยากพูดถึงเรื่องการส่งข้อมูลผ่าน SPI สักหน่อย Arduino สามารถส่งข้อมูลได้ทีละ 8 bits เท่านั้น แต่เราต้องการ 60 bits ซึ่งจำนวนเต็มที่สูงกว่าและหารด้วย 8 ลงตัวที่ใกล้ที่สุดคือ 64 ดังนั้นเราจึงต้องใช้เทคนิคจัดการ bit - โดยสร้าง Variable ขนาดใหญ่หนึ่งตัวประเภท unsigned long long ขนาด 64 bits สำหรับแต่ละ register แล้วส่งออกไป 8 ครั้ง ครั้งละ 8 bits โดยการ shifting บิตทั้งหมดภายใน Variable ไปทางขวา:

 SPI.transfer(var64); 
SPI.transfer(var64>>48);
SPI.transfer(var64>>40);
SPI.transfer(var64>>32);
SPI.transfer(var64>>24);
SPI.transfer(var64>>16);
SPI.transfer(var64>>8);
SPI.transfer(iTmp);

วัตถุประสงค์ที่ตั้งไว้และดำเนินการสำเร็จ:

ตารางเปรียบเทียบ Shields
  • การแสดงผลแบบ Static display โดยใช้ shift registers
  • Slote Machine (ป้องกันอาการตัวเลขติดค้าง)
  • มีฟังก์ชันมาตรฐานสำหรับนาฬิกา ทั้งวันที่, เวลา และการตั้งปลุก
  • RTC (Real Time Clock) พร้อมแบตเตอรี่ CR1220 (บอร์ดเวอร์ชันใหม่ V1.2-2.X ใช้ชิปเวลาความแม่นยำสูง RTC DS3231)
  • การวัดอุณหภูมิด้วย DS18B20 [เซลเซียส หรือ ฟาเรนไฮต์]
  • ควบคุมผ่านพอร์ต IR รุ่น TSOP4836 (ใช้งานได้เฉพาะบอร์ด Mega) ทดสอบแล้วกับรีโมท Sony RM-X151 แต่สามารถใช้กับรีโมทอื่นๆ ที่มีความถี่ 36kHz ได้
  • การซิงโครไนซ์เวลากับ GPS ภายนอก (ใช้งานได้เฉพาะบอร์ด Mega)
  • เมนูใช้งานง่าย
  • แยกการจัดการเครื่องหมาย colon (จุดบนและจุดล่าง)
  • ไฟ RGB backlight ที่เปลี่ยนสีได้อย่างนุ่มนวล
  • เสียงเรียกเข้าแบบ RTTTL สำหรับการปลุก (Ring Tone Transfer Language)
  • Slot machine (เพื่อป้องกันความเสื่อมของตัวเลขในหลอด)
  • ระบบตรวจสอบตัวเอง (Self-test) (ตรวจสอบตัวเลขทุกตัวในแต่ละหน้าจอตั้งแต่ 0 ถึง 9, ตรวจสอบ LEDs ทุกดวงโดยสลับสีน้ำเงิน, แดง, เขียว และตรวจสอบเสียงโดยการเล่นเสียงเรียกเข้า)

งานที่ยังไม่สามารถทำได้อย่างสมบูรณ์:

  • Sensor วัดแสง

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: arduino-shield-ncs314-nixie-tubes-clock-in-14-941e65
2450 บาท
PromptPay QR Code