Rev 1096 | Rev 1101 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1096 | Rev 1099 | ||
---|---|---|---|
Line 49... | Line 49... | ||
49 | // + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
49 | // + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
50 | // + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
50 | // + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
51 | // + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
51 | // + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
52 | // + POSSIBILITY OF SUCH DAMAGE. |
52 | // + POSSIBILITY OF SUCH DAMAGE. |
53 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
53 | // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
54 | // Aenderungen von Peter Muehlenbrock ("Salvo") Stand 9.11.2008 |
54 | // Aenderungen von Peter Muehlenbrock ("Salvo") Stand 29.12.2008 |
55 | /* |
55 | /* |
56 | Driftkompensation fuer Gyros verbessert |
56 | Driftkompensation fuer Gyros verbessert |
57 | Linearsensor optional mit fixem Neutralwert |
57 | Linearsensor optional mit fixem Neutralwert |
58 | Ersatzkompass abgeleitet aus Magnetkompass und Giergyro fuer nahezu neigungsunabhaengige Kompassfunktion |
58 | Ersatzkompass abgeleitet aus Magnetkompass und Giergyro fuer nahezu neigungsunabhaengige Kompassfunktion |
59 | */ |
59 | */ |
Line 1099... | Line 1099... | ||
1099 | MittelIntegralNick2 = 0; |
1099 | MittelIntegralNick2 = 0; |
1100 | MittelIntegralRoll2 = 0; |
1100 | MittelIntegralRoll2 = 0; |
1101 | ZaehlMessungen = 0; |
1101 | ZaehlMessungen = 0; |
1102 | } |
1102 | } |
1103 | //DebugOut.Analog[31] = StickRoll / (26*IntegralFaktor); |
1103 | //DebugOut.Analog[31] = StickRoll / (26*IntegralFaktor); |
- | 1104 | ||
1104 | // Salvo Ersatzkompass und Giergyrokompensation 15.12.2007 ********************** |
1105 | // Salvo Ersatzkompass und Giergyrokompensation 15.12.2007 ********************** |
1105 | if ((Kompass_Neuer_Wert > 0)) //nur wenn Kompass einen neuen Wert geliefert hat |
1106 | if ((Kompass_Neuer_Wert > 0)) //nur wenn Kompass einen neuen Wert geliefert hat |
1106 | { |
1107 | { |
1107 | Kompass_Neuer_Wert = 0; |
1108 | Kompass_Neuer_Wert = 0; |
1108 | w = (abs(Mittelwert_AccNick)); |
1109 | w = (abs(Mittelwert_AccNick)); |
1109 | v = (abs(Mittelwert_AccRoll)); |
1110 | v = (abs(Mittelwert_AccRoll)); |
1110 | if ((w < ACC_WAAGRECHT_LIMIT) && (v < ACC_WAAGRECHT_LIMIT)) //Ersatzkompass und Giergyro nur mit Magnetkompass aktualisieren wenn alles ok |
1111 | if ((w < ACC_WAAGRECHT_LIMIT) && (v < ACC_WAAGRECHT_LIMIT)) //Ersatzkompass und Giergyro nur mit Magnetkompass aktualisieren wenn alles ok |
1111 | { |
1112 | { |
1112 | if ((abs(KompassValue - Kompass_Value_Old)) <= 5) // Aufeinanderfolgende Werte duerfen nur minimal abweichen |
1113 | if ((abs(KompassValue - Kompass_Value_Old)) <= 5) // Aufeinanderfolgende Werte duerfen nur minimal abweichen |
1113 | { |
1114 | { |
1114 | - | ||
1115 | if ((abs(StickGier) < 20)) //Giergyroabgleich mit Kompass |
1115 | if ((abs(StickGier) < 20)) //Giergyroabgleich mit Kompass |
1116 | { |
1116 | { |
1117 | if (cnt_stickgier_zero < 255) cnt_stickgier_zero += 1; |
1117 | if (cnt_stickgier_zero < 255) cnt_stickgier_zero += 1; |
1118 | if (cnt_stickgier_zero > 10) // nur Abgleichen wenn keine Stickbewegung da |
1118 | if (cnt_stickgier_zero > 10) // nur Abgleichen wenn keine Stickbewegung da |
1119 | { |
1119 | { |
Line 1164... | Line 1164... | ||
1164 | } |
1164 | } |
1165 | if (GyroKomp_Int < 0) GyroKomp_Int = GyroKomp_Int + 360L; |
1165 | if (GyroKomp_Int < 0) GyroKomp_Int = GyroKomp_Int + 360L; |
1166 | GyroKomp_Int = (GyroKomp_Int%360L) * (long)GIER_GRAD_FAKTOR; // An Magnetkompasswert annaehern |
1166 | GyroKomp_Int = (GyroKomp_Int%360L) * (long)GIER_GRAD_FAKTOR; // An Magnetkompasswert annaehern |
1167 | } |
1167 | } |
1168 | } |
1168 | } |
1169 | else //Kompassfehler |
1169 | else //Kompass wegen grosser Neigung ungueltig |
1170 | { |
1170 | { |
1171 | magkompass_ok = 0; |
1171 | magkompass_ok = 0; |
1172 | GyroGier_Comp = 0; |
1172 | GyroGier_Comp = 0; |
1173 | } |
1173 | } |
1174 | Kompass_Value_Old = KompassValue; |
1174 | Kompass_Value_Old =KompassValue; |
1175 | } |
1175 | } |
1176 | else magkompass_ok = 0; |
- | |
1177 | - | ||
1178 | // Salvo End ************************* |
1176 | // Salvo End ************************* |
Line -... | Line 1177... | ||
- | 1177 | ||
1179 | 1178 | ||
1180 | // Salvo 6.10.2007 |
1179 | // Salvo 6.10.2007 |
1181 | // GPS Home aktivieren wenn Knueppel in Ruhelage und Hoehenschalter aktiviert ist |
1180 | //GPS Home aktivieren wenn Knueppel in Ruhelage und Hoehenschalter aktiviert ist |
1182 | //GPS Hold Aktiveren wenn Knueppel in Ruhelage sind |
1181 | //GPS Hold Aktivieren wenn Knueppel in Ruhelage sind |
1183 | if ((abs(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]) < Parameter_NaviStickThreshold) |
1182 | if ((abs(PPM_in[EE_Parameter.Kanalbelegung[K_NICK]]) < Parameter_NaviStickThreshold) |
1184 | && (abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < Parameter_NaviStickThreshold) && (gps_alive_cnt > 0)) |
1183 | && (abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < Parameter_NaviStickThreshold) && (gps_alive_cnt > 0)) |
1185 | { |
1184 | { |
1186 | if ((Parameter_NaviGpsModeControl > 170) && (EE_Parameter.GlobalConfig & CFG_GPS_AKTIV)) //Hoehenschalter und GPS Flag aktiv |
1185 | if ((Parameter_NaviGpsModeControl > 170) && (EE_Parameter.GlobalConfig & CFG_GPS_AKTIV)) //Hoehenschalter und GPS Flag aktiv |
Line 1217... | Line 1216... | ||
1217 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1216 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1218 | // Gieren |
1217 | // Gieren |
1219 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1218 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1220 | // if(GasMischanteil < 35) { if(StickGier > 10) StickGier = 10; else if(StickGier < -10) StickGier = -10;}; |
1219 | // if(GasMischanteil < 35) { if(StickGier > 10) StickGier = 10; else if(StickGier < -10) StickGier = -10;}; |
1221 | if(abs(StickGier) > 15) // war 35 |
1220 | if(abs(StickGier) > 15) // war 35 |
1222 | { |
1221 | { |
1223 | KompassSignalSchlecht = 1000; |
1222 | KompassSignalSchlecht = 1000; |
1224 | if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1; |
1223 | if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX)) NeueKompassRichtungMerken = 1; |
1225 | } |
1224 | } |
1226 | tmp_int = (long) EE_Parameter.Gier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo y = ax + bx² |
1225 | tmp_int = (long) EE_Parameter.Gier_P * ((long)StickGier * abs(StickGier)) / 512L; // expo y = ax + bx² |
1227 | tmp_int += (EE_Parameter.Gier_P * StickGier) / 4; |
1226 | tmp_int += (EE_Parameter.Gier_P * StickGier) / 4; |
1228 | sollGier = tmp_int; |
1227 | sollGier = tmp_int; |
1229 | Mess_Integral_Gier -= tmp_int; |
1228 | Mess_Integral_Gier -= tmp_int; |
1230 | if(Mess_Integral_Gier > 50000) Mess_Integral_Gier = 50000; // begrenzen |
1229 | if(Mess_Integral_Gier > 50000) Mess_Integral_Gier = 50000; // begrenzen |
1231 | if(Mess_Integral_Gier <-50000) Mess_Integral_Gier =-50000; |
1230 | if(Mess_Integral_Gier <-50000) Mess_Integral_Gier =-50000; |
Line 1232... | Line 1231... | ||
1232 | 1231 | ||
1233 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1232 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1234 | // Kompass |
1233 | // Kompass |
1235 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
- | |
1236 | //DebugOut.Analog[29] = (MaxStickNick + MaxStickRoll); |
- | |
1237 | 1234 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
1238 | // Salvo 29.12.2008 |
1235 | // Salvo 29.12.2008 |
1239 | if (NeueKompassRichtungMerken) |
1236 | if (NeueKompassRichtungMerken) |
1240 | { |
1237 | { |
1241 | KompassStartwert = KompassValue; |
1238 | KompassStartwert = KompassValue; |
1242 | NeueKompassRichtungMerken = 0; |
1239 | NeueKompassRichtungMerken = 0; |
1243 | } |
1240 | } |
1244 | // Salvo 13.9.2007 |
1241 | // Salvo 13.9.2007 |
- | 1242 | w=0; |
|
1245 | w=0; |
1243 | // w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren |
1246 | // Salvo End |
- | |
1247 | w = (w * Parameter_KompassWirkung) / 64; // auf die Wirkung normieren |
1244 | // Salvo End |
1248 | w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
1245 | w = Parameter_KompassWirkung - w; // Wirkung ggf drosseln |
1249 | if(w >= 0) |
1246 | if(w > 0) |
1250 | { |
1247 | { |
1251 | // Salvo Kompasssteuerung ********************** |
1248 | // Salvo Kompasssteuerung ********************** |
1252 | if (magkompass_ok > 0) Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten wenn dieser ok ist |
1249 | if (magkompass_ok > 0) Mess_Integral_Gier += (KompassRichtung * w) / 32; // nach Kompass ausrichten wenn dieser ok ist |
1253 | // Salvo End |
1250 | // Salvo End |
Line 1254... | Line -... | ||
1254 | } |
- | |
1255 | 1251 | } |
|
Line 1256... | Line 1252... | ||
1256 | 1252 | ||
1257 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1253 | // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1258 | 1254 |