Rev 414 | Go to most recent revision | 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; |