สวัสดีครับทุกคน! ผมใช้เวลาหลายเดือนในการพัฒนาระบบควบคุมเวกเตอร์แรงขับ (TVC) ประสิทธิภาพสูงสำหรับจรวดโมเดลและชุมชนจรวดพลังสูง! ผมต้องทำการปรับปรุงและทดลองซ้ำหลายสิบครั้งกว่าที่การทำงานของระบบขับเคลื่อนจะราบรื่น กรุณารายงานปัญหาและข้อเสนอแนะเพื่อที่เราจะได้พัฒนาการออกแบบนี้ให้ดียิ่งขึ้นไปอีก
โครงการนี้คือ ระบบนำทางจรวดแบบควบคุมเวกเตอร์แรงขับ (Delta Thrust Vector Control - TVC) ซึ่งไม่ใช้ครีบช่วยทรงตัวเลย! Arduino ทำหน้าที่เป็นคอมพิวเตอร์การบินแบบรวมศูนย์ (monolithic flight computer) โดยสั่งให้เซอร์โวขนาดใหญ่หมุนหัวฉีดเครื่องยนต์จรวดที่กำลังเผาไหม้อย่างรุนแรงหลายร้อยครั้งต่อวินาที เพื่อรักษาสมดุลของยานให้ตั้งตรงอยู่บนเสาไฟได้อย่างแม่นยำ เหมือนกับจรวด SpaceX Falcon 9!
การนำทางด้วยความเฉื่อย (The MPU6050 Matrix)
Arduino (ขา A4/A5) ถูกต่อเข้ากับ ไจโรสโคป 6 แกน MPU6050
- เนื่องจากจรวดสั่นสะเทือนอย่างรุนแรง ข้อมูลจากมาตรความเร่ง (Accelerometer) ดิบจึงไม่สามารถใช้ได้
- Arduino ต้องรันอัลกอริธึมที่ซับซ้อนมากภายในฟังก์ชัน
loop()เรียกว่า ฟิลเตอร์คาลแมน (Kalman Filter) หรือ คอมพลีเมนทารีฟิลเตอร์ (Complementary Filter) - การคำนวณจะรวมข้อมูลอัตราการหมุนจากไจโรสโคป
(องศาต่อวินาที)เข้ากับเวกเตอร์ของแรงโน้มถ่วงทันที เพื่อส่งออกค่าที่บอกว่าจรวดเอียงไปจากแนวตั้งเท่าใด เช่น:LaunchVectorOffCourse = 14.5 Degrees Pitch!
การทำงานของกิมบอลด้วย PID
เครื่องยนต์จรวดถูกติดตั้งอยู่ภายในวงแหวนหมุนได้ที่พิมพ์จากเครื่องพิมพ์ 3 มิติสองวง (กิมบอล) ซึ่งเชื่อมต่อกับ เซอร์โวขนาดเล็กเกียร์โลหะ SG90 สองตัว (แกน X และ แกน Y)
- ฟังก์ชัน
loop()ใช้ แคลคูลัส PID อย่างเข้มข้น
myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
// Pitch correction calculation!
servoX.write(90 + Output);
- หากจรวดเอียงไปทางทิศตะวันออก 10 องศาอย่างกะทันหันเนื่องจากลมกระโชก Arduino จะสั่งให้ PID ขยับหัวฉีดเครื่องยนต์จรวดไปทางทิศตะวันตก 15 องศาทันที!
- แรงขับที่เกิดขึ้นจะผลักส่วนท้ายของตัวยานให้กลับมาอยู่ใต้ส่วนหัวอีกครั้ง ทำให้การเอียงถูกยกเลิกอย่างสมบูรณ์ภายในเวลาเพียง 10 มิลลิวินาที!
ระบบคอมพิวเตอร์การบิน
- Arduino Nano หรือ Teensy 4.0 (ในที่นี้แนะนำให้ใช้ Teensy อย่างมากเหนือกว่า Uno จรวดที่เคลื่อนที่ด้วยความเร็ว 300 ไมล์ต่อชั่วโมงต้องการโปรเซสเซอร์ความเร็ว 600MHz เพื่อประมวลผลลูป PID หลายพันครั้งต่อวินาทีโดยไม่มีความล่าช้า!)
- โมดูล IMU 6 แกน MPU6050 (ต้องติดตั้งให้อยู่ตรงกลางสมบูรณ์แบบทางกายภาพบนจุดศูนย์ถ่วงของจรวดตามแกน 3 มิติ!)
- เซอร์โวมอเตอร์เกียร์โลหะขนาดเล็ก MG90S จำนวน 2 ตัว (ห้ามใช้เกียร์พลาสติกเด็ดขาด เพราะแรงขับเครื่องยนต์ 50 ปอนด์จะฉีกเกียร์ออกจากกันในเวลา 0.1 วินาที!)
- โมดูลบันทึกข้อมูลลงการ์ด SD แบบ SPI (มีความสำคัญอย่างยิ่งสำหรับการบันทึกตัวแปรเทเลเมทรีที่เปลี่ยนแปลงรวดเร็วที่ความถี่ 100Hz เพื่อให้นักวิศวกรรมสามารถวิเคราะห์ข้อมูลเส้นโค้งการบินหลังจากร่มชูชีพลงจอดแล้ว)