Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 266 → Rev 291

/branches/salvo_gps/fc.c
81,9 → 81,11
unsigned char MAX_GAS,MIN_GAS;
unsigned char Notlandung = 0;
unsigned char HoehenReglerAktiv = 0;
//Salvo 4.10.2007
//Salvo 12.10.2007
uint8_t magkompass_ok=0;
uint8_t gps_cmd = GPS_CMD_STOP;
static int ubat_cnt =0;
static int gas_actual,gas_mittel; //Parameter fuer Gasreduzierung bei unterspannung
//Salvo End
 
//Salvo 2.9.2007 Ersatzkompass
183,8 → 185,10
Mess_Integral_Hoch = 0;
KompassStartwert = KompassValue;
beeptime = 50;
//Salvo 4.9.2007 Ersatzkompass
//Salvo 13.10.2007 Ersatzkompass
GyroKomp_Int = 0;
gas_mittel = 30;
gas_actual = gas_mittel;
// Salvo End
}
 
326,14 → 330,14
EE_Parameter.KompassWirkung = 64; // Wert : 0-250
EE_Parameter.Gyro_P = 120; //80 // Wert : 0-250
EE_Parameter.Gyro_I = 150; // Wert : 0-250
EE_Parameter.UnterspannungsWarnung = 100; // Wert : 0-250
EE_Parameter.UnterspannungsWarnung = 102; // Wert : 0-250
EE_Parameter.NotGas = 100; // Wert : 0-250 // Gaswert bei Empangsverlust
EE_Parameter.NotGasZeit = 60; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation
EE_Parameter.I_Faktor = 5;
EE_Parameter.UserParam1 = 0; //zur freien Verwendung, derzeit P-Anteil GPS
EE_Parameter.UserParam2 = 0; //zur freien Verwendung, derzeit I-Anteil GPS
EE_Parameter.UserParam3 = 0; //zur freien Verwendung, derzeit D-Anteil GPS
EE_Parameter.UserParam1 = 16; //zur freien Verwendung, derzeit P-Anteil GPS
EE_Parameter.UserParam2 = 2; //zur freien Verwendung, derzeit I-Anteil GPS
EE_Parameter.UserParam3 = 12; //zur freien Verwendung, derzeit D-Anteil GPS
EE_Parameter.UserParam4 = 0; //zur freien Verwendung
EE_Parameter.ServoNickControl = 100; // Wert : 0-250 // Stellung des Servos
EE_Parameter.ServoNickComp = 40; // Wert : 0-250 // Einfluss Gyro/Servo
369,14 → 373,14
EE_Parameter.KompassWirkung = 64; // Wert : 0-250
EE_Parameter.Gyro_P = 175; //80 // Wert : 0-250
EE_Parameter.Gyro_I = 175; // Wert : 0-250
EE_Parameter.UnterspannungsWarnung = 100; // Wert : 0-250
EE_Parameter.UnterspannungsWarnung = 102; // Wert : 0-250
EE_Parameter.NotGas = 100; // Wert : 0-250 // Gaswert bei Empangsverlust
EE_Parameter.NotGasZeit = 60; // Wert : 0-250 // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
EE_Parameter.UfoAusrichtung = 0; // X oder + Formation
EE_Parameter.I_Faktor = 5;
EE_Parameter.UserParam1 = 0; //zur freien Verwendung
EE_Parameter.UserParam2 = 0; //zur freien Verwendung
EE_Parameter.UserParam3 = 0; //zur freien Verwendung
EE_Parameter.UserParam1 = 12; //zur freien Verwendung
EE_Parameter.UserParam2 = 2; //zur freien Verwendung
EE_Parameter.UserParam3 = 16; //zur freien Verwendung
EE_Parameter.UserParam4 = 0; //zur freien Verwendung
EE_Parameter.UserParam3 = 0; //zur freien Verwendung
EE_Parameter.UserParam4 = 0; //zur freien Verwendung
457,12 → 461,45
 
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gaswert ermitteln
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GasMischanteil = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GasMischanteil = PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] + 120;
//Salvo 13.10.2007 langsame Gasreduktion bei Unterspannung. Als Ausgangswert wird der bei UBAT=k gemessen Mittelwert genommen
// und dieser dann langsam zwangsweise reduziert
ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern
if (UBat <= EE_Parameter.UnterspannungsWarnung - 2) //Unterhalb der Piepser Schwelle aktivieren
{
if (ubat_cnt > 800)
{
ubat_cnt = 0;
if (gas_actual > ((gas_mittel*13)/15)) gas_actual--;
}
else ubat_cnt++;
if (GasMischanteil > gas_actual) GasMischanteil = gas_actual;
}
else //Falls UBAT wieder ok ist
{
if (ubat_cnt > 1000)
{
gas_mittel = ((gas_mittel*9) + GasMischanteil)/10; //Filtern
gas_actual = GasMischanteil;
}
else
{
ubat_cnt++;
if ((ubat_cnt % 10) == 0)
{
if (gas_actual < GasMischanteil) gas_actual++;
else gas_actual = GasMischanteil;
}
}
GasMischanteil = gas_actual;
}
ANALOG_ON; // ADC einschalten
// Salvo End
if(GasMischanteil < 0) GasMischanteil = 0;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Emfang schlecht
// Empfang schlecht
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if(SenderOkay < 100)
{
833,28 → 870,29
TimerWerteausgabe = 49;
// DebugOut.Analog[0] = MesswertNick;
// DebugOut.Analog[1] = MesswertRoll;
DebugOut.Analog[0] = gps_sub_state;
// DebugOut.Analog[0] = gps_sub_state;
 
DebugOut.Analog[1] = dist_2home;
/* DebugOut.Analog[1] = dist_2home;
DebugOut.Analog[2] = hdng_2home;
*/
 
 
DebugOut.Analog[3] = gps_rel_hold_position.utm_east;
DebugOut.Analog[4] = gps_rel_hold_position.utm_north;
 
/* DebugOut.Analog[2] = MesswertGier;
DebugOut.Analog[0] = IntegralNick / EE_Parameter.GyroAccFaktor;
DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor;
/* DebugOut.Analog[3] = gps_rel_hold_position.utm_east;
DebugOut.Analog[4] = gps_rel_hold_position.utm_north;
*/
DebugOut.Analog[2] = Mittelwert_AccNick;
DebugOut.Analog[3] = Mittelwert_AccRoll;
DebugOut.Analog[4] = MesswertGier;
DebugOut.Analog[5] = HoehenWert;
DebugOut.Analog[6] = (Mess_Integral_Hoch / 512);
*/
/*
// DebugOut.Analog[2] = MesswertGier;
 
 
 
DebugOut.Analog[7] = GasMischanteil;
*/
DebugOut.Analog[7] = dist_flown;
 
// DebugOut.Analog[7] = dist_flown;
DebugOut.Analog[8] = KompassValue;
 
// DebugOut.Analog[8] = dist_frm_start_north;
935,7 → 973,7
{
//Salvo 10.10.2007 Um Absacken beim Einschalten zu verhindern
// SollHoehe = HoehenWert - 20; // Parameter_MaxHoehe ist der PPM-Wert des Schalters
SollHoehe = HoehenWert -10; // Parameter_MaxHoehe ist der PPM-Wert des Schalters
SollHoehe = HoehenWert - 0; // Parameter_MaxHoehe ist der PPM-Wert des Schalters
// Salvo End
HoehenReglerAktiv = 0;
}