diff --git a/UAV-ControlSystem/inc/system_variables.h b/UAV-ControlSystem/inc/system_variables.h index 0217fd9..28da8fe 100644 --- a/UAV-ControlSystem/inc/system_variables.h +++ b/UAV-ControlSystem/inc/system_variables.h @@ -14,7 +14,7 @@ #ifndef SYSTEM_VARIABLES_H_ #define SYSTEM_VARIABLES_H_ -#define EEPROM_SYS_VERSION 107 +#define EEPROM_SYS_VERSION 109 #define ADC_STATE #include "stm32f4xx.h" diff --git a/UAV-ControlSystem/src/Flight/pid.c b/UAV-ControlSystem/src/Flight/pid.c index 162ceed..471b1db 100644 --- a/UAV-ControlSystem/src/Flight/pid.c +++ b/UAV-ControlSystem/src/Flight/pid.c @@ -60,7 +60,7 @@ gyro_t gyroProfile = {0}; /*Struct profile for input data from senso pt1Filter_t accelFilter[2] = {0}; -float throttleRate = 0; +float throttleRate = 1; float accRollFineTune = 0; float accPitchFineTune = 0; @@ -112,7 +112,7 @@ void getCurrentValues(float sensorValues[3], uint8_t ID_profile) break; case PID_ID_BAROMETER: - + sensorValues[0] = barometer_GetCurrentAveragedtAltitude(); break; default: @@ -340,7 +340,8 @@ void pidRun(uint8_t ID) break; case PID_ID_BAROMETER: - if (!PidProfile[PID_ID_BAROMETER].pidEnabled && flags_IsSet_ID(systemFlags_flightmode_barometer_id)) + + if (!(PidProfile[PID_ID_BAROMETER].pidEnabled && flags_IsSet_ID(systemFlags_flightmode_barometer_id))) { PidProfile[PID_ID_BAROMETER].PID_Out[0] = rc_input.Throttle*throttleRate; } @@ -442,6 +443,10 @@ void pidUAVInit(pidProfile_t *pidProfile, uint8_t ID) PidProfile[ID].P[PITCH] = 135; PidProfile[ID].P[YAW] = 150; + PidProfile[ID].I[ROLL] = 50; + PidProfile[ID].I[PITCH] = 50; + PidProfile[ID].I[YAW] = 50; + PidProfile[ID].D[ROLL] = 75; PidProfile[ID].D[PITCH] = 95; PidProfile[ID].D[YAW] = 50; @@ -457,16 +462,16 @@ void pidUAVInit(pidProfile_t *pidProfile, uint8_t ID) break; case PID_ID_ACCELEROMETER: - PidProfile[ID].P[ROLL] = 90; - PidProfile[ID].P[PITCH] = 90; + PidProfile[ID].P[ROLL] = 120; + PidProfile[ID].P[PITCH] = 250; PidProfile[ID].P[YAW] = 0; - PidProfile[ID].D[ROLL] = 40; - PidProfile[ID].D[PITCH] = 40; + PidProfile[ID].D[ROLL] = 0; + PidProfile[ID].D[PITCH] = 0; PidProfile[ID].D[YAW] = 0; - PidProfile[ID].PIDweight[ROLL] = 2; - PidProfile[ID].PIDweight[PITCH] = 2; + PidProfile[ID].PIDweight[ROLL] = 4; + PidProfile[ID].PIDweight[PITCH] = 4; PidProfile[ID].PIDweight[YAW] = 100; PidProfile[ID].pidEnabled = true; @@ -477,27 +482,21 @@ void pidUAVInit(pidProfile_t *pidProfile, uint8_t ID) case PID_ID_COMPASS: PidProfile[ID].P[ROLL] = 10; - PidProfile[ID].P[PITCH] = 10; - PidProfile[ID].P[YAW] = 10; PidProfile[ID].PIDweight[ROLL] = 100; - PidProfile[ID].PIDweight[PITCH] = 100; - PidProfile[ID].PIDweight[YAW] = 100; PidProfile[ID].pidEnabled = false; break; case PID_ID_BAROMETER: - PidProfile[ID].P[ROLL] = 10; - PidProfile[ID].P[PITCH] = 10; - PidProfile[ID].P[YAW] = 10; + PidProfile[ID].P[ROLL] = 1; PidProfile[ID].PIDweight[ROLL] = 100; - PidProfile[ID].PIDweight[PITCH] = 100; - PidProfile[ID].PIDweight[YAW] = 100; PidProfile[ID].pidEnabled = false; + PidProfile[ID].dterm_lpf = 90; + PidProfile[ID].pid_out_limit = 1000; break; default: @@ -528,9 +527,8 @@ void pidInit() void pidEproom(void) { + PidProfile[PID_ID_BAROMETER].PIDweight[ROLL] = 200; - PidProfile[PID_ID_ACCELEROMETER].PIDweight[ROLL] = 4; - PidProfile[PID_ID_ACCELEROMETER].PIDweight[PITCH] = 4; PidProfile[PID_ID_ACCELEROMETER].PIDweight[YAW] = 100; PidProfileBuff[PID_ID_GYRO].dT = SystemTasks[TASK_GYROPID].desiredPeriod/1000; //�NDRA TILL SEKUNDER inte ms diff --git a/UAV-ControlSystem/src/config/cli.c b/UAV-ControlSystem/src/config/cli.c index d77f8a9..2c99737 100644 --- a/UAV-ControlSystem/src/config/cli.c +++ b/UAV-ControlSystem/src/config/cli.c @@ -679,14 +679,14 @@ const cliCommandConfig_t commandTable[COMMAND_ID_COUNT] = { }, //BARO I - [COMMAND_ID_PID_ACCEL_I_PITCH] = + [COMMAND_ID_PID_BARO_I_HEIGHT] = { "pid_baro_i_height", COMMAND_ID_PID_BARO_I_HEIGHT, EEPROM_PID_BAROMETER, EEPROM_VALUE_TYPE_PROFILE, 8, VAL_UINT_8, .valueRange = {0, 255} }, //BARO D - [COMMAND_ID_PID_ACCEL_D_PITCH] = + [COMMAND_ID_PID_BARO_D_HEIGHT] = { - "pid_baro_d_height", COMMAND_ID_PID_ACCEL_D_PITCH, EEPROM_PID_BAROMETER, EEPROM_VALUE_TYPE_PROFILE, 11, VAL_UINT_8, .valueRange = {0, 255} + "pid_baro_d_height", COMMAND_ID_PID_BARO_D_HEIGHT, EEPROM_PID_BAROMETER, EEPROM_VALUE_TYPE_PROFILE, 11, VAL_UINT_8, .valueRange = {0, 255} }, //BARO Filters and limits diff --git a/UAV-ControlSystem/src/drivers/failsafe_toggles.c b/UAV-ControlSystem/src/drivers/failsafe_toggles.c index 2821950..9576e59 100644 --- a/UAV-ControlSystem/src/drivers/failsafe_toggles.c +++ b/UAV-ControlSystem/src/drivers/failsafe_toggles.c @@ -40,9 +40,9 @@ flags_Configuration_t flagConfigArr[FLAG_CONFIGURATION_COUNT] = { .flagId = systemFlags_flightmode_acceleromter_id, }, [FLAG_CONFIGURATION_FLIGHTMODE_BAROMETER] = { - .minRange = 0, - .maxRange = 0, - .channelNumber = 0, + .minRange = 1900, + .maxRange = 2100, + .channelNumber = 6, .flagId = systemFlags_flightmode_barometer_id, }, [FLAG_CONFIGURATION_FLIGHTMODE_COMPASS] = { diff --git a/UAV-ControlSystem/src/tasks_main.c b/UAV-ControlSystem/src/tasks_main.c index 8f199d9..f5c3b07 100644 --- a/UAV-ControlSystem/src/tasks_main.c +++ b/UAV-ControlSystem/src/tasks_main.c @@ -258,7 +258,7 @@ void systemTaskAltitude(void) //double temperature = barometer_GetCurrentTemperature(); //double pressure = barometer_GetCurrentPreassure(); //float altitute = barometer_GetCurrentAltitude(); - float altitute = barometer_GetCurrentAveragedtAltitude(); + //float altitute = barometer_GetCurrentAveragedtAltitude(); //pid run, should probably be moved to systemTaskAltitude pidRun(PID_ID_BAROMETER);