Subversion Repositories FlightCtrl

Rev

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

Rev 1083 Rev 1111
Line 88... Line 88...
88
float GyroFaktor;
88
float GyroFaktor;
89
float IntegralFaktor;
89
float IntegralFaktor;
90
volatile int  DiffNick,DiffRoll;
90
volatile int  DiffNick,DiffRoll;
91
int  Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0;
91
int  Poti1 = 0, Poti2 = 0, Poti3 = 0, Poti4 = 0;
92
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count;
92
volatile unsigned char Motor_Vorne,Motor_Hinten,Motor_Rechts,Motor_Links, Count;
-
 
93
volatile unsigned char Motor1, Motor2,Motor3,Motor4,Motor5,Motor6,Motor7,Motor8;
93
volatile unsigned char SenderOkay = 0;
94
volatile unsigned char SenderOkay = 0;
94
int StickNick = 0,StickRoll = 0,StickGier = 0,StickGas = 0;
95
int StickNick = 0,StickRoll = 0,StickGier = 0,StickGas = 0;
95
char MotorenEin = 0;
96
char MotorenEin = 0;
96
int HoehenWert = 0;
97
int HoehenWert = 0;
97
int SollHoehe = 0;
98
int SollHoehe = 0;
Line 103... Line 104...
103
unsigned char Parameter_Luftdruck_D  = 48;      // Wert : 0-250
104
unsigned char Parameter_Luftdruck_D  = 48;      // Wert : 0-250
104
unsigned char Parameter_MaxHoehe     = 251;      // Wert : 0-250
105
unsigned char Parameter_MaxHoehe     = 251;      // Wert : 0-250
105
unsigned char Parameter_Hoehe_P      = 16;      // Wert : 0-32
106
unsigned char Parameter_Hoehe_P      = 16;      // Wert : 0-32
106
unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250
107
unsigned char Parameter_Hoehe_ACC_Wirkung = 58; // Wert : 0-250
107
unsigned char Parameter_KompassWirkung = 64;    // Wert : 0-250
108
unsigned char Parameter_KompassWirkung = 64;    // Wert : 0-250
-
 
109
unsigned char Parameter_Gyro_D = 8;             // Wert : 0-250
108
unsigned char Parameter_Gyro_P = 150;           // Wert : 10-250
110
unsigned char Parameter_Gyro_P = 150;           // Wert : 10-250
109
unsigned char Parameter_Gyro_I = 150;           // Wert : 0-250
111
unsigned char Parameter_Gyro_I = 150;           // Wert : 0-250
110
unsigned char Parameter_Gier_P = 2;             // Wert : 1-20
112
unsigned char Parameter_Gier_P = 2;             // Wert : 1-20
111
unsigned char Parameter_I_Faktor = 10;          // Wert : 1-20
113
unsigned char Parameter_I_Faktor = 10;          // Wert : 1-20
112
unsigned char Parameter_UserParam1 = 0;
114
unsigned char Parameter_UserParam1 = 0;
Line 118... Line 120...
118
unsigned char Parameter_UserParam7 = 0;
120
unsigned char Parameter_UserParam7 = 0;
119
unsigned char Parameter_UserParam8 = 0;
121
unsigned char Parameter_UserParam8 = 0;
120
unsigned char Parameter_ServoNickControl = 100;
122
unsigned char Parameter_ServoNickControl = 100;
121
unsigned char Parameter_LoopGasLimit = 70;
123
unsigned char Parameter_LoopGasLimit = 70;
122
unsigned char Parameter_AchsKopplung1 = 0;
124
unsigned char Parameter_AchsKopplung1 = 0;
-
 
125
unsigned char Parameter_AchsKopplung2 = 6;
123
unsigned char Parameter_AchsGegenKopplung1 = 0;
126
unsigned char Parameter_AchsGegenKopplung1 = 0;
124
unsigned char Parameter_DynamicStability = 100;
127
unsigned char Parameter_DynamicStability = 100;
125
unsigned char Parameter_J16Bitmask;             // for the J16 Output
128
unsigned char Parameter_J16Bitmask;             // for the J16 Output
126
unsigned char Parameter_J16Timing;              // for the J16 Output
129
unsigned char Parameter_J16Timing;              // for the J16 Output
127
unsigned char Parameter_J17Bitmask;             // for the J17 Output
130
unsigned char Parameter_J17Bitmask;             // for the J17 Output
Line 139... Line 142...
139
struct mk_param_struct EE_Parameter;
142
struct mk_param_struct EE_Parameter;
140
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20;
143
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20;
141
int MaxStickNick = 0,MaxStickRoll = 0;
144
int MaxStickNick = 0,MaxStickRoll = 0;
142
unsigned int  modell_fliegt = 0;
145
unsigned int  modell_fliegt = 0;
143
unsigned char MikroKopterFlags = 0;
146
unsigned char MikroKopterFlags = 0;
-
 
147
unsigned int GIER_GRAD_FAKTOR = 1291;
Line 144... Line 148...
144
 
148
 
145
void Piep(unsigned char Anzahl)
149
void Piep(unsigned char Anzahl)
146
{
150
{
147
 while(Anzahl--)
151
 while(Anzahl--)
Line 155... Line 159...
155
//############################################################################
159
//############################################################################
156
//  Nullwerte ermitteln
160
//  Nullwerte ermitteln
157
void SetNeutral(void)
161
void SetNeutral(void)
158
//############################################################################
162
//############################################################################
159
{
163
{
-
 
164
 unsigned char i;
-
 
165
 unsigned int gier_neutral=0, nick_neutral=0, roll_neutral=0;
160
        NeutralAccX = 0;
166
        NeutralAccX = 0;
161
        NeutralAccY = 0;
167
        NeutralAccY = 0;
162
        NeutralAccZ = 0;
168
        NeutralAccZ = 0;
163
    AdNeutralNick = 0;
169
    AdNeutralNick = 0;
164
        AdNeutralRoll = 0;
170
        AdNeutralRoll = 0;
Line 172... Line 178...
172
        CalibrierMittelwert();
178
        CalibrierMittelwert();
173
    if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG))  // Höhenregelung aktiviert?
179
    if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG))  // Höhenregelung aktiviert?
174
     {
180
     {
175
      if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
181
      if((MessLuftdruck > 950) || (MessLuftdruck < 750)) SucheLuftruckOffset();
176
     }
182
     }
-
 
183
    for(i=0; i<32; i++)
-
 
184
         {
-
 
185
          Delay_ms_Mess(10);
-
 
186
          gier_neutral += AdWertGier;
-
 
187
          nick_neutral += MesswertNick;
-
 
188
          roll_neutral += MesswertRoll;
177
 
189
         }
178
     AdNeutralNick= AdWertNick;
190
     AdNeutralNick= nick_neutral / 32;
179
         AdNeutralRoll= AdWertRoll;
191
         AdNeutralRoll= roll_neutral / 32;
180
         AdNeutralGier= AdWertGier;
192
         AdNeutralGier= gier_neutral / 32;
181
     AdNeutralGierBias = AdWertGier;
193
     AdNeutralGierBias = AdNeutralGier;
182
     StartNeutralRoll = AdNeutralRoll;
194
     StartNeutralRoll = AdNeutralRoll;
183
     StartNeutralNick = AdNeutralNick;
195
     StartNeutralNick = AdNeutralNick;
184
    if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4)
196
    if(eeprom_read_byte(&EEPromArray[EEPROM_ADR_ACC_NICK]) > 4)
185
    {
197
    {
186
      NeutralAccY = abs(Mittelwert_AccRoll) / ACC_AMPLIFY;
198
      NeutralAccY = abs(Mittelwert_AccRoll) / ACC_AMPLIFY;
Line 200... Line 212...
200
    Mess_IntegralRoll2 = 0;
212
    Mess_IntegralRoll2 = 0;
201
    Mess_Integral_Gier = 0;
213
    Mess_Integral_Gier = 0;
202
    MesswertNick = 0;
214
    MesswertNick = 0;
203
    MesswertRoll = 0;
215
    MesswertRoll = 0;
204
    MesswertGier = 0;
216
    MesswertGier = 0;
205
 Delay_ms_Mess(100);
217
    Delay_ms_Mess(100);
206
    StartLuftdruck = Luftdruck;
218
    StartLuftdruck = Luftdruck;
207
    HoeheD = 0;
219
    HoeheD = 0;
208
    Mess_Integral_Hoch = 0;
220
    Mess_Integral_Hoch = 0;
209
    KompassStartwert = KompassValue;
221
    KompassStartwert = KompassValue;
210
    GPS_Neutral();
222
    GPS_Neutral();
Line 225... Line 237...
225
//############################################################################
237
//############################################################################
226
// Bearbeitet die Messwerte
238
// Bearbeitet die Messwerte
227
void Mittelwert(void)
239
void Mittelwert(void)
228
//############################################################################
240
//############################################################################
229
{
241
{
230
    static signed long tmpl,tmpl2;
242
    static signed long tmpl,tmpl2,tmpl3,tmpl4;
-
 
243
        static signed int oldNick, oldRoll, d2Roll, d2Nick;
-
 
244
        signed int tmp_int;
231
    MesswertGier = (signed int) AdNeutralGier - AdWertGier;
245
        MesswertGier = (signed int) AdNeutralGier - AdWertGier;
-
 
246
    ErsatzKompass += MesswertGier;
232
    MesswertGierBias = (signed int) AdNeutralGierBias - AdWertGier;
247
//    MesswertGierBias = (signed int) AdNeutralGierBias - AdWertGier;
233
    MesswertRoll = (signed int) AdWertRoll - AdNeutralRoll;
248
    MesswertRoll = (signed int) AdWertRoll - AdNeutralRoll;
234
    MesswertNick = (signed int) AdWertNick - AdNeutralNick;
249
    MesswertNick = (signed int) AdWertNick - AdNeutralNick;
235
 
-
 
236
//DebugOut.Analog[26] = MesswertNick;
250
DebugOut.Analog[21] = MesswertNick;
237
DebugOut.Analog[28] = MesswertRoll;
251
DebugOut.Analog[22] = MesswertRoll;
Line 238... Line 252...
238
 
252
 
239
// Beschleunigungssensor  ++++++++++++++++++++++++++++++++++++++++++++++++
253
// Beschleunigungssensor  ++++++++++++++++++++++++++++++++++++++++++++++++
240
        Mittelwert_AccNick = ((long)Mittelwert_AccNick * 1 + ((ACC_AMPLIFY * (long)AdWertAccNick))) / 2L;
254
        Mittelwert_AccNick = ((long)Mittelwert_AccNick * 1 + ((ACC_AMPLIFY * (long)AdWertAccNick))) / 2L;
241
        Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 1 + ((ACC_AMPLIFY * (long)AdWertAccRoll))) / 2L;
255
        Mittelwert_AccRoll = ((long)Mittelwert_AccRoll * 1 + ((ACC_AMPLIFY * (long)AdWertAccRoll))) / 2L;
Line 244... Line 258...
244
    IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll;
258
    IntegralAccRoll += ACC_AMPLIFY * AdWertAccRoll;
245
    NaviAccNick    += AdWertAccNick;
259
    NaviAccNick    += AdWertAccNick;
246
    NaviAccRoll    += AdWertAccRoll;
260
    NaviAccRoll    += AdWertAccRoll;
247
    NaviCntAcc++;
261
    NaviCntAcc++;
248
    IntegralAccZ    += Aktuell_az - NeutralAccZ;
262
    IntegralAccZ    += Aktuell_az - NeutralAccZ;
-
 
263
 
249
// Gier  ++++++++++++++++++++++++++++++++++++++++++++++++
264
// Gier  ++++++++++++++++++++++++++++++++++++++++++++++++
250
            ErsatzKompass +=  MesswertGier;
-
 
251
            Mess_Integral_Gier +=  MesswertGier;
-
 
252
//            Mess_Integral_Gier2 += MesswertGier;
265
//            Mess_Integral_Gier2 += MesswertGier;
253
                    if(ErsatzKompass >= (360L * GIER_GRAD_FAKTOR)) ErsatzKompass -= 360L * GIER_GRAD_FAKTOR;  // 360° Umschlag
-
 
254
                    if(ErsatzKompass < 0)                          ErsatzKompass += 360L * GIER_GRAD_FAKTOR;
-
 
255
// Kopplungsanteil  +++++++++++++++++++++++++++++++++++++
266
// Kopplungsanteil  +++++++++++++++++++++++++++++++++++++
256
      if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV))
267
      if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV))
257
         {
268
         {
258
            tmpl = (MesswertGierBias * Mess_IntegralNick) / 2048L;
269
            tmpl3 = (MesswertRoll * Mess_IntegralNick) / 2048L;
-
 
270
            tmpl3 *= Parameter_AchsKopplung1; //65
-
 
271
            tmpl3 /= 4096L;
-
 
272
            tmpl4 = (MesswertNick * Mess_IntegralRoll) / 2048L;
-
 
273
            tmpl4 *= Parameter_AchsKopplung1; //65  
-
 
274
            tmpl4 /= 4096L;
-
 
275
            tmpl4 -= tmpl3;
-
 
276
            ErsatzKompass += tmpl4;
-
 
277
 
-
 
278
            tmpl = ((MesswertGier + tmpl4) * Mess_IntegralNick) / 2048L;
259
            tmpl *= Parameter_AchsKopplung1;  //125
279
            tmpl *= Parameter_AchsKopplung1;  // 90
260
            tmpl /= 4096L;
280
            tmpl /= 4096L;
261
            tmpl2 = (MesswertGierBias * Mess_IntegralRoll) / 2048L;
281
            tmpl2 = ((MesswertGier + tmpl4) * Mess_IntegralRoll) / 2048L;
262
            tmpl2 *= Parameter_AchsKopplung1;
282
            tmpl2 *= Parameter_AchsKopplung1;
263
            tmpl2 /= 4096L;
283
            tmpl2 /= 4096L;
264
            if(labs(tmpl) > 128 || labs(tmpl2) > 128) TrichterFlug = 1;
284
            if(labs(tmpl) > 128 || labs(tmpl2) > 128) TrichterFlug = 1;
-
 
285
            MesswertGier += tmpl4 / 2;
265
         }
286
         }
266
      else  tmpl = tmpl2 = 0;
287
      else  tmpl = tmpl2 = 0;
-
 
288
 
-
 
289
// Kompasswert begrenzen  ++++++++++++++++++++++++++++++++++++++++++++++++
-
 
290
                    if(ErsatzKompass >= (360L * GIER_GRAD_FAKTOR)) ErsatzKompass -= 360L * GIER_GRAD_FAKTOR;  // 360° Umschlag
-
 
291
                    if(ErsatzKompass < 0)                          ErsatzKompass += 360L * GIER_GRAD_FAKTOR;
267
// Roll  ++++++++++++++++++++++++++++++++++++++++++++++++
292
// Roll  ++++++++++++++++++++++++++++++++++++++++++++++++
268
            MesswertRoll += tmpl;
293
            MesswertRoll += tmpl;
269
            MesswertRoll += (tmpl2*Parameter_AchsGegenKopplung1)/512L; //109
294
            MesswertRoll += (tmpl2*Parameter_AchsGegenKopplung1)/512L; //109
270
            Mess_IntegralRoll2 += MesswertRoll;
295
            Mess_IntegralRoll2 += MesswertRoll;
271
            Mess_IntegralRoll +=  MesswertRoll - LageKorrekturRoll;
296
            Mess_IntegralRoll +=  MesswertRoll - LageKorrekturRoll;
Line 286... Line 311...
286
              if(AdWertRoll > 1010) MesswertRoll = +1000;
311
              if(AdWertRoll > 1010) MesswertRoll = +1000;
287
              if(AdWertRoll > 1017) MesswertRoll = +2000;
312
              if(AdWertRoll > 1017) MesswertRoll = +2000;
288
                         }
313
                         }
289
                         else
314
                         else
290
                         {
315
                         {
291
              if(AdWertRoll > 2020) MesswertRoll = +1000;
316
              if(AdWertRoll > 2000) MesswertRoll = +1000;
292
              if(AdWertRoll > 2034) MesswertRoll = +2000;
317
              if(AdWertRoll > 2015) MesswertRoll = +2000;
293
                         }
318
                         }
294
// Nick  ++++++++++++++++++++++++++++++++++++++++++++++++
319
// Nick  ++++++++++++++++++++++++++++++++++++++++++++++++
295
            MesswertNick -= tmpl2;
320
            MesswertNick -= tmpl2;
296
            MesswertNick -= (tmpl*Parameter_AchsGegenKopplung1)/512L;
321
            MesswertNick -= (tmpl*Parameter_AchsGegenKopplung1)/512L;
297
            Mess_IntegralNick2 += MesswertNick;
322
            Mess_IntegralNick2 += MesswertNick;
Line 314... Line 339...
314
              if(AdWertNick > 1010) MesswertNick = +1000;
339
              if(AdWertNick > 1010) MesswertNick = +1000;
315
              if(AdWertNick > 1017) MesswertNick = +2000;
340
              if(AdWertNick > 1017) MesswertNick = +2000;
316
                         }
341
                         }
317
                         else
342
                         else
318
                         {
343
                         {
319
              if(AdWertNick > 2020) MesswertNick = +1000;
344
              if(AdWertNick > 2000) MesswertNick = +1000;
320
              if(AdWertNick > 2034) MesswertNick = +2000;
345
              if(AdWertNick > 2015) MesswertNick = +2000;
321
                         }
346
                         }
-
 
347
 
322
//++++++++++++++++++++++++++++++++++++++++++++++++
348
//++++++++++++++++++++++++++++++++++++++++++++++++
323
// ADC einschalten
349
// ADC einschalten
324
    ANALOG_ON;
350
    ANALOG_ON;
325
//++++++++++++++++++++++++++++++++++++++++++++++++
351
//++++++++++++++++++++++++++++++++++++++++++++++++
Line 335... Line 361...
335
    if(MesswertNick > 200)       MesswertNick += 4 * (MesswertNick - 200);
361
    if(MesswertNick > 200)       MesswertNick += 4 * (MesswertNick - 200);
336
    else if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200);
362
    else if(MesswertNick < -200) MesswertNick += 4 * (MesswertNick + 200);
337
    if(MesswertRoll > 200)       MesswertRoll += 4 * (MesswertRoll - 200);
363
    if(MesswertRoll > 200)       MesswertRoll += 4 * (MesswertRoll - 200);
338
    else if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200);
364
    else if(MesswertRoll < -200) MesswertRoll += 4 * (MesswertRoll + 200);
339
  }
365
  }
-
 
366
 
-
 
367
  if(PlatinenVersion >= 20) Parameter_Gyro_D = 8; else Parameter_Gyro_D = 0;
-
 
368
 
-
 
369
#define D_LIMIT 64
-
 
370
  if(Parameter_Gyro_D)
-
 
371
  {
-
 
372
   d2Nick = (((MesswertNick - oldNick) * (signed int) Parameter_Gyro_D));
-
 
373
   oldNick = MesswertNick;
-
 
374
   if(d2Nick > D_LIMIT) d2Nick = D_LIMIT;
-
 
375
   else if(d2Nick < -D_LIMIT) d2Nick = -D_LIMIT;
-
 
376
   MesswertNick += d2Nick;
-
 
377
 
-
 
378
   d2Roll = (((MesswertRoll - oldRoll) * (signed int) Parameter_Gyro_D));
-
 
379
   oldRoll = MesswertRoll;
-
 
380
   if(d2Roll > D_LIMIT) d2Roll = D_LIMIT;
-
 
381
   else if(d2Roll < -D_LIMIT) d2Roll = -D_LIMIT;
-
 
382
   MesswertRoll += d2Roll;
-
 
383
  }
-
 
384
 
340
    if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--;
385
    if(Poti1 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110) Poti1++; else if(Poti1 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI1]] + 110 && Poti1) Poti1--;
341
    if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--;
386
    if(Poti2 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110) Poti2++; else if(Poti2 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI2]] + 110 && Poti2) Poti2--;
342
    if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--;
387
    if(Poti3 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110) Poti3++; else if(Poti3 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI3]] + 110 && Poti3) Poti3--;
343
    if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--;
388
    if(Poti4 < PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110) Poti4++; else if(Poti4 > PPM_in[EE_Parameter.Kanalbelegung[K_POTI4]] + 110 && Poti4) Poti4--;
344
    if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255;
389
    if(Poti1 < 0) Poti1 = 0; else if(Poti1 > 255) Poti1 = 255;
Line 381... Line 426...
381
void SendMotorData(void)
426
void SendMotorData(void)
382
//############################################################################
427
//############################################################################
383
{
428
{
384
    if(!MotorenEin)
429
    if(!MotorenEin)
385
        {
430
        {
-
 
431
#ifdef OCTO
-
 
432
                Motor1 = 0;Motor2 = 0;Motor3 = 0;Motor4 = 0;Motor5 = 0;Motor6 = 0;Motor7 = 0;Motor8 = 0;
386
        Motor_Hinten = 0;
433
        if(MotorTest[0]) {Motor1 = MotorTest[0]; Motor2 = MotorTest[0];}
387
        Motor_Vorne = 0;
434
        if(MotorTest[3]) {Motor3 = MotorTest[3]; Motor4 = MotorTest[3];}
-
 
435
        if(MotorTest[1]) {Motor5 = MotorTest[1]; Motor6 = MotorTest[1];}
388
        Motor_Rechts = 0;
436
        if(MotorTest[2]) {Motor7 = MotorTest[2]; Motor8 = MotorTest[2];}
-
 
437
#else 
389
        Motor_Links = 0;
438
        Motor_Hinten = 0; Motor_Vorne = 0; Motor_Rechts = 0; Motor_Links = 0;
390
        if(MotorTest[0]) Motor_Vorne = MotorTest[0];
439
        if(MotorTest[0]) Motor_Vorne = MotorTest[0];
391
        if(MotorTest[1]) Motor_Hinten = MotorTest[1];
440
        if(MotorTest[1]) Motor_Hinten = MotorTest[1];
392
        if(MotorTest[2]) Motor_Links = MotorTest[2];
441
        if(MotorTest[2]) Motor_Links = MotorTest[2];
393
        if(MotorTest[3]) Motor_Rechts = MotorTest[3];
442
        if(MotorTest[3]) Motor_Rechts = MotorTest[3];
-
 
443
#endif
-
 
444
 
394
        MikroKopterFlags &= ~(FLAG_MOTOR_RUN | FLAG_FLY);
445
        MikroKopterFlags &= ~(FLAG_MOTOR_RUN | FLAG_FLY);
395
        } else MikroKopterFlags |= FLAG_MOTOR_RUN;
446
        } else MikroKopterFlags |= FLAG_MOTOR_RUN;
Line 396... Line 447...
396
 
447
 
397
    DebugOut.Analog[12] = Motor_Vorne;
448
    DebugOut.Analog[12] = Motor_Vorne;
Line 842... Line 893...
842
      if(tmp_long >  AUSGLEICH)  tmp_long  = AUSGLEICH;
893
      if(tmp_long >  AUSGLEICH)  tmp_long  = AUSGLEICH;
843
      if(tmp_long < -AUSGLEICH)  tmp_long  =-AUSGLEICH;
894
      if(tmp_long < -AUSGLEICH)  tmp_long  =-AUSGLEICH;
844
      if(tmp_long2 > AUSGLEICH)  tmp_long2 = AUSGLEICH;
895
      if(tmp_long2 > AUSGLEICH)  tmp_long2 = AUSGLEICH;
845
      if(tmp_long2 <-AUSGLEICH)  tmp_long2 =-AUSGLEICH;
896
      if(tmp_long2 <-AUSGLEICH)  tmp_long2 =-AUSGLEICH;
846
     }
897
     }
847
 
-
 
848
    Mess_IntegralNick -= tmp_long;
898
   Mess_IntegralNick -= tmp_long;
849
    Mess_IntegralRoll -= tmp_long2;
899
   Mess_IntegralRoll -= tmp_long2;
850
  }
900
  }
851
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
901
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
852
 if(ZaehlMessungen >= ABGLEICH_ANZAHL)
902
 if(ZaehlMessungen >= ABGLEICH_ANZAHL)
853
 {
903
 {
854
  static int cnt = 0;
904
  static int cnt = 0;
855
  static char last_n_p,last_n_n,last_r_p,last_r_n;
905
  static char last_n_p,last_n_n,last_r_p,last_r_n;
856
  static long MittelIntegralNick_Alt,MittelIntegralRoll_Alt;
906
  static long MittelIntegralNick_Alt,MittelIntegralRoll_Alt;
857
  if(!Looping_Nick && !Looping_Roll && !TrichterFlug)
907
  if(!Looping_Nick && !Looping_Roll && !TrichterFlug && (PlatinenVersion < 20))
858
  {
908
  {
859
    MittelIntegralNick  /= ABGLEICH_ANZAHL;
909
    MittelIntegralNick  /= ABGLEICH_ANZAHL;
860
    MittelIntegralRoll  /= ABGLEICH_ANZAHL;
910
    MittelIntegralRoll  /= ABGLEICH_ANZAHL;
861
        IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL;
911
        IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL;
862
        IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL;
912
        IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL;
Line 892... Line 942...
892
    Mess_IntegralNick2 -= IntegralFehlerNick;
942
    Mess_IntegralNick2 -= IntegralFehlerNick;
893
    Mess_IntegralRoll2 -= IntegralFehlerRoll;
943
    Mess_IntegralRoll2 -= IntegralFehlerRoll;
Line 894... Line 944...
894
 
944
 
895
//    IntegralFehlerNick = (IntegralFehlerNick * 1 + tmp_long) / 2;
945
//    IntegralFehlerNick = (IntegralFehlerNick * 1 + tmp_long) / 2;
-
 
946
//    IntegralFehlerRoll = (IntegralFehlerRoll * 1 + tmp_long2) / 2;
-
 
947
  if(EE_Parameter.Driftkomp)
896
//    IntegralFehlerRoll = (IntegralFehlerRoll * 1 + tmp_long2) / 2;
948
   {
897
    if(GierGyroFehler > ABGLEICH_ANZAHL/2) { AdNeutralGier++; AdNeutralGierBias++; }
949
    if(GierGyroFehler > ABGLEICH_ANZAHL/2) { AdNeutralGier++; AdNeutralGierBias++; }
898
    if(GierGyroFehler <-ABGLEICH_ANZAHL/2) { AdNeutralGier--; AdNeutralGierBias--; }
950
    if(GierGyroFehler <-ABGLEICH_ANZAHL/2) { AdNeutralGier--; AdNeutralGierBias--; }
899
 
951
   }
900
DebugOut.Analog[22] = MittelIntegralRoll / 26;
952
DebugOut.Analog[22] = MittelIntegralRoll / 26;
901
//DebugOut.Analog[24] = GierGyroFehler;
953
//DebugOut.Analog[24] = GierGyroFehler;
Line 1098... Line 1150...
1098
    DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor;
1150
    DebugOut.Analog[1] = IntegralRoll / EE_Parameter.GyroAccFaktor;
1099
    DebugOut.Analog[2] = Mittelwert_AccNick;
1151
    DebugOut.Analog[2] = Mittelwert_AccNick;
1100
    DebugOut.Analog[3] = Mittelwert_AccRoll;
1152
    DebugOut.Analog[3] = Mittelwert_AccRoll;
1101
    DebugOut.Analog[4] = MesswertGier;
1153
    DebugOut.Analog[4] = MesswertGier;
1102
    DebugOut.Analog[5] = HoehenWert;
1154
    DebugOut.Analog[5] = HoehenWert;
1103
    DebugOut.Analog[6] = (Mess_Integral_Hoch / 512);
1155
    DebugOut.Analog[6] = Aktuell_az;//(Mess_Integral_Hoch / 512);
1104
    DebugOut.Analog[8] = KompassValue;
1156
    DebugOut.Analog[8] = KompassValue;
1105
    DebugOut.Analog[9] = UBat;
1157
    DebugOut.Analog[9] = UBat;
1106
    DebugOut.Analog[11] = ErsatzKompass / GIER_GRAD_FAKTOR;
1158
    DebugOut.Analog[11] = ErsatzKompass / GIER_GRAD_FAKTOR;
1107
    DebugOut.Analog[10] = SenderOkay;
1159
    DebugOut.Analog[10] = SenderOkay;
1108
    //DebugOut.Analog[16] = Mittelwert_AccHoch;
1160
    //DebugOut.Analog[16] = Mittelwert_AccHoch;
1109
    //DebugOut.Analog[17] = FromNaviCtrl_Value.Distance;
1161
    //DebugOut.Analog[17] = FromNaviCtrl_Value.Distance;
1110
    //DebugOut.Analog[18] = (int)FromNaviCtrl_Value.OsdBar;
1162
    //DebugOut.Analog[18] = (int)FromNaviCtrl_Value.OsdBar;
1111
    DebugOut.Analog[19] = WinkelOut.CalcState;
1163
    DebugOut.Analog[19] = WinkelOut.CalcState;
1112
    DebugOut.Analog[20] = ServoValue;
1164
    DebugOut.Analog[20] = ServoValue;
-
 
1165
    DebugOut.Analog[24] = MesswertNick/2;
-
 
1166
    DebugOut.Analog[25] = MesswertRoll/2;
1113
    DebugOut.Analog[27] = (int)FromNaviCtrl_Value.Kalman_MaxDrift;
1167
    DebugOut.Analog[27] = (int)FromNaviCtrl_Value.Kalman_MaxDrift;
1114
    DebugOut.Analog[29] = (int)FromNaviCtrl_Value.Kalman_K;
1168
    DebugOut.Analog[29] = (int)FromNaviCtrl_Value.Kalman_K;
1115
    DebugOut.Analog[30] = GPS_Nick;
1169
    DebugOut.Analog[30] = GPS_Nick;
1116
    DebugOut.Analog[31] = GPS_Roll;
1170
    DebugOut.Analog[31] = GPS_Roll;
Line 1149... Line 1203...
1149
 
1203
 
1150
    if(Looping_Nick) MesswertNick = MesswertNick * GyroFaktor;
1204
    if(Looping_Nick) MesswertNick = MesswertNick * GyroFaktor;
1151
    else             MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor;
1205
    else             MesswertNick = IntegralNick * IntegralFaktor + MesswertNick * GyroFaktor;
1152
    if(Looping_Roll) MesswertRoll = MesswertRoll * GyroFaktor;
1206
    if(Looping_Roll) MesswertRoll = MesswertRoll * GyroFaktor;
-
 
1207
    else             MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor;
1153
    else             MesswertRoll = IntegralRoll * IntegralFaktor + MesswertRoll * GyroFaktor;
1208
#ifdef OCTO
1154
    MesswertGier =   MesswertGier * (2 * GyroFaktor) + Integral_Gier * IntegralFaktor / 2;
1209
    MesswertGier =   MesswertGier * (2 * GyroFaktor) + Integral_Gier * IntegralFaktor / 2;
1155
 
1210
#else 
1156
    DebugOut.Analog[21] = MesswertNick;
1211
    MesswertGier =   MesswertGier * (4 * GyroFaktor) + Integral_Gier * IntegralFaktor / 4;
Line 1157... Line 1212...
1157
    DebugOut.Analog[22] = MesswertRoll;
1212
#endif
1158
 
1213
 
1159
    // Maximalwerte abfangen
1214
    // Maximalwerte abfangen
1160
    #define MAX_SENSOR  (4096*STICK_GAIN)
1215
    #define MAX_SENSOR  (4096*STICK_GAIN)
Line 1167... Line 1222...
1167
 
1222
 
1168
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1223
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1169
// Höhenregelung
1224
// Höhenregelung
1170
// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht
1225
// Die Höhenregelung schwächt lediglich das Gas ab, erhöht es allerdings nicht
1171
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
1172
//OCR0B = 180 - (Poti1 + 120) / 4;
-
 
-
 
1226
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1173
//DruckOffsetSetting = OCR0B;
1227
 
1174
  GasMischanteil *= STICK_GAIN;
-
 
1175
/*
-
 
1176
  if(Poti1 > 200) {OCR0A = DruckOffsetSetting - 16; ExpandBaro = 16; }else
-
 
1177
  if(Poti1 > 150) {OCR0A = DruckOffsetSetting - 8; ExpandBaro = 8; }else
-
 
1178
  if(Poti1 > 100) {OCR0A = DruckOffsetSetting - 4; ExpandBaro = 4; }else
-
 
1179
  if(Poti1 >  50) {OCR0A = DruckOffsetSetting - 2; ExpandBaro = 1; }else
-
 
1180
  {OCR0A = DruckOffsetSetting; ExpandBaro = 0;}
-
 
1181
*/
1228
  GasMischanteil *= STICK_GAIN;
1182
 if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG))  // Höhenregelung
1229
 if((EE_Parameter.GlobalConfig & CFG_HOEHENREGELUNG))  // Höhenregelung
1183
  {
1230
  {
1184
    int tmp_int;
1231
    int tmp_int;
1185
        static char delay = 100;
1232
        static char delay = 100;
Line 1246... Line 1293...
1246
      if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas
1293
      if(hoehenregler > GasMischanteil) hoehenregler = GasMischanteil; // nicht mehr als Gas
1247
      GasMischanteil = hoehenregler;
1294
      GasMischanteil = hoehenregler;
1248
     }
1295
     }
1249
  }
1296
  }
1250
  if(GasMischanteil > (MAX_GAS - 20) * STICK_GAIN) GasMischanteil = (MAX_GAS - 20) * STICK_GAIN;
1297
  if(GasMischanteil > (MAX_GAS - 20) * STICK_GAIN) GasMischanteil = (MAX_GAS - 20) * STICK_GAIN;
-
 
1298
 
-
 
1299
#ifdef OCTO
1251
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1300
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1252
// + Mischer und PI-Regler
1301
// + Mischer und PI-Regler
1253
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1302
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1254
  DebugOut.Analog[7] = GasMischanteil;
1303
  DebugOut.Analog[7] = GasMischanteil;
1255
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1304
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Line 1290... Line 1339...
1290
    motorwert = GasMischanteil + pd_ergebnis + GierMischanteil;   // Mischer
1339
    motorwert = GasMischanteil + pd_ergebnis + GierMischanteil;   // Mischer
1291
    motorwert /= STICK_GAIN;
1340
    motorwert /= STICK_GAIN;
1292
        if ((motorwert < 0)) motorwert = 0;
1341
        if ((motorwert < 0)) motorwert = 0;
1293
        else if(motorwert > MAX_GAS)        motorwert = MAX_GAS;
1342
        else if(motorwert > MAX_GAS)        motorwert = MAX_GAS;
1294
        if (motorwert < MIN_GAS)            motorwert = MIN_GAS;
1343
        if (motorwert < MIN_GAS)            motorwert = MIN_GAS;
-
 
1344
        Motor1 = motorwert;
-
 
1345
 
-
 
1346
    motorwert = GasMischanteil + pd_ergebnis - GierMischanteil;   // Mischer
-
 
1347
    motorwert /= STICK_GAIN;
-
 
1348
        if ((motorwert < 0)) motorwert = 0;
-
 
1349
        else if(motorwert > MAX_GAS)        motorwert = MAX_GAS;
-
 
1350
        if (motorwert < MIN_GAS)            motorwert = MIN_GAS;
-
 
1351
        Motor2 = motorwert;
-
 
1352
 
-
 
1353
    // Motor Heck
-
 
1354
        motorwert = GasMischanteil - pd_ergebnis + GierMischanteil;
-
 
1355
    motorwert /= STICK_GAIN;
-
 
1356
        if ((motorwert < 0)) motorwert = 0;
-
 
1357
        else if(motorwert > MAX_GAS)        motorwert = MAX_GAS;
-
 
1358
        if (motorwert < MIN_GAS)            motorwert = MIN_GAS;
-
 
1359
        Motor5 = motorwert;
-
 
1360
 
-
 
1361
    // Motor Heck
-
 
1362
        motorwert = GasMischanteil - pd_ergebnis - GierMischanteil;
-
 
1363
    motorwert /= STICK_GAIN;
-
 
1364
        if ((motorwert < 0)) motorwert = 0;
-
 
1365
        else if(motorwert > MAX_GAS)        motorwert = MAX_GAS;
-
 
1366
        if (motorwert < MIN_GAS)            motorwert = MIN_GAS;
-
 
1367
        Motor6 = motorwert;
-
 
1368
 
-
 
1369
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
1370
// Roll-Achse
-
 
1371
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
1372
        DiffRoll = MesswertRoll - StickRoll;    // Differenz bestimmen
-
 
1373
    if(IntegralFaktor) SummeRoll += IntegralRoll * IntegralFaktor - StickRoll;// I-Anteil bei Winkelregelung
-
 
1374
    else                 SummeRoll += DiffRoll;  // I-Anteil bei HH
-
 
1375
    if(SummeRoll >  (STICK_GAIN * 16000L)) SummeRoll =  (STICK_GAIN * 16000L);
-
 
1376
    if(SummeRoll < -(16000L * STICK_GAIN)) SummeRoll = -(16000L * STICK_GAIN);
-
 
1377
    pd_ergebnis = DiffRoll + Ki * SummeRoll;    // PI-Regler für Roll
-
 
1378
    tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64;
-
 
1379
    if(pd_ergebnis >  tmp_int) pd_ergebnis =  tmp_int;
-
 
1380
    if(pd_ergebnis < -tmp_int) pd_ergebnis = -tmp_int;
-
 
1381
 
-
 
1382
    // Motor Links
-
 
1383
    motorwert = GasMischanteil + pd_ergebnis - GierMischanteil;
-
 
1384
    motorwert /= STICK_GAIN;
-
 
1385
        if ((motorwert < 0)) motorwert = 0;
-
 
1386
        else if(motorwert > MAX_GAS)            motorwert = MAX_GAS;
-
 
1387
        if (motorwert < MIN_GAS)            motorwert = MIN_GAS;
-
 
1388
    Motor8 = motorwert;
-
 
1389
 
-
 
1390
    // Motor Links
-
 
1391
    motorwert = GasMischanteil + pd_ergebnis + GierMischanteil;
-
 
1392
    motorwert /= STICK_GAIN;
-
 
1393
        if ((motorwert < 0)) motorwert = 0;
-
 
1394
        else if(motorwert > MAX_GAS)            motorwert = MAX_GAS;
-
 
1395
        if (motorwert < MIN_GAS)            motorwert = MIN_GAS;
-
 
1396
    Motor7 = motorwert;
-
 
1397
 
-
 
1398
    // Motor Rechts
-
 
1399
        motorwert = GasMischanteil - pd_ergebnis + GierMischanteil;
-
 
1400
    motorwert /= STICK_GAIN;
-
 
1401
        if ((motorwert < 0)) motorwert = 0;
-
 
1402
        else if(motorwert > MAX_GAS)            motorwert = MAX_GAS;
-
 
1403
        if (motorwert < MIN_GAS)            motorwert = MIN_GAS;
-
 
1404
    Motor3 = motorwert;
-
 
1405
 
-
 
1406
    // Motor Rechts
-
 
1407
        motorwert = GasMischanteil - pd_ergebnis - GierMischanteil;
-
 
1408
    motorwert /= STICK_GAIN;
-
 
1409
        if ((motorwert < 0)) motorwert = 0;
-
 
1410
        else if(motorwert > MAX_GAS)            motorwert = MAX_GAS;
-
 
1411
        if (motorwert < MIN_GAS)            motorwert = MIN_GAS;
-
 
1412
    Motor4 = motorwert;
-
 
1413
   // +++++++++++++++++++++++++++++++++++++++++++++++
-
 
1414
}
-
 
1415
#else 
-
 
1416
 
-
 
1417
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
1418
// + Mischer und PI-Regler
-
 
1419
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
1420
  DebugOut.Analog[7] = GasMischanteil;
-
 
1421
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
1422
// Gier-Anteil
-
 
1423
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
1424
#define MUL_G  1.0
-
 
1425
    GierMischanteil = MesswertGier - sollGier * STICK_GAIN;     // Regler für Gier
-
 
1426
//GierMischanteil = 0;
-
 
1427
#define MIN_GIERGAS  (40*STICK_GAIN)  // unter diesem Gaswert trotzdem Gieren
-
 
1428
   if(GasMischanteil > MIN_GIERGAS)
-
 
1429
    {
-
 
1430
     if(GierMischanteil > (GasMischanteil / 2)) GierMischanteil = GasMischanteil / 2;
-
 
1431
     if(GierMischanteil < -(GasMischanteil / 2)) GierMischanteil = -(GasMischanteil / 2);
-
 
1432
    }
-
 
1433
    else
-
 
1434
    {
-
 
1435
     if(GierMischanteil > (MIN_GIERGAS / 2))  GierMischanteil = MIN_GIERGAS / 2;
-
 
1436
     if(GierMischanteil < -(MIN_GIERGAS / 2)) GierMischanteil = -(MIN_GIERGAS / 2);
-
 
1437
    }
-
 
1438
    tmp_int = MAX_GAS*STICK_GAIN;
-
 
1439
    if(GierMischanteil > ((tmp_int - GasMischanteil))) GierMischanteil = ((tmp_int - GasMischanteil));
-
 
1440
    if(GierMischanteil < -((tmp_int - GasMischanteil))) GierMischanteil = -((tmp_int - GasMischanteil));
-
 
1441
 
-
 
1442
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
1443
// Nick-Achse
-
 
1444
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
1445
    DiffNick = MesswertNick - StickNick;        // Differenz bestimmen
-
 
1446
    if(IntegralFaktor) SummeNick += IntegralNick * IntegralFaktor - StickNick; // I-Anteil bei Winkelregelung
-
 
1447
    else  SummeNick += DiffNick; // I-Anteil bei HH
-
 
1448
    if(SummeNick >  (STICK_GAIN * 16000L)) SummeNick =  (STICK_GAIN * 16000L);
-
 
1449
    if(SummeNick < -(16000L * STICK_GAIN)) SummeNick = -(16000L * STICK_GAIN);
-
 
1450
    pd_ergebnis = DiffNick + Ki * SummeNick; // PI-Regler für Nick
-
 
1451
    // Motor Vorn
-
 
1452
    tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64;
-
 
1453
    if(pd_ergebnis >  tmp_int) pd_ergebnis =  tmp_int;
-
 
1454
    if(pd_ergebnis < -tmp_int) pd_ergebnis = -tmp_int;
-
 
1455
 
-
 
1456
    motorwert = GasMischanteil + pd_ergebnis + GierMischanteil;   // Mischer
-
 
1457
    motorwert /= STICK_GAIN;
-
 
1458
        if ((motorwert < 0)) motorwert = 0;
-
 
1459
        else if(motorwert > MAX_GAS)        motorwert = MAX_GAS;
-
 
1460
        if (motorwert < MIN_GAS)            motorwert = MIN_GAS;
1295
        Motor_Vorne = motorwert;
1461
        Motor_Vorne = motorwert;
1296
    // Motor Heck
1462
    // Motor Heck
1297
        motorwert = GasMischanteil - pd_ergebnis + GierMischanteil;
1463
        motorwert = GasMischanteil - pd_ergebnis + GierMischanteil;
1298
    motorwert /= STICK_GAIN;
1464
    motorwert /= STICK_GAIN;
1299
        if ((motorwert < 0)) motorwert = 0;
1465
        if ((motorwert < 0)) motorwert = 0;
Line 1325... Line 1491...
1325
        if ((motorwert < 0)) motorwert = 0;
1491
        if ((motorwert < 0)) motorwert = 0;
1326
        else if(motorwert > MAX_GAS)            motorwert = MAX_GAS;
1492
        else if(motorwert > MAX_GAS)            motorwert = MAX_GAS;
1327
        if (motorwert < MIN_GAS)            motorwert = MIN_GAS;
1493
        if (motorwert < MIN_GAS)            motorwert = MIN_GAS;
1328
    Motor_Rechts = motorwert;
1494
    Motor_Rechts = motorwert;
1329
   // +++++++++++++++++++++++++++++++++++++++++++++++
1495
   // +++++++++++++++++++++++++++++++++++++++++++++++
-
 
1496
//Motor_Hinten = 0;
-
 
1497
//Motor_Vorne = 0;
1330
}
1498
}
Line -... Line 1499...
-
 
1499