Forum: Mikrocontroller und Digitale Elektronik Flugregler --- Welcher controller ?


von Michael K. (mmike)


Lesenswert?

Hallo Leute,
da ich begeisterter Modellflieger bin will ich (da auch ähnliche 
Projekte in der Arbeit laufen) mir einen kleinen Flugregler bauen. An 
Sensorik kommen definitiv mal nen GPS Empfänger (4Hz) und nen 
Drehratensensor (Gyro) rein. Damit will ich dann erstmal die Hochachse 
(Gieren) regeln. PD - Regler der Flugrichtung (aus dem GPS) und als 
Dämpfung der Wert aus dem Gyro. Für die Implementierung des Reglers wäre 
es sehr von Vorteil wenn der Controller floats verarbeiten könnte, und 
das mit einer Frequenz von mindestens 50Hz. Vorerst versuche ich mal um 
eine Kalman Filterung drum rum zu kommen, aber wahrscheinlich werde ich 
um ein Hängewinkel - Estimate nicht rumkommen.
Ich denke, daß hierbei die AVR leider zu langsam sind (auswertung des 
NMEA Protokolls, auslesen eines AD Werts, Berechnung der Stellgröße, 
Abfrage eines PWM Kanals ob Automatik Modus oder Manueller Modus, 
Ausgabe der Stellgröße mittels PWM (Modellbau Servos), ....). Gibts 
hierfür Vorschläge für gut programmierbare (ich kann nur C und C++, aber 
das sehr gut) Controller ?
Wie schauts da mit den ARMs aus ?
Grüße,
Michael

von uu (Gast)


Lesenswert?

ich denke ein AVR sollte genug sein. Natuerlich ohne float. Das brauchts 
sicher nicht. Das NMEA liefert nur einen Satz Werte pro sekunde.

rene

von Daniel M. (usul27)


Lesenswert?

Also 50 Float-Berechnungen pro Sekunde schafft auch ein AVR ;) 
PWM-Ausgabe, AD-Wandlung und NMEA-Daten einlesen braucht auch so gut wie 
keine Resourcen.
Wenn also deine Berechnungen nicht extrem aufwändig sind, reicht ein AVR 
da allemal.

Floats braucht der Controller selbst nicht zu können, darum kümmert sich 
der C-Compiler. Auch ein ARM7 kann selbst nicht mit Floats rechnen, 
sondern macht das in Software. Wenn es eng wird hat der natürlich mehr 
Leistung, aber deine Aufgabe klingt wirklich nicht so, als würde das 
extreme Rechenleistungen brauchen.

von Arno H. (Gast)


Lesenswert?

Hallo,
aus dem GPS alleine bekommst du keine Richtungsdaten für die zukünftige 
Strecke, ohne eine minimale Eigengeschwindigkeit zu haben. Eine 
Richtungsreferenz musst du zusätzlich erzeugen, z.B. aus dem Giersignal.
Arno

von Johannes A. (Gast)


Lesenswert?

Ich würd einen AVR mit 16 oder 20MHz nehmen, und alle variablen externen 
Signale den Hardware-Einheiten (ADC, ICP, PWM und USART) überlassen. Als 
Gyro würde ich einen der feinen kleinen modernen 3-Achs-Chips mit 
digitaler Ausgabe nehmen (SPI) - damit ist die Fluglage im 
Subsekundenbereich um Klassen einfacher und genauer zu kontrollieren als 
mit dem besten GPS-Empfänger. Auch wenn die 4 position fixes per second 
eines Antaris 4 im Flyer für die Kunden natürlich ordentlich was 
hermachen (die "mehr PS" wirken auch hier ;)), praktisch taugen sie aber 
doch nur für eine etwas akkuratere 2D-Geschwindigkeitsmessung.

Um die Float-Berechnung mache ich mir dabei gar keine Sorgen. Ein AVR 
mit den genannten Taktraten schafft pro Sekunde 12-15Mio. 
Verarbeitungsschritte und mehr. Von denen bleiben, eine angemessene 
Programmstruktur vorausgesetzt, vielleicht 500.000 in den 
Interrupt-Routinen und den Entscheidungen des Hauptprogramms, was 
jeweils zu tun ist. Selbst bei 100 Berechnungen pro Sekunde hab ich also 
immer noch weit über 100.000 Programmschritte pro Berechnung, das sind 
schon eine ganze Menge Holz.

Ok, das "Holz" kriegst Du mit (un)passender Programmierung auch ganz 
schnell klein, zum Beispiel mit massiv iterativ berechneten statt 
tabellenbasierten Winkelfunktionen. Aber erstmal denke ich, dass mit der 
oben skizzierten Hardware eine 64bit-Integer-Berechnung weit effizienter 
ist.

Gruß Johannes

von Daniel (Gast)


Lesenswert?

hmmm würd mich jetzt wunder nehmen wiso ein PD-Regler und nicht PID?

von Michael K. (mmike)


Lesenswert?

Vielen Dank schon mal für die vielen Beiträge.

@Arno: Laut NMEA 0183 gibts es das Protokoll GPVTG, welches 
Informationen über Flugrichtung (true & magnetic) und 
Fluggeschwindigkeit enhält.

@Johannes: Dieser schöne 3-Achs Gyro ist wahrscheinlich der neue von 
Analog mit SPI Ausgang und klingt wirklich sehr gut !! Das Ding hat auch 
noch 3 Accels und nen Filter mit drin. Schönes Teil!

@Daniel: PID ist natürlich schöner, aber ich hab ein wenig Angst um
a) Rechenleistung & zeit
b) Probleme mit Überläufen von Variablen

Welche Teile genau verbaut werden sollen ist noch nicht ganz klar, aber 
wahrscheinlich werde ich erstmal aus Kostengründen auf das GPS 
verzichten und versuchen mal ne erste rudimentäre Lageregelung zu 
verwirklichen. Hierfür einsetzten will ich 2 "normale" Gyros (Gier- und 
Rollachse) und nen Magnetfeldsensor (CMS03). Dann das Rollgyro als D - 
Anteil und den P - Anteil vom Giergyro. Flugrichtung als "outer loop" 
dann vom CMS03. Laufen soll das Ganze dann Testweise mal auf nem Mega32 
(16MHz). Ich schau jetzt einfach mal daß ich die Sensoren herbekomme 
(den CMS hab ich schon !!) und dann gehts mit dem Testen mal los .....

Danke an alle und weiter Kommentare sind herzlich willkommen !!

Grüße,
Michael

von Arno H. (Gast)


Lesenswert?

Hallo,
auch das tollste Protokoll benötigt dazu mindestens 2 Wegpunkte und ist 
immer eine Bestätigung des vergangenen Streckenabschnitts. Ohne 
Eigengeschwindigkeit über Grund gibt es nur einen Wegpunkt und somit ist 
keine Richtungsangabe möglich. Für die zukünftige Streckenabschnitte 
benötigst du einen Bezug zum LFz. Was nützt dich das Wissen, dass das 
Ziel sich im Norden befindet, wenn das Flugobjekt "Norden" nicht 
zuordnen kann.
Magnetic ist imho auch nur über einen zusätzlichen Kompasssensor nutzbar 
oder hat dein GPS auch eine Isogonenkarte Onboard? Kurskreisel ginge 
auch, kommt drauf an, wie der Gierkreisel ausgewertet wird und wie 
stabil er ist.
Du musst eine Möglichkeit haben die Längsachse in Bezug zum Heading 
auszuwerten. Früher hat man das mit dem Hintern (oder einem Wollfaden!) 
gemacht, heute gibt es dafür Elektronik.
Arno

von Michael K. (mmike)


Lesenswert?

Arno, ich weiß nicht ob Du den ersten Beitrag gelesen hast, aber es 
handelt sich hier um ein Modellflugzeug, daß geflogen werden soll. Somit 
kann man im Flug von einer gewissen Grundgeschwindigkeit ausgehen, denn 
wenn das Ding am Boden liegt ist mir auch klar, daß mir die Kenntnis der 
Richtung in die ich momentan schaue relativ egal ist.
Zum Thema Magnetic: Es handelt sich hier um ein MODELLFLUGZEUG, mit dem 
ich im SICHTBEREICH operiere, von dem her kann ich mir Isogonenkarten, 
eventuelle Merdianabweitungen und sonstige fiese spärische Trigonometrie 
getrost sparen. Und sobald mal ein stabiles GPS-Signal anliegt bei 
vorhandener Fluggeschwindigkeit kann der Kompasssensor ja "genullt" 
werden.
Vorerst soll die Hochachse noch unter manueller Kontrolle bleiben... Das 
Ganze ist mehr als Hobby - Versuch zu verstehen, als  EADS - Barracuda 
(blubb) Konkurrenz ! Von dem her will ich mich einfach mal ein wenig 
rantasten und mal schauen was rauskommt....
Das mit dem Wollfaden kenn ich auch noch !! Wichtigste "Sensor - 
Anzeige" beim Segelfliegen (manntragend).......
Und um vielleicht einige mögliche Ungeklärheiten aufzuklären. Der 
Flieger ist eine 2 Mot (elektrisch) mit rund 1.6m Spannweite. Die 
Schwerpunkt liegt deutlich vor dem Neutralpunkt, wobei hier dann von 
einer statischen Stabilität ausgegangen werden kann. Die Phygoide und 
Anstellwinkelschwingung, sowie die Dutch - Roll und der Seitenrutsch 
sind stark gedämpft und nach ersten Probeflügen mit visueller 
Datenaufzeichnung nicht erkennbar ;-)
Grüße,
Michael

von Arno H. (Gast)


Lesenswert?

Pardon, ich war von einem Heli ausgegangen, der Giersensor hat mich in 
diese Richtung gedrängt. Von Fixed Wing stand ja auch nichts da.
Arno

von Michael K. (mmike)


Lesenswert?

Kein Problem Arno. Drum "reden" wir ja drüber ....
Hab heute in der Arbeit mal mit Matlab und dem Embedded Coder ein wenig 
rumgespielt. Da könnte ich dann schön meine ersten Regelkreise auslegen 
und an ner 3DOF Simulation testen und dann direkt den Code erstellen 
lassen ....
Ich probier's demnächst mal aus ...

von Johannes A. (Gast)


Lesenswert?

Zum Thema "wo herbekommen" schau mal bei sander-elektronik unter 
Sensoren.

Ansonsten hatte ich mich mit den Begriffen etwas vertan, sorry. Ich 
meinte eigentlich die Accelerometer...

Gruß Johannes

von globe (Gast)


Lesenswert?

Hi!
Ich hab da mal was gebastelt. Hat eigentlich recht gut funktioniert:

http://www.rclineforum.de/forum/thread.php?threadid=105947&sid=b4e8ad39543e630a18b9943ce3422faf&threadview=0&hilight=&hilightuser=&page=7

Ich habe zwei Controller verwendet:
1 Mega8 zum decodieren der PPM und zum erzeugen der Servoimpulse
1 Mega128 für den Rest(NMEA, AD-Wandler, Regler, Downlink usw.)

verbunden sind beide über SPI.

Gruß globe

von Michael K. (mmike)


Lesenswert?

Hallo Globe,
sehr beeindruckend !! Könntest du mir mal Deine "Regelungen" näher 
ausführen und welche Rückführungen du dabei benutzt hast ? Hast Du 
eventuell auch diverse Filter angewendet (Kalman) ?
Grüße,
Michael

von globe (Gast)


Lesenswert?

Hi,

jo das meiste müsste eigentlich in dem Link stehen. Für die 
Stabilisierung der Fluglage habe ich hauptsächlich einen Gyrosensor, der 
die Winkelgeschwindigkeit um die vertikale Achse ausgibt über einen 
einfachen P-Regler den Querrudern aufgeschaltet. Das ergibt eine sehr 
gute Stabilisierung um die Längsachse. Die Stabilisierung um die 
Querachse erfolgt durch einen Beschleunigungssensor in Verbindung mit 
der nach der Zeit abgeleiteten Geschwindigkeit. Die Kurssteuerung 
übernimmt ein einfacher PD-Regler der auf das Seitenruder wirkt. 
Regelgröße ist hierbei die durch das GPS ermittelte Kursabweichung.
Filter hab ich bis auf ein paar FIR-Filter nichts besonderes eingesetzt. 
Soviel mal auf die Schnelle. Wenn Du Fragen hast, steh ich natürlich zur 
Verfügung.

Gruß globe

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.