Subversion Repositories FlightCtrl

Rev

Rev 414 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 414 Rev 459
Line 203... Line 203...
203
    IntegralRoll2 = Mess_IntegralRoll2;
203
    IntegralRoll2 = Mess_IntegralRoll2;
204
    // ADC einschalten
204
    // ADC einschalten
205
    ANALOG_ON; 
205
    ANALOG_ON; 
Line 206... Line 206...
206
 
206
 
207
//------------------------------------------------------------------------------
207
//------------------------------------------------------------------------------
208
        if(!Looping_Nick && !Looping_Roll) //übernommen aus der V0.66b //(071107Kr)
208
        if(!Looping_Nick && !Looping_Roll && !(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD)) //übernommen aus der V0.66b und um Heading_Hold erweitert //(071107Kr)
209
         {
209
         {
210
     if(MesswertNick > 200)  MesswertNick += 4 * (MesswertNick - 200);
210
     if(MesswertNick > 200)  MesswertNick += 4 * (MesswertNick - 200);
211
     else                                        
211
     else                                        
Line 339... Line 339...
339
 EE_Parameter.Hoehe_MinGas = 30;
339
 EE_Parameter.Hoehe_MinGas = 30;
340
 EE_Parameter.MaxHoehe     = 251;      // Wert : 0-32   251 -> Poti1
340
 EE_Parameter.MaxHoehe     = 251;      // Wert : 0-32   251 -> Poti1
341
 EE_Parameter.Hoehe_P      = 10;       // Wert : 0-32
341
 EE_Parameter.Hoehe_P      = 10;       // Wert : 0-32
342
 EE_Parameter.Luftdruck_D  = 50;       // Wert : 0-250
342
 EE_Parameter.Luftdruck_D  = 50;       // Wert : 0-250
343
 EE_Parameter.Hoehe_ACC_Wirkung = 50;  // Wert : 0-250
343
 EE_Parameter.Hoehe_ACC_Wirkung = 50;  // Wert : 0-250
344
 EE_Parameter.Hoehe_Verstaerkung = 4;  // Wert : 0-50
344
 EE_Parameter.Hoehe_Verstaerkung = 2; // Wert : 0-50
345
 EE_Parameter.Stick_P = 4; //2         // Wert : 1-6
345
 EE_Parameter.Stick_P = 4; //2         // Wert : 1-6
346
 EE_Parameter.Stick_D = 8; //8         // Wert : 0-64
346
 EE_Parameter.Stick_D = 0; //8           // Wert : 0-64
347
 EE_Parameter.Gier_P = 16;             // Wert : 1-20
347
 EE_Parameter.Gier_P = 16;             // Wert : 1-20
348
 EE_Parameter.Gas_Min = 5;            // Wert : 0-32 // (160607Kr)
348
 EE_Parameter.Gas_Min = 5;            // Wert : 0-32 // (160607Kr)
349
 EE_Parameter.Gas_Max = 250;           // Wert : 33-250
349
 EE_Parameter.Gas_Max = 250;           // Wert : 33-250
350
 EE_Parameter.GyroAccFaktor = 26;      // Wert : 1-64
350
 EE_Parameter.GyroAccFaktor = 26;      // Wert : 1-64
351
 EE_Parameter.KompassWirkung = 128;    // Wert : 0-250
351
 EE_Parameter.KompassWirkung = 128;    // Wert : 0-250
Line 353... Line 353...
353
 EE_Parameter.Gyro_I = 150;               // Wert : 0-250
353
 EE_Parameter.Gyro_I = 150;               // Wert : 0-250
354
 EE_Parameter.UnterspannungsWarnung = 95;  // Wert : 0-250 // (160607Kr)
354
 EE_Parameter.UnterspannungsWarnung = 95;  // Wert : 0-250 // (160607Kr)
355
 EE_Parameter.NotGas = 35;                // Wert : 0-250     // Gaswert bei Empangsverlust
355
 EE_Parameter.NotGas = 35;                // Wert : 0-250     // Gaswert bei Empangsverlust
356
 EE_Parameter.NotGasZeit = 20;            // Wert : 0-250     // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
356
 EE_Parameter.NotGasZeit = 20;            // Wert : 0-250     // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
357
 EE_Parameter.UfoAusrichtung = 0;         // X oder + Formation
357
 EE_Parameter.UfoAusrichtung = 0;         // X oder + Formation
358
 EE_Parameter.I_Faktor = 0;
358
 EE_Parameter.I_Faktor = 5;
359
 EE_Parameter.UserParam1 = 0;             //zur freien Verwendung
359
 EE_Parameter.UserParam1 = 0;             //zur freien Verwendung
360
 EE_Parameter.UserParam2 = 0;             //zur freien Verwendung
360
 EE_Parameter.UserParam2 = 0;             //zur freien Verwendung
361
 EE_Parameter.UserParam3 = 0;             //zur freien Verwendung
361
 EE_Parameter.UserParam3 = 0;             //zur freien Verwendung
362
 EE_Parameter.UserParam4 = 0;             //zur freien Verwendung
362
 EE_Parameter.UserParam4 = 0;             //zur freien Verwendung
363
 EE_Parameter.ServoNickControl = 100;     // Wert : 0-250     // Stellung des Servos
363
 EE_Parameter.ServoNickControl = 100;     // Wert : 0-250     // Stellung des Servos
Line 400... Line 400...
400
 EE_Parameter.Gyro_I = 175;           // Wert : 0-250
400
 EE_Parameter.Gyro_I = 175;           // Wert : 0-250
401
 EE_Parameter.UnterspannungsWarnung = 95;  // Wert : 0-250 // (160607Kr)
401
 EE_Parameter.UnterspannungsWarnung = 95;  // Wert : 0-250 // (160607Kr)
402
 EE_Parameter.NotGas = 35;                 // Wert : 0-250     // Gaswert bei Empangsverlust
402
 EE_Parameter.NotGas = 35;                 // Wert : 0-250     // Gaswert bei Empangsverlust
403
 EE_Parameter.NotGasZeit = 20;             // Wert : 0-250     // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
403
 EE_Parameter.NotGasZeit = 20;             // Wert : 0-250     // Zeit bis auf NotGas geschaltet wird, wg. Rx-Problemen
404
 EE_Parameter.UfoAusrichtung = 0;         // X oder + Formation
404
 EE_Parameter.UfoAusrichtung = 0;         // X oder + Formation
405
 EE_Parameter.I_Faktor = 0;
405
 EE_Parameter.I_Faktor = 5;
406
 EE_Parameter.UserParam1 = 0;   //zur freien Verwendung
406
 EE_Parameter.UserParam1 = 0;   //zur freien Verwendung
407
 EE_Parameter.UserParam2 = 0;   //zur freien Verwendung
407
 EE_Parameter.UserParam2 = 0;   //zur freien Verwendung
408
 EE_Parameter.UserParam3 = 0;   //zur freien Verwendung
408
 EE_Parameter.UserParam3 = 0;   //zur freien Verwendung
409
 EE_Parameter.UserParam4 = 0;   //zur freien Verwendung
409
 EE_Parameter.UserParam4 = 0;   //zur freien Verwendung
410
 EE_Parameter.ServoNickControl = 100;     // Wert : 0-250     // Stellung des Servos
410
 EE_Parameter.ServoNickControl = 100;     // Wert : 0-250     // Stellung des Servos
Line 740... Line 740...
740
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
740
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
741
// Integrale auf ACC-Signal abgleichen
741
// Integrale auf ACC-Signal abgleichen
742
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
742
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
Line 743... Line -...
743
 
-
 
744
 
-
 
745
  if(EE_Parameter.GlobalConfig & CFG_GPS_AKTIV)
-
 
746
  {
-
 
747
     tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick) / 16;  
-
 
748
     tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll) / 16;  
-
 
749
     #define AUSGLEICH 500
-
 
750
     if(tmp_long >  AUSGLEICH)  tmp_long  = AUSGLEICH;
-
 
751
     if(tmp_long < -AUSGLEICH)  tmp_long  =-AUSGLEICH;
-
 
752
     if(tmp_long2 > AUSGLEICH)  tmp_long2 = AUSGLEICH;
-
 
753
     if(tmp_long2 <-AUSGLEICH)  tmp_long2 =-AUSGLEICH;
-
 
754
     ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern
-
 
755
     Mess_IntegralNick -= tmp_long;
-
 
756
     Mess_IntegralRoll -= tmp_long2;
-
 
757
  }
-
 
758
 
-
 
759
  else
743
 
760
  {    
744
 
761
     if(IntegralFaktor && !Looping_Nick && !Looping_Roll)
745
     if(IntegralFaktor && !Looping_Nick && !Looping_Roll)
762
     {
-
 
763
      tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick);
-
 
764
      if(labs(Mittelwert_AccNick) < 200) tmp_long /= 8;
746
     {
765
      else tmp_long /= 16;
-
 
766
      tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll);
-
 
767
      if(labs(Mittelwert_AccRoll) < 200) tmp_long2 /= 8;
-
 
768
      else tmp_long2 /= 16;
747
      tmp_long = (long)(IntegralNick / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccNick) / 16;
769
     
748
      tmp_long2 = (long)(IntegralRoll / EE_Parameter.GyroAccFaktor - (long)Mittelwert_AccRoll) / 16;
770
      #define AUSGLEICH 500
749
      #define AUSGLEICH 500
771
      if(tmp_long >  AUSGLEICH)  tmp_long  = AUSGLEICH;
750
      if(tmp_long >  AUSGLEICH)  tmp_long  = AUSGLEICH;
772
      if(tmp_long < -AUSGLEICH)  tmp_long  =-AUSGLEICH;
751
      if(tmp_long < -AUSGLEICH)  tmp_long  =-AUSGLEICH;
Line 780... Line 759...
780
      tmp_long2 = 0;
759
      tmp_long2 = 0;
781
     }
760
     }
782
     ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern
761
     ANALOG_OFF; // ADC ausschalten, damit die Werte sich nicht während der Berechnung ändern
783
     Mess_IntegralNick -= tmp_long;
762
     Mess_IntegralNick -= tmp_long;
784
     Mess_IntegralRoll -= tmp_long2;
763
     Mess_IntegralRoll -= tmp_long2;
785
  }
-
 
786
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
764
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
787
//  Gieren
765
//  Gieren
788
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
766
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
789
    if(abs(StickGier) > 20) // war 35 
767
    if(abs(StickGier) > 20) // war 35 
790
     {
768
     {
791
      if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1;
769
      if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1;
792
     }
770
     }
793
    tmp_int  = EE_Parameter.Gier_P * (StickGier * abs(StickGier)) / 512; // expo  y = ax + bx²
771
    tmp_int  = (long) EE_Parameter.Gier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo  y = ax + bx²
794
    tmp_int += (EE_Parameter.Gier_P * StickGier) / 4;
772
    tmp_int += (EE_Parameter.Gier_P * StickGier) / 4;
795
    sollGier = tmp_int;
773
    sollGier = tmp_int;
796
    Mess_Integral_Gier -= tmp_int;  
774
    Mess_Integral_Gier -= tmp_int;  
797
    if(Mess_Integral_Gier > 25000) Mess_Integral_Gier = 25000;  // begrenzen
775
    if(Mess_Integral_Gier > 25000) Mess_Integral_Gier = 25000;  // begrenzen
798
    if(Mess_Integral_Gier <-25000) Mess_Integral_Gier =-25000;
776
    if(Mess_Integral_Gier <-25000) Mess_Integral_Gier =-25000;