มาทำ Feature: Altitude Control ให้ Drone ของเรากันเถอะ
….สวัสดีครับกลับมาพบกันอีกแล้ว บทความนี้เรามาลองเพิ่มความสามารถให้ Drone ของเราสามารถรักษาความสูงในการบินอัตโนมัติ(Altitude Control)ด้วย Ultrasonic Distance Sensor(hc-sr04+) กันครับ โดยคนที่เป็นคนทำการทดสอบ ทดลอง คือน้อง”ต๋อง”(Apinun Boontong)นะครับ เรามาดูกันว่าเรามีระบบการควบคุมอย่างไร
….Drone ในท้องตลาดปัจจุบันการควบคุมการบินรักษาระดับของ Drone ยังอาศัยผู้เล่นเป็นรักษาระดับความสูงแบบ manual อยู่ โดยอาศัยให้ผู้เล่นมองดูแล้วเป็นคน เร่ง-เบา มอเตอร์เพื่อเพิ่มหรือลงแรงยกของ Drone
เราจึงพยายามเพิ่มความสามารถให้ Drone สามารถรักษาระดับความสูงด้วยตัวเอง โดยใช้ Ultrasonic Distance Sensor(hc-sr04+) ติดไว้ที่ลำตัว Drone เพื่อให้ Drone ทราบความสูงของตัวเอง ขณะที่บินอยู่
ทำให้จากเดิมผู้เล่นจะต้องเป็นคนควบคุมความสูงจากการ “เร่ง-เบา” มอเตอร์ด้วยต้นเอง เปลี่ยนมาเป็นผู้เล่นกำหนดความสูงที่ต้องการให้ Drone รักษาระดับอยู่แทน จากนั้น Drone ใช้ตัวควบคุบแบบ PID คอยรักษาระดับความสูงในการบินอัตโนมัติ โดยมีหลักการทำงานดังนี้
คือ เราสร้างตัวควบคุมแบบ PID มา 1 ตัวเพื่อทำงานแทนเรา แล้วดักสัญญานคันเร่ง(throttle)เดิม แล้วมาใช้เป็นเป็นความสูงที่ต้องการให้โดรนบิน(Reference signal) แล้วอ่านสัญญาน feedback อ่านระดับความสูงจริงจาก Ultrasonic Distance Sensor เพื่อหาค่า Error ของระดับความสูง จากนั้นให้ตัวควบคุมแบบ PID เป็นคนสั่ง “เร่ง-เบา” มอเตอร์แทนผู้เล่น
การ Tuning ค่า Gain ของ PID เพื่อให้ง่าย น้องต๋อง ได้ขึงเชือกโดรนให้สามารถเครื่อนที่ได้เฉพาะด้าน ขึ้น-ลง เพื่อให้ง่ายต่อการ Tuning ค่า Gain ของ PID
จากนั้นทำการ Tuning ค่า Gain ของ PID ผ่าน App remote ทำให้สะดวกไม่ต้องเสียบสายโปรแกรม หลายรอบ
เพียงเท่านี้ Drone ก็จะสามารถรักษาระดับความสูงด้วยตัวเองได้แล้วครับ
ตัวอย่าง Source Code ของน้องต๋อง
*** (หมายเหตุ จากการ Ultrasonic Distance Sensor(hr-04+) ทำงานที่ 3.3V ระดับความสูงที่ยังสามารถทำงานได้ดีจะอยู่ไม่เกิน 1 m และ ลักษณะของพื้นผิวมีผลต่อที่ได้จากเซนเซอร์ด้วยครับ)***