Subversion Repositories FlightCtrl

Compare Revisions

Ignore whitespace Rev 184 → Rev 185

/branches/salvo_gps/GPS.c
407,9 → 407,9
// if (dist > 200) dist = 200;
// GPS_dist_2trgt = (int )dist;
 
// Winkel und Distanz in Nick und Roll groessen umrechnen
// Winkel und Distanz in Nick und Rollgroessen umrechnen
GPS_Roll = (int) +( (dist * (long) sin_i(GPS_hdng_rel_2trgt))/1000);
GPS_Nick = (int) -((dist * (long) cos_i(GPS_hdng_rel_2trgt))/1000);
GPS_Nick = (int) -( (dist * (long) cos_i(GPS_hdng_rel_2trgt))/1000);
 
#define GPS_V 8
if (GPS_Roll > (GPS_NICKROLL_MAX * GPS_V)) GPS_Roll = (GPS_NICKROLL_MAX * GPS_V);
419,9 → 419,12
 
//Kleine Werte verstaerken, Grosse abschwaechen
long int nick,roll;
roll = (((long) GPS_Roll) * ((long)sin_i(abs((GPS_Roll*90)/(GPS_NICKROLL_MAX * GPS_V)))))/1000;
int n,r;
r = sin_i((GPS_Roll*90)/(GPS_NICKROLL_MAX * GPS_V));
n = sin_i((GPS_Nick*90)/(GPS_NICKROLL_MAX * GPS_V));
roll = ((long) (GPS_NICKROLL_MAX * GPS_V) * (long) r)/1000;
nick = ((long) (GPS_NICKROLL_MAX * GPS_V) * (long) n)/1000;
GPS_Roll = (int) (roll / GPS_V);
nick = (((long) GPS_Nick) * ((long)sin_i(abs((GPS_Nick*90)/(GPS_NICKROLL_MAX * GPS_V)))))/1000;
GPS_Nick = (int) (nick / GPS_V);
if ((abs(dist_east) > GPS_DIST_MAX) || (abs(dist_north) > GPS_DIST_MAX)) // bei zu grossem Abstand abbrechen
431,14 → 434,14
gps_state = GPS_CRTL_IDLE;
return (GPS_STST_ERR);
}
else // Distanz ok // Die Abfrage kann noch rausfliegen, weil vorher bereits begrenzung war
/* else // Distanz ok // kann spaeter entfallen, weil eigentlich schon begrenzt
{
if (GPS_Roll > GPS_NICKROLL_MAX) GPS_Roll = GPS_NICKROLL_MAX; //Auf Maxwerte begrenzen
else if (GPS_Roll < -GPS_NICKROLL_MAX) GPS_Roll = - GPS_NICKROLL_MAX;
if (GPS_Nick > GPS_NICKROLL_MAX) GPS_Nick = GPS_NICKROLL_MAX;
else if (GPS_Nick < - GPS_NICKROLL_MAX) GPS_Nick = - GPS_NICKROLL_MAX;
return (GPS_STST_OK);
}
return (GPS_STST_OK);
}*/
}
else return (GPS_STST_OK);
break;
/branches/salvo_gps/README_Gps.txt
27,7 → 27,7
Der GPS Hold Regler ist ein PID Regler, der ueber die UserParameter1(P), 2(I) und D(3) gesteuert wird.
UserParameter1 beschreibt den P-Anteil, UserParameter2 den I-Anteil und UserParameter3 den D-Anteil.
Hier kann und muss gespielt werden. Wenn alle 0 sind, ist der Regler deaktiviert.
Standardwerte sind 8 für den P-Anteil, 1 für den I-Anteil und 18 für den D-Anteil.
Standardwerte sind 8 für den P-Anteil, 1 für den I-Anteil und 12 für den D-Anteil.
 
Voraussetzungen für GPS_Hold:
Neben den genannten HW und SW Voraussetzungen muß beim Kalibrieren das GPS MOdul bereits Positionsdaten liefern.
/branches/salvo_gps/gps.h
96,7 → 96,7
#define GPS_STST_ERR 2 // Fehler
 
// GPS Lageregler
#define GPS_NICKROLL_MAX 35 //Maximaler Einfluss des GPS Lagereglers auf Nick und Roll
#define GPS_NICKROLL_MAX 30 //Maximaler Einfluss des GPS Lagereglers auf Nick und Roll
#define GPS_DIST_MAX 300 //Maximal zulaessige Distanz bevor Regelung gestoppt wird (in 10cm)
//Salvo 16.9.2007 GPS_STICK_HOLDOFF ***************
// Laut Datenblatt sind die Werte ueber Zeit und Temperatur sehr stabil.