Bmp180 и pic18f2520 проблема не верное значение.
Bmp180 и pic18f2520 проблема не верное значение.
Добрый вечер, помогите пожалуйста, есть датчик бмр180 атмосферного давления, температуру выводит правильно, то есть похожую которая в доме, но вот давление кажет 5301 в даташите на данный датчик сказано, что выводит в паскалях и чтоб получить мм. рт. ст надо разделить на 133.
Уже неделю бьюсь не получаеться и все.
Уже неделю бьюсь не получаеться и все.
- Вложения
-
- bmp180-shutl_63b5f94f01.pdf
- (1.74 МБ) 152 скачивания
-
- dht22_bmp180_pic18f2520.X.rar
- (163.59 КБ) 146 скачиваний
- Реклама
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Bmp180 и pic18f2520 проблема не верное значение.
Не получается поделить ?Nobodyred писал(а):надо разделить на 133.
Уже неделю бьюсь не получаеться и все.
Re: Bmp180 и pic18f2520 проблема не верное значение.
[uquote="Аlex",url="/forum/viewtopic.php?p=4233387#p4233387"]
Если бы поделить не получалось, не получаеться вывести давление хрень кажет.
В расчетах все верно, А вот кажет не правильные цифры, что не так я сделал, к явному типу приводил.
Не получается поделить ?[/uquote]Nobodyred писал(а):надо разделить на 133.
Уже неделю бьюсь не получаеться и все.
Если бы поделить не получалось, не получаеться вывести давление хрень кажет.
В расчетах все верно, А вот кажет не правильные цифры, что не так я сделал, к явному типу приводил.
- АлександрЛ
- Друг Кота
- Сообщения: 43883
- Зарегистрирован: Пн ноя 30, 2009 03:00:01
- Откуда: Нерезиновая
Re: Bmp180 и pic18f2520 проблема не верное значение.
А в течение суток показания хоть как-то меняются?Nobodyred писал(а):но вот давление кажет 5301
Или вот это "5301" висит, независимо от состояния атмосферы?
зы.. В порядке бреда- у вас число в обратном порядке считано- если 1035 поделить на 1,33, то получится 778....
Спойлер
Re: Bmp180 и pic18f2520 проблема не верное значение.
[uquote="АлександрЛ",url="/forum/viewtopic.php?p=4233395#p4233395"]
Или вот это "5301" висит, независимо от состояния атмосферы?
зы.. В порядке бреда- у вас число в обратном порядке считано- если 1035 поделить на 1,33, то получится 778....
[/uquote]
Смотрите, температура выводит правдивую, она меняется, проверял программный i2c все работает считывает, записывает, каждое уравнение проверял, затем делю полученное число в паскалях на 133 и получаю бред.
Может кто-то код глянет либо проверит.
Я уже не знаю, что делать.
А в течение суток показания хоть как-то меняются?Nobodyred писал(а):но вот давление кажет 5301
Или вот это "5301" висит, независимо от состояния атмосферы?
зы.. В порядке бреда- у вас число в обратном порядке считано- если 1035 поделить на 1,33, то получится 778....
Спойлер
Смотрите, температура выводит правдивую, она меняется, проверял программный i2c все работает считывает, записывает, каждое уравнение проверял, затем делю полученное число в паскалях на 133 и получаю бред.
Может кто-то код глянет либо проверит.
Я уже не знаю, что делать.
- Реклама
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1907
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Bmp180 и pic18f2520 проблема не верное значение.
Если у вас проблемы только с расчетом, то можно попробовать:
На некоторых компиляторах у меня была проблема в последовательности действий.
Действия должны быть простыми.
Можете ввести промежуточную переменную и выполнить арифметические действия с более простыми равенства.
Некоторые действия не нужны 1:1, поэкспериментируйте, например с печатью: по последовательному каналу, на дисплее: отображению промежуточных результатов. Узнайте: неверный номер возвращает датчик, или просчитывания, или печат ... ?
На некоторых компиляторах у меня была проблема в последовательности действий.
Действия должны быть простыми.
Можете ввести промежуточную переменную и выполнить арифметические действия с более простыми равенства.
Код: Выделить всё
p1 = BMP180_calpressure();
long p_tmp = (long)(p1 / 133);
send_byte_number(p_tmp, 5);
Re: Bmp180 и pic18f2520 проблема не верное значение.
[uquote="veso74",url="/forum/viewtopic.php?p=4233445#p4233445"]Если у вас проблемы только с расчетом, то можно попробовать:
На некоторых компиляторах у меня была проблема в последовательности действий.
Действия должны быть простыми.
Можете ввести промежуточную переменную и выполнить арифметические действия с более простыми равенства.
Некоторые действия не нужны 1:1, поэкспериментируйте, например с печатью: по последовательному каналу, на дисплее: отображению промежуточных результатов. Узнайте: неверный номер возвращает датчик, или просчитывания, или печат ... ?[/uquote]
Хочу попробовать, ввести все значения с даташита и получить, то что должно быть в конце даташита в паскалях.
На некоторых компиляторах у меня была проблема в последовательности действий.
Действия должны быть простыми.
Можете ввести промежуточную переменную и выполнить арифметические действия с более простыми равенства.
Код: Выделить всё
p1 = BMP180_calpressure();
long p_tmp = (long)(p1 / 133);
send_byte_number(p_tmp, 5);
Хочу попробовать, ввести все значения с даташита и получить, то что должно быть в конце даташита в паскалях.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Bmp180 и pic18f2520 проблема не верное значение.
Не уверен, что вот в этом : будет кто-то разбираться.
Прогоните код в отладчике и проанализируйте каждую написанную Вами строку.
Спойлер
Код: Выделить всё
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;
}
Прогоните код в отладчике и проанализируйте каждую написанную Вами строку.
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: Bmp180 и pic18f2520 проблема не верное значение.
"Компенсацию" правильно вычисляешь?
Вот, может поможет - мой говнокод для работы с этим датчиком (под STM32F103, но сам файл обработки данных от платформы не зависит).
Кстати, у тебя-то 8-битный МК! Возможно, где-то да возникает переполнение. И я бы не пользовался для вычислений нестрогими типами (int, short, long...) - их длина зависит от платформы, лучше пользоваться строгими: uint16_t, int64_t и т.п.
Вот, может поможет - мой говнокод для работы с этим датчиком (под STM32F103, но сам файл обработки данных от платформы не зависит).
Кстати, у тебя-то 8-битный МК! Возможно, где-то да возникает переполнение. И я бы не пользовался для вычислений нестрогими типами (int, short, long...) - их длина зависит от платформы, лучше пользоваться строгими: uint16_t, int64_t и т.п.
Re: Bmp180 и pic18f2520 проблема не верное значение.
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4233507#p4233507"]"Компенсацию" правильно вычисляешь?
Вот, может поможет - мой говнокод для работы с этим датчиком (под STM32F103, но сам файл обработки данных от платформы не зависит).
Кстати, у тебя-то 8-битный МК! Возможно, где-то да возникает переполнение. И я бы не пользовался для вычислений нестрогими типами (int, short, long...) - их длина зависит от платформы, лучше пользоваться строгими: uint16_t, int64_t и т.п.[/uquote]
Спасибо.
Вот, может поможет - мой говнокод для работы с этим датчиком (под STM32F103, но сам файл обработки данных от платформы не зависит).
Кстати, у тебя-то 8-битный МК! Возможно, где-то да возникает переполнение. И я бы не пользовался для вычислений нестрогими типами (int, short, long...) - их длина зависит от платформы, лучше пользоваться строгими: uint16_t, int64_t и т.п.[/uquote]
Спасибо.


