กลับไปหน้ารวมไฟล์
voltmeter-clock-8eb334.md

Introduction

พี่เป็นคนนึงที่ชอบนาฬิกามาก โดยเฉพาะแบบกลไกหรือแบบที่แสดงเวลาด้วยวิธีแปลกๆ พี่เคยเห็นนาฬิกาที่ใช้มิเตอร์เป็นตัวบอกเวลาอยู่สองสามเรือน เลยคิดว่า "เออว่ะ น่าสน มาลองทำเองดีกว่า" ว่าปุ๊บทำปั๊บเลยวัยรุ่น!

ผลงานที่เสร็จแล้ว ดูสวยปะล่ะ

Project Overview

"Metric-Flux" โปรเจคนี้คือการเอาเรื่อง Analog Kinetic Telemetry และ Precision PWM-Voltage Orchestration มาทำกันจริงจังเลย ไม่เล่นๆ แทนที่จะใช้จอดิจิตอลแห้งๆ เราจะใช้มิเตอร์หน้าปัดเกรดอุตสาหกรรมรุ่น 85C1-V จำนวน 3 ตัว มาเป็นตัวบอกเวลา (ชั่วโมง, นาที, วินาที) ผ่านการขยับของเข็มจริงๆเลย โดยใช้ DS3231 Real-Time Clock ควบคุมความแม่นยำของเวลา แล้วแปลงข้อมูลเวลาเป็นสัญญาณ PWM ที่มีความกว้างพัลส์แปรผัน เพื่อขับขดลวดในมิเตอร์ให้เข็มขยับได้เนียนๆ โปรเจคนี้เน้นทั้งความแม่นยำในการปรับเทียบ (Calibration Forensics) ความสวยงามของโครงสร้าง (Laser-Precision Chassis Aesthetics) และการรักษาความคลาสสิกของมิเตอร์วินเทจให้ยังคงอยู่

Wiring

การต่อสายตรงไปตรงมามาก น้องๆ อย่าเพิ่งช็อต วงจรหลักมีสองส่วนคือวงจรนาฬิกาจริง (RTC) และวงจรของมิเตอร์ โดยมิเตอร์ทั้งสามจะต่อกับขา PWM สามขาบน Arduino ส่วนโมดูลนาฬิกาจะต่อกับขาอินเตอร์เฟสแบบอนาล็อกสองขาคือ SCL กับ SDA

แผนภาพการต่อสาย ดูตามนี้ได้เลย
มุมมองด้านหลัง ดูสายรกๆ หน่อยนะ ฮ่าๆ

Technical Deep-Dive

  • d'Arsonval Movement & PWM Deflection Forensics:
    • The Magnetic Deflection Harmonics: มิเตอร์แต่ละตัวทำงานบนหลักการของ d’Arsonval นั่นคือขดลวดที่มีกระแสไหลผ่านจะหมุนภายในสนามแม่เหล็กถาวร หน้าที่เราคือขับขดลวดพวกนี้ผ่านขา PWM ของ Arduino $(D3, D5, D6)$ สิ่งที่ต้องเจาะลึกคือความสัมพันธ์ระหว่าง Duty Cycle $(\delta)$ กับมุมที่เข็มเบน $(\theta)$ เพื่อให้แน่ใจว่าเราชดเชยความเฉื่อยไม่เป็นเชิงเส้น (Non-linear Inertia) ของเข็มได้ผ่านการตั้งค่า "ค่าต่ำสุด/สูงสุด" (Minimum/Maximum Calibration Arrays) ในซอฟต์แวร์
    • I2C Temporal-Drift Diagnostics: การอ่านเวลาจัดการผ่านโมดูล DS3231 RTC ผ่านบัส I2C $(A4/A5)$ เราโพล์ข้อมูลจาก TCXO (Temperature Compensated Crystal Oscillator) 32kHz ของโมดูลเพื่อรักษาความแม่นยำในระดับเสี้ยววินาที สิ่งสำคัญคือต้องทำให้การเปลี่ยนจากวินาทีที่ 59 กลับไปที่ 00 เกิดอย่างนุ่มนวล (Smooth "Return-to-Home" Needle Harmonic) ป้องกันไม่ให้เกิด Mechanical Shock กับสปริงเส้นเล็กๆ ภายในมิเตอร์
  • Calibration & Pulse-Width Analytics:
    • The PWM-to-Analog Interpolation Heuristics: เพื่อให้การ映射สเกลเป็น 1:1 (เช่น แสดง 12 ชั่วโมง บนสเกล 5V) ระบบนี้ใช้โหมดปรับเทียบสามขั้นตอน (Three-Tiered Calibration Mode) เราต้องมาปรับค่า hoursMinimum, minutesMinimum, และ secondsMinimum ด้วยมือ เพื่อชดเชยความแตกต่างของความต้านทานภายใน $(\pm 5%)$ ของมิเตอร์แต่ละตัว ซึ่งเป็นเรื่องปกติของอุปกรณ์แอนะล็อก vintage แบบนี้ การปรับนี้จะทำให้เข็มทั้งสามชี้ตรงกันเป๊ะเวลาบอกเวลาเดียวกัน สู้งานนะน้อง!

วิศวกรรมและการลงมือทำ

  • ความสมบูรณ์ของสัญญาณและนิติวิทยาศาสตร์สัญญาณรบกวน:
    • ฮาร์มอนิกส์จากการสวิตช์ PWM: ความถี่ PWM มาตรฐาน $490\text{Hz}$ ของ Arduino นั้นเพียงพอสำหรับกลไกเมคคาทรอนิกส์ที่ตอบสนองช้าของมิเตอร์อนาล็อก แต่นิติวิทยาศาสตร์จะเน้นไปที่การวินิจฉัยตัวเก็บประจุบายพาส $(\text{ตัวเลือก } 10\mu\text{F})$ ที่ขั้วของมิเตอร์ เพื่อกำจัดสัญญาณกระตุกความถี่สูงที่อาจทำให้เข็มสั่นแบบปรสิตในเส้นทางการเคลื่อนที่ที่ตาเห็น
    • การปรับแต่ง Pull-up ของ I2C: การลงมือทำเกี่ยวข้องกับการตั้งค่าคล็อกให้ DS3231 ที่ $100\text{kHz}$ (โหมดมาตรฐาน) นิติวิทยาศาสตร์เกี่ยวข้องกับการตรวจสอบความ "แข็ง" ของลอจิกบนสาย SDA/SCL เพื่อให้แน่ใจว่าการเชื่อมต่อ RTC ไม่ได้สร้างความจุปรสิตให้กับเครื่องยนต์ I2C ของตัวควบคุม
  • การผลิตและความสวยงามเชิงโครงสร้าง:
    • โครงสร้างหลักเป็นแบบไฮบริดระหว่างการพิมพ์ 3D และการตัดเลเซอร์ นิติวิทยาศาสตร์เกี่ยวข้องกับการตรวจสอบความแข็งแรงเชิงโครงสร้างของแผ่นยึดมิเตอร์ 85C1-V $(X/Y \text{ tolerance} < 0.2\text{mm})$ เพื่อป้องกันการเบี่ยงเบนเชิงกลของกลไกมิเตอร์

การประกอบ

มีชิ้นส่วนตัดเลเซอร์ 2 ชิ้น และชิ้นส่วนพิมพ์ 3D 4 ชิ้น ชิ้นส่วนเหล่านี้ไม่ได้เป็นส่วนสำคัญต่อการทำงานของนาฬิกา ดังนั้นจึงสามารถทำด้วยวิธีอื่นได้ง่ายๆ แม้แต่กล่องกระดาษลังเล็กๆ ก็สามารถใช้แทนชิ้นส่วนที่ผลิตได้เลย เริ่มจากแยกมิเตอร์ออกจากกัน (ของพี่มีสกรู 2 ตัวในแต่ละตัว) แล้วติดตั้งหน้าปัดกระดาษเข้าไปในมิเตอร์ จากนั้นก็ยึดมิเตอร์เข้ากับแผ่นฐานและเดินสายไฟ เชื่อมต่อโมดูลนาฬิกาจริง (RTC) แล้วดันมันเข้าไปในที่ยึดให้แน่น

หน้าปัดมิเตอร์พร้อมแผ่นโอเวอร์เลย์วินาทีที่ติดตั้งแล้ว

การตั้งค่า

อัพโหลดสเก็ตช์และตั้งค่าโหมดเป็น 2 จากนั้นตั้งค่าตำแหน่งต่ำสุดของแต่ละหน้าปัดโดยปรับตัวเลขในตัวแปร `hoursMinimum`, `minutesMinimum` และ `secondsMinimum` แล้วอัพโหลดสเก็ตช์ใหม่ ปรับตัวแปรจนกว่าเข็มทุกอันจะอยู่ที่ปลายซ้ายสุดของหน้าปัดพอดี ทำแบบเดียวกันสำหรับค่าสูงสุด เพื่อให้เข็มอยู่ที่ปลายขวาสุดของหน้าปัด

สำหรับการตั้งเวลา ให้ใส่เวลาเข้าไปในฟังก์ชัน `setDS3231time` ในฟังก์ชัน `setup()` โดยใช้โหมด 1

เมื่ออัพโหลดสเก็ตช์แล้ว เวลาควรจะแสดงผลและเข็มวินาทีควรจะเดินแล้วล่ะ

โมดูลนาฬิกาจริง (RTC module)

การทำงาน

ตั้งค่าโหมดเป็น 0 แล้วอัพโหลดสเก็ตช์ ตราบใดที่แบตเตอรี่ของนาฬิกายังเชื่อมต่ออยู่ เวลาจะถูกแสดงผลทุกครั้งที่จ่ายไฟให้ Arduino

สรุป

เป็นนาฬิกาที่เจ๋งมากด้วยวิธีแสดงเวลาที่น่าสนใจ แต่อาจจะไม่ค่อยประหยัดแบตเตอรี่สักเท่าไหร่ ถ้าจะใช้ไฟจากแบตเตอรี่เป็นเวลานานอาจจะไม่เวิร์ค แต่อย่างไรก็ตาม มันก็สนุกดี!

Metric-Flux ถือเป็นสุดยอดแห่ง Mechatronic Chronometry ด้วยการเชี่ยวชาญ d'Arsonval Movement Harmonics และ PWM-Voltage Calibration ทำให้ markbennettuk ได้สร้างระบบแสดงเวลาระดับมืออาชีพที่แข็งแกร่งและชัดเจนสมบูรณ์แบบ ผ่านการผสมผสานระหว่างฟิสิกส์อนาล็อกและความแม่นยำดิจิทัลได้อย่างสวยงาม


Kinetic Time: Mastering temporal telemetry through analog deflection forensics.

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
author: "markbennettuk"
category: "Screens & Displays"
components:
  - "1x Solder Wire, Lead Free"
  - "1x 3D Printer (generic)"
  - "1x Laser cutter (generic)"
  - "1x DS3231MPMB1 Peripheral Module"
  - "1x Wire, Hook Up"
  - "6x Rubber feet"
  - "1x Soldering iron (generic)"
  - "3x 85C1-V 5 volt panel meter"
  - "4x Jumper wires (generic)"
  - "1x Arduino UNO"
description: "งานนี้จัดไป! เอา Panel Mount Voltmeter มา 3 ตัว มาจูนให้มันแสดงเวลาเป็นชั่วโมง นาที วินาที แทนที่จะวัดแรงดันไฟฟ้า งานง่ายแต่หล่อมาก วัยรุ่นสายฮาร์ดแวร์ต้องชอบ!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/7239169a-d5e5-4dfd-9358-8690d576cb06.ino"
  - "https://projects.arduinocontent.cc/7239169a-d5e5-4dfd-9358-8690d576cb06.ino"
encryptedPayload: "U2FsdGVkX19XTbTq3fKT2xsEPukuShWKfXjoracVTb0sa0i/WyrujJwzO3KmEzDx2YHGliLEkbNjjLiws+tYjl7o30tQWZe9A/KpGOi7oRc="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/voltmeter-clock-8eb334_cover.jpg"
lang: "en"
likes: 5
passwordHash: "3cc5bf4c9f3e9b7fddb0011b09d3e1fadee1cae5634b37ec9d57925cdd09465a"
price: 299
seoDescription: "Build a unique Voltmeter Clock using 3 panel mount Voltmeters. A creative Arduino project that repurposes analog meters to display time."
tags:
  - "clocks"
title: "นาฬิกาวัดไฟสุดเท่ - เวลามาเต็มสเกล!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/rX7qs88N3sg"
views: 9922