กลับไปหน้ารวมไฟล์
airgun-chronograph-f61ddb.md

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

และนี่คือผลงานที่เสร็จสมบูรณ์:

Measurement taken

หลักการทางวิศวกรรม

หัวใจของโปรเจคนี้คือการวัด "Time of Flight" (เวลาที่วัตถุใช้เดินทางในระยะทางที่กำหนด) เพื่อคำนวณความเร็วด้วยสูตรฟิสิกส์พื้นฐาน $v = s/t$

1. ระบบตรวจจับด้วยเซนเซอร์ (Optical Gate)

ดีไซน์นี้ใช้ Photodiode เป็นหลัก โดยแต่ละตัวจะไปกระตุ้นตัวเปรียบเทียบสัญญาณ LM339 เราใช้ Photodiode (แบบจีนราคาถูกๆ) 2 ตัวสำหรับเซนเซอร์ทั้งขาเข้าและขาออก โดยทำงานด้วยลอจิกแบบ Inclusive OR (หรือ) Photodiode แต่ละชุดจะถูกส่องสว่างด้วย LED อินฟราเรด 4 ดวง (รวม 8 ดวง) สร้างเป็นตาข่ายลำแสงแบบ 4x2 Beam Mesh การจัดวางแบบนี้ช่วยสร้างเครือข่ายลำแสงครอบคลุม เพื่อให้มั่นใจว่าแม้ลูกกระสุนจะผ่านแค่บางส่วนของลำแสงก็ยังตรวจจับได้อยู่

2. การประมวลผลสัญญาณด้วย LM339 Comparator

เมื่อมีความแตกต่างของแสงที่ Photodiode รับได้ มันจะส่งสัญญาณสูง (High) ไปยังขาอินพุตของ Arduino สัญญาณจาก Photodiode โดยทั่วไปเป็นสัญญาณอนาล็อกต่อเนื่อง การใช้ IC LM339 (Quad Differential Comparator) ช่วยปรับสภาพสัญญาณให้คมชัด:

  • ลอจิก Inclusive OR: Photodiode แต่ละคู่ทำงานด้วยลอจิก OR หมายความว่าถ้าเซนเซอร์ใดก็ได้ในชุดเดียวกันถูกบัง สัญญาณเอาต์พุตจะถูกส่งออกทันที
  • การปรับสภาพสัญญาณ: LM339 จะเปรียบเทียบแรงดันจาก Photodiode กับแรงดันอ้างอิงที่ตั้งค่าไว้ผ่านโพเทนชิออมิเตอร์ แล้วส่งสัญญาณดิจิทัล (High/Low) ที่คมชัดไปให้ Arduino เพื่อความแม่นยำในระดับไมโครวินาที

Board and sensor assembly

ลอจิกของซอฟต์แวร์ (Code Logic)

โปรแกรมบน Arduino ถูกเขียนโดยเน้นที่ความเร็วในการตอบสนองเป็นหลัก:

  1. รอเริ่มต้น: ระบบจะรอสัญญาณอินเตอร์รัปต์หรือการเปลี่ยนสถานะบนขาอินพุตแรก เมื่อลูกกระสุนผ่านเซนเซอร์แรก ฟังก์ชัน micros() จะถูกเรียกทันทีเพื่อบันทึกเวลาเริ่มต้น
  2. รอสิ้นสุด: ระบบจะรอสัญญาณจากเซนเซอร์ที่สอง เมื่อลูกกระสุนผ่านจุดนี้ เวลาปัจจุบันจะถูกบันทึกอีกครั้ง
  3. คำนวณ: ผลต่างของเวลา ($\Delta t$) จะถูกนำไปหารด้วยระยะทางคงที่ระหว่างเซนเซอร์ ผลลัพธ์ที่ได้คือความเร็ว ซึ่งสามารถแปลงเป็นเมตรต่อวินาที (m/s) หรือฟุตต่อวินาที (fps) ตามที่ต้องการได้
  4. แสดงผล: ผลลัพธ์จะแสดงบนหน้าจอ LCD เพื่อให้ผู้ใช้เห็นค่าทันที

ความท้าทายและการปรับเทียบ

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

ลองดูกันได้เลยน้องๆ ถ้าสนใจอยากทำอะไรแบบนี้ขึ้นมาบ้าง หรือมีปัญหาอะไรเกี่ยวกับการเลือกชิ้นส่วนและการจัดเรียงชั้นแสงอินฟราเรด พี่ยินดีให้คำปรึกษา! สู้งานนะน้อง

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

apps:
  - "1x Arduino IDE"
author: "Pepisan"
category: "Screens & Displays"
components:
  - "1x Standard LCD - 16x2 White on Blue"
  - "1x Arduino UNO"
  - "1x Mastech MS8217 Autorange Digital Multimeter"
  - "1x Soldering iron (generic)"
  - "1x Photodiode, 45 °"
description: "โปรเจควัดความเร็วกระสุนปืนลมด้วย Arduino ง่ายๆ แต่ผลลัพธ์เทพๆ มาลองทำเซนเซอร์วัดความเร็วกัน งานง่ายแต่หล่อจัดไป!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX18qQ3XTvRIacu+ndkjJlchNZb/pPuCxxQhBGDqzXnIsQpSVDr8k7rabKRPvtn6prtP7r42nls73Ot9iz+JRPFFbAw7MpfYNBiI="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/airgun-chronograph-f61ddb_cover.jpg"
lang: "en"
likes: 3
passwordHash: "51399c07f599ad3f8ea9c9c93e7727b2391542f4cb14a8c1374acf0263a44b13"
price: 1120
seoDescription: "Build an Airgun chronograph with Arduino for accurate Projectile speed measurement. A simple DIY guide for makers."
tags:
  - "chronograph"
  - "airgun"
  - "chrono"
  - "projetile"
  - "speed"
  - "measurement"
  - "hobby"
  - "photography"
title: "Airgun Chronograph วัดความเร็วกระสุนแบบตึงๆ!"
tools: []
videoLinks: []
views: 11865