Subversion Repositories FlightCtrl

Rev

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