Quadcopter Attitude Control(Yaw-Pitch-Roll)

Dependencies:   mbed

Committer:
khaledelmadawi
Date:
Fri Jul 03 11:16:02 2015 +0000
Revision:
0:e63996fd7d3e
Quadcopter Attitude Control(Yaw-Pitch-Roll)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
khaledelmadawi 0:e63996fd7d3e 1 //Includes//
khaledelmadawi 0:e63996fd7d3e 2 #ifndef _QuadCopter_H
khaledelmadawi 0:e63996fd7d3e 3 #define _QuadCopter_H
khaledelmadawi 0:e63996fd7d3e 4 #ifndef _MBED_H
khaledelmadawi 0:e63996fd7d3e 5 #define _MBED_H
khaledelmadawi 0:e63996fd7d3e 6 #include "mbed.h"
khaledelmadawi 0:e63996fd7d3e 7 #endif
khaledelmadawi 0:e63996fd7d3e 8 #ifndef _IOSTREAM_
khaledelmadawi 0:e63996fd7d3e 9 #define _IOSTREAM_
khaledelmadawi 0:e63996fd7d3e 10 #include "iostream"
khaledelmadawi 0:e63996fd7d3e 11 #endif
khaledelmadawi 0:e63996fd7d3e 12 #ifndef _MATH_H
khaledelmadawi 0:e63996fd7d3e 13 #define _MATH_H
khaledelmadawi 0:e63996fd7d3e 14 #define D_BAUDRATE 115200
khaledelmadawi 0:e63996fd7d3e 15 //#include "math.h"
khaledelmadawi 0:e63996fd7d3e 16 #endif
khaledelmadawi 0:e63996fd7d3e 17 class PIDTheta{
khaledelmadawi 0:e63996fd7d3e 18 public:
khaledelmadawi 0:e63996fd7d3e 19 PIDTheta( PinName pwm,PinName pwm2,float Listen_time_ms,float KP,float KI,float KD,float KDD);//constructor
khaledelmadawi 0:e63996fd7d3e 20 void Motor_init(float Listen_time_ms);//initialization motors
khaledelmadawi 0:e63996fd7d3e 21 void Motor_Control_signal();//giving control signal to the motor.
khaledelmadawi 0:e63996fd7d3e 22
khaledelmadawi 0:e63996fd7d3e 23 void PWM_cal(float RPM_req,float RPM_curr,float req_power_SP);//calculating the PWM taking in mind upper/lower limits and error calculation/estimation.
khaledelmadawi 0:e63996fd7d3e 24 void Set_OUT_Limits(float LowerLimit,float UpperLimit);//setting Output Limits.
khaledelmadawi 0:e63996fd7d3e 25 void Set_IN_Limits(float LowerLimit,float UpperLimit);//setting Input Limits.
khaledelmadawi 0:e63996fd7d3e 26 void Check_OUT_Limits(float *RPMSetPoint);//checking Input Limits in the Realtime operation.
khaledelmadawi 0:e63996fd7d3e 27 void Check_IN_Limits(float *O_PWM);//checking Output Limits in Realtime operation.
khaledelmadawi 0:e63996fd7d3e 28
khaledelmadawi 0:e63996fd7d3e 29 private:
khaledelmadawi 0:e63996fd7d3e 30 void Pulse_Error_cal(float RPM_req,float RPM_curr);//error calculating and out the relative output to the relative error.
khaledelmadawi 0:e63996fd7d3e 31 //variables and PinRoles
khaledelmadawi 0:e63996fd7d3e 32 float PowerSetPoint;//,RPMSetPoint;
khaledelmadawi 0:e63996fd7d3e 33 float Out_PWM,Out_PWM2;
khaledelmadawi 0:e63996fd7d3e 34 float O_Upper_Limit,O_Lower_Limit;
khaledelmadawi 0:e63996fd7d3e 35 float I_Upper_Limit,I_Lower_Limit;
khaledelmadawi 0:e63996fd7d3e 36 float Error,ErrorI,ErrorD,ErrorOLD,ErrorDD,ErrorDOLD;
khaledelmadawi 0:e63996fd7d3e 37 float h;
khaledelmadawi 0:e63996fd7d3e 38 float _KP,_KD,_KI,_KDD;
khaledelmadawi 0:e63996fd7d3e 39 //Serial debugSerial;
khaledelmadawi 0:e63996fd7d3e 40 PwmOut _pwm;
khaledelmadawi 0:e63996fd7d3e 41 PwmOut _pwm2;
khaledelmadawi 0:e63996fd7d3e 42 };
khaledelmadawi 0:e63996fd7d3e 43
khaledelmadawi 0:e63996fd7d3e 44 #endif