Forum: Mikrocontroller und Digitale Elektronik Drohne Höhenregelung MS5611 & BNO055


von Haakla (Gast)


Lesenswert?

Hallo zusammen,

ich bin schon länger dabei, mir eine Raspberry-basierte Drohne zu bauen. 
Im Prinzip funktioniert soweit alles: Ansteuerung, Lageregelung, 
GPS-Signal etc..

Aber - ich krieg es nicht hin, eine brauchbare Höhenreglung zu 
implementieren, da ich keine brauchbares Messsignal für die Höhe bekomme 
(bzw. die Höhe nicht richtig berechnen kann).

Ich habe einerseits versucht, mittels Barometer die Höhe zu errechnen - 
habe dabei verschiedene "Altimeter" verwendet, u.a. MS5611, MPL3115A2 
und BMP180. Ich verwende jedoch nur mehr den MS5611, da dieser etwas 
genauer und schneller ist.

Für die Drehachsenregelung verwende ich einen BNO055 9-axix Sensor (Gyro 
+ Accelerometer + Magnetometer). Habe damit 3 PID-Regler implementiert 
(für Pitch, Roll, Yaw) - das funktioniert recht gut.

Der 4. PID-Regler wäre für die Höhenregelung gedacht. Ich habe versucht, 
die Signale des Barometers und des Accelerometers zusammenzurechnen, um 
eine Höhe zu bekommen - jedoch bisher vergebens


Vertikalbeschleunigung aus Accellerometer wird folgend z_pp gennant (als 
zweite Ableitung von z)

Was versucht wurde:
-z_pp 2x aufintegrieren, mit verschiedenen, einfachen Methoden der 
statistischen Filterung(Moving Average-Mittelung oder DC-Filter) - das 
ist die beste Annäherung die ich bis jetzt habe
-Als Alternative habe ich auch schon versucht, z_p (Vertical Speed) als 
Regelgröße zu betrachten und als Sollwert vorgegeben, sodass die 
Vertikalgeschwindigkeit 0 sein soll - ist jedoch ebenso viel zu ungenau. 
Und um einen Vergleich mit der Höhe aus dem Barometer zu machen, brauche 
ich z und nicht z_p

-Das Problem ist, dass ich aus dem Barometer kein brauchbares 
Höhensignal bekomme. Laut Hersteller soll eine Genauigkeit im cm-Bereich 
realisierbar sein. Meine Abweichungen sind jedoch eher 1-2 Meter. Ich 
habe diese Formel verwendet:

altitude= 44330.0 * (math.pow(p0/ pressure, 0.1902949)-1)
, wobei p0 der Meereshöhen-Luftdruck von 101325 Pa ist.


Ist es überhaupt möglich, mit einem Accelerometer und Barometer eine 
brauchbare Höhenregelung zu machen?
Laut Youtube sollte der MS5611 nicht so schlecht sein: 
https://www.youtube.com/watch?v=CvRgalu_yx4


Meine bisherigen Höhenschätzungen (und 
Vertikalgeschwindigkeitsschätzungen) sind weit weg von Brauchbarkeit.


Zusätzlich hab ich noch eine Höhensignal aus dem GPS-Sensor, dieses hat 
jedoch Abweichungen von 3 Meter.


Danke & Grüße
Klaus

von Wolfgang (Gast)


Lesenswert?

Haakla schrieb:
> -Das Problem ist, dass ich aus dem Barometer kein brauchbares
> Höhensignal bekomme. Laut Hersteller soll eine Genauigkeit im cm-Bereich
> realisierbar sein. Meine Abweichungen sind jedoch eher 1-2 Meter.

Mit dem MS5611 sollte das eigentlich funktioniere. Es ist etwas eine 
Frage der Filterung. Für ein Variometer war ich bei 10cm sinnvoller 
Auflösung gelandet.
Hast du mal Beschleunigung und Höhenmessung über ein Kalman-Filter 
zusammen geführt?

von Haakla (Gast)


Lesenswert?

Hi

also wenn ich das Signal ungefiltert aus dem MS5611 rausrechne (anhand 
vom Luftdruck) springt die Seehöhe sporadisch zwischen 354 und 356m hin 
und her.

Mit Moving Average bspw. habe ich versucht zu mitteln, hat aber nicht 
viel gebracht.


Mit Sensor-Fusion á la Kalman-Filter hab ich mich noch nicht 
beschäftigt, da ich erst einmal sicherstellen wollte, dass die Signale 
der Beschleunigung und barometrische Höhe brauchbare Werte liefern (da 
mir Kalman sehr aufwändig erscheint)

LG und danke

von iche (Gast)


Lesenswert?

Du solltest auch beachetn, daß sich durch die Rotoren im Flug und bei 
Beschleunigung die Druckverläufte am Sensor auch ohne Höhenänderung 
verändern können.
Das nur so am Rande...

Frohe Ostern!?

von Haakla (Gast)


Lesenswert?

Danke für die Info - hab ich beachtet

meine vorigen Kommentare hier mit Ungenauigkeit von 1-2 Metern bezogen 
sich auf reine Messungen am Boden - ohne eingeschaltete Rotoren. Im Flug 
würd's dann noch ungenauer werden


LG

von Pandur S. (jetztnicht)


Lesenswert?

Du musst den Barometer doch nicht umrechnen. Was der in Metern meint ist 
voellig unerheblich. Du moechtest eine Hoehenstailisierung. Also regle 
auf konstanten ADC Wert. Wenn's eine andere Hoehe sein soll, rechnest du 
den noetigen Druck und stabilisierst auf diesen ADC Wert. Dabei aber 
nicht vergessen, der Zusammenhang zwischen Hoehe und druck ist nicht 
absolut, sondern zum Wetter passend. Was man nehmen koennte, waere der 
QNH, der Druck auf Meereshoehe, wird vom Wetterdienst verbreitet.

Ich wuerde auf alle faelle nur mit relativen Druecken und auf den ADC 
Wert regeln.

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.