กลับไปหน้ารวมไฟล์
rotating-platform-11d7a0.md

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

ลงลึกกันแบบช่างๆ

โปรเจกต์นี้คือการเรียนรู้อัดแน่นในเรื่อง การประหยัดต้นทุนในระบบฝังตัว, การโปรแกรมชิป AVR และ การขับด้วยวงจร Darling-ton-pair

  • ไมโครคอนโทรลเลอร์แบบมินิมอล (ATtiny13A):
    • ข้อจำกัดของทรัพยากร: ATtiny13A มีแฟลชเมมโมรีแค่ 1KB และ SRAM แค่ 64 ไบต์เท่านั้น นี่บังคับให้โค้ดต้องถูกออปติไมซ์สุดๆ ด้วยการตัดบูตโหลดดและไลบรารีมาตรฐานของ Arduino ออกไป เฟิร์มแวร์จะสื่อสารกับรีจิสเตอร์ I/O โดยตรงเพื่อความเร็วในการทำงานสูงสุดและใช้พื้นที่น้อยที่สุด
    • สถาปัตยกรรม: ทำงานที่ความถี่ 1.2MHz ถึง 9.6MHz ซึ่งให้สัญญาณนาฬิกาพอที่จะจัดการลอจิกการสลับเฟสแบบ 4-สเต็ป หรือ 8-สเต็ปที่จำเป็นสำหรับสเต็ปเปอร์มอเตอร์
  • ลอจิกการขับสเต็ปเปอร์มอเตอร์ (ULN2003):
    • ลำดับการจ่ายไฟ (Phase Sequencing): เพื่อให้เพลาหมุน ATtiny จะจ่ายไฟให้ขดลวดของมอเตอร์ตามลำดับที่กำหนด (เช่น A -> AB -> B -> BC...) โดย ULN2003 Darlington Array ทำหน้าที่เป็นสวิตช์อิเล็กทรอนิกส์ ช่วยให้ขาพินของ ATtiny ที่จ่ายไฟต่ำสามารถควบคุมขดลวดของมอเตอร์ที่กินกระแสสูง (5V/500mA) ได้
    • การป้องกันแรงดันย้อนกลับ (Inductive Kickback Protection): ULN2003 มี "ไดโอดหน่วง (Clamping Diodes)" ในตัว ซึ่งจะระบายแรงดันย้อนกลับ (back-EMF) ที่เกิดขึ้นเมื่อขดลวดมอเตอร์ถูกตัดไฟออกอย่างปลอดภัย ป้องกันไมโครคอนโทรลเลอร์ที่บอบบางจากสไปก์แรงดัน
  • การปรับความเร็วด้วย ADC:
    • ATtiny อ่านค่าจาก โพเทนชิโอมิเตอร์ 10k โอห์ม และนำไปใช้สร้างดีเลย์ในโค้ดเพื่อเร่งหรือลดความเร็วการหมุน เฟิร์มแวร์จะแมปค่าอะนาล็อก 10-บิต (0-1023) ไปเป็นตัวแปรใน delayMicroseconds() ทำให้เราควบคุมรอบต่อนาที (RPM) ได้แบบเชิงเส้น เหมาะสำหรับการถ่ายแบบ "สโลว์แพน" แบบภาพยนตร์ หรือการเปลี่ยนมุมแบบ "ความเร็วสูง"

วงจรอิเล็กทรอนิกส์หน้าตาเป็นแบบนี้:

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

  • ความกลมของแท่นหมุน (Turntable Concentricity): ตัวแท่นพี่พิมพ์ด้วยเครื่อง Anet A8 ของพี่เองและถอดออกได้ โครงสร้างมีจุดยึดกลางที่ออกแบบมาให้พอดีกับเพลาราบของมอเตอร์ 28BYJ-48 เพื่อลดการ "สั่น" หรือความเบี้ยวระหว่างการหมุนให้น้อยที่สุด—สำคัญมากสำหรับการถ่ายภาพมาโคร
* **ขั้นตอนการโปรแกรมด้วย ISP (ใช้ Arduino เป็นโปรแกรมเมอร์):** เพื่อโปรแกรม ATtiny พี่ใช้แผนภาพด้านล่างและ Arduino เนื่องจาก ATtiny ไม่มีอินเทอร์เฟซ USB มันจึงต้องถูกโปรแกรมผ่าน **Serial Peripheral Interface (SPI)** โดยใช้ Arduino UNO ที่รันสเก็ตช์ `ArduinoISP` อยู่ ตัว UNO ทำหน้าที่เป็นสะพาน แปลงเฮกซ์โค้ดที่คอมไพล์แล้วจากพีซีให้เป็นสัญญาณ MOSI/MISO ที่ ATtiny ต้องการเพื่ออัปเดตความจำของมัน
หลังจากนั้นน้องก็เขียนโปรแกรม Arduino แบบปกติได้เลย ไม่ต้องเปลี่ยน syntax อะไรทั้งนั้น สิ่งเดียวที่ต้องจำไว้คือ น้องมีพื้นที่แค่ 1KB สำหรับโปรแกรมของน้องนะ ระวังให้ดี!

แผนผังขาพิน เผื่อต้องใช้:

  • การรักษาเสถียรภาพไฟและประกอบแบบโมดูลาร์: ในเอกสารประกอบ พี่ได้บันทึกถึงอันตรายจากแรงดันเกินไว้แล้ว เวอร์ชันที่ปรับปรุงของสิ่งนี้ควรมี ตัวแปลงแรงดันแบบสเต็ปดาวน์ (Buck Converter) 5V เพื่อให้แน่ใจว่ามอเตอร์และ MCU ได้รับแรงดันที่คงที่ ป้องกันการ "ข้ามสเต็ป" ของมอเตอร์ที่เกิดขึ้นเมื่อไฟตก โดยการใช้ฝาด้านบนที่พิมพ์ 3D มาและถอดเปลี่ยนได้ แท่นนี้จึงสามารถสลับเพื่อใช้กับเส้นผ่านศูนย์กลางหรืออุปกรณ์ยึดจับที่ต่างกันได้ ทำให้มันเป็นสถานีอเนกประสงค์สำหรับการรีวิวทุกอย่าง ตั้งแต่ชิ้นส่วนอิเล็กทรอนิกส์ชิ้นเล็กๆ ไปจนถึงอุปกรณ์ขนาดใหญ่ที่ถือในมือได้

  • ประโยชน์ในการใช้งานจริง: นอกจากงานถ่ายภาพแล้ว การหมุนที่แม่นยำแบบนี้คือหัวใจของ แท่นสแกน 3D (3D scanning rigs) และ ระบบอัตโนมัติสำหรับจัดฉาก (scenery automation) ในงานแสดงโมเดลขนาดเล็ก นี่แหละที่พิสูจน์ว่าแม้แต่ไมโครคอนโทรลเลอร์ราคา 1 ดอลลาร์ ก็ขับเคลื่อนผลงานที่ได้แรงบันดาลใจจากงานอุตสาหกรรมได้


อัพเกรดการนำเสนอผลงานคุณ: ควบคุมการเคลื่อนไหวแบบแม่นยำในแพ็คเกจกะทัดรัด ราคาเบาๆ

PS: พี่ใส่แรงดันให้วงจรมันแรงไปนิดนึง ควรเพิ่มบัคคอนเวอร์เตอร์ (buck converter) เข้าไปด้วยจะดีมาก... ระวังอย่าให้ชิปมันช็อตนะตัวนี้!

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

apps:
  - "1x Arduino IDE"
author: "mPelectronic"
category: "Home & Automation"
components:
  - "1x ATtiny13"
  - "1x 3D Printer (generic)"
  - "1x Arduino UNO"
  - "1x Soldering iron (generic)"
  - "1x Stepper motor"
description: "แพลตฟอร์มหมุนพกพาได้ ขนาดกะทัดรัด เอาไว้รีวิวของเทพๆ หรือจะเอาไปประยุกต์ทำอะไรตึงๆ ก็จัดไปได้หมด!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/3be6e20b-abbd-495c-8639-7673eb6d968f.ino"
encryptedPayload: "U2FsdGVkX19jec42mz0i099Iaicx8YnCZGZ0C0PmOile6hvDxkLErNHzPmjZZi9za2ICFy4bhX6Wau2j/3IkiN96FYkUouCjTabLhwQRcOo="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/rotating-platform-11d7a0_cover.jpg"
lang: "en"
likes: 11
passwordHash: "98a7602531439948d3b80690e30ba9bb233fa3be2a0f06123ad588840462904f"
price: 699
seoDescription: "Build a small, portable rotating platform using Arduino. Perfect for product reviews and 360-degree photography."
tags:
  - "diy"
  - "arduino"
  - "toys"
  - "rotation"
title: "แพลตฟอร์มหมุนติ้วๆ งานง่ายแต่หล่อ!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/0jr0iJ955e4"
views: 19584