Quad X Type Multicopter

Dependencies:   IAP

Committer:
komaida424
Date:
Thu Feb 13 16:07:07 2014 +0000
Revision:
3:27407c4984cf
Parent:
2:59ac9df97701
Child:
4:4060309b9cc0
revsion.1.30

Who changed what in which revision?

UserRevisionLine numberNew contents of line
komaida424 0:cca1c4e84da4 1 #ifndef CONFIG_H
komaida424 0:cca1c4e84da4 2 #define CONFIG_H
komaida424 0:cca1c4e84da4 3
komaida424 2:59ac9df97701 4 //#define SERIAL_LCD
komaida424 2:59ac9df97701 5 //#define SOFT_PWM
komaida424 0:cca1c4e84da4 6 //#define LPCXpresso
komaida424 0:cca1c4e84da4 7 //#define LocalFileOut
komaida424 0:cca1c4e84da4 8
komaida424 0:cca1c4e84da4 9 #define TX_TYPE 0 // 0:FM 1:IR
komaida424 2:59ac9df97701 10 #define Thro_Zero 30
komaida424 0:cca1c4e84da4 11 #define Thro_Lo 75
komaida424 0:cca1c4e84da4 12 #define Thro_Hi 950
komaida424 0:cca1c4e84da4 13 #define Pulse_Min 1000
komaida424 0:cca1c4e84da4 14 #define Pulse_Max 2000
komaida424 2:59ac9df97701 15 #define Stick_Limit 350
komaida424 0:cca1c4e84da4 16 #define M1 M[0]
komaida424 0:cca1c4e84da4 17 #define M2 M[1]
komaida424 0:cca1c4e84da4 18 #define M3 M[2]
komaida424 0:cca1c4e84da4 19 #define M4 M[3]
komaida424 0:cca1c4e84da4 20 #define M5 M[4]
komaida424 0:cca1c4e84da4 21 #define M6 M[5]
komaida424 0:cca1c4e84da4 22 #define THR CH[0]
komaida424 0:cca1c4e84da4 23 #define AIL CH[1]
komaida424 0:cca1c4e84da4 24 #define ELE CH[2]
komaida424 0:cca1c4e84da4 25 #define RUD CH[3]
komaida424 0:cca1c4e84da4 26 #define AUX CH[4]
komaida424 0:cca1c4e84da4 27 #define _ITG3200 0x00
komaida424 0:cca1c4e84da4 28 #define _L3GD20 0x01
komaida424 2:59ac9df97701 29 #define TICK_TIME 0.05
komaida424 3:27407c4984cf 30 #define GYRO_ADJUST 2
komaida424 0:cca1c4e84da4 31
komaida424 0:cca1c4e84da4 32 //enum PortNum{Port_THR=1,Port_AIL=3,Port_ELE=5,Port_RUD=7,Port_AUX=6};
komaida424 0:cca1c4e84da4 33 enum IRNum{IR_THR=1,IR_AIL,IR_ELE,IR_RUD,IR_AUX}; //Input Pulse Sequence
komaida424 0:cca1c4e84da4 34 enum channel{ROL=0,PIT,YAW,COL,GAIN};
komaida424 0:cca1c4e84da4 35
komaida424 0:cca1c4e84da4 36 struct config {
komaida424 0:cca1c4e84da4 37 float Revision;
komaida424 0:cca1c4e84da4 38 int Struct_Size;
komaida424 2:59ac9df97701 39 char StartMode; //'c':config mode 'f':flight mode
komaida424 0:cca1c4e84da4 40 int Stick_Ref[5]; //Stick Neutral Position
komaida424 0:cca1c4e84da4 41 float Stick_Mix[3]; //Mixing ratio of stick operation
komaida424 0:cca1c4e84da4 42 signed char Gyro_Dir[4];
komaida424 0:cca1c4e84da4 43 float Gyro_Gain[6];
komaida424 0:cca1c4e84da4 44 signed char Accel_Dir[4];
komaida424 2:59ac9df97701 45 float Accel_Ref[3];
komaida424 0:cca1c4e84da4 46 float Accel_Gain[3];
komaida424 0:cca1c4e84da4 47 int Gyro_Gain_Setting;
komaida424 3:27407c4984cf 48 float PID_Interval;
komaida424 2:59ac9df97701 49 float Cutoff_Freq;
komaida424 2:59ac9df97701 50 int Flight_Time;
komaida424 0:cca1c4e84da4 51 int LCD_Contrast;
komaida424 0:cca1c4e84da4 52 int PWM_Mode;
komaida424 2:59ac9df97701 53 int ESC_Low;
komaida424 0:cca1c4e84da4 54 int PWM_Interval;
komaida424 0:cca1c4e84da4 55 // int Accel_Rang;
komaida424 0:cca1c4e84da4 56 // int Accel_Rate;
komaida424 0:cca1c4e84da4 57 // int PWM_Resolution;
komaida424 2:59ac9df97701 58 char Angle_Control;
komaida424 2:59ac9df97701 59 float kp[3];
komaida424 2:59ac9df97701 60 float ki[3];
komaida424 2:59ac9df97701 61 float kd[3];
komaida424 2:59ac9df97701 62 float PID_Limit;
komaida424 3:27407c4984cf 63 float Differential_Limit;
komaida424 0:cca1c4e84da4 64 public:
komaida424 0:cca1c4e84da4 65 config() {
komaida424 3:27407c4984cf 66 Revision = 1.30;
komaida424 0:cca1c4e84da4 67 Struct_Size = sizeof(config);
komaida424 0:cca1c4e84da4 68 Stick_Ref[0] = 1500;
komaida424 0:cca1c4e84da4 69 Stick_Ref[1] = 1500;
komaida424 0:cca1c4e84da4 70 Stick_Ref[2] = 1500;
komaida424 0:cca1c4e84da4 71 Stick_Ref[3] = 1100;
komaida424 0:cca1c4e84da4 72 Stick_Ref[4] = 1500;
komaida424 2:59ac9df97701 73 Stick_Mix[0] = 0.3;
komaida424 2:59ac9df97701 74 Stick_Mix[1] = 0.3;
komaida424 2:59ac9df97701 75 Stick_Mix[2] = 0.65;
komaida424 3:27407c4984cf 76 Gyro_Dir[0] = -1;
komaida424 3:27407c4984cf 77 Gyro_Dir[1] = -1;
komaida424 0:cca1c4e84da4 78 Gyro_Dir[2] = 1;
komaida424 0:cca1c4e84da4 79 Gyro_Dir[3] = -1;
komaida424 0:cca1c4e84da4 80 Gyro_Gain[0] = 0.40;
komaida424 0:cca1c4e84da4 81 Gyro_Gain[1] = 0.40;
komaida424 0:cca1c4e84da4 82 Gyro_Gain[2] = 0.40;
komaida424 0:cca1c4e84da4 83 Gyro_Gain[3] = 0.00;
komaida424 0:cca1c4e84da4 84 Gyro_Gain[4] = 0.00;
komaida424 0:cca1c4e84da4 85 Gyro_Gain[5] = 0.00;
komaida424 0:cca1c4e84da4 86 Accel_Dir[0] = 1;
komaida424 0:cca1c4e84da4 87 Accel_Dir[1] = 1;
komaida424 0:cca1c4e84da4 88 Accel_Dir[2] = 1;
komaida424 0:cca1c4e84da4 89 Accel_Dir[3] = 1;
komaida424 2:59ac9df97701 90 Accel_Ref[0] = 0;
komaida424 2:59ac9df97701 91 Accel_Ref[1] = 0;
komaida424 2:59ac9df97701 92 Accel_Ref[2] = 0;
komaida424 0:cca1c4e84da4 93 Accel_Gain[0] = 0.50;
komaida424 0:cca1c4e84da4 94 Accel_Gain[1] = 0.50;
komaida424 0:cca1c4e84da4 95 Accel_Gain[2] = 0.50;
komaida424 0:cca1c4e84da4 96 Gyro_Gain_Setting = -1;
komaida424 2:59ac9df97701 97 Cutoff_Freq=0.15;
komaida424 2:59ac9df97701 98 Flight_Time=360;
komaida424 0:cca1c4e84da4 99 LCD_Contrast = 60;
komaida424 0:cca1c4e84da4 100 PWM_Mode = 1;
komaida424 3:27407c4984cf 101 ESC_Low= 1080;
komaida424 3:27407c4984cf 102 PWM_Interval = 2200;
komaida424 0:cca1c4e84da4 103 // Accel_Rang = 2;
komaida424 0:cca1c4e84da4 104 // Accel_Rate = 14;
komaida424 0:cca1c4e84da4 105 // PWM_Resolution = 0;
komaida424 0:cca1c4e84da4 106 StartMode = 'C';
komaida424 2:59ac9df97701 107 Angle_Control = 'H'; // H:horizn A:angle
komaida424 2:59ac9df97701 108 kp[0] = 1.5;
komaida424 2:59ac9df97701 109 kp[1] = 1.5;
komaida424 2:59ac9df97701 110 kp[2] = 1.5;
komaida424 3:27407c4984cf 111 ki[0] = 0.0;
komaida424 3:27407c4984cf 112 ki[1] = 0.0;
komaida424 3:27407c4984cf 113 ki[2] = 0.0;
komaida424 3:27407c4984cf 114 kd[0] = 0.8;
komaida424 3:27407c4984cf 115 kd[1] = 0.8;
komaida424 3:27407c4984cf 116 kd[2] = 0.8;
komaida424 3:27407c4984cf 117 PID_Limit = 350;
komaida424 3:27407c4984cf 118 Differential_Limit = 200;
komaida424 3:27407c4984cf 119 PID_Interval = 0.003;
komaida424 0:cca1c4e84da4 120 }
komaida424 0:cca1c4e84da4 121 };
komaida424 0:cca1c4e84da4 122 #endif
komaida424 0:cca1c4e84da4 123
komaida424 0:cca1c4e84da4 124
komaida424 0:cca1c4e84da4 125
komaida424 0:cca1c4e84da4 126
komaida424 0:cca1c4e84da4 127
komaida424 0:cca1c4e84da4 128
komaida424 2:59ac9df97701 129
komaida424 2:59ac9df97701 130
komaida424 2:59ac9df97701 131
komaida424 2:59ac9df97701 132
komaida424 2:59ac9df97701 133
komaida424 2:59ac9df97701 134
komaida424 2:59ac9df97701 135
komaida424 2:59ac9df97701 136
komaida424 2:59ac9df97701 137
komaida424 2:59ac9df97701 138
komaida424 2:59ac9df97701 139
komaida424 2:59ac9df97701 140
komaida424 2:59ac9df97701 141
komaida424 2:59ac9df97701 142
komaida424 2:59ac9df97701 143
komaida424 2:59ac9df97701 144
komaida424 2:59ac9df97701 145
komaida424 2:59ac9df97701 146
komaida424 2:59ac9df97701 147
komaida424 2:59ac9df97701 148
komaida424 2:59ac9df97701 149
komaida424 2:59ac9df97701 150
komaida424 2:59ac9df97701 151
komaida424 2:59ac9df97701 152
komaida424 2:59ac9df97701 153
komaida424 2:59ac9df97701 154
komaida424 2:59ac9df97701 155
komaida424 3:27407c4984cf 156
komaida424 3:27407c4984cf 157
komaida424 3:27407c4984cf 158
komaida424 3:27407c4984cf 159
komaida424 3:27407c4984cf 160
komaida424 3:27407c4984cf 161
komaida424 3:27407c4984cf 162