Subversion Repositories FlightCtrl

Rev

Rev 623 | Rev 709 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 623 Rev 693
Line 36... Line 36...
36
// +   * The use of this project (hardware, software, binary files, sources and documentation) is only permittet 
36
// +   * The use of this project (hardware, software, binary files, sources and documentation) is only permittet 
37
// +     for non-commercial use (directly or indirectly)
37
// +     for non-commercial use (directly or indirectly)
38
// +     Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted 
38
// +     Commercial use (for excample: selling of MikroKopters, selling of PCBs, assembly, ...) is only permitted 
39
// +     with our written permission
39
// +     with our written permission
40
// +   * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be 
40
// +   * If sources or documentations are redistributet on other webpages, out webpage (http://www.MikroKopter.de) must be 
41
// +     clearly linked as origin 
-
 
42
// +   * porting to systems other than hardware from www.mikrokopter.de is not allowed
41
// +     clearly linked as origin // +   * porting to systems other than hardware from www.mikrokopter.de is not allowed
43
// +  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
42
// +  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
44
// +  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43
// +  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
45
// +  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44
// +  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
46
// +  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
45
// +  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
47
// +  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
46
// +  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
Line 60... Line 59...
60
volatile int MesswertNick,MesswertRoll,MesswertGier;
59
volatile int MesswertNick,MesswertRoll,MesswertGier;
61
volatile int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0,StartNeutralRoll = 0,StartNeutralNick = 0;
60
volatile int AdNeutralNick = 0,AdNeutralRoll = 0,AdNeutralGier = 0,StartNeutralRoll = 0,StartNeutralNick = 0;
62
volatile int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0;
61
volatile int Mittelwert_AccNick, Mittelwert_AccRoll,Mittelwert_AccHoch, NeutralAccX=0, NeutralAccY=0;
63
volatile float NeutralAccZ = 0;
62
volatile float NeutralAccZ = 0;
64
unsigned char CosinusNickWinkel = 0, CosinusRollWinkel = 0;
63
unsigned char CosinusNickWinkel = 0, CosinusRollWinkel = 0;
65
volatile long IntegralNick = 0,IntegralNick2 = 0;
64
long IntegralNick = 0,IntegralNick2 = 0;
66
volatile long IntegralRoll = 0,IntegralRoll2 = 0;
65
long IntegralRoll = 0,IntegralRoll2 = 0;
67
volatile long IntegralAccNick = 0,IntegralAccRoll = 0,IntegralAccZ = 0;
66
long IntegralAccNick = 0,IntegralAccRoll = 0,IntegralAccZ = 0;
68
volatile long Integral_Gier = 0;
67
long Integral_Gier = 0;
69
volatile long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0;
68
long Mess_IntegralNick = 0,Mess_IntegralNick2 = 0;
70
volatile long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0;
69
long Mess_IntegralRoll = 0,Mess_IntegralRoll2 = 0;
71
volatile long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0;
70
long Mess_Integral_Gier = 0,Mess_Integral_Gier2 = 0;
72
volatile long MittelIntegralNick,MittelIntegralRoll,MittelIntegralNick2,MittelIntegralRoll2;
71
long MittelIntegralNick,MittelIntegralRoll,MittelIntegralNick2,MittelIntegralRoll2;
73
volatile long Mess_Integral_Hoch = 0;
72
volatile long Mess_Integral_Hoch = 0;
74
volatile int  KompassValue = 0;
73
volatile int  KompassValue = 0;
75
volatile int  KompassStartwert = 0;
74
volatile int  KompassStartwert = 0;
76
volatile int  KompassRichtung = 0;
75
volatile int  KompassRichtung = 0;
-
 
76
unsigned int  KompassSignalSchlecht = 500;
77
unsigned char MAX_GAS,MIN_GAS;
77
unsigned char MAX_GAS,MIN_GAS;
78
unsigned char Notlandung = 0;
78
unsigned char Notlandung = 0;
79
unsigned char HoehenReglerAktiv = 0;
79
unsigned char HoehenReglerAktiv = 0;
80
long Umschlag180Nick = 250000L, Umschlag180Roll = 250000L;
80
long Umschlag180Nick = 250000L, Umschlag180Roll = 250000L;
81
 
-
 
-
 
81
long  ErsatzKompass;
-
 
82
int   ErsatzKompassInGrad; // Kompasswert in Grad
-
 
83
int   GierGyroFehler = 0;
82
float GyroFaktor;
84
float GyroFaktor;
83
float IntegralFaktor;
85
float IntegralFaktor;
84
volatile int  DiffNick,DiffRoll;
86
volatile int  DiffNick,DiffRoll;
85
int  Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0;
87
int  Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0;
86
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count;
88
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count;
Line 185... Line 187...
185
    GPS_Neutral();
187
    GPS_Neutral();
186
    beeptime = 50;  
188
    beeptime = 50;  
187
        Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L;
189
        Umschlag180Nick = (long) EE_Parameter.WinkelUmschlagNick * 2500L;
188
        Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L;
190
        Umschlag180Roll = (long) EE_Parameter.WinkelUmschlagRoll * 2500L;
189
    ExternHoehenValue = 0;
191
    ExternHoehenValue = 0;
-
 
192
    ErsatzKompass = KompassValue * GIER_GRAD_FAKTOR;
-
 
193
    GierGyroFehler = 0;
190
}
194
}
Line 191... Line 195...
191
 
195
 
192
//############################################################################
196
//############################################################################
193
// Bearbeitet die Messwerte
197
// Bearbeitet die Messwerte
Line 208... Line 212...
208
        Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 1 + ((long)AdWertAccHoch)) / 2L;
212
        Mittelwert_AccHoch = ((long)Mittelwert_AccHoch * 1 + ((long)AdWertAccHoch)) / 2L;
209
    IntegralAccNick += ACC_AMPLIFY * AdWertAccNick;
213
    IntegralAccNick += ACC_AMPLIFY * AdWertAccNick;
210
    IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll;
214
    IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll;
211
    IntegralAccZ    += Aktuell_az - NeutralAccZ;
215
    IntegralAccZ    += Aktuell_az - NeutralAccZ;
212
// Gier  ++++++++++++++++++++++++++++++++++++++++++++++++
216
// Gier  ++++++++++++++++++++++++++++++++++++++++++++++++
-
 
217
            ErsatzKompass +=  MesswertGier;
213
            Mess_Integral_Gier +=  MesswertGier;
218
            Mess_Integral_Gier +=  MesswertGier;
214
            Mess_Integral_Gier2 += MesswertGier;
219
            Mess_Integral_Gier2 += MesswertGier;
-
 
220
                    if(ErsatzKompass >= (360L * GIER_GRAD_FAKTOR)) ErsatzKompass -= 360L * GIER_GRAD_FAKTOR;  // 360° Umschlag
-
 
221
                    if(ErsatzKompass < 0)                          ErsatzKompass += 360L * GIER_GRAD_FAKTOR;
215
// Kopplungsanteil  +++++++++++++++++++++++++++++++++++++
222
// Kopplungsanteil  +++++++++++++++++++++++++++++++++++++
216
      if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV))
223
      if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV))
217
         {
224
         {
218
            tmpl = Mess_IntegralNick / 4096L;
225
            tmpl = Mess_IntegralNick / 4096L;
219
            tmpl *= MesswertGier;
226
            tmpl *= MesswertGier;
Line 425... Line 432...
425
    GRN_ON;
432
    GRN_ON;
426
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
433
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
427
// Gaswert ermitteln
434
// Gaswert ermitteln
428
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
435
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
429
        GasMischanteil = StickGas;
436
        GasMischanteil = StickGas;
430
    if(GasMischanteil < 0) GasMischanteil = 0;
437
    if(GasMischanteil < MIN_GAS) GasMischanteil = MIN_GAS;
431
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
438
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
432
// Emfang schlecht
439
// Empfang schlecht
433
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
440
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
434
   if(SenderOkay < 100)
441
   if(SenderOkay < 100)
435
        {
442
        {
436
        if(!PcZugriff)
443
        if(!PcZugriff)
437
         {
444
         {
Line 446... Line 453...
446
         {
453
         {
447
          MotorenEin = 0;
454
          MotorenEin = 0;
448
          Notlandung = 0;
455
          Notlandung = 0;
449
         }
456
         }
450
        ROT_ON;
457
        ROT_ON;
451
        if(modell_fliegt > 2000)  // wahrscheinlich in der Luft --> langsam absenken
458
        if(modell_fliegt > 1000)  // wahrscheinlich in der Luft --> langsam absenken
452
            {
459
            {
453
            GasMischanteil = EE_Parameter.NotGas;
460
            GasMischanteil = EE_Parameter.NotGas;
454
            Notlandung = 1;
461
            Notlandung = 1;
455
            PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0;
462
            PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] = 0;
456
            PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0;
463
            PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] = 0;
Line 468... Line 475...
468
            RcLostTimer = EE_Parameter.NotGasZeit * 50;
475
            RcLostTimer = EE_Parameter.NotGasZeit * 50;
469
            if(GasMischanteil > 40)
476
            if(GasMischanteil > 40)
470
                {
477
                {
471
                if(modell_fliegt < 0xffff) modell_fliegt++;
478
                if(modell_fliegt < 0xffff) modell_fliegt++;
472
                }
479
                }
473
            if((modell_fliegt < 200) || (GasMischanteil < 40))
480
            if((modell_fliegt < 200))// || (GasMischanteil < 40))
474
                {
481
                {
475
                SummeNick = 0;
482
                SummeNick = 0;
476
                SummeRoll = 0;
483
                SummeRoll = 0;
-
 
484
//                StickGier = 0;
477
                Mess_Integral_Gier = 0;
485
//                Mess_Integral_Gier = 0;       
478
                Mess_Integral_Gier2 = 0;
486
//                Mess_Integral_Gier2 = 0;
479
                }
487
                }
480
            if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0)
488
            if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0)
481
                {
489
                {
482
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
490
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
483
// auf Nullwerte kalibrieren
491
// auf Nullwerte kalibrieren
Line 796... Line 804...
796
    Mess_IntegralNick2 -= IntegralFehlerNick;
804
    Mess_IntegralNick2 -= IntegralFehlerNick;
797
    Mess_IntegralRoll2 -= IntegralFehlerRoll;
805
    Mess_IntegralRoll2 -= IntegralFehlerRoll;
Line 798... Line 806...
798
 
806
 
799
//    IntegralFehlerNick = (IntegralFehlerNick * 1 + tmp_long) / 2;
807
//    IntegralFehlerNick = (IntegralFehlerNick * 1 + tmp_long) / 2;
-
 
808
//    IntegralFehlerRoll = (IntegralFehlerRoll * 1 + tmp_long2) / 2;
-
 
809
DebugOut.Analog[10] = GierGyroFehler;
-
 
810
    if(GierGyroFehler > ABGLEICH_ANZAHL/2) AdNeutralGier++;
Line 800... Line -...
800
//    IntegralFehlerRoll = (IntegralFehlerRoll * 1 + tmp_long2) / 2;
-
 
-
 
811
    if(GierGyroFehler <-ABGLEICH_ANZAHL/2) AdNeutralGier--;
801
 
812
 
802
 
813
    GierGyroFehler = 0;
803
DebugOut.Analog[17] = IntegralAccNick / 26;
814
DebugOut.Analog[17] = IntegralAccNick / 26;
804
DebugOut.Analog[18] = IntegralAccRoll / 26;
815
DebugOut.Analog[18] = IntegralAccRoll / 26;
805
DebugOut.Analog[19] = IntegralFehlerNick;// / 26;
816
DebugOut.Analog[19] = IntegralFehlerNick;// / 26;
Line 907... Line 918...
907
//DebugOut.Analog[31] = StickRoll / (26*IntegralFaktor);
918
//DebugOut.Analog[31] = StickRoll / (26*IntegralFaktor);
Line 908... Line 919...
908
 
919
 
909
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
920
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
910
//  Gieren
921
//  Gieren
-
 
922
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
911
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
923
//    if(GasMischanteil < 35) { if(StickGier > 10) StickGier = 10; else if(StickGier < -10) StickGier = -10;};
912
    if(abs(StickGier) > 20) // war 35 
924
    if(abs(StickGier) > 20) // war 35 
913
     {
925
     {
914
      if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1;
926
      if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) { NeueKompassRichtungMerken = 1; KompassSignalSchlecht = 500;};
915
     }
927
     }
916
    tmp_int  = (long) EE_Parameter.Gier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo  y = ax + bx²
928
    tmp_int  = (long) EE_Parameter.Gier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo  y = ax + bx²
917
    tmp_int += (EE_Parameter.Gier_P * StickGier) / 4;
929
    tmp_int += (EE_Parameter.Gier_P * StickGier) / 4;
918
    sollGier = tmp_int;
930
    sollGier = tmp_int;
Line 923... Line 935...
923
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
935
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
924
//  Kompass
936
//  Kompass
925
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
937
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
926
    if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV))
938
    if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV))
927
     {
939
     {
928
       int w,v;
940
       int w,v,fehler,korrektur;
929
       static int SignalSchlecht = 0;
941
       static int KompassSignalSchlecht = 0;
930
       w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln
942
       w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln
931
       v = abs(IntegralRoll /512);
943
       v = abs(IntegralRoll /512);
-
 
944
//v /= 4;
-
 
945
//w /= 4;
932
       if(v > w) w = v; // grösste Neigung ermitteln
946
       if(v > w) w = v; // grösste Neigung ermitteln
-
 
947
       korrektur = w + 3;
933
       if(w < 25 && NeueKompassRichtungMerken && !SignalSchlecht)    
948
       if(w < 25 && NeueKompassRichtungMerken && !KompassSignalSchlecht)    
934
        {
949
        {
935
         KompassStartwert = KompassValue;
950
         KompassStartwert = KompassValue;
936
         NeueKompassRichtungMerken = 0;
951
         NeueKompassRichtungMerken = 0;
937
        }
952
        }
938
       w = (w * Parameter_KompassWirkung) / 64;           // auf die Wirkung normieren
953
       w = (w * Parameter_KompassWirkung) / 64;           // auf die Wirkung normieren
939
       w = Parameter_KompassWirkung - w;                  // Wirkung ggf drosseln
954
       w = Parameter_KompassWirkung - w;                  // Wirkung ggf drosseln
940
       if(w > 0)
955
       if(w > 0)
941
        {
956
        {
-
 
957
          if(!KompassSignalSchlecht)
-
 
958
          {
-
 
959
           fehler = ((540 + KompassValue - (ErsatzKompass/GIER_GRAD_FAKTOR)) % 360) - 180;
-
 
960
           GierGyroFehler += fehler;
-
 
961
//           DebugOut.Analog[10] = fehler;
-
 
962
           ErsatzKompass += (fehler * 128) / korrektur;
942
          if(!SignalSchlecht) Mess_Integral_Gier += (KompassRichtung * w) / 32;  // nach Kompass ausrichten
963
           v = (KompassRichtung * w) / 32;  // nach Kompass ausrichten
-
 
964
           w = Parameter_KompassWirkung;
-
 
965
           if(v > w) v = w; // Begrenzen
-
 
966
           else
-
 
967
           if(v < -w) v = -w;
-
 
968
           Mess_Integral_Gier += v;
-
 
969
          }
943
          if(SignalSchlecht) SignalSchlecht--;
970
          if(KompassSignalSchlecht) KompassSignalSchlecht--;
944
        }  
971
        }  
945
        else SignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek
972
        else KompassSignalSchlecht = 500; // so lange das Signal taub stellen --> ca. 1 sek
946
     }
973
     }
947
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
974
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
Line 948... Line 975...
948
 
975
 
949
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
976
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
Line 958... Line 985...
958
    DebugOut.Analog[3] = Mittelwert_AccRoll;
985
    DebugOut.Analog[3] = Mittelwert_AccRoll;
959
    DebugOut.Analog[4] = MesswertGier;
986
    DebugOut.Analog[4] = MesswertGier;
960
    DebugOut.Analog[5] = HoehenWert;
987
    DebugOut.Analog[5] = HoehenWert;
961
    DebugOut.Analog[6] =(Mess_Integral_Hoch / 512);
988
    DebugOut.Analog[6] =(Mess_Integral_Hoch / 512);
962
    DebugOut.Analog[8] = KompassValue;
989
    DebugOut.Analog[8] = KompassValue;
-
 
990
    DebugOut.Analog[8] = KompassValue;
963
    DebugOut.Analog[9] = UBat;
991
    DebugOut.Analog[9] = UBat;
-
 
992
    DebugOut.Analog[11] = ErsatzKompass / GIER_GRAD_FAKTOR;  
964
    DebugOut.Analog[10] = SenderOkay;
993
    DebugOut.Analog[10] = SenderOkay;
965
    DebugOut.Analog[16] = Mittelwert_AccHoch;
994
    DebugOut.Analog[16] = Mittelwert_AccHoch;
Line 966... Line 995...
966
 
995
 
967
/*    DebugOut.Analog[16] = motor_rx[0];
996
/*    DebugOut.Analog[16] = motor_rx[0];
Line 1067... Line 1096...
1067
// Gier-Anteil
1096
// Gier-Anteil
1068
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
1097
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
1069
#define MUL_G  1.0
1098
#define MUL_G  1.0
1070
    GierMischanteil = MesswertGier - sollGier;     // Regler für Gier
1099
    GierMischanteil = MesswertGier - sollGier;     // Regler für Gier
1071
// GierMischanteil = 0;
1100
// GierMischanteil = 0;
-
 
1101
#define MIN_GIERGAS  30  // unter diesem Gaswert trotzdem Gieren
-
 
1102
   if(GasMischanteil > MIN_GIERGAS)
1072
 
1103
    {
1073
    if(GierMischanteil > (GasMischanteil / 2)) GierMischanteil = GasMischanteil / 2;
1104
     if(GierMischanteil > (GasMischanteil / 2)) GierMischanteil = GasMischanteil / 2;
1074
    if(GierMischanteil < -(GasMischanteil / 2)) GierMischanteil = -(GasMischanteil / 2);
1105
     if(GierMischanteil < -(GasMischanteil / 2)) GierMischanteil = -(GasMischanteil / 2);
-
 
1106
    }
-
 
1107
    else
-
 
1108
    {
-
 
1109
     if(GierMischanteil > (MIN_GIERGAS / 2))  GierMischanteil = MIN_GIERGAS / 2;
-
 
1110
     if(GierMischanteil < -(MIN_GIERGAS / 2)) GierMischanteil = -(MIN_GIERGAS / 2);
-
 
1111
    }
1075
    if(GierMischanteil > ((MAX_GAS - GasMischanteil))) GierMischanteil = ((MAX_GAS - GasMischanteil));
1112
    if(GierMischanteil > ((MAX_GAS - GasMischanteil))) GierMischanteil = ((MAX_GAS - GasMischanteil));
1076
    if(GierMischanteil < -((MAX_GAS - GasMischanteil))) GierMischanteil = -((MAX_GAS - GasMischanteil));
1113
    if(GierMischanteil < -((MAX_GAS - GasMischanteil))) GierMischanteil = -((MAX_GAS - GasMischanteil));
Line 1077... Line 1114...
1077
 
1114
 
1078
    if(GasMischanteil < 20) GierMischanteil = 0;
1115
//    if(GasMischanteil < 20) GierMischanteil = 0;
1079
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
1116
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
1080
// Nick-Achse
1117
// Nick-Achse
1081
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
1118
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
1082
    DiffNick = MesswertNick - (StickNick - GPS_Nick);   // Differenz bestimmen
1119
    DiffNick = MesswertNick - (StickNick - GPS_Nick);   // Differenz bestimmen