V0.68d Ausgangsversion. G.Stobrawa 06.03.2008: - Code stärker modularisiert und restrukturiert - viele Kommentare zur Erklärug eingefügt - konsequent englische Variablennamen - PPM24 Support für bis zu 12 RC-Kanäle. - Support für Kompass CMPS01 oder MM3 (mit verbesserte Neigungskompensation, stabilere Kommunikation) (Option im Makefile) - 2. Uart wird nun unterstützt (MCU = atmega644p im Makefile) - Ausertung des UBX-Pprotocols an 1. oder 2. Uart - einige kleinere Bugfixes - GPS-Hold-Funktion hinzugefügt - GPS-Home-Funktion hinzugefügt (wird beim Motorstart gelernt, und bei Motorenstop wieder gelöscht) - Poti3 steuert die GPS Funktionen (Poti3 < 70:GPS inaktiv, 70<=Poti3<160: GPS Hold, 160<=Poti3: GPS Home) - LED Steuerung an J16, parametrierbar durch die User Parameter 7 & 8. UserParam7 legt die LEDOnTime in Vielfachen von 2ms fest und UserParam 8 die LEDOffTime. - Zusätzliche Punkte im Menü des KopterTool zur Anzeige des GPS-Status und der MM3-Kalibierparameter - Hardware Configuration: - Die PWM des CMPS03 wird wie bisher standard über den Port PC4 (Pin5 an SV1 der FC) eingelesen. - Der MM3 wird wie folgt verbunden. FC 1.0/1.1/1.2 Level Shifter MM3 SCK (Pin1 SV5) ---> SCK (Pin1) MISO (Pin3 SV5) <--- MISO (Pin2) MOSI (Pin5 SV5) ---> MOSI (Pin3) GND (Pin6 SV5) ---> GND (Pin7 / Pin14) PC4 (Pin5 SV1) ---> SS (Pin4) PC5 (Pin6 SV1) ---> RESET (Pin6) Zusätzlich benötigt der MM3 noch eine 3V oder 3V3 Versorgung an VDD (Pin12). - Für das UBLOX-Modul muss noch GPS-GND mit FC-GND (Pin7 SV1) und die GPS-TXD Leitung mit FC-RXD (Pin1 SV1) verbunden werden, wenn man die FC 1.0 mit dem Atmega644 verwendet. Für die FC 1.1/1.2 mit Atmega644p-Bestückung benötigt man FC-RXD1 (Pin3 SV1). Zusätzlich benötigt das UBLOX-Modul noch eine 5V-Versorgung die ggf. von der FC (an Pin2 SV1) abgegriffen werden kann. Wenn die FC gültige Messages vom GPS empfängt, blinkt die rote LED mit 4 Hz. - Konfiguration des MK. Es sollte ein Haken bei GPS und Kompass gesetzt sein. Wenn nur GPS Aktiviert ist, wird intern immer auch der Kompass aktiviert, da er für den GPS-Regler unbedingt notwendig ist. - Unter Sonstiges: Kompass-Wirkung etwa auf 50 bis 70. - User Parameters: Parameter 2 --> I-Factor for GPS PD controller (start with small values below 10) Parameter 3 --> Calibration factor for transforming Gyro Integrals to angular degrees (~170) Parameter 4 --> Angle between the MM3 Board (Arrow) and the MK head (typical ~180) Parameter 5 --> P-Factor for GPS PD controller (~70) Parameter 6 --> D-Factor for GPS PD controller (~140) Parameter 7 --> LED1Time for J16 Parameter 8 --> LED2Time for J17 - LED-Steuerung an J16/J17 Das Verhalten der über einen Transistor gegen Masse geschalteten Ausgänge J16/J17 wird mit Hilfe der Userparameter 7 und 8 angepasst. Es gilt: UP7/8 < 20: Ausgang liegt dauerhaft auf Masse. UP7/8 > 220: Ausgang ist dauerhaft hochohmig. Sonst wird geblinkt, wobei sich die Frequenz mit dem Userparameter zwischen 2 bis 25 Hz einstellen lässt. - Zusätzliche akustische Signale: Signale die eine Fehlfunktion anzeigen: Dauerton: Eine GPS-Funktion ist aktiviert und es werden keine oder unvollständige GPS-Daten via UART empfangen. Hier ist zu berücksichtigen, dass die folgenden UBX Messages am UBLOX aktiviert wurden: NAV-POSLLH, NAV-SOL, NAV-VELNED. Fehlt eine dieser Messages wird breits der Dauerton gesetzt. 5Hz Piepen: Ist eine der GPS Funktion aktiviert, zeigt dass den Empfang valider UBX-Daten, wenn noch kein 3D-Satfix vorliegt. Die Pausen zwischen den 4Hz Pieps werden immer länger je mehr Satelitten das GPS empfängt. Liegt ein 3D Fix vor, so verstummt der Pieper dann endgültig egal wie viele Satelitten beteiligt sind (es müssen dafür aber mindesten 4 sein). Ist die Comming Home Funktion aktiv (Poti3>160) und konnte keine Home-Position beim Einschalten der Motoren eingelernt werden, so ertönt ebenfalls ein 4Hz-Piepen. 10Hz Piepen: Die Kommunikation zum Kompassmodul ist gestört. (Funktioniert bei beiden Kompassmodulen) Der CompassValue in den Debugs vom Koptertool zeigt dann -1 an. Signale die eine Aktion bestätigen. 1s Piepen: Ertönt dieses Signal nach dem Einschalten der Motoren wird die erfolgreiche Übernahme der Home-Position bestätigt. - Inbetriebnahme: Nach dem Flashen des Codes sollte man die Kalibrierung für den MM3 wiederholen, da diese Daten an einer anderen Position im EEProm der FC abgelegt und wieder gelesen werden. - Kopter ausschalten - den Gas/Gierstick in die obere linke Ecke stellen - Kopter einschalten (Periodisches Piepen zeigt aktive Kalibrierroutine an und der Gierstick kann wieder in die Giermittelstellung.) - den Kopter fleißig umherwürfeln, damit jeder der 3 Magnetfeldsensoren einmal den Minimal. bzw. Maximalwert des Erdmagnetfeldes gemessen hat. Man kann das etwas gezielter machen, denn die Richtung des Erdmagnetfeldes zeigt in etwa nach Norden und taucht ca. mit 70° bzgl. des Horizonts in in die Erde ein. Die Messwerte werden auf dem Terminal des Koptertoolswärend der Kalibrierung angezeigt. Legt man den Gierstick bei der Kalibrierung nach links, so werden die bis dahin gefundenen Maximalwerte auf 0 zurückgesetzt und man muß von neuem Würflen. Ich habe das eingebaut, weil ich festgestellt habe, das bei mir die +z-Achse des Kompass am anfang durch einen Spike nach dem Einschalten oder ähnliches erhöht war. - am Ende den Gasstick nach unten drücken, damit die Kalibrierung beendet wird, und die Daten im EEProm gesichter werden (Piepen beendet). - Zur Sicherheit kann man die Kalibrierdaten im Menü des Koptertools unter Punkt 13 den Offset aller Achsen und unter Punkt 14 den Range aller Achsen des MM3 anschauen. Bei mir sind die Werte der Offsets nur wenige Counts von 0 verschieden und die Ranges fast gleich bei Werten um die 400-500 Counts. Zur Bestimmung des User Parameters 3 (Umrechnungsfaktor zwischen dem Gyrointegral und dem zugehörigen Neigungswinkel) hat sich folgendes Vorgehen bewehrt. - Man bestimmt den Wert des Roll- und Nick-Integrals für einen Neigungswinkel von 45° über die Ausgaben des Koptertools. - Aus diesem Wert kann man den benötigten UserParam3 berechnen. UserParam3 = (Nick-Integral(45°)+Roll-Integral(45°))/2*GyroACCFaktor/45°/8. (typisch 170) - Nachdem dieser Wert über die Settings des Koptertools im MK abgepeichert ist, sollte sich der CompassValue bei Verkippungen nur unwesentlich verändern. - Preflight GPS Test: Ist der Kopter eingeschaltet, so kann man den GPS-Empfang überprüfen, in dem man Poti3 > 70 setzt. Erhält man ein Dauerpiepen besteht keine Kommunikation zum GPS oder eine der benötigten UBX-Messseages fehlt. Blinkt die rote LED der FC, so werden grundsätzlich valide Daten vom GPS empfangen. Abhilfe schafft dann die Einstellung des GPS-Moduls via USB und u-Center sodass die UBX Messages NAV-POSLLH, NAV-SOL, NAV-VELNED mit 57600 baud auf zum Target 1 (RS232) gesendet werden. Es empfiehlt sich alle anderen Sendungen inkl. NMEA abzuschalten, da diese sonst durch den UBX-Parser auf der FC laufen und sinnlose Rechenzeit beanspruchen. Am einfachsten geht das mit dem Konfigurationsfile "Conrad LEA-4H Config.txt". Dazu verbindet man das UBLOX-Modul via USB mit dem PC und started das u-Center. Dan wählt man im Menü: "Tools->GPS Configuration" dieses File aus und klickt auf den Button "File >> GPS". Hat man diese Hürde genommen (Dauerpiepsen ist Weg), wird wahrscheinlich ein 5Hz piepen zu hören sein. Dieses zeigt den korrekten Empfang aller UBX-Messages an. Je mehr Satelitten empfangen werden, desto länger werden die Pausen zwischen den Pieps, bis sie schleißlich ganz verschwinden, was einen 3D-Satfix signalisiert. Die GPS-Funktionen können ggf. nun wieder abgeschaltet werden (Poti3<70). - Setzen der Home Position: Startet man die Motoren, so ertönt in diesem Moment eine 1s-langer Piep, der die erfolgreiche Übernahme der Home-Position bestätigt. Dies passiert immer, auch wenn keine GPS-Funktion aktiviert wurde (Poti3<70). Es kann jedoch sein, dass das Signal nicht ertönt. In diesem Fall konnte keine Home Position abgespeichert werden, da zu diesem Zeitpunkt kein 3D-Fix vorlag. Aktiviert man dann später während des Fluges Comming Home (Poti3>160) wird dieser Zustand mit einem 5Hz Piepen angezeigt. Der Kopter versucht dann wenigstens ein Position Hold. Schaltet man die Motoren ab, so wird auch die ggf. gespeicherte Home-Position gelöscht. - Dynamishes Position Hold: Ist 70 < Poti3 < 160 so ist die dynamische Position Hold Funktion aktiv. Solange sich der Nick- & Roll-Stick in Zentralposiotion befinden (genauer Auschlag < 20 Counts) wird die laterale (XY)-Position durch das GPS- Signal geregelt. Dabei wird versucht die Abweichung der aktuellen GPS-Position von der zum Zeitpunkt der letzen Nick/Roll-Stickbewegung gespeicherten Position zu minimieren. (Siehe dazu auch D- & P-Parameter des GPS-Reglers). Dadurch kann man den MK zu einer bestimmten Position steuern und behält diese bei. Es kann vorkommen, das bei extremer Timmerstellung an Nick und Roll der Funke der zugehörige Stickwert bereits eine Auslenkung > 20 zeigt. In diesem Fall wird das Position Hold leider nicht aktiviert. Durch die automatische Abschaltung des GPS-Reglers für den Fall einer manuellen Bedienung kann man jederzeit in das Flugverhalten eingreifen. - Comming Home: Ist Poti3 > 160 so ist die Comming Home Funktion aktiv. Das verhalten ist analog dem Position Hold, jedoch ist das Regelziel nicht die zuletzt gespeichwerte GPS-Position sondern die zum Zeitpunkt des Einschaltens der MOtoren gespeicherte Home Position. Eine manualle Bedienung von Nick- und Roll-Stick unterbricht auch hier sofort den GPS-Regler und die Steuerung erfolgt manuell.