mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Luftdruck bzw. Höhe berechnen


Autor: T. S. (trse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe eine kleine Frage.
Wie kann ich die Höhe messen???
Ich dachte an eine Lösung mit ATMEGA 8 und ZIGBEE-Funkmodulen.
Ich habe gelesen, dass ich zur Berechnung des Höhenunterschieds den 
Druck am Boden und die Temp. in der Luft / 2 brauche.
Die Temp. hab ich ja eh.

Das ganze sollte wenn möglich in C sein,da kann ich es in meinen Code 
einbauen.

<Ich hoffe ihr könnt mir Helfen ;)

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wie kann ich die Höhe messen???

>Das ganze sollte wenn möglich in C sein

Die Höhe ist nicht in C. Die ist in m. Oder cm. Oder km.

Autor: T. S. (trse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes wrote:
>>Wie kann ich die Höhe messen???
>
>>Das ganze sollte wenn möglich in C sein
>
> Die Höhe ist nicht in C. Die ist in m. Oder cm. Oder km.

Ich meine in der Programmiersprache "C"
Die Höhe sollte ja auch in m sein.

  Entschuldugung

Autor: Bernhard S. (dk9nw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Die Höhe eines Luftfahrzeugs wird üblicherweise über den Luftdruck 
gemessen:

http://www.mikrokopter.de/ucwiki/H%C3%B6hensensor

Alternativ GPS-Modul
http://www.mikrokopter.de/ucwiki/GPS

ciao
Bernhard

Autor: T. S. (trse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Links!!!

GPS wollte ich nicht benutzen;klingt aber vielversprechend!!!
Wie mache ich das in "C"(die Berechnungen)? ? ?

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

suche nach Barometrischer Höhenformel. Damit kannst Du die Höhe 
berechnen.

Andreas

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier steht, wie Du die Höhe bestimmen kannst:

http://www.rubstudent.de/RSV/Forum/thread.php?threadid=7843

Autor: T. S. (trse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnt ihr mir ein Beispiel schreiben???
Ich glaube,ich bin irgendwie zu doof |:
Hab hier was(JS):
http://www.wetterochs.de/wetter/baro.html

Wenn man das von JS in C wandelt könnte man es doch benutzen???
Ich kann JS nich so wirklich (;

Rauskommen soll die höhe in Metern.

Autor: so nicht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm einen Drucksensor und einen ADC. Bei einer elektrischen Aufloesung 
von 16bit kommt man auf 10cm Hoehenaufloesung. Die Formel mit dem 
Exponenten sollte doch machbar sein...

Autor: T. S. (trse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>so nicht wrote:
>> Nimm einen Drucksensor und einen ADC. Bei einer elektrischen Aufloesung
>> von 16bit kommt man auf 10cm Hoehenaufloesung. Die Formel mit dem
>> Exponenten sollte doch machbar sein...

 Könnt ihr mir mit dieser Formel helfen?
 Ich habe es irgendwie nicht geschnallt<span></span>

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klar können wir Dir helfen und Dir ein kleines Programm schreiben.
Mein Auto ist kaputt reparierst Du es im Gegenzug??

Autor: T. S. (trse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach so:
Ich benutze als Sensor den MPX 4115

Autor: T. S. (trse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Wie mache ich das jetzt???
Kann ich den ADC-Wert direkt in den Druck umwandeln???

Autor: Hugga Bugga (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steht doch im Datenblatt :

Vout = Vs(0,009xP-0,095)

Und jetzt noch nach P Umstellen

Autor: T. S. (trse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hugga Bugga wrote:
> Steht doch im Datenblatt :
>
> Vout = Vs(0,009xP-0,095)
>
> Und jetzt noch nach P Umstellen
ungefähr so:
HEIGHT = PINA2(0.009xP-0.095)
???

Autor: Hugga Bugga (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: T. S. (trse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Für den Link!!!

Autor: T. S. (trse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geht es denn So:
P = 1000;

ADCSRA |= (1<<ADSC);
  while ( !(ADCSRA & (1<<ADIF)) )
            ;
buffer = ADCL | (ADCH<<8);
Vout = buffer;
P = 1000 *  Vout  +  95;

Vout/Vs = 0,009*P-0,095

Vout/Vs+0,095 = 0,009*P

(Vout/Vs+0,095)/0,009 = P
???

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die Umrechnung ist aber immer noch eine lineare Näherung der genannten
http://de.wikipedia.org/wiki/Barometrische_Höhenformel
"In der einfachsten Form kann grob angenommen werden, dass der Luftdruck 
in der Nähe des Meeresspiegels um ein Hektopascal je acht Meter 
Höhenzunahme abnimmt."
(Die komplizierteren Formeln auf dieser Seite sind sehr abschreckend, 
z.B. exponentiell mit Exponent -5,255)
http://de.wikipedia.org/wiki/Barometrische_Höhenmessung
http://de.wikipedia.org/wiki/Barometrische_Höhenme...

Der Unterschied zwischen Hoch- und Tiefdruckgebiet entspricht leider 
mehreren hundert Metern, die Messung muß daher "zeitnah" kalibriert 
werden.

Autor: T. S. (trse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!

Autor: T. S. (trse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier eine kleine Funktion zur Umrechnung:
void berechne_hoehe(int press)
unsigned int meeresspegel,hoehe,druck_meter
{
meeresspegel=1013.25;//druck auf dem Meeresspiegel definieren
druck_meter=0.12;//druck pro Meter
hoehe=press * druck_meter;
hoehe=hoehe / meeresspegel;

return hoehe
}

Ist die so richtig?
Die gibt als Rückgabewert die Höhe überm Meeresspiegel aus.

Autor: T. S. (trse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte sagt mir, ob es richtig oder Falsch ist.

Autor: Analog (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es ist falsch.

Autor: DerPhsyiker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In meiner Formelsammlung steht:

Höhe = 18,4 km * lg ( luftdruck_erde / gemessener_luftdruck)

lg kann man mit der log() funktion aus der math.h berechnen

Autor: jl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du überhaupt schonmal C programmiert?

So wie du es schreibst geht das nie. Integer sind Ganzzahlen und haben 
mit Kommastellen nichts am Hut. Und wenn du jetzt auf float umstellst 
quällst du den Controller da keine float arithmetik im Controller 
vorhanden ist (es sei denn du nimmst nen pentium :-)).

Solltest du jetzt so clever sein und Festkommaarithmetik nutzten mit 2 
Nachkommastellen so passt das nicht mehr in den integer-Zahlenbereich 
(Annahme AVR - int 16bit). Ebenso solltest du unbedingt prüfen ob es 
nicht einen Overflow beim Multiplizieren gibt.

JL

Autor: T. S. (trse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So???
void berechne_hoehe(double press)
unsigned double luftdruck_erde,hoehe
{
luftdruck_erde=1013.25;//druck auf dem Meeresspiegel definieren
//druck_meter=0.12;//druck pro Meter
hoehe = log(luftdruck_erde / gemessener_luftdruck);
//hoehe=press * druck_meter;
//hoehe=hoehe / meeresspegel;

return hoehe
}

Autor: ts230 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe meine Elektor bekommen und in dieser ist ein sehr interesanter 
Beitrag über GPS.
ich werde wohl eher zu GPS neigen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.