Witam
Mam pewien problem z czujnikiem MS5611, a dokładniej z obliczeniem temperatury. W pętli co 1sek wywołuję funkcję pobierającą dane z czujnika MS5611 i kalkulującą temperaturę. Ma ona postać
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Gdzie D2 to dane odczytywane z przetwornika ADC sensora a cal_data[] to sześć stałych dla danego czujnika odczytanych z układu służące do obliczenia temperatury.
Po pierwszym wywołaniu funkcji otrzymuję prawidłową temperaturę, ok 20-21 stopni co by się zgadzało z rzeczywistą temperaturą. Ale drugie i każde kolejne wywołanie funkcji zwraca wartość około -167768. Po wielu próbach zwracając zamiast TEMP/100 innych zmiennych funkcji doszedłem do tego że problem leży w linii
TEMP2 = (dT * dT) / (2147483648);To TEMP2 w drugim i każdym kolejnym wywołaniu funkcji przybiera jakąś dziwną wartość o kilka rzędów większą niż powinna. Deklarując zmienną int32_t TEMP2; przed warunkiem nadałem jej wartość 0 (int32_t TEMP2 = 0;) niestety ale w tym przypadku każde obliczenie w warunku nie powodowało żadnej zmiany wartości TEMP2, wartość ta zawsze wynosiła 0.
Fragment kodu do obliczenia temperatury zaczerpnięty jest z biblioteki do arduino
https://github.com/jarzebski/Arduino-MS ... MS5611.cppMa ktoś jakiś sensowny pomysł co się dzieje ?