Главная » Статьи » Как подключить |
Температуру и влажность уже измеряли, и не раз (DS18B20 DHT11 SHT21). Поэтому сегодня будем измерять следующий важнейший параметр нашей среды обитания - атмосферное давление. Датчик BMP085 это крошечный цифровой барометр с возможностью измерять атмосферное давление в пределах 300…1100 гПа (+9000…-500 метров над уровнем моря). Размеры корпуса микросхемы 5х5х1,2 мм. В этот корпус разработчики умудрились засунуть еще и цифровой термометр.
С микроконтроллером датчик общается по стандартному интерфейсу I2C, что не может не радовать - один из моих любимых протоколов :) Поэтому решил остановится на нем.
Я не решился возится с запайкой датчика и взял готовую платку с ним. На ней уже запаяна сама микросхема и все элементы обвязки.
VCC и GND питание датчика в диапазоне напряженя от 1.8 до 3.6 Вольт SDA и SCL линии данных интерфейса I2C, все как обычно. XCLR цифровой вход, при подаче на него логического нуля произойдет сброс BMP085 с последующей инициализацией регистров и прочей периферии датчика. Этот вывод можно использовать для выбора определенного сенсора если планируется использовать больше одного - подаем на ненужные датчики 0 и, пока они думают, опрашиваем нужный датчик. Вывод EOC (end of conversion) служит для сигнализирования окончания преобразований. Если на этом выводе высокий уровень (лог 1) то расчет и преобразования закончены и можно забирать данные, если на этом выводе низкий уровень (лог 0) то расчет продолжается. Этот вывод полезно использовать в быстрых приложениях, чтобы не останавливаться для ожидания измерения. Запустили расчет и ушли по своим делам, а как только расчет будет закончен по прерыванию обрабатываем данные. Я не знаю что употребляли разработчики Bosh когда проектировали этот сенсор, но нагородили они там основательно. Дело в том что датчик отдает данные в сыром формате, который необходимо преобразовать, используя 100500 формул для того чтобы привести данные к стандартным единицам измерения. Для ознакомления с этими преобразованиями рекомендую 14-ю страницу даташита на BMP085. Из-за большого числа преобразований код программы для работы с датчиком занимает 95% программной памяти микроконтроллера Atmega8. Подключение датчика к микроконтроллеру стандартное, резисторы подтяжки по 5-10кОм.
Выводы XCLR и EOC в программе не задействованы и их можно оставить болтаться в воздухе.
Результат ниже, раз в секунду контроллер опрашивает датчик и кидает в терминал данные - температуру, давление (в гектопаскалях) и высоту над уровнем моря.
В итоге данные с этого датчика надо бы перевести из Паскалей в мм. ртутного столба, но памяти у Atmega8 на такие преобразования уже не хватило. Ну что ж, в следующий раз возьму камень пожирнее (результат можно посмотерть в следующей статье) Если верить сайту гисметео, то давление датчик показывает правильно, примерно 748,3 мм.рт.ст. (по данным гисметео 750 мм.рт.ст.). Ну это я еще на 3-м этаже живу, а здесь давление еще пониже:) Так что датчик похоже не врет.
Исходники программы в Bascom-AVR
| |
Просмотров: 29150 | Комментарии: 27
| Теги: |
Всего комментариев: 27 | ||||||||||||||||||||||||
| ||||||||||||||||||||||||
Проекты [46] |
Как подключить [32] |
Инструменты [3] |
Полезная информация [18] |
Объявления [3] |