RPM Measurement by Arduino
การใช้ Arduino
วัดความเร็วรอบมอเตอร์นั้นสามารถใช้หลักการวัดได้หลายหลักการด้วยกันครับ
วันนี้ผมมาเสนออีกหลักการหนึ่ง นั่นคือการใช้ Interrupt ควบคู่กับฐานเวลาในบอร์ด
Arduino กัน ซึ่งเป็นวิธีการที่ง่าย และก็ใช้งานได้ดีมากเลยทีเดียวครับ
เรามาดูวงจรกันครับ
ภาพ วงจรที่ต่อทดลองวัดความเร็วรอบมอเตอร์ด้วย Arduino
จะเห็นว่าวงจรผมใช้งานขา
2 เป็น Input เพื่อรับพัลส์จาก Encoder ซึ่งผมกำหนดเอาไว้ที่ 15 PPR นั่นแสดงว่าเมื่อมอเตอร์หมุนไป
1 รอบจะได้พัลส์ออกมา 15 พัลส์นั่นเอง ส่วนเหตุผลที่เลือกขา 2 เป็นขา Input
นั้นเนื่องจกขา
2 ของ Arduino นั้นมีคุณสมบัติเป็นขา Interrupt Chanel 0
นั่นเองครับ
เพราะเราต้องการคุณสมบัติของขา Interrupt มาใช้งาน จึงเลือกใช้ขานี้ครับ
โค้ดโปรแกรมที่ใช้งานใน Arduino UNO
จากโค้ดจะเห็นว่าจะใช้
Interrupt ของขา 2 ในขอบขาลง Falling ซึ่งเมื่อพัลส์มาลูกแรกจะเก็บค่า Timer เริ่มต้นเอาไว้โดยการอ่านค่าจากฟังก์ชัน
millis() ซึ่งจะคืนค่า milliseconds มาให้ ซึ่งในที่นี้ผมจะใช้นำมาหาค่า Period
ของพัลส์ที่ออกมาจาก
encoder โดยเก็บค่า Period ไว้ที่ตัวแปร dt ซึ่งมีหน่วยเวลาเป็น
milliseconds
หากเราจะนำมาคำนวณเป็น
RPM กชก็สามารถคำนวณได้จาก
RPM
= 60 / (Period Time * PPR)
60
คือค่าวินาที
Period
Time คือค่า Period ที่อ่านจากพัลส์ที่ออกมาจาก Encoder
PPR
คือค่าจำนวนพัลส์ต่อรอบของ
Encoder
ในโค้ดจะเห็นว่าใช้ค่า 60000 milliseconds
เนื่องจาก
dt มีหน่วยเป็น millisecond
ผลการทำงานของโปรแกรม
ขอบคุณไฟล์ Library Arduino for Proteuse จากเว็ปของครูประภาส สุวรรณเพชร
http://www.praphas.com/index.php/2008-11-03-14-25-25/51-arduino/89-arduino-4-arduino-proteus
ไฟล์โปรแกรม Proteus และ Arduino: Download
หากมีปัญหาหรือว่าต้องการสอบถามอะไรรบกวน Email มาที่ mr.ozuke@gmail.com นะครับ
ขอบคุณครับ
วิทวัส สมพงษ์