กลับมาอัพเดทกันอีกครั้งหลังจากห่างหายกันไปนานนะครับ แต่ที่หายไปนานนี่ไม่ใช่เพราะอะไร แต่รอเงินทุนเพื่อซื้ออุปกรณ์มาทำอัลกอริธึ่มต่อ
หลังจากหัวข้อล่าสุดที่ผมโพสไป คือการที่เราสามารถส่งข้อมูล PWM หรือ PPM ผ่าน Arduino เข้าสู่ CC3D หรือ FC แล้วสั่งมอเตอร์ให้หมุนได้แล้ว
ต่อมาผมได้คิดอัลกอริธึ่มเพื่อที่จะทำโหมด Altitude Hold ให้ได้ ผลก็คือติดปัญหา 2-3 อย่างที่น่าปวดหัวเอามากๆ หลักๆเลยก็คือ
ปัญหาตัวเซนเซอร์ที่ใช้ในการวัดระดับความสูงของโดรน (น่าจะเป็นเพราะว่าเซนเซอร์ made in china แน่ๆ 555) โดยในโปรเจคนี้ผมใช้ Digital Barometer (Baro) หรือเซนเซอร์วัดความดันอากาศ เพื่อวัดค่าความดันอากาศ ณ จุดที่โดรนลอยอยู่ แล้วแปลงเป็นหน่วยเมตร เพื่อให้ได้ Altitude (ระดับความสูง) ที่ชัดเจนออกมา ซึ่งความสูงที่ได้เมื่อวางตัวเซนเซอร์ไว้นิ่งๆ นั้น ไม่ได้มีสิ่งที่เรียกว่าความแม่นยำอยู่เลยครับ 5555 วางไว้เฉยๆ
ซักพักระดับความสูงเพิ่มขึ้นเป็นเมตรสองเมตร หรือไม่ก็ลดลงเป็นเมตรสองเมตร (ไม่ได้เซฟรูปเก็บไว้อวดซะด้วยสิ)
ผมพยายามหาวิธีแก้ไขปัญหาที่ว่านี้โดยการตั้งสมมติฐานต่างๆนานา เพราะในความเป็นจริงแล้วระดับความสูงมันไม่น่าจะคลาดเคลื่อนขนาดนี้จริงไหมครับ
ออกตัวไว้ก่อนว่าความจริงผมไม่ชอบเขียนโปรแกรมเอง แต่ผมเป็นประเภทชอบ Debug หรือแก้โปรแกรมคนอื่นมากกว่า (พูดง่ายๆคือก้อปโค้ดของคนอื่นมาใช้นั่นแล 5555)
โอเค เริ่มจากการเพิ่มโค้ด Low Pass Filter (LPF) เข้าไปที่ Altitude.. ลองเปลี่ยนโค้ดที่ใช้ในการอ่านค่า parameter ในตัวเซนเซอร์.. ลองซื้อเซนเซอร์อีกรุ่นมาใช้.. ก็ยังไม่หาย จนถึงวันนี้ Altitude ที่วัดได้ในขณะที่วางเซนเซอร์ไว้เฉยๆ
มีความคลาดเคลื่อนอยู่ประมาณ 20 cm ผมก็เลยเอาวะ คงใกล้เคียงสุดเท่านี้แหละ ประกอบมันเข้ากับเฟรมโดรนเลยก็แล้วกัน
เอาเป็นว่าในส่วนของโหมด Altitude Hold นั้นผมยังทำไม่เสร็จ วันนี้ (อาทิตย์ที่ 3 กรกฎาคม 59) เลยแค่ยัดบอร์ดกับเซนเซอร์ใส่เฟรมโดรนแล้วลองขึ้นบินดูก่อน
ผลคือผ่านครับ (ไม่ได้อัดคลิปมา เพราะชาร์จมือถือไว้บนห้องง่ะ)
to be continued.. สู้ต่อไปทาเคชิ!!!
ปล. หากท่านใดอยากจะแนะนำอะไรผม ก็รบกวนเชิญคอมเม้นได้เลยนะครับ :)