Hey,
als Alternative zur Höhenmessung mit GPS soll ich, im Rahmen von einer
Arbeit von mir, die Höhenmessung mit Hilfe des Luftdrucks ausprobieren.
Dazu habe ich mir folgenden Sensor geholt: MPX 5100 AP
http://www.datasheetcatalog.org/datasheet/motorola/MPX5100D.pdf
Es handelt sich dabei um einen absoulten Sensor, d.h. es sollte kein
Problem sein diesen Druck zu messen.
Nun habe ich ihn mit Hilfe des AD-Wandlers ausgelesen und er zeigt mir
einen Wert von 15494 an. Leider kann ich nur den aktuellen Luftdruck in
unserer Umgebung (aktuell 1004.5 hPA) messen.
1. Nun ist die erste Frage da ich leider noch wenig Erfahrung habe und
nicht aus dem Datenblatt schlau werde, wie sollte ich den eingelesenen
ADC Wert am geschicktesten in hPA umrechnen?
Folgend sieht die Funktion bisher aus:
1
// ADC Channel 1 (AN1) wird verwendet
2
set_adc_channel(1);
3
// ADC Wert wird eingelesen
4
value_pressure=read_adc();
5
// Skalierung des ADC Wertes ---> Noch zu erledigen!
6
value_pressure=value_pressure;
7
// Ausgabe des Zwischenergebnisses
8
printf(usb_putc,"%Ld - ",value_pressure);
9
// Höhenberechnung
10
height=18400*log(1013.2/value_pressure);
11
// Ausgabe des Ergebnisses
12
printf(usb_putc,"%Ld - ",height);
Ich hoffe, ich verwende die richtigen Formeln, bei Fehlern bitte ich
mich zu korrigieren. Aber ich habe ausführlich diese recherchiert,
sollte stimmen.. Man kann sie ja leider nur Näherungsweise bestimmen!
2. Ich habe mich entschlossen eine zweite Messung durchzuführen, bei der
ich die Temperatur beachte (wirkt sich ja auf Luftdruck aus). Nun sieht
die Formel wie folgt aus. Ich hoffe das wurde alles korrekt von mir
umgesetzt.
Also : ich muss sagen : ich kenn mich nicht so gut mit C aus , aber ich
könnte dir sagen was du machen kannst. du hast doch sicher eine ANZEIGE
( vllt ein LCD DISPLAY) . du kennst die höhe an zwei verschieden hohen
orten, und misst dort den Luftdruck. dann hast du Werte die ADC werte ,
die du den höhen zuordnen kannst, und soweit ich weiß ist die
Luftdruckabnahme in der höhe doch Konstant , dann kannst du einfach eine
Tabelle erstellen und dann weisst du´s.
Außerdem wäre es vorteilhaft zu wissen was du für mikrocontroller
verwendest( wenn du einen ADC wert von 15494 hast .. ( welche auflösung
hat das TEIL ?!?!? XD ), ( und ich glaub ich hab mich geirrt , es ist
nicht "C" )
Außerdem Hängt das auch der Luftdruck extrem vom Wetter ab .., da würde
ich evtl noch ein Paar luftfeuchtesensoren ( und wie du es schon machst
) ein Paar temperatursensoren Verwenden , dann kannst du eine Tabele
erstellen, z.B
wenns winter iss, KAlt ; niedrige luftfeuchtigkeit ; ist meist ein "
tief" und du hast niedrigen luftdruck, dann kanste sagen , den Wert für
luftdruck etwas erhöhen um die höhe Korrekt zu halten .
MFG aus MÜnchen !!
Vout = VS (P x 0.009 + 0.04)
± (Pressure Error x Temp. Mult. x 0.009 x VS)
Ohne Korrektur bei 1004,5 hPa = 100,45 kPa:
Vout = VS * (100,45 * 0,009 + 0,04)
= VS * (0,90405 + 0,04) = VS * 0,90805
1: Wie hoch ist VS?
2: Wie hoch ist die Referenzspannung des AD-Wandlers?
3: Was ist der Maximalwert des AD-Wandlers?
"ratiometric" bedeutet: Wenn die Referenzspannung
des AD-Wandlers die Betriebsspannung des Sensors ist,
kürzt sich schon mal einiges raus...
Erst mal vernünftig die Druckwerte erfassen,
dann die Temperaturkorrektur, dann die barometrische
Höhenformel!
Und dann kann man sich über den Rest Gedanken machen.
> 1. Nun ist die erste Frage da ich leider noch wenig Erfahrung habe und> nicht aus dem Datenblatt schlau werde, wie sollte ich den eingelesenen> ADC Wert am geschicktesten in hPA umrechnen?
Die im Datenblatt angegebene Übertragungsfunktion in C umzusetzen,
sollte doch nicht allzu schwer sein, oder? Damit kriegst du auch ohne
irgendeine an den Haaren hergezogene logarithmische Näherung die
Korrektur von Nichtlinearität und Offset des Sensors hin.
@Jackenkoffer: Deine Antwort ist nichts als geballter Unfug. Nur weil
eine Größe linear ist, heisst das noch lange nicht, dass die Messung
auch linear wäre. Alles andere klärt sich mit einem nicht allzu
oberflächlichen Blick in das Datenblatt.
Danke erstmal für die viele Hilfe! :) Habe ganz vergessen zu schreiben
dass ich den 18F4550 benutze!
Ralli schrieb:> 1: Wie hoch ist VS?>> 2: Wie hoch ist die Referenzspannung des AD-Wandlers?>> 3: Was ist der Maximalwert des AD-Wandlers?
1. 5V
2. 5V (USB-Versorgung)
3. Er ist folgend initialisiert:
1
// Init des ADCs
2
setup_adc(adc_clock_div_32);
3
setup_adc_ports(AN0_TO_AN1_ANALOG);// Ref=Vdd
Bei der im Datenblatt genannten Gleichung für Vout versteh ich nur
nicht, wieso sie wichtig ist. Da er ja bereits Vout einliest. Muss ich
sie nur nach P umformen und ich habe meine kPa?? ;)
Hallo,
ich würde das Signal verstärken:
150mbar => mehr 12000 m üNN =>0,2V
800mbar => etwa 2000 m üNN =>3,5V
1050mbar => weniger 0 m üNN =>4,8V
und einen Sensor mit Schlauchanschluss nehmen. Den kannst mit einer
Luftpumpe etwas Aquariumschlauch, einem T-Stück und einem Zollstock sehr
gut auf einen neuen Messbereich kalibrieren. Stichwort U-Rohrmanometer
100mBar ~ 1m Wassersäule. (p_ü = p_abs + dichte(Wasser) * 9,81m/s *
Höhe)
Als Referenz für p_abs ein gutes altes Quecksilberbarometer oder der
Luftdruck von der Apotheke um die Ecke.
Die Korrektur des Wetters würde ich über die Eingabe des aktuellen
Luftdrucks bei bekannter Höhe einer nahegelegenen Wetterstation/Apotheke
vornehmen.
Der Einfluss der Luftfeuchte ist nicht durch einen Sensor möglich da die
Feuchte der Luftsäule über dir (bis über die Wolken) gemessen werden
müsste.
Die Berechnung mit Temperaturkorrektur ist hier gut erklärt:
http://de.wikipedia.org/wiki/Barometrische_H%C3%B6henformel
Gruß Dominik
Danke danke =)
Ich benötige nicht eine hohe Genaugigkeit.. ;) Es sollten nur ungefähre
Messungen sein. Danke eurer Hilfe habe ich die Skalierung in hPA dank
einer Schlussrechnugn geschafft. War einfacher wie gedacht :P
Nun gehe ich davon richtig aus, wenn ich nur anhand des Luftdrucks die
Höhe ermittle es zu einem Höhenmessfehler von bis zu 300 M kommen kann?
Oder wurde die von mir verwendete Formel falsch angenährt?
Ich hatte mal einen Barometrischen Höhenmesser für ein Segelflieger
gebaut. Da sie die Formel für die Höhenmessung und Nullpunktausrichtung
aber noch ein wenig anders aus ;)
Beitrag "Barometrische Höhenformel"
Nach fast einem Jahr "Probefliegen" bin ich dann doch über die
Genauigkeit sehr erstaunt, jedoch, so wie du es sagtest ist bei extrem
ungünstigen Wetterbedingungen auch mal eine Toleranz von ca. 300m
drinne. Nur alleine aus den Unterschiedlichen Tief- / Hochdruckgebieten.
> Bei der im Datenblatt genannten Gleichung für Vout> versteh ich nur nicht, wieso sie wichtig ist. Da er> ja bereits Vout einliest. Muss ich sie nur nach P> umformen und ich habe meine kPa??
So ist es.
Allerdings wundert mich der Wert 15494 ein wenig.
Ich kenne den 18F4550 nicht. Hat der einen 14-Bit-
DA-Wandler??? (ungewöhnlich...)
Wäre aber das naheliegendste, weil in diesem Falle
0,90805 x 16384 = 14877
herauskommen müsste.
Nachtrag:
Versorgungsspannung des Sensors und Referenzspannung
des AD-Wandlers dürfen nicht 2 verschiedene 5 V Spannungen
(mit jeweils +/5%, und eigenem Temperaturgang) sein, sondern
aus der gleichen Quelle kommen!
Das KÖNNTE den Unterschied von 4% zwischen erwartetem
und erhaltenem Wert erklären.
Hallo,
wenn ich das richtig verstanden habe, willst du ja nicht den Luftdruck
messen, sondern die Höhe. Die Basis-Kalibrierung muss daher von einer
bekannten Höhe ausgehen - bei Flugzeugen wird beim Start die Anzeige auf
die Höhe des Flugplatzes eingestellt. Dank Google Maps geht das heute
überall, und wenn du einen Berg in der Nähe hast wie ich gleich hinterm
Haus, kannst du auch mal 200 m höher gehen und prüfen, ob das richtig
angezeigt wird. Das ist die Einstellung auf die Wetterlage, zusätzliche
Messungen von Temperatur und Feuchtigkeit sind zusätzliche Feinheiten.
Eine Kalibrierung nach dem Wetterbericht reicht nicht, selbst wenn du
Kachelmann fragst.
Gruss Reinhard