กลับไปหน้ารวมไฟล์
mechanical-arduino-clock-131c5c.md
Time lapse video of clock

โปรเจกต์ "Escapement-Logic" นี้คือการสร้างนาฬิกาเชิงกลที่ใช้ Arduino กับเซอร์โวมอเตอร์ขับเข็มหมุนบนหน้าปัดบอกเวลา เรียกได้ว่าเป็นการผสมผสานระหว่าง กลไกการบอกเวลาแบบไฮบริด (Hybrid-Mechanical Chronometry) กับ ระบบเมคคาทรอนิกส์แบบฟันเฟืองล็อค (Ratchet-Drive Mechatronics) เอาไว้ด้วยกันเลย เก๋ไก๋ดีมั้ยล่ะวัยรุ่น!

ลงลึกเทคนิค: ระบบเมคคาทรอนิกส์แบบฟันเฟืองล็อค (Ratchet-and-Pawl)

แกนกลางเชิงกลของนาฬิกาเราสร้างมาจากซีดีเก่าที่รีไซเคิลมาเป็นชุดเกียร์ความแม่นยำสูงเลยทีเดียว

  • การขึ้นรูปฟันเฟืองบนตัวซีดี (CD-Chassis Tooth-Profiling): กระบวนการนี้เริ่มจากลอกชั้นฟอยล์สะท้อนแสงออก แล้วใช้ตะไบมือขึ้นรูปฟันเฟืองล็อค (ratchet teeth) ตามที่เห็นในรูป เราจะใช้เทปดึงฟอยล์ออก จากนั้นก็เอาแผ่นซีดีที่ล้างสะอาดแล้วมาคล้องกับแม่แบบหน้าปัดที่ปริ้นท์ไว้ เพื่อใช้เป็นแนวสำหรับตะไบ เป้าหมายคือต้องสร้างฟันให้ได้ 60 ซี่พอดีสำหรับจานนาที และ 12 ซี่สำหรับจานชั่วโมง เพื่อให้ได้มุม "การเกี่ยวฟัน (Pawl-Engagement)" ที่ถูกต้องสำหรับการส่งถ่ายแรงบิดที่เสถียร
  • การควบคุมกลไกหน่วงเวลาอย่างประสานกัน (Synchronous Escapement Orchestration): ระบบนี้ใช้เซอร์โวมอเตอร์สองตัวทำงานแยกกัน เราใช้วิธี "พกพาตัวนับ (Carry-Over)" คือเมื่อเซอร์โวตัวนาทีทำงานครบ 60 ครั้ง มันจะส่งสัญญาณให้เซอร์โวตัวชั่วโมงทำงานทีละขั้น ต้องระวังเรื่องความล่าช้าของเวลาระหว่างการกวาดของเซอร์โวแต่ละตัวนะ ไม่งั้นกลไกจะติดขัดได้
แม่แบบหน้าปัดที่ปริ้นท์ไว้สำหรับทำเครื่องหมายฟันบนจาน
กำลังลอกชั้นฟอยล์เงินออกจากซีดีด้วยเทป
ซีดีที่ล้างสะอาดแล้ว ต้องการ 2 แผ่น
จาน 2 แผ่นถูกหนีบกับแม่แบบหน้าปัด พร้อมสำหรับการตัดฟัน
จานที่ตะไบฟันเฟืองล็อค (ratchet teeth) เสร็จแล้ว

วิศวกรรมและการประกอบ

  • การปรับค่าและสอบเทียบมุมเซอร์โว (Servo-Angle Interpolation & Calibration): เซอร์โว SG90 ทำหน้าที่เป็นแหล่งกำเนิดพัลส์แบบแกว่งกวัด การปรับค่าใน Servo.write() ให้ได้ช่วงการ "เดิน (Travel)" และ "รีเซ็ต (Reset)" ที่พอดีเป็นเรื่องสำคัญมาก มันจะช่วยชดเชยความคลาดเคลื่อนจากการตะไบมือของเรา ทำให้แต่ละครั้งที่เข็มขยับหมุนได้ 6° พอดีสำหรับเข็มนาที
  • วัสดุศาสตร์และการประกอบ (Material-Science & Assembly): ตัวเกี่ยวฟัน (flipper หรือ pawl) ทำจากวัสดุที่มีความยืดหยุ่น เช่น พลาสติก ตามที่เห็นในรูปหนึ่ง "ความแข็งของสปริง (Spring-Rate)" ของมันต้องปรับให้พอดีที่จะขับจานได้ แต่ก็ต้องยืดหยุ่นพอที่จะรีเซ็ตกลับมาได้ด้วย เราใช้กาวติดน็อตไว้ตรงกลางจานให้ได้ศูนย์กลางสูงสุด เพื่อป้องกันการสั่นไหวที่ทำให้เกิดแรงเสียดทาน ซึ่งอาจทำให้เซอร์โวที่มีแรงบิดต่ำหยุดทำงานได้
  • การจัดการความแม่นยำของเวลา (Temporal-Stiffness Heuristics): เนื่องจากเราไม่ได้ใช้นาฬิกาจริง (RTC) ระบบจึงพึ่งพา delay() หรือ millis() ต้องพยายามลดโอเวอร์เฮดของวงจรคำสั่งให้มากที่สุด เพื่อลดการคลาดเคลื่อนของเวลาที่สะสมไปเรื่อยๆ ไม่งั้นบอกเวลาเพี้ยนแน่ ห้ามช็อตนะตัวนี้!
ใช้พลาสติกทำตัวเกี่ยวฟัน (flipper)

ประกอบชิ้นสุดท้ายและปรับเทียบ

เซอร์โว (Servo) ถูกติดตั้งเพื่อขับเข็มชั่วโมงและเข็มนาที เข็มพวกนี้จะทาสีหรือติดกาวลงบนจานหมุนก็ได้ โค้ดและการต่อสายนั้นง่ายๆ แต่ค่ามุมองศาของเซอร์โวต้องปรับให้เข้ากับการจัดวางกลไกของตัวน้องเองนะตัวนี้ ฟลิปเปอร์ที่ขยับเข็มชั่วโมงก็จะดึงเข็มนาทีให้ขยับไปหนึ่งตำแหน่งด้วย การปรับเทียบขั้นสุดท้ายคือการดูค่าจาก Serial Monitor เพื่อให้ตำแหน่งจานหมุนตรงกับตรรกะในซอฟต์แวร์ ต้องทำให้หน้าปัดที่เห็นตรงกับเวลาที่ตั้งใจไว้ ความแม่นยำของนาฬิกาขึ้นอยู่กับความละเอียดตอนตะไบฟันเฟืองและการตั้งค่าเวลา Delay ของเซอร์โวให้เป๊ะๆ

เซอร์โวตั้งค่าไว้เพื่อขับเข็มชั่วโมงและเข็มนาที

สรุป

โปรเจกต์ Escapement-Logic นี่คือสุดยอดของ Upcycled Horological Mechatronics เลยนะเว้ย! ด้วยการเชี่ยวชาญ Ratchet-Drive Forensics และ Servo-Escapement Orchestration โปรเจกต์นี้ให้ผลลัพธ์เป็นนาฬิกาไฮบริดกลไกระดับโปรที่ทั้งแข็งแรงและชัดเจน แสดงเวลาออกมาได้เป๊ะเวอร์ผ่านการวินิจฉัยการเคลื่อนไหวที่ซับซ้อน


Mechanical Resonance: Mastering chronometric telemetry through ratchet forensics.

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

apps:
  - "1x Arduino IDE"
author: "garysat"
category: "Motors & Robotics"
components:
  - "1x Two CDs to use for mounting clock hands"
  - "1x Jumper wires (generic)"
  - "1x Hot glue gun (generic)"
  - "2x SG90 Micro-servo motor"
  - "1x File, sander or saw."
  - "1x Arduino UNO"
  - "1x Miscellaneous supplies, foam board, thin spring steel, glue, cardboard"
description: "งานนี้คือการสร้างนาฬิกากลไกเทพๆ โดยใช้ Arduino uno เป็นสมอง แล้วสั่งงาน Servo ให้ขยับเข็มนาฬิกาตามเวลา งานง่ายแต่หล่อ มาลองจัดไปด้วยกัน!"
difficulty: "Easy"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/3505c3c5-607c-406e-99d8-95d05777330e.ino"
encryptedPayload: "U2FsdGVkX18UVDg1PyFWu5hoNDOYa5pUDL/1JsMDCqnIsdkYkcEE95zd708sS4Zg4dO2LRGs2AhAETKHkq1WUt9F6B6V1Dt0s07B7IKec/4="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/mechanical-arduino-clock-131c5c_cover.jpg"
lang: "en"
likes: 2
passwordHash: "3c140a3375020080afdae80e0800eeb08b1ef8c69133fd12d9af96e3c5177594"
price: 2450
seoDescription: "Build a Mechanical Clock using Arduino uno and Servos to control clock hands movements on the dial."
tags:
  - "clocks"
  - "servos"
title: "นาฬิกา Arduino แบบกลไกสุดตึง! วัยรุ่นสายช่างต้องลอง"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/1G34E9KfGtE"
views: 16683