Заголовок сообщения: BMP280, датчик давления и температуры
Добавлено: Ср мар 01, 2017 11:42:57
Сверлит текстолит когтями
Карма: 5
Рейтинг сообщений: 19
Зарегистрирован: Вт фев 01, 2011 17:56:40 Сообщений: 1270 Откуда: г. Жуковка, Брянская обл.
Рейтинг сообщения:0
Здравствуйте. Купил у китайцев платку с BMP280, подключил к STM32F030F4P6. Датчик успешно выдает паскали давления и градусы температуры, НО температура практически не меняется при нагреве датчика, показывает 2312 +-2 единицы младшего разряда. Проверил что выдается датчик - тоже меняется слабо. Вот не пойму или датчик такой или я не так настроил. Кто с ним работал, подскажите?
Заголовок сообщения: Re: BMP280, датчик давления и температуры
Добавлено: Пт апр 07, 2017 08:32:31
Сверлит текстолит когтями
Карма: 5
Рейтинг сообщений: 19
Зарегистрирован: Вт фев 01, 2011 17:56:40 Сообщений: 1270 Откуда: г. Жуковка, Брянская обл.
Рейтинг сообщения:0
Разобрался наконец-то. Я ошибся в нумерации регистров, при чтении блока данных из 6 регистров 0xF7-0xFC. Код выше правильный, номера регистров должны быть:
А есть описание работы с этим датчиком для "чайников"? Скачал даташит на BMP280 от BOSCH "Data sheet BMP280 Digital Pressure Sensor", но там для меня как-то все непонятно расписано. Кроме даташита накачал кучу примеров исходников. Легче мне не стало. С адресами регистров вроде по даташиту и примерам разобрался
Дальше нужно как-то инициализировать датчик, считать калибровочные данные, и рассчитать. Выручайте букварем!
Или хотя бы на словах порядок действий! Инициализировать нужно? (запись в регистры config, ctrl_meas. Или вначале считывать калибровочные данные, а потом конфигурировать? То есть выше изложенный пример верен?
Добавлено after 1 hour 29 minutes 46 seconds: Я ориентируюсь на эту диаграмму работы Вот как раз по ней и не видно инициализации. Сразу идет измерение температуры, затем давления. А после считывание и преобразование
_________________ "Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Смотрите Figure3 или Figure4. Init - это запись в регистры ctrl_meas и config. Формулы для расчётов температуры и давления в pdf есть (даже есть пример на стр.23).
Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650.
Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.
Смотрю fig4 для Normal mode/ POR - Power On Run? Подача питания? Не понял как расшифровывается. Write settings - Какие настройки записываются? Config и Ctrl_meas? Mode=11 это понятно, но по сути будет же прописываться сразу в регистр ctrl_meas Далее я не понял. Идет вроеде измерение, а сверху прописаны osrs_t[2:0] и osrs_p[2:0], то есть опять же настройка это. И только после цикла ожидания пойдут измерения?
А когда, собственно, считывать калибровочные данные?
_________________ "Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Write settings - Какие настройки записываются? Config и Ctrl_meas?
Правильно.
serg_svd писал(а):
Далее я не понял.
А вот тут уже вы поленились. Вбейте в поиск по документу osrs_t и osrs_p и посмотрите к чему это относится. Это НЕ настройка. P.S. Калибровочные данные можно считать один раз и хранить их в памяти или постоянно считывать вместе со значениями температуры и давления. Это уже как вам будет удобнее. P.P.S. Документация, на мой взгляд, сделана несколько через ...., но вся информация есть.
А вот тут уже вы поленились. Вбейте в поиск по документу osrs_t и osrs_p и посмотрите к чему это относится. Это НЕ настройка.
Да какая лень? Переводчик говорит про регистр ctrl_meas: "устанавливает параметры сбора данных устройства".
Albert_V писал(а):
Документация, на мой взгляд, сделана несколько через ....
вот тут я ЗА +100500 Поэтому и разбираюсь очень долго. По-моему документация написана для очень подготовленных инженеров и программистов.
Albert_V писал(а):
Калибровочные данные можно считать один раз и хранить их в памяти или постоянно считывать вместе со значениями температуры и давления
Я не очень уверен, но на мой взгляд лучше считывать их каждый раз. Мало ли сбой памяти и полезут "странные" показания. Лучше потратить время на их чтение в каждом цикле
_________________ "Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Тогда так: На Figure3(4) по "Y" - ток потребления. osrs_t и osrs_p - это имеется ввиду "её внутренняя работа" по оцифровке данных с датчиков. Обратите внимание на то что при INIT-е, вначале ей надо записать config и следом ctrl_meas (не наоборот). Если будете использовать oversampling более х1 - увеличится разрядность данных. Тут уже смотрите какой математикой будете пользоваться. Если 32бит и oversampling более х1 - округлять число до 16-бит придётся вам до начала расчётов.
serg_svd писал(а):
По-моему документация написана для очень подготовленных инженеров и программистов.
Скорее, "чтоб враг не догадался" или чтоб скачивали их "родные" библиотеки. ---- P.S.
Я не очень уверен, но на мой взгляд лучше считывать их каждый раз. Мало ли сбой памяти и полезут "странные" показания. Лучше потратить время на их чтение в каждом цикле
Сбой какой памяти и где? При сбое памяти все может оказаться очень странным, если вообще будет работоспособным )) А если уж все равно очень хочется быть уверенным считайте их один раз достоверно, запишите на бумаге и забейте в программу как постоянные. И используйте, как постоянные величины, конечно если у вас только один датчик и Вы его менять не собираетесь. Кстати, мой совет, если только начинаете разбираться с подобными датчиками, купите сразу ВМЕ280, чуть больше усилий, но Вы наверняка разберетесь , если разобрались с ВМР280 и у Вас будут еще данные о влажности так сказать "в одном флаконе" с температурой и давлением. Разница в цене не так уж и велика, но ВМЕ280 чуть-чуть посвежее и поинтереснее для освоения. По поводу документации присоединяюсь к предыдущим ораторам)
_________________ О технике чего спорить-то, давайте попробуем.
Поддерживаю предыдущий совет как насчет алгоритма, так и сенсора. Помимо этого сенсора, посмотрите ещё, например, на MS8607, у которого также все в одном флакоме: давление, влажность, температура. У меня про него статья есть.
Спасибо всем ответившим. Продолжаю разбираться. Сам датчик я прикупил попутно с чем-то на али очень давно. Поэтому пока то что есть, надо запустить, а потом думать покупать или нет что-то другое. При этом, если судить по информации о маркировке, это не оригинальный датчик и я еще не в курсе, запустится он или нет
Добавлено after 4 minutes 54 seconds: Тут по настройкам вопрос. Имеется в даташите таблица Вот какие порекомендуете применять настройки для простого применения по колонке Use case?
_________________ "Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Да не секрет. Хочу встроить в термометр, чтобы кроме индикации температуры периодически выводить значение давления. МК ATmega8A, тактовая частота сейчас 4 МГц. Хватит ли ее или поднимать до 8 МГц? Питание от сети. Я хотел использовать режим Normal, чтобы датчик сам постоянно проводил измерения, а я периодически их забирал для вывода на индикацию
_________________ "Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Закажите "Indoor navigation". Не понравится - потом измените. Не забудьте что в этом случае, до вычислений, значение давления надо будет разделить на 16, а температуру на 2.
Добавлено after 3 minutes 37 seconds: Что касается тактовой частоты - именно для работы с датчиком это не имеет значения.
Не забудьте что в этом случае, до вычислений, значение давления надо будет разделить на 16, а температуру на 2.
Это для облегчения вычислений? Просто я еще не дошел до математики вычисления значений температуры и давления. Потихоньку разбираюсь с конфигурацией да и код общения с датчиком, получается, пишу свой. Пусть и кривой, но надо разобраться. По поводу математики думал ориентироваться на пример со страницы 44 даташита "8. Appendix 1: Computation formulae for 32 bit systems".
_________________ "Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Нет. После oversampling-а на 16 вы получите число умноженное на 16. Начинайте с математики. На стр. 23 есть пример вычислений с исходными данными и результатом. Это вам может пригодиться для проверки.
После oversampling-а на 16 вы получите число умноженное на 16.
Вообще-то думал, что это внутренние вычисления в самом датчике.
На стр. 23, на мой взгляд, очень неудачный пример. Он меня запутал еще сильнее. Прокол у Боша вышел с даташитом, даже картинку не могли вставить с нормальным качеством.
В общем я все же взял и скопировал код со стр. 44 "8. Appendix 1: Computation formulae for 32 bit systems" расчет с компенсацией. Только заменил все имена переменных на unsigned long int и long int , ориентируясь по смыслу кода. Ну и имена калибровочных значений своими заменил.
В общем заработало. Выводит давление. Сказать насколько точно - не могу. Другого барометра дома нет. Ориентируюсь на данные сайта метео.нет в моем регионе. На сайте сегодня 719 мм рт. ст. У меня показывает 720.
_________________ "Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Спасибо! Но пока не за что. Надо понаблюдать за показаниями. Я мог все-таки что-то напортачить, особенно с типами данных. Почему говорю, что рано, на данный момент те же 720 на индикаторе. По данным сайта - 722. Точности нет и неизменные показания смущают
_________________ "Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Я не вбивал эти формулы "напрямую", поскольку делал свою математику (программа на ASM). Сами формулы ошибок не имеют. Для проверки, делал подстановку значений с датчика (в программе) и перепроверял на отсутствие ошибок просчётом в Exel-е. Ещё один вариант проверки (если изделие относительно "переносное") - замерить давление на 1-ом этаже дома и на 12-ом. Если датчик исправный - можете высоту вычислить. P.S. Себе я ещё сделал поправку на высоту в Па (до перевода в мм рт.ст).
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения