Přepočet absolutního atmosferického tlaku na hladinu moře

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: Přepočet absolutního atmosferického tlaku na hladinu moře

Příspěvek od martinius96 » 22 úno 2019, 23:25

Predpokladal som, ze senzor BMP280 hodnotu A - nadmorska vyska len vypocita( float A = bmp.readAltitude(1036.4);). Potom tvoj vzorec po dosadeni hodnoty A do h vypocita nespravny vysledok. Druha vec je, ako pises ze to ukazuje tlak spravne. Moze mi to niekto vysvetlit?

Ja som skusil vzorec Bosch bez teplotnej premennej kvoli eraniu talku v interieri.
float P0= P/pow(1.0-A/44330.0,5.255);
Uvidime rano.
Z častí máš pravdu, ale neviem, či by som do toho parametra pre bmp.readAltitude dával 1036,4 ale asi by som zvolil 1013.25. Mala by to byť hodnota na úrovni hladiny mora, alebo sa mýlim? To číslo tlaku, čo si tam dal je skoro celosvetový rekord nameraný. Nemeria ti ten systém veľa, alebo naopak málo? Ja som vo výške cca 862 m.n.m. Keď som do parametra read altitude dával 1013.25, tak mi to vracalo nadmorsku výšku na +-15 metrov presne. Kolísalo to, niekedy sa to priblížilo aj na 2 metre skutočnosti. Vychádzam z toho, že na blízkej záhrade má pán meteostanicu, ktorá má presnú nadmorskú výšku. Domy sú od záhrad s cca 5 metrovým prevýšením + nejaké metriky podľa výšky poschodia, z ktorého bol senzor von. Je to už ale doba, ten senzor myslím už ani nemám. Mal som to naposledy zapojené tak pred pol rokom. Myslím ale, že merania zodpovedali skutočnosti +- nejaká rozumná odchylka.
Čo tak pozerám kódy na internete, tak niekto tam používa parameter v Pa a nie v hPa.

Kód: Vybrat vše

Serial.print("Real altitude = ");
  Serial.print(bmp.readAltitude(101500));
  Serial.println(" meters");
Takýchto kódov je viac a každý používa túto hodnotu 1015 hPa. Akurát neviem čo to vráti, keď tam dáš tak vysokú hodnotu v Pa. Myslím, že by to malo byť v hPa. V oboch prípadoch ale tá tvoja konštanta je veľmi nad 1013 i 1015 hPa.

majovajo
Příspěvky: 6
Registrován: 22 úno 2019, 22:26
Reputation: 0

Re: Přepočet absolutního atmosferického tlaku na hladinu moře

Příspěvek od majovajo » 23 úno 2019, 07:59

Pouzivam tento projekt meraca https://create.arduino.cc/projecthub/Su ... jL28KyFrV8

Ten referencny tlak som bral, ze odcitam na webstranke pocasia pre aktualnu hodinu a den aktualne naozaj 1041hPa
https://www.foreca.cz/Slovakia/Ko%C5%A1 ... o%C5%A1ice
Ale senzor ukazuje bludy... 206mnm/1036.4hPa
Skusim tvoju hodnotu tlaku.

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Přepočet absolutního atmosferického tlaku na hladinu moře

Příspěvek od jankop » 23 úno 2019, 10:46

Když chci měřit přesně výšku měřící stanice tlakoměrem, tak musím znát přesně tlak při hladině moře. A naopak, pokud chci znát přesně tlak vzduchu při hladině moře, musím znát nadmořskou výšku h měřící stanice.
Konstantou 1013,25 nic nevylepším, je to jakýsi průměr.
Já tvrdím, že vcelku není o čem diskutovat.
Z fyzikální podstaty vycházejí zjednodušené rovnice, které uvádím.
1. p0 = p / pow(1.0 - h / 44330.0, 5.255);
2. p0 = p / pow(1.0 - 0.0065 *h / (t + 273.15), 5.255);
Ve skutečnosti jsou rovnice v podstatě stejné, i když se to možná laikovi tak nejeví. První rovnice vznikne tak, že se do druhé rovnice dosadí fixní teplota t=15 stupňů Celsia.
Rovnici 1. použijeme, pokud je tlakoměr umístěn v interiéru, protože v tom okamžiku senzor nezná vnější teplotu, která se používá na korekce. Pak se uplatní průměrná teplota 15 stupňů a tlakoměr ukazuje v létě - zimě s nějakou malou chybou.
Pokud je tlakoměr umístěn venku, pak použijeme rovnici 2. Tehdy dochází ke korekci tlaku opravdu v závislosti na teplotě a měření tlaku je vždy nejpřesnější.
Z toho plyne třeba tohle:
"Tlakoměr umístěný v místnosti ukazuje s chybou, která se zvětšuje s rozdílem teplot mezi místností a venkovním prostředím."
Důležitou poznámkou je i to, že u stanic s nadmořskou výškou nad 500m je určení tlaku přepočteného na hladinu moře již nepřesné a proto se většinou neprovádí. Souvisí to s teplotním profilem vzduchového sloupce, který je pro větší n.m. těžko určitelný.
Když jsem z mapy.cz odečetl přesně svoji nadmořskou výšku h a dosadil ji do vzorce, dosáhl jsem až podezřele skvělé a trvalé shody +-1hPa s blízkou meteostanicí.
Nevymyslíte nic lepšího, než vymysleli ti před námi. Držte se toho. Pokud vám to měří špatně, tak prostě děláte někde chybu.
Ale rád s vámi o tom podiskutuji. :)
Ještě doplním:" Srovnávat můj naměřený tlak přepočtený na hladinu moře má smysl pouze s meteorologickou stanicí, která je v mém blízkém okolí a měla by mít srovnatelnou n.m. výšku v cca stovkách metrů.
Naposledy upravil(a) jankop dne 23 úno 2019, 11:14, celkem upraveno 1 x.

majovajo
Příspěvky: 6
Registrován: 22 úno 2019, 22:26
Reputation: 0

Re: Přepočet absolutního atmosferického tlaku na hladinu moře

Příspěvek od majovajo » 23 úno 2019, 10:58

OK tak zda sa, ze oba naraz merat presne nemozem - aj vysku aj tlak :). Dava to celkom logiku len som to zmiesal nejako a to mi na tom nesedelo.

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Přepočet absolutního atmosferického tlaku na hladinu moře

Příspěvek od jankop » 23 úno 2019, 11:03

majovajo píše:
23 úno 2019, 07:59
Pouzivam tento projekt meraca https://create.arduino.cc/projecthub/Su ... jL28KyFrV8
Tady je vidět přímo chyba autora projektu. Pokouší se tam pofidérně určovat nadmořskou výšku, přičemž tu musí znát primárně, aby vůbec mohl spočítat tlak přepočtený na hladinu moře

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Přepočet absolutního atmosferického tlaku na hladinu moře

Příspěvek od jankop » 23 úno 2019, 14:01

Oprášil jsem pro vás svoji excelovskou tabulku. V ní si dosazením teploty a nadmořské výšky můžete porovnat odchylky mezi jednotlivými typy výpočtů při běžných atmosferických tlacích v rozsahu 960 - 1050 hPa.
A nejen odchylky mezi výpočty, ale i vliv změn (respektive třeba nepřesností) teploty a nadmořské výšky na konečný výsledek tj. tlak přepočtený na hladinu moře.
BABINET_BOSCH_01.xls
(26.5 KiB) Staženo 348 x
https://www.arduino-forum.cz/download/f ... iew&id=490
Přílohy
formulas.png
formulas.png (11.56 KiB) Zobrazeno 5876 x

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Přepočet absolutního atmosferického tlaku na hladinu moře

Příspěvek od pavel1tu » 23 úno 2019, 19:30

díky
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

majovajo
Příspěvky: 6
Registrován: 22 úno 2019, 22:26
Reputation: 0

Re: Přepočet absolutního atmosferického tlaku na hladinu moře

Příspěvek od majovajo » 23 úno 2019, 23:11

Dik za tabulku.
Mam druhy problem :D
Teplotu ukazuje uplne bludnu. nechal som ho 30 minut vonku pri -10 a ukazal -1. Meria to niekomu vonkajsiu teplotu presne?

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Přepočet absolutního atmosferického tlaku na hladinu moře

Příspěvek od jankop » 24 úno 2019, 01:19

Mně to ukazuje dobře :)
Dej sketch, ať ti můžem říct, co jsi to neudělal správně.
Teda přišel jsem právě z plesu a neřídil jsem, tak musím opravdu vážit slova, abych nebyl nezdvořilý :D

majovajo
Příspěvky: 6
Registrován: 22 úno 2019, 22:26
Reputation: 0

Re: Přepočet absolutního atmosferického tlaku na hladinu moře

Příspěvek od majovajo » 24 úno 2019, 21:10

jankop píše:
24 úno 2019, 01:19
Mně to ukazuje dobře :)
Dej sketch, ať ti můžem říct, co jsi to neudělal správně.
Teda přišel jsem právě z plesu a neřídil jsem, tak musím opravdu vážit slova, abych nebyl nezdvořilý :D

Kód: Vybrat vše

/* This code is to use with Adafruit BMP280 and OLED screen   (Metric)
 * It measures both temperature and pressure and it displays them on the OLED display with the altitude
 * It's a modified version of the Adafruit example code
 * Refer to www.surtrtech.com or SurtrTech Youtube channel
 */

#include <Adafruit_GFX.h>      //Libraries for the OLED and BMP280
#include <Adafruit_SSD1306.h>
#include <Adafruit_BMP280.h>

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 32 // OLED display height, in pixels
#define OLED_RESET    -1 // Reset pin # (or -1 if sharing Arduino reset pin)

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); //Declaring the display name (display)
Adafruit_BMP280 bmp;

void setup() {  
  bmp.begin();                                //Start the bmp                  
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //Start the OLED display
  display.clearDisplay();
  display.display();
  display.setTextColor(WHITE);
  display.setTextSize(1); 
  display.print("SurtrTech");     //Show the name, you can remove it or replace it
  display.setCursor(32,12);
  display.setTextSize(2);          
  display.println("BMP280"); 
  display.display();
  delay(2000);
}

void loop() {

    display.clearDisplay();
    float T = bmp.readTemperature();           //Read temperature in C
    float P = bmp.readPressure()/100;         //Read Pressure in Pa and conversion to hPa
    //float A = bmp.readAltitude(1019.66);    //Calculating the Altitude, the "1019.66" is the pressure in (hPa) at sea level at day in your region
                                              //If you don't know it just modify it until you get the altitude of your place
    float A = bmp.readAltitude(1035.9);      //Kosice 249mnm -Strazovska ul. 2nd floor Calculating the Altitude, the "1019.66" is the pressure in (hPa) at sea level at day in your region                                              
    //float P0= P/pow(1-((0.0065*A)/(T+(0.0065*A)+273.15)),5.257);  // ICAO formula calculate pressure at sea level 246 = sea level at my home
    //float P0= P/pow(1.0-A/44330.0,5.255);     //Bosch formula calculate pressure at sea level 
    float P0= P/pow(1.0-249/44330.0,5.255);     //Bosch formula calculate pressure at sea level 
    //p0 = p / pow(1 - ((0.0065 *h) / (t + (0.0065 *h) + 273.15)), 5.257); 
    
    display.setCursor(0,0);                   //Oled display, just playing with text size and cursor to get the display you want
    display.setTextColor(WHITE);
    display.setTextSize(1); 
    //display.print("Temp");
    display.print("Altitude");

    display.setTextSize(2); 
    display.setCursor(0,18);
    //display.print(T,1);
    display.print(A,0);                     // -10m = constant for SHMU Pressure leve adjustment
    display.setCursor(50,17);
    display.setTextSize(1);
    //display.print("C");
    display.print("m");

    display.setTextSize(1);
    display.setCursor(65,0);
    display.print("Pres");
    display.setCursor(65,10);
    display.print(P0);                     // 30.51hPa = constant for SHMU 
    display.setCursor(110,10);
    display.print("hPa");

    display.setCursor(65,25);
    //display.print("Alt");
    display.print("Temp");
    
    display.setCursor(90,25);
    //display.print(A,0);
    display.print(T,1);
    display.setCursor(115,25);
    //display.print("m");
    display.print("C");
    
    display.display();
    delay(2000);
}

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 11 hostů