Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 9 kwi 2025, o 07:53


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
    Autor Wiadomość
     Tytuł: BMP280
    PostNapisane: 5 maja 2018, o 22:06 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 cze 2014
    Posty: 855
    Lokalizacja: pod Warszawą
    Pomógł: 58

    Koledzy
    ponieważ dostałem sporo zapytań na PW jak również na mail-a odnośnie obsługi czujnika ciśnienia wrzucam funkcje do inicjalizacji i odczytu danych z czujnika.
    Na początek trzeba odczytać parametry kalibracyjne zaszyte w pamięci przez producenta oraz ustawić rejestr pomiaru temperatury i ciśnienia ctrl_meas
    Parametry kalibracyjne trzeba sobie zapisać gdzieś w tablicy lub strukturze. Niestety tego nie pokażę bo wykorzystałem sposób z YB z biblioteki do BMP180.
    Funkcja odczytująca dane parametrów
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    funkcje odczytu i obliczania temperatury
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    i ciśnienia
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    powodzenia

    _________________
    Pomóżcie mi stanąć na nogi



    Ostatnio edytowano 6 maja 2018, o 13:49 przez mczarny, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: BMP280
    PostNapisane: 6 maja 2018, o 12:12 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 mar 2014
    Posty: 334
    Lokalizacja: Rybnik
    Pomógł: 55

    Hej.
    Kod zapewne niejednemu się przyda, dobrze że postanowiłeś się nim podzielić z innymi.
    Z swojej strony mogę polecić czujnik BME280, od BMP różni się dodatkowo pomiarem wilgotności. U mnie pracuje ich kilka, na razie niedługo, trochę ponad rok i i odpukać, żaden jeszcze nie odmówił współpracy :)

    Czujniki te są na tyle dobrze udokumentowane, że w nocie katalogowej jest nawet przykładowy kod do obsługi w C ;)

    Zastanawia mnie tylko Twoja funkcja BMP280_temp, której ostatnia linijka wygląda następująco:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    gdzie pdf podaje:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    _________________
    Amatorska stacje meteorologiczna



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: BMP280
    PostNapisane: 6 maja 2018, o 13:54 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 cze 2014
    Posty: 855
    Lokalizacja: pod Warszawą
    Pomógł: 58

    anonimowy napisał(a):
    Zastanawia mnie tylko Twoja funkcja BMP280_temp, której ostatnia linijka wygląda następująco:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    gdzie pdf podaje:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Ha i słusznie - już wyjaśniam.
    Mam dwa takie czujniki i o ile w pierwszym porównanie temperatury z DS10B20 jest ok. różnica to 0,1*C to drugi czujnik przekłamywał na plus o ok.0,6*C i dlatego tak zostało a ja nie zwróciłem uwagi.
    Powinno być oczywiście
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    poprawiłem - dzięki za zwrócenie uwagi

    _________________
    Pomóżcie mi stanąć na nogi



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: BMP280
    PostNapisane: 6 maja 2018, o 14:33 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    Dodatkowo w nocie katalogowej jest zapis że czujnik może podawać altitude, ja jestem właśnie na tym etapie aby dokonywać obliczeń i uzyskiwać wysokość na której znajduje się dany czujnik.

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: BMP280
    PostNapisane: 6 maja 2018, o 14:56 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 mar 2014
    Posty: 334
    Lokalizacja: Rybnik
    Pomógł: 55

    majster napisał(a):
    Dodatkowo w nocie katalogowej jest zapis że czujnik może podawać altitude, ja jestem właśnie na tym etapie aby dokonywać obliczeń i uzyskiwać wysokość na której znajduje się dany czujnik.


    Popraw mnie jeśli się mylę, ale wydaje mi się, że do tego potrzebne jest ciśnienie odniesienia, będące najczęściej ciśnieniem na poziomie morza.
    Wtedy wysokość można obliczyć za pomocą tego wzoru:

    Obrazek

    Gdzie p-ciśnienie odczytane przez nasz czujnik, p0 -ciśnienia na poziomie morza.

    _________________
    Amatorska stacje meteorologiczna



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: BMP280
    PostNapisane: 6 maja 2018, o 16:03 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 cze 2014
    Posty: 855
    Lokalizacja: pod Warszawą
    Pomógł: 58

    anonimowy napisał(a):
    majster napisał(a):
    Dodatkowo w nocie katalogowej jest zapis że czujnik może podawać altitude, ja jestem właśnie na tym etapie aby dokonywać obliczeń i uzyskiwać wysokość na której znajduje się dany czujnik.


    Popraw mnie jeśli się mylę, ale wydaje mi się, że do tego potrzebne jest ciśnienie odniesienia, będące najczęściej ciśnieniem na poziomie morza.


    No właśnie majster coś mi się nie zgadzało, że na podstawie tylko jednego parametru możemy wyliczyć wysokość npm.
    Ale może masz na to sposób - czekamy

    _________________
    Pomóżcie mi stanąć na nogi



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: BMP280
    PostNapisane: 6 maja 2018, o 18:55 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    anonimowy napisał(a):
    majster napisał(a):
    Dodatkowo w nocie katalogowej jest zapis że czujnik może podawać altitude, ja jestem właśnie na tym etapie aby dokonywać obliczeń i uzyskiwać wysokość na której znajduje się dany czujnik.


    Popraw mnie jeśli się mylę, ale wydaje mi się, że do tego potrzebne jest ciśnienie odniesienia, będące najczęściej ciśnieniem na poziomie morza.
    Wtedy wysokość można obliczyć za pomocą tego wzoru:

    Obrazek

    Gdzie p-ciśnienie odczytane przez nasz czujnik, p0 -ciśnienia na poziomie morza.



    Z tego co wyczytałem to ciśnienie nieskompresowane oraz ciśnienie odczytane, będę walczył bynajmniej nie jest to problemem gdyż ciśnienie na poziomie morza można łatwo przeliczyć na podstawie odczytanego ciśnienia.

    BMP180 podaje ciśnienie atmosferyczne natomiast moja stacja przelicza ciśnienie na poziomie morza

    Właśnie rozpoczynam starcie z altitude zobaczymy jak to wyjdzie.

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: BMP280
    PostNapisane: 6 maja 2018, o 19:33 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 mar 2014
    Posty: 334
    Lokalizacja: Rybnik
    Pomógł: 55

    majster napisał(a):
    nie jest to problemem gdyż ciśnienie na poziomie morza można łatwo przeliczyć na podstawie odczytanego ciśnienia.

    To prawda, czujniki mierzą ciśnienie względne, ale aby przeliczyć je na ciśnienie zredukowane do poziomu morza, potrzebujemy znać wysokość na jakiej znajduje się czujnik.
    Moim zdaniem jedna wartość jako odniesienie jest konieczna. I nieważne czy będzie to aktualne ciśnienie na poziomie morza, czy wartość ciśnienia bezwzględnego odczytana z czujnika znajdującego się na znanej nam wysokości. Wtedy wystarczy tylko odpowiednio przekształcić wzór.
    majster napisał(a):
    Właśnie rozpoczynam starcie z altitude zobaczymy jak to wyjdzie.

    Czekam na informacje o postępach ;)

    _________________
    Amatorska stacje meteorologiczna



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: BMP280
    PostNapisane: 6 maja 2018, o 20:21 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    Aktualnie stanąłem na wzorze

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    3428 czyli 34 metry 28 cm
    obniżając lub podwyższając czujnik wartości płynnie się zmieniają, różnicy nie mierzyłem z miarą.
    Wartość 1024 to aktualna wartość ciśnienia do poziomu morza.

    Dla mnie i tak ten wzór jest ułomny i trzeba wymyślić coś dokładniejszego.


    Temp: 26.48 *C
    Pressure: 1021 hPa
    Altitude: 3430



    Temp: 26.42 *C
    Pressure: 1021 hPa
    Altitude: 3429



    Temp: 26.37 *C
    Pressure: 1021 hPa
    Altitude: 3428


    +/- różnica jednego metra

    Akurat miejsce w którym leży czujnik to faktycznie 34 metry nad poziomem morza.

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: BMP280
    PostNapisane: 7 maja 2018, o 06:32 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 cze 2014
    Posty: 855
    Lokalizacja: pod Warszawą
    Pomógł: 58

    No tak Tomku tak jak rozmawialiśmy trzeba znać ciśnienie na poziomie morza.
    Z drugiej strony przekształcając wzór i znając wysokość na której jest czujnik możemy obliczyć ciśnienie na poziomie morza.

    _________________
    Pomóżcie mi stanąć na nogi



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: BMP280
    PostNapisane: 9 maja 2018, o 17:36 
    Offline
    Nowy

    Dołączył(a): 27 lut 2015
    Posty: 19
    Pomógł: 2

    Cześć.
    Też trochę męczyłem się z BMP280. Aby można było porównywać ciśnienia w różnych miejscach, należy zredukować je do poziomu morza. Dołączam funkcję obliczenia ciśnienia zredukowanego do poziomu morza, czyli takiego jak przedstawiają w serwisach pogodowych.

    temp - aktualna temperatura w miejscu pomiaru
    p_bezw - ciśnienie odczytane z BMP280 skompensowane temperaturowo
    altitude - aktualna wysokość npm w miejscu pomiaru
    bmp.pressure_redu - wartość ciśnienia zredukowanego do poziomu morza czyli to co widzimy np. w pogodynce.

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: BMP280
    PostNapisane: 15 sie 2018, o 15:55 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lis 2015
    Posty: 219
    Pomógł: 20

    Cześć.

    Próbuję uruchomić ten czujnik, z pomocą kodu stworzonego przez mczarny coś tam powoli się udaje ruszyć :)

    Nie wiem w czym jest problem ale temperaturę mam dziwnie za wysoką - jakieś 27 stopni i ciśnienie jakby zbyt niskie ok 986 hPa.

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: BMP280
    PostNapisane: 15 sie 2018, o 17:27 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 cze 2014
    Posty: 855
    Lokalizacja: pod Warszawą
    Pomógł: 58

    Jak możesz to pokaż odczytane wartości parametrów kalibracyjnych dig_T1 do dig_P9

    _________________
    Pomóżcie mi stanąć na nogi



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: BMP280
    PostNapisane: 15 sie 2018, o 17:41 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lis 2015
    Posty: 219
    Pomógł: 20

    Składnia: [ Pobierz ] [ Ukryj ]
    język html4strict
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    może robię gdzieś błąd w zamienie uint_32t na stringa i wyswietlanie na LCD. Mam tak:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: BMP280
    PostNapisane: 15 sie 2018, o 19:30 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 04 cze 2014
    Posty: 855
    Lokalizacja: pod Warszawą
    Pomógł: 58

    trochę się różnią od tych z noty
    Obrazek
    Co do stringa to ja mam
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    _________________
    Pomóżcie mi stanąć na nogi



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: BMP280
    PostNapisane: 15 sie 2018, o 19:58 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lis 2015
    Posty: 219
    Pomógł: 20

    Może źle je wysyłam przez uart. korzystam ze zwykłej funkcji c BB put_int(value, 10);

    Ciągle mi coś chodzi po glowie że mam jakiś problem ze zmianą tych typów na stringa.

    Jednak źle je wysyłałem na UART. Takie są prawidłowe wartości rejestrów

    T1: 28363
    T2: 26585
    T3: 50
    P1: 36354
    P2: -10386
    P3: 3024
    P4: 8737
    P5: -215
    P6: -7
    P7: 15500
    P8: -14600
    P9: 6000

    UT: 538072
    UP: 336044
    t_fine: 136748
    T: 2671
    P: 33134



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
     Tytuł: Re: BMP280
    PostNapisane: 18 paź 2020, o 14:48 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 02 kwi 2014
    Posty: 150
    Pomógł: 1

    Witam :)
    Pozwolicie, że odgrzeję kotleta :)

    Postanowiłem sam napisać bibliotekę do BMP280, ale coś jest nie tak.

    W pierszym kroku odczytuję wszystkie dig_Tx i dig_Px i w wyniku otrzymuję taki zestaw danych:

    Obrazek

    a deklaracja struktury wygląda następująco:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    w kolejnym kroku (/*1*/), zgodnie z datasheetem czujnika, odczytuję cały zestaw surowych wartości dla temperatury i ciśnienia:


    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Obrazek

    Po odczytaniu danych, przesówam wartość temp[3] (rejestr temp_msb z noty czujnika) o 8 miejsc w lewo i doklejam do niego wartość temp[4] (rejestr temp_lsb)-> patrz pkt. /*2*/.

    w kolejnych krokach obliczam var1, var2, t_fine i na końcu otrzymuję obliczoną temperaturę bmp.temperature i niestety ale za każdym razem wychodzi taka dziwna ujemna wartośc = -12814:

    Obrazek

    Miał ktoś taki przypadek ?
    Może znajdzie się ktoś kto przeanalizuje ten kod i znajdzie gdzie mam błąd ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO