Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Датчик давления BMP180

Вт мар 31, 2015 14:58:23

Написал расчет давления под этот датчик на ассемблере. Осталось два вопроса.
1. В формулах есть такой параметр oss обозначающий точность измерения.

При подсчете B3
B3=(((AC1*4+X3)<<oss)=2)/4

При подсчете B7
B7=((unsigned long)UP-B3)*(50000>>oss)
if (B7<0x80000000){p=(B7*2)/B4}
else {p=(B7/B4)*2}

Мне немного не понятна запись (50000>>oss) и (((AC1*4+X3)<<oss). Я написал расчет без учета его с параметрами из даташита. Результат совпал. В даташите его значение равно 0 т.е стандартное измерение. Я хочу использовать точное oss=3. Как oss учитывать в формулах?

2. Второй вопрос перевод давления из паскалей в мм. рт. ст.
С целой частью проблем нет.
Результат умножаю на 1000 и делю на 133322. По примеру из даташита получаем:
69964*1000/133322=524 мм. рт. ст. . После деления остается остаток 0x019750 (104272)
Конечный результат должен быть 524,7746. Как вычислить значение после запятой ?

Re: Датчик давления BMP180

Вт мар 31, 2015 16:38:39

Второй вопрос решил. Остаток умножил на 100 и поделил на 133322.
Первый вопрос остается.

Re: Датчик давления BMP180

Вт мар 31, 2015 19:24:08

SergSV писал(а):Мне немного не понятна запись (50000>>oss) и (((AC1*4+X3)<<oss).
Сдвинуть значение вправо (>>) или влево (<<) на указанное количество бит.
Что можно интерпретировать как деление (>>) на "2*oss" или умножение (<<) на "2*oss"
SergSV писал(а):Я написал расчет без учета его с параметрами из даташита. Результат совпал. В даташите его значение равно 0
Ты сдвинул значения влево/вправо на 0 бит - т.е. оставил "как былО".

Re: Датчик давления BMP180

Ср апр 01, 2015 09:44:05

mas123 спасибо.

Re: Датчик давления BMP180

Ср апр 01, 2015 19:56:31

Сам себя не поправишь - никто не поправит. В каком бреду я это писал? :shock:
mas123 писал(а):Что можно интерпретировать как деление (>>) на "2*oss" или умножение (<<) на "2*oss"
Сдвиг влево равнозначен умножению на 2 ^ oss, и сдвиг вправо - делению на 2 ^ oss.
В степени, а не умножить!

SergSV писал(а):Результат умножаю на 1000 и делю на 133322. .....69964*1000/133322=524
А что касательно чисел после запятой - почему бы не пойти простым, логическим путём? Умножить на 100000 и разделить на 133322.
69964 * 100000 / 133322 = 52477. Как можно увидеть: два младших разряда - это "две цифры после запятой".
Нужно всего-навсего вставить запятую перед второй справа цифрой.

Re: Датчик давления BMP180

Ср апр 01, 2015 22:30:54

mas123 спасибо, а то я уже хотел умножение 2*oss делать.
Я при расчете работаю с 32 битными числами, а 69964 * 100000 это уже больше чем 32 бита. Программу немного подкоректировал уменьшил в размерах , но пока без oss. На вычисления температуры и давления затрачивается 930 мкс. при частоте 16мГц. Попробую внедрить oss.

Re: Датчик давления BMP180

Чт апр 02, 2015 18:37:49

SergSV писал(а):Я при расчете работаю с 32 битными числами, а 69964 * 100000 это уже больше чем 32 бита.
100000 / 133322 == 50000 / 66661. Впритык, но влезаем в 32 бита
А если согласиться с некоторой погрешностью, то => 25000 / 33330 - вообще хорошо влезаем.
Впрочем, я не знаю какой диапазон измерения, какое допустимое максимальное давление...

Кстати, а так ли нужны сотые от давления? Если для барометра - у меня делает замер до десятых, и то там болтается туда-сюда.
А если для расчета высоты, то лично я использую давление в Паскалях .

Re: Датчик давления BMP180

Пт апр 03, 2015 08:40:07

Я хотел целую часть и сотые выводить на матрицы. Но после пары дней наблюдения понял что достаточно только целую часть выводит. От дробной толку мало . Оставлю ее в расчетах. Но от вывода на матрицы откажусь.

Re: Датчик давления BMP180

Пт апр 03, 2015 08:53:24

И это верно. Бесят даже десятые в показаниях иных термометров.
- Этой мумии 4004 года.
- Откуда такая точность?
- Четыре года назад, когда я устроился смотрителем в этот музей, директор сказал, что ей 4000 лет.

Re: Датчик давления BMP180

Пт апр 03, 2015 11:55:19

pyzhman писал(а): Бесят даже десятые в показаниях иных термометров.

Надеюсь, не в медицинских ? :)
Кстати, угодив в больницу, обнаружил, что современные электронные занижают по сравнению с ртутными. Во всяком случае, заветные 36,6 так и не смог наблюдать.

Re: Датчик давления BMP180

Пт апр 03, 2015 12:01:51

Медицинский, как известно, градусник. А то, что на улице, термометр. :beer:
Заветные 36,6 только в книжках. Если обратиться к Фаренгейту, то окажется, что в его время нормальной считалась температура 35,5 градуса по Цельсию (фаренгейтовские 24*4 градусов).

Re: Датчик давления BMP180

Чт фев 11, 2016 18:17:06

А со мной bmp180 не хочет дружить (
на первую посылку EE AA нормально квитирует ACK, а после посылки рестарта и EF - сразу NACK...
Не сложно свой протокол на асме показать? хочется бага убить и проверить одну идею с этим датчиком :)

Re: Датчик давления BMP180

Чт фев 11, 2016 19:15:09

Всё правильно Вы делаете для чтения коэффициентов из памяти:
START ЕЕ АА RESTART EF BYTE1 BYTE2 ... BYTE22 STOP
Может где-то ошибка в общении с модулем I2C или программной реализации этого протокола. Возможно, что сигнал RESTART не формируется. Если есть лог. анализатор, посмотрите сигналы на линиях I2C. В любом случае советую посмотреть на сенсор атмосферного давления LPS25H. Работать с ним гораздо проще и приятнее.
http://radiokot.ru/circuit/digital/measure/120/

Re: Датчик давления BMP180

Чт фев 11, 2016 19:44:19

Уже победить этот хочется ) Купил, подключил, написал, остался один глючок :) По большому счету RESTART это же обычная комбинация START? просто опущен STOP?

Re: Датчик давления BMP180

Чт фев 11, 2016 22:49:25

Да, именно так. Может у Вас линии SCL и SDA не отпускаются перед формурованием RESTART. Без кода трудно гадать. Попробуйте вместо RESTART осуществить STOP и потом START. Сенсору это без разницы, но в условиях Вашей реализации может сработает.

Re: Датчик давления BMP180

Чт сен 29, 2016 20:18:37

Положу здесь, может кому пригодиться.
CVAVR BMP180 TWI (аппаратный i2c). Для работы необходимо подключить twi.h, в функции twi_master_init(указать скорость в kHz); и глобально разрешить прерывания.
Вложения
BMP180twi.c
(3.23 KiB) Скачиваний: 572
Ответить