BMP280, датчик давления и температуры

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

Re: BMP280, датчик давления и температуры

Сообщение serg_svd »

Значение высоты меня не интересует, хотя можно ради прикола получить мою высоту над уровнем моря. Но я себе такой задачи не ставил. Мне надо только давление показывать. Причем вывожу в мм рт. ст.

Сейчас пререподключил питание. Данные изменились. Я что-то не понял, датчик сам постоянно измеряет давление или его надо каждый раз запускать некое преобразование, как, к примеру, тот же DS18B20?
Albert_V писал(а):Ещё один вариант проверки
Это мысль. в принципе можно павербанк подключить для проверки. Правда у меня дом всего 5 этажей Но на 1 мм рт. ст. должны сменятся показания
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: BMP280, датчик давления и температуры

Сообщение Albert_V »

serg_svd писал(а): датчик сам постоянно измеряет давление или его надо каждый раз запускать
Это зависит от режима, заданного в Mode.
Я не проверял работу в "Normal", поскольку измерения делаю раз в 5 минут (у меня режим Forced).
serg_svd писал(а):на 1 мм рт. ст. должны сменятся показания
Выведите десятичный знак. Так будет проще при проверке.
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

Re: BMP280, датчик давления и температуры

Сообщение serg_svd »

Да некуда выводить :) Я же в готовом устройстве применяю. Тут 3 семисегментника всего.

Конфиг такой
Спойлер

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

//	Indoor navigation
// 17 bit / 0.0025 °C *** 20 bit / 0.16 Pa *** Normal mode
#define	BMP280_MEAS			((BMP280_OVERSAMPLING_T2 << 5) | (BMP280_OVERSAMPLING_P16 << 2) | BMP280_MODE_NORMAL)
// 0.5 ms *** IIR filter coefficient=16 *** SPI=OFF
#define	BMP280_CONFIG		((BMP280_TSB_0_5 << 5) | (BMP280_FILTER_COEFFICIENT16 << 2) | BMP280_SPI_OFF)
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: BMP280, датчик давления и температуры

Сообщение Albert_V »

Так сдвиньте число на знак влево для проверки.
serg_svd писал(а):Конфиг такой
Извините, но Си я не знаю.
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

Re: BMP280, датчик давления и температуры

Сообщение serg_svd »

[uquote="Albert_V",url="/forum/viewtopic.php?p=3242408#p3242408"]замерить давление на 1-ом этаже дома и на 12-ом.[/uquote]
Кстати, попробовал. С 1 по 5 этаж давление уменьшается на 1 мм рт. ст. Так что похоже работает.
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: BMP280, датчик давления и температуры

Сообщение Albert_V »

Поздравляю.
:beer:
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

Re: BMP280, датчик давления и температуры

Сообщение serg_svd »

Спасибо!
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
nkrk
Родился
Сообщения: 11
Зарегистрирован: Ср июн 01, 2011 13:59:13

Re: BMP280, датчик давления и температуры

Сообщение nkrk »

Доброго времени суток. Пробую bmp280 калибровочные данные считываются, но в регистрах температуры и давления всегда дефолтные значения 0x80, 0, 0. Пробовал и normal и forced режимы, результат одинаковый. Какбудто сенсор не запускает измерения с регистра статуссчитывается всегда 0. Объясните плиз как датчику сказать чтобы он запустил измерения?
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: BMP280, датчик давления и температуры

Сообщение Albert_V »

После записи в config и ctrl_meas, через какое время считываете данные?
nkrk
Родился
Сообщения: 11
Зарегистрирован: Ср июн 01, 2011 13:59:13

Re: BMP280, датчик давления и температуры

Сообщение nkrk »

пробовал и 10мс и 100мс
--
Обратите внимание на то что при INIT-е, вначале ей надо записать config и следом ctrl_meas (не наоборот).
--
вот это есть на первой странице тут
где то описано (в документации) в какой последовательности инициализировать надо и нужно ли делать soft reset
Последний раз редактировалось nkrk Чт дек 14, 2017 07:49:37, всего редактировалось 1 раз.
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: BMP280, датчик давления и температуры

Сообщение Albert_V »

Слишком мало информации о том что вы (с)делали.
Программу сами пишите или у вас не работает нечто скаченное?
nkrk
Родился
Сообщения: 11
Зарегистрирован: Ср июн 01, 2011 13:59:13

Re: BMP280, датчик давления и температуры

Сообщение nkrk »

функции работы по i2c я стянул с инета
работу с датчиком пишу сам (в общемто пару функций накидать и понять что к чему должно быть просто)
использую atmega328
У меня уже есть реализованный датчик по i2c это гигрометр sht21
сейчас я подключил на туже шину bmp280 (на китайской платке с алиэкспреса)
думал уже экземпляр битый, поставил второй такой же результат один в один (калибровочные биты разные ;) )
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: BMP280, датчик давления и температуры

Сообщение Albert_V »

Тогда скажите (не выкладывая код программы) последовательность ваших действий (вернее, вашей программы) учитывая времена, данные init-а и т.д..
nkrk
Родился
Сообщения: 11
Зарегистрирован: Ср июн 01, 2011 13:59:13

Re: BMP280, датчик давления и температуры

Сообщение nkrk »

опишу текущий код
инициализация UART
инициализация I2C
watchdog
включение прерываний
инициализация BMP (reset, чтение конфигурационных битов)
основной цикл
{
запись в 0xF4 = 0x2E
//запись в 0xF5 = 0x1 - в данный момент закоммнетировано
задержка 200мс
чтение 6 байт начиная 0xF7 и вывод
задержка 100мс
}

-----
напишите какие конфигурационные биты вы используете из приведенного кода не совсем ясно
Именно в хексе числами а не дефайнами
я пробовал в регистре 0xF4 = 0x2E и 0xF5 = 1
нужно ли устанавливать вообще чтото в 0xF5? видел примеры в инете что в него вообще ничего не пишется
Я пробовал и устанавливать 0xF5 и не устанавливать и даже писал всякую ерунду типа 0xFF - результат в регистрах значения 0x80,0x0,0x0

ps: поменял местами запись в 0xF4 и 0xF5 ничего не поменялось :((
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: BMP280, датчик давления и температуры

Сообщение Albert_V »

Для начала, хорошо было бы вам скачать документацию и, иногда, заглядывать в неё.
0F5h = 1 - это вы "говорите" BMP что будете с ним общаться по SPI. После этого, датчик не будет работать по I2C до "передёргивания" питания.
Проверьте формат обращения к BMP по чтению и записи (Figure 7 и Figure 8 ).
Soft Reset лично я не делаю.
Очень рекомендую, при старте программы (после подачи питания), подождать порядка 100mS, "сказать" подряд START и STOP (без передачи данных) и после этого уже приступать к общению с датчиком.
Запишите в 0F4h число 27h и попробуйте считать данные через секунду (или считывайте постоянно).

Добавлено after 6 minutes 12 seconds:
В 0F5h пропишите 0h.

Добавлено after 4 minutes 2 seconds:
Кстати, судя по тем данным которые вы считываете - очень похоже, что реальной записи в 0F4 не было.
nkrk
Родился
Сообщения: 11
Зарегистрирован: Ср июн 01, 2011 13:59:13

Re: BMP280, датчик давления и температуры

Сообщение nkrk »

Думаю общение по i2c работает правильно, иначе бы я считать с датчика ничего бы не смог
попробовал добавить задержку вначале и вынес из цикла установку конфигурационных битов 0xF5=0x27

на счет того что датчик болшжен был уйти на spi интерфейс это да подозрительно както что продолжает отвечать по i2c
НО из памяти то данные у меня считываются, а значит запись по i2c работает

Хотя да думаю надо копать установку байтов по i2c
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: BMP280, датчик давления и температуры

Сообщение Albert_V »

С адресом чтения/запись (младший бит) не запутались?

Добавлено after 2 minutes 8 seconds:
На всякий случай: При записи, auto-increment адреса BMP не поддерживает.
nkrk
Родился
Сообщения: 11
Зарегистрирован: Ср июн 01, 2011 13:59:13

Re: BMP280, датчик давления и температуры

Сообщение nkrk »

похоже пошли данные
T=0x7c:0xa1:0x0 P=0x57:0x74:0x0
T=0x7c:0x9f:0x0 P=0x57:0x73:0x0
T=0x7c:0x9d:0x0 P=0x57:0x73:0x0
T=0x7c:0x9a:0x0 P=0x57:0x75:0x0
T=0x7c:0x99:0x0 P=0x57:0x73:0x0
T=0x7c:0x94:0x0 P=0x57:0x70:0x0

я поменял немного отправку (запись) второго байта после отправки адреса
В конфиги сейчас устанавливаю 0xF5 = 0, 0xF4 = 0x27 результат выше


Спасибо !!!

ps: проверил порядок отправки регистров 0xF4 и 0xF5 - не влияет на работу
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: BMP280, датчик давления и температуры

Сообщение Albert_V »

[uquote="nkrk",url="/forum/viewtopic.php?p=3259427#p3259427"]...проверил порядок отправки регистров 0xF4 и 0xF5 - не влияет на работу[/uquote]Если работать в Normal Mode - на это можно не обращать внимание.
Если в Forced Mode и нужен Oversampling - 0F4h должен быть последним.
nkrk
Родился
Сообщения: 11
Зарегистрирован: Ср июн 01, 2011 13:59:13

Re: BMP280, датчик давления и температуры

Сообщение nkrk »

появились результаты после функций компенсации
T = 2478 что вполне соответствует правде (24,78градуса)
а вот давление непонятная цифра
P = 158966 ??? в каких это единицах? (оверсемплинг пробовал на 1 и на 4 результат схож)
нашел косяк, теперь все тип топ :)
Последний раз редактировалось nkrk Чт дек 14, 2017 20:24:52, всего редактировалось 1 раз.
Ответить

Вернуться в «Периферия»