Страница 1 из 1

Bmp180 и pic18f2520 проблема не верное значение.

Добавлено: Вт май 17, 2022 21:28:50
Nobodyred
Добрый вечер, помогите пожалуйста, есть датчик бмр180 атмосферного давления, температуру выводит правильно, то есть похожую которая в доме, но вот давление кажет 5301 в даташите на данный датчик сказано, что выводит в паскалях и чтоб получить мм. рт. ст надо разделить на 133.
Уже неделю бьюсь не получаеться и все.

Re: Bmp180 и pic18f2520 проблема не верное значение.

Добавлено: Ср май 18, 2022 00:55:43
Аlex
Nobodyred писал(а):надо разделить на 133.
Уже неделю бьюсь не получаеться и все.
Не получается поделить ?

Re: Bmp180 и pic18f2520 проблема не верное значение.

Добавлено: Ср май 18, 2022 00:59:56
Nobodyred
[uquote="Аlex",url="/forum/viewtopic.php?p=4233387#p4233387"]
Nobodyred писал(а):надо разделить на 133.
Уже неделю бьюсь не получаеться и все.
Не получается поделить ?[/uquote]
Если бы поделить не получалось, не получаеться вывести давление хрень кажет.
В расчетах все верно, А вот кажет не правильные цифры, что не так я сделал, к явному типу приводил.

Re: Bmp180 и pic18f2520 проблема не верное значение.

Добавлено: Ср май 18, 2022 01:07:37
АлександрЛ
Nobodyred писал(а):но вот давление кажет 5301
А в течение суток показания хоть как-то меняются?
Или вот это "5301" висит, независимо от состояния атмосферы?

зы.. В порядке бреда- у вас число в обратном порядке считано- если 1035 поделить на 1,33, то получится 778.... :dont_know:
Спойлер

Re: Bmp180 и pic18f2520 проблема не верное значение.

Добавлено: Ср май 18, 2022 04:42:27
Nobodyred
[uquote="АлександрЛ",url="/forum/viewtopic.php?p=4233395#p4233395"]
Nobodyred писал(а):но вот давление кажет 5301
А в течение суток показания хоть как-то меняются?
Или вот это "5301" висит, независимо от состояния атмосферы?

зы.. В порядке бреда- у вас число в обратном порядке считано- если 1035 поделить на 1,33, то получится 778.... :dont_know:
Спойлер
[/uquote]
Смотрите, температура выводит правдивую, она меняется, проверял программный i2c все работает считывает, записывает, каждое уравнение проверял, затем делю полученное число в паскалях на 133 и получаю бред.
Может кто-то код глянет либо проверит.
Я уже не знаю, что делать.

Re: Bmp180 и pic18f2520 проблема не верное значение.

Добавлено: Ср май 18, 2022 07:05:03
veso74
Если у вас проблемы только с расчетом, то можно попробовать:
На некоторых компиляторах у меня была проблема в последовательности действий.
Действия должны быть простыми.

Можете ввести промежуточную переменную и выполнить арифметические действия с более простыми равенства.

Код: Выделить всё

p1 = BMP180_calpressure();
long p_tmp = (long)(p1 / 133);
send_byte_number(p_tmp, 5);
Некоторые действия не нужны 1:1, поэкспериментируйте, например с печатью: по последовательному каналу, на дисплее: отображению промежуточных результатов. Узнайте: неверный номер возвращает датчик, или просчитывания, или печат ... ?

Re: Bmp180 и pic18f2520 проблема не верное значение.

Добавлено: Ср май 18, 2022 07:27:55
Nobodyred
[uquote="veso74",url="/forum/viewtopic.php?p=4233445#p4233445"]Если у вас проблемы только с расчетом, то можно попробовать:
На некоторых компиляторах у меня была проблема в последовательности действий.
Действия должны быть простыми.

Можете ввести промежуточную переменную и выполнить арифметические действия с более простыми равенства.

Код: Выделить всё

p1 = BMP180_calpressure();
long p_tmp = (long)(p1 / 133);
send_byte_number(p_tmp, 5);
Некоторые действия не нужны 1:1, поэкспериментируйте, например с печатью: по последовательному каналу, на дисплее: отображению промежуточных результатов. Узнайте: неверный номер возвращает датчик, или просчитывания, или печат ... ?[/uquote]
Хочу попробовать, ввести все значения с даташита и получить, то что должно быть в конце даташита в паскалях.

Re: Bmp180 и pic18f2520 проблема не верное значение.

Добавлено: Ср май 18, 2022 08:39:32
Аlex
Не уверен, что вот в этом :
Спойлер

Код: Выделить всё

long BMP180_calpressure(void){

B6 = B5 - 4000;

X1 = ((B6 * B6 / 4096)*data3.B2)/ 2048;//*

X2 = B6 * data3.AC2  / 2048;//*

X3 = X1 + X2;

B3 = ((((long)data3.AC1*4+X3) <<3 ) + 2) / 4;//*


X1 = (B6 * data3.AC3)  / 8192;

X2 = ((B6 * B6 / 4096) * data3.B1) / 65536;

X3 = ((X1 + X2) + 2) / 4;

B4 = (long)data3.AC4 * (unsigned long)(X3 + 32768) / 32768;

B7 = ((unsigned long)UP - B3) * (50000 >> 3);

if (B7 < 0x80000000) 
{ p = (B7 * 2) / B4; } 
   
else 
{ p = (B7 / B4) * 2;}

X1 = (p / 256)*(p / 256);

X1 = (X1 * 3038) / 65536 ;
        
X2 = (p * -7357 ) / 65536;

p = p + (X1 + X2 + 3791) / 16;

return p;



}
будет кто-то разбираться.
Прогоните код в отладчике и проанализируйте каждую написанную Вами строку.

Re: Bmp180 и pic18f2520 проблема не верное значение.

Добавлено: Ср май 18, 2022 10:41:34
Eddy_Em
"Компенсацию" правильно вычисляешь?
Вот, может поможет - мой говнокод для работы с этим датчиком (под STM32F103, но сам файл обработки данных от платформы не зависит).

Кстати, у тебя-то 8-битный МК! Возможно, где-то да возникает переполнение. И я бы не пользовался для вычислений нестрогими типами (int, short, long...) - их длина зависит от платформы, лучше пользоваться строгими: uint16_t, int64_t и т.п.

Re: Bmp180 и pic18f2520 проблема не верное значение.

Добавлено: Ср май 18, 2022 21:10:19
Nobodyred
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4233507#p4233507"]"Компенсацию" правильно вычисляешь?
Вот, может поможет - мой говнокод для работы с этим датчиком (под STM32F103, но сам файл обработки данных от платформы не зависит).

Кстати, у тебя-то 8-битный МК! Возможно, где-то да возникает переполнение. И я бы не пользовался для вычислений нестрогими типами (int, short, long...) - их длина зависит от платформы, лучше пользоваться строгими: uint16_t, int64_t и т.п.[/uquote]
Спасибо.