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 |