Sub-Orbital Avionics: Delta Thrust Vector Control v8
ว่าไงทุกคน! ผ่านมาแล้วครึ่งปีนับตั้งแต่ที่พี่ปล่อยระบบ Delta Thrust Vector Control (TVC) ตัวแรกออกมา! ขอบคุณความช่วยเหลือจากทุกคนในชุมชนมากๆ ทำให้ตัว TVC mount วิวัฒนาการมาแล้วอีกสามรุ่น! มาดูกันดีกว่าว่ามันผ่านอะไรมาแล้วบ้าง:
- V1: ตัวแรกสุด ออกแบบมั่วๆ แบบ 1 แกน แต่มันก็พอใช้ได้อยู่นะ (แบบกู่ไม่กลับ)
- V2: ดูดีขึ้น แข็งแรงขึ้นเยอะ
- V3: ปรับปรุงจาก V2 ให้ดีขึ้นอีก
- V4: เป็นตัวแรกที่มี outer gimbal สำหรับควบคุม 2 แกน จริงจังแล้ว!
- V5: เป็นตัวแรกที่พี่คิดว่า "โอเค นี่แหละ เอาไปเปิดซอร์สได้แล้ว"
- V6: เพิ่ม linkage stoppers เข้าไปให้ความแม่นยำพุ่งปรี๊ด
- V7: ทำให้ V6 แข็งแรงขึ้นแต่เบาลง (ลดน้ำหนักแบบเด็กช่าง)
- V8: เพิ่มความสามารถให้รองรับเซอร์โว MG-90S และ MG-90D ด้วย! จัดไปวัยรุ่น!
ขอบคุณสำหรับการสนับสนุนล่าสุดทั้งหมดเลยนะ! เร็วๆ นี้ไปบินกันให้สุดเหวี่ยง!
ปกติจรวดโมเดลมันจะบินตรงได้ก็เพราะมีครีบพลาสติกธรรมดาๆ นั่นแหละ ถ้าจรวดหนักเกินหรือเครื่องยนต์ทำงานไม่สม่ำเสมอ (Engine Surge) ก็เตรียมตัวเก็บชิ้นส่วนได้เลย ระบบนำวิถี Delta Thrust Vector Control (TVC) นี่ทิ้งครีบไปเลยจ้า! เราใช้ Arduino เป็น Flight Computer ตัวเดียวเดี่ยว (Monolithic) คอยสั่งให้เซอร์โวตัวเบิ้มๆ ปั่นหัวจรวดที่กำลังลุกเป็นไฟอยู่เป็นร้อยๆ ครั้งต่อวินาที เพื่อให้จรวดทรงตัวอยู่บนเสาไฟได้เป๊ะๆ แบบ SpaceX Falcon 9 เลย! สู้งานนะน้อง!
การนำทางด้วยความเฉื่อย (The MPU6050 Matrix)
Arduino (ขา A4/A5) ของเราต่อเข้ากับ MPU6050 6-Axis Gyroscope ตัวเจ๋ง
- เพราะจรวดมันสั่นปึกๆ ข้อมูลจาก accelerometer ดิบๆ เลยใช้การไม่ได้เลย
- Arduino ต้องรันอัลกอริทึมสุดโหดที่เรียกว่า Kalman Filter หรือ Complementary Filter ภายใน
loop()ให้ได้ - คณิตศาสตร์ขั้นเทพจะผสานข้อมูลอัตราการหมุนจากไจโร
(องศาต่อวินาที)กับเวกเตอร์แรงโน้มถ่วงทันที แล้วส่งผลลัพธ์ออกมาว่าจรวดเอียงไปเท่าไหร่:LaunchVectorOffCourse = 14.5 Degrees Pitch!(จัดไปวัยรุ่น!)
การทำงานของกิมบอล PID
เครื่องยนต์จรวดของเราติดตั้งอยู่ภายในวงแหวน 3D พริ้นท์สองวงที่หมุนได้ (กิมบอลนั่นแหละ) ซึ่งเชื่อมกับ เซอร์โวมอเตอร์เกียร์โลหะ SG90 (แกน X และ แกน Y)
loop()จะใช้ PID Calculus สุดเข้มข้น
myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
// คำนวณแก้ไขมุม Pitch!
servoX.write(90 + Output);
- ถ้าจรวดเอียง 10 องศาไปทางตะวันออกกระทันหันเพราะลมกรรโชก Arduino จะสั่ง PID ให้สะบัดหัวฉีดเครื่องยนต์จรวดไปทางตะวันตก 15 องศาทันที!
- แรงขับจะดีดก้นจรวดให้กลับมาอยู่ใต้จมูกอย่างแม่นยำ หักล้างการเอียงทั้งหมดภายใน 10 มิลลิวินาที! (สู้งานนะน้อง)
ฮาร์ดแวร์คอมพิวเตอร์บิน
- Arduino Nano หรือ Teensy 4.0 (แนะนำ Teensy อย่างแรงเพราะจรวดความเร็ว 300MPH ต้องการ CPU 600MHz เพื่อรันลูป PID เป็นพันๆ ครั้งต่อวินาทีโดยไม่ดีเลย์!)
- โมดูล MPU6050 6-Axis IMU (ต้องติดตั้งให้ตรงจุดศูนย์ถ่วงของจรวดเป๊ะๆ บนแกน 3 มิติ! ห้ามช็อตนะตัวนี้)
- เซอร์โวมอเตอร์เกียร์โลหะ MG90S สองตัว (ห้ามใช้เกียร์พลาสติกเด็ดขาด แรงขับ 50 ปอนด์จะฉีกเกียร์แตกใน 0.1 วินาที!)
- โมดูลบันทึกข้อมูลลง SD Card ผ่าน SPI (สำคัญมากๆ สำหรับบันทึกค่า telemetry ระเบิดพลังที่ 100Hz จะได้เอามาวิเคราะห์เส้นทางการบินหลังจากร่มลงแล้ว)