Czujnik ciśnienia atmosferycznego.

mihu
Posts: 133
Joined: Wed Feb 28, 2018 6:00 pm

Thu Feb 14, 2019 9:10 pm

wojtas567 wrote:
Thu Feb 14, 2019 3:53 pm
Jeżeli masz czujnik BMP to powinieneś mieć w tych wpisach:

Code: Select all

pressure = (bmp.readPressure() +10)/ 100.0F
nie pomogło

dopiero wyrównałem bmp tak
pressure = bme.readPressure() / 98.8F;
i jest ok
a w bme wpisałem pozycje m.n.p.n 1200 i też jest już ok
User avatar
makrz
Posts: 281
Joined: Tue Nov 27, 2018 1:43 pm
Location: Opole

Mon Mar 25, 2019 7:50 am

lesny8 wrote:
Tue Feb 12, 2019 8:21 pm
Na stronie konfiguracyjnej modułu masz pole do podania wysokości na jakiej dokonujesz pomiaru
kalibracja.jpg

Swoją drogą, to ja wyświetlam sobie ciśnienie bezwzględne ;)
Image

Witam
Czy po wpisaniu wysokości n.p.m. ma być wyświetlane ciśnienie zredukowane do poziomu morza?
Jeżeli tak to nie działa tak jak powinno.

Tutaj fragment kodu @ Robert Błaszczak wraz z odnośnikami do wzorów

Code: Select all

// calculate relative sea level pressure from absolute station pressure in hPa
// temperature in �C, elevation in m
// http://www.sandhurstweather.org.uk/barometric.pdf
// http://keisan.casio.com/exec/system/1224575267
// *******************************************************
float calculateSeaLevelPressure(float celsius, float stationPressure, float elevation)
{
  float slP = stationPressure / pow(2.718281828, -(elevation / ((273.15 + celsius) * 29.263)));
  return slP;
} // calculateSeaLevelPressure()
Wtedy wyświetla ciśnienie zredukowane do p.m.
User avatar
lesny8
Posts: 821
Joined: Mon Dec 11, 2017 9:43 pm

Mon Mar 25, 2019 10:40 am

makrz wrote:
Mon Mar 25, 2019 7:50 am
Witam
Czy po wpisaniu wysokości n.p.m. ma być wyświetlane ciśnienie zredukowane do poziomu morza?
Tak, jest to wtedy ciśnienie względne.
makrz wrote:
Mon Mar 25, 2019 7:50 am
Jeżeli tak to nie działa tak jak powinno.
Nie analizowałem tego, bo u siebie wyświetlam ciśnienie bezwzględne zmierzone przez czujnik. Kod nie jest mój a kolegi @Yepestis o czym w tym poście napisałem, a skąd on to brał nie mam pojęcia.
Nie wykluczam błędu podczas wyliczania wartości względnej, bo trzeba jeszcze uwzględniać temperaturę jaka panuje, a tam chyba tego nie ma.
makrz wrote:
Mon Mar 25, 2019 7:50 am
Tutaj fragment kodu @ Robert Błaszczak wraz z odnośnikami do wzorów

Code: Select all

// calculate relative sea level pressure from absolute station pressure in hPa
// temperature in �C, elevation in m
// http://www.sandhurstweather.org.uk/barometric.pdf
// http://keisan.casio.com/exec/system/1224575267
// *******************************************************
float calculateSeaLevelPressure(float celsius, float stationPressure, float elevation)
{
  float slP = stationPressure / pow(2.718281828, -(elevation / ((273.15 + celsius) * 29.263)));
  return slP;
} // calculateSeaLevelPressure()
Wtedy wyświetla ciśnienie zredukowane do p.m.
Nie zagłębiałem się w temacie, ale możesz to zweryfikować modyfikując kod w oparciu o przytoczone wzory.
User avatar
makrz
Posts: 281
Joined: Tue Nov 27, 2018 1:43 pm
Location: Opole

Mon Mar 25, 2019 12:13 pm

Nie zagłębiałem się w temacie, ale możesz to zweryfikować modyfikując kod w oparciu o przytoczone wzory.
Mógłbym gdybym umiał. :oops:

A kod jest tu

Code: Select all

float calculateSeaLevelPressure(float celsius, float stationPressure, float elevation)
{
  float slP = stationPressure / pow(2.718281828, -(elevation / ((273.15 + celsius) * 29.263)));
  return slP;
Yepestis
Posts: 173
Joined: Mon Sep 24, 2018 6:08 pm
Location: Wrocław

Mon Mar 25, 2019 2:58 pm

Kod jest od kolegi wojtas567
viewtopic.php?f=11&t=4060&hilit=All+czujników
I z tego co pamiętam wyglądał inaczej a może sam dokonałam jakichś zmian teraz już nie jestem pewien.
Sprawdzę w wolnej chwili.
User avatar
wojtas567
Posts: 1786
Joined: Sun Apr 03, 2016 7:16 pm
Location: Olsztyn

Mon Mar 25, 2019 4:04 pm

Ok, no dobra nie będę dalej odpychał :) może jutro uda mi się wieczorem zerknąć i to połączyć.
Mam jeszcze pytanie do kolegi @makrz masz cały kod?
Pozdrawiam
Wojtek
User avatar
makrz
Posts: 281
Joined: Tue Nov 27, 2018 1:43 pm
Location: Opole

Mon Mar 25, 2019 4:38 pm

wojtas567 wrote:
Mon Mar 25, 2019 4:04 pm
Ok, no dobra nie będę dalej odpychał :) może jutro uda mi się wieczorem zerknąć i to połączyć.
Mam jeszcze pytanie do kolegi @makrz masz cały kod?
Tak.
To kod kolegi @Robert Błaszczak.
Jest tutaj.
Yepestis
Posts: 173
Joined: Mon Sep 24, 2018 6:08 pm
Location: Wrocław

Mon Mar 25, 2019 8:10 pm

U mnie to wyglądało tak:

Code: Select all

 // korekta uwzględniająca wysokość na jakiej znajduje się czujnik co do poziomu morza
 t = (bme.readPressure() + Odczytaj_zakres_eeprom(EEPROM_HIGHTCAL, MAX_HIGHTCAL).toFloat()) / 100.0F; 
Skoro kod kolegi @Robert Błaszczak jest prawidłowy to u mnie jest źle. Przyznam że nie wiem jak to się przelicza.
User avatar
Robert Błaszczak
Posts: 516
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra
Contact:

Mon Mar 25, 2019 8:29 pm

Kalkulator jest np. tu: https://stacje-pogody.pl/cisnienie.php

Opis, jak obliczyć ciśnienie względne: http://stacjepogody.waw.pl/index.php?topic=4.0
Pozdrawiam
Robert Błaszczak
https://www.blaszczak.pl
User avatar
wojtas567
Posts: 1786
Joined: Sun Apr 03, 2016 7:16 pm
Location: Olsztyn

Wed Mar 27, 2019 4:23 pm

Sprawdźcie czy działa

Code: Select all

float elevation = 130.1;  // wysokość npm na jakim znajduje się czujnik
a w odczycie temperatury:

Code: Select all

         t = bme.readPressure() / pow(2.718281828, -(elevation / ((273.15 + bme.readTemperature()) * 29.263))) / 100.0F;
aktualizacja

Po testach mogę powiedzieć, że u mnie działa przynajmniej zmienia się wartość przy 30 st miałem ok. 1024, a przy 10 - 1026 hPa :)
Pozdrawiam
Wojtek
Post Reply