กลับไปหน้ารวมไฟล์
arduino-camshaft-measurement-tool-ba8e40.md

เครื่องมือวัดโปรไฟล์ลิ้นไอ้ (Camshaft) แบบอัตโนมัติ

เมื่อ 30 ปีก่อน พี่เองก็เคยนั่งกระดาษกราฟ หน้าปัดวัด (Dial Indicator) และล้อวัดองศา (Degree Wheel) อยู่หลายวันเพื่อพล็อตโปรไฟล์ลิ้นไอ้สำหรับเครื่องยนต์แข่ง หลังจากที่ได้เล่นกับสเต็ปเปอร์มอเตอร์และไมโครคอนโทรลเลอร์มาพอสมควร ก็เลยคิดว่า "เฮ้ย ทำไมไม่สร้างเครื่องมือที่ทำมันให้อัตโนมัติซะเลยล่ะ?"

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

พี่มีวิดีโอการทำงานมาให้ดูกัน

โปรโตคอลลับของหน้าปัดวัดดิจิทัล

การสร้างเครื่องยนต์แข่งต้องวัดลิ้นไอ้ให้ละเอียดถึงระดับหนึ่งในหมื่นของนิ้ว ไมโครมิเตอร์ธรรมดาไม่สามารถแมปเส้นโค้งที่กวาดไปมาได้ Arduino Camshaft Measurement Tool ตัวนี้จะดักจับข้อมูลการเคลื่อนที่ (displacement telemetry) จากหน้าปัดวัดดิจิทัลแบบเรียลไทม์ แล้วพล็อตกราฟการยก (lift graph) แบบ 360 องศาที่แม่นยำสุดๆ ลงบนแล็ปท็อปของน้องโดยตรงเลย!

หน้าปัดวัดดิจิทัลราคาถูกๆ ประมาณ 25 ดอลลาร์ ดูเหมือนจะเป็นอุปกรณ์สแตนด์อโลนใช่ไหม? แต่จริงๆ แล้วใต้แผ่นพลาสติกเล็กๆ นั้นมีแผ่นโลหะจิ๋ว 4 จุดซ่อนอยู่ (VCC, GND, CLK, DATA)

  1. กับดักระดับแรงดัน (Logic Level Trap): หน้าปัดวัดทั่วไปพวกนี้ทำงานด้วยแบตเตอรี่กระดุม 1.5V ขณะที่ Arduino ใช้ 5V ถ้าน้องต่อตรงๆ กันละก็ Arduino จะส่งแรงดัน 5V เข้าไปทันที แล้วหน้าปัดวัดน้องก็... จบ! (ห้ามช็อตนะตัวนี้)
  2. น้องต้องใช้ วงจรลดระดับแรงดันด้วยทรานซิสเตอร์ NPN (NPN Transistor Level Shifter) หรือโมดูลแปลงระดับลอจิกแบบ 4 ช่อง 3.3V-to-5V โดยเฉพาะ
  3. ข้อมูลไม่ได้ส่งออกมาเรื่อยๆ นะ มันส่งเป็นระเบิด (bursts) หน้าปัดวัดเป็น "เจ้านาย (Master)" มันจะส่งสัญญาณนาฬิกา (CLK) ออกมาทุกๆ ไม่กี่มิลลิวินาที ตามด้วยข้อมูลไบนารีดิบๆ 24 บิต (DATA)

การดักจับและพล็อตข้อมูลสตริง 24 บิต

Arduino ต้องทำตัวเป็นผู้ฟังแบบพาสซีฟและทำหน้าที่เป็นตัวดักจับข้อมูลความเร็วสูง

  • attachInterrupt(digitalPinToInterrupt(CLOCK_PIN), readBit, FALLING);
  • ทุกครั้งที่สัญญาณนาฬิกาตก (clock dips) Arduino จะอ่านสถานะของพิน DATA ทันที (1 หรือ 0)
  • จากนั้นมันจะเลื่อนข้อมูล (shift) นี้เข้าไปในตัวแปร long จำนวนมหึมา ซึ่งแทนค่าหน่วยนิ้วหรือมิลลิเมตร
  • ขั้นตอนการสร้างกราฟ: Arduino จะต่อเข้ากับ Rotary Encoder ที่ติดอยู่กับแกนกลางของลิ้นไอ้ที่กำลังหมุน
  • ที่ 0 องศา การยก (lift) คือ 0.0000"
  • ที่ 90 องศา การยกอาจเป็น 0.4560"
  • Arduino จะส่งตัวเลขทั้งคู่นี้ (90, 0.4560) ผ่าน Serial Monitor ไปยัง PC เพื่อพล็อต "เส้นโค้งโปรไฟล์" ของลิ้นไอ้โลหะชิ้นใหญ่ได้เลย!

อุปกรณ์ที่ต้องจัดให้พร้อม (สู้งานนะน้อง)

  • Arduino Uno/Nano (พอสำหรับดักจับโปรโตคอลมาตรฐานของหน้าปัดวัด)
  • หน้าปัดวัดดิจิทัลยี่ห้อ Harbor Freight หรือทั่วไป (ต้องมีพอร์ตลับให้เข้าถึงได้)
  • โมดูลแปลงระดับลอจิกแบบสองทาง 3.3V ไป 5V (ข้อนี้ห้ามต่อรอง! ไม่งั้นเครื่องมือพังแน่)
  • Rotary Encoder แบบออปติคัลความละเอียดสูง (เพื่อติดตามองศาการหมุนของลิ้นไอ้)
  • ขาตั้งวัดแบบแม่เหล็กและหนักมาก (ต้องแข็งแรงมั่นคงสุดๆ การสั่นไหวแม้แต่นิดเดียวจะทำลายค่าการอ่านระดับไมโครได้)

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

apps:
  - "1x Spreadsheet for creating the chart"
author: "varmint243"
category: "Tools & Equipment"
components:
  - "1x Nema 17 dual shaft stepper motor"
  - "1x Solid state 5v relay board"
  - "1x Basic hand tools"
  - "1x Stepper motor controller"
  - "1x Optical end stop"
  - "1x Aluminum extrusion and brackets"
  - "1x 3D printed parts and brackets"
  - "1x SPI to HID controller for indicator"
  - "1x 3D Printer (generic)"
  - "1x Incremental rotary encoder (non essential)"
  - "1x Arduino UNO"
  - "1x Digital Dial indicator with SPI interface"
  - "1x Breadboard (generic)"
  - "1x Shaft couplers (modified to remove play)"
description: "Precision automotive engineering! Repurpose industrial digital dial indicators by intercepting their hidden SPI-level data bursts to map out exact micro-inch racing camshaft lobe profiles."
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX1/M3NtqYH3lkRXXNiXPD9vqScaBrGzWtuZ7UY0Zr12BxpiUCZMNzlfZhwjdKeAWK6UL/QmQBXKc/y3zQp9wVZmjdOX9aET30/CU+qHUmPwFVx4Z+GS8ttM5"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/arduino-camshaft-measurement-tool-ba8e40_cover.jpg"
lang: "en"
likes: 10
passwordHash: "6395e4feced4ec482f8a60566f7bccc7ab0a82dbd06556bab321bcd302902d26"
price: 2450
seoDescription: "Build an Arduino Camshaft Measurement Tool for precision engine tuning and automotive engineering projects."
tags:
  - "cars"
  - "passenger vehicles"
  - "data collection"
title: "อุปกรณ์วัดแคมชาฟต์ด้วย Arduino งานง่ายแต่หล่อ!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/oWigCN4UOSY"
views: 12841