mbedRTOS quadcopter quadrotor RATE and ATTITUDE mode (default). Altitude Hold soon to come. pHysiX Coding 2014.
You are viewing an older revision! See the latest version
2 Flight Controller Software
Implementation¶
RTOS¶
4 main threads:
- Thread1: Output telemetry.
- Outputs: YPR, Gyro, Altitude, Voltage, RC Input, RC Command, PID output, ESC Power
- Thread frequency: 50Hz.
- Thread 2-Master: YPR sample, PI Master/Outer control loop. Attitude control.
- Subfunction: Sample MPU6050 and calculate Yaw Pitch Roll angles from DMP quaternion.
- Settings: 50Hz sampling rate (Attitude), 100Hz output FIFO buffer.
- Settings: Input limits: -500.0, 500.0; Output limits: -200.0, 200.0; Output bias: 0.0, Automatic mode
- Settings: KP: 0.5, TI: 1.0, TD = 0.0
- Thread frequency: 200Hz
- Subfunction: Sample MPU6050 and calculate Yaw Pitch Roll angles from DMP quaternion.
- Thread 2-Slave: Gyro sample, PI Slave/Inner control loop. Rate control.
- Settings: Input limits: -500.0, 500.0; Output limits: -200.0, 200.0; Output bias: 0.0, Automatic mode
- Settings: KP: 7.0, TI:2.0, TD = 0.0
- Thread frequency: 400Hz
- Thread 3: RC & Bluetooth Command
- Settings: Default quadcopter is unarmed
- Thread frequency: 50Hz
- Thread 4: Update ESC pulsewidth
- Note: My ESCs can apparently handle refresh rates of up to 400Hz. This means that the ESC should handle a 400Hz PWM pulse. This is distinguished from how fast I update the actual pulsewidth/duty cycle of my pulse!!!
- Settings: PWM frequency: 400Hz
- Thread frequency: 400Hz.
AHRS Sampling¶
Thread frequency: 200Hz
MPU6050 Sampling rate: 100Hz
FIFO Buffer Output rate: 100Hz
To be completed
Gyro Sampling & PID calculations¶
Master PID Loop¶
Thread frequency: 200Hz Control: PI
To be completed
Slave PID Loop¶
Thread frequency: 400Hz Control: PI
To be completed
RC & Bluetooth Command¶
Thread frequency: 50Hz
To be completed
Update ESC¶
Thread frequency: 400Hz
Pulse period: 400HZ
Pulse update rate = Thread frequency = 400Hz
To be completed