Датчик выпускается в корпусе LCC8, его габариты 5х5х1,2мм.
Контактные площадки располагаются снизу корпуса:
Мне не хотелось самому возиться с мелким корпусом, поэтому я купил готовую платку на ebay (86 рублей):
Краткие характеристики:
Диапазон измерения атмосферного давления: 300-1100 гПа (225-825 мм рт. ст.)
Разрешение: 0,03 ГПа
Управление: двух проводной интерфейс I2C
Напряжение питания: 1,8-3,6В (пульсации не более 50 мВ)
Наличие температурной компенсации
Время измерения температуры, не более: 4,5 мс
Время измерения давления, не более: 25,5 мс
Ток потребления в режиме ожидания: 0,1 мкА
Максимальный ток потребления, не более: 1 мА
Корпус LCC8, габаритный размер 5х5х1,2мм
Габаритные размеры платы: 21x15x10 мм
Внутренности
В основе датчика пьезо-резистивный сенсор, выходной сигнал которого после внутреннего аналого-цифрового преобразования доступен пользователю.
Полученное значение не является значением атмосферного давления, а связанно с ним “сложной” зависимостью.
Для расчета которой необходимо использовать 11 корректировочных коэффициентов.
Данные коэффициенты прошиты во встроенную EEPROM память датчика и индивидуальны для каждого датчика.
Для температурной компенсации датчик имеет встроенный аналоговый сенсор температуры.
Сигнал с которого так же необходимо оцифровать, прочитать и пересчитать.
В общем случае алгоритм работы выглядит следующим образом:
Включение
Считывание корректировочных коэффициентов
Запуск преобразования сигнала с сенсора температуры
Ожидание окончания преобразования
Считывание результата преобразования
Расчет температуры
Запуск преобразования сигнала с сенсора давления
Ожидание окончания преобразования
Считывание результата преобразования
Расчет давления
Максимально можно получить 128 значений в секунду, при этом значение температуры считывается однократно в начале каждого периода измерений.
Подключение
Управление датчиком осуществляется посредством стандартного двухпроводного интерфейса I2C.
Не очень люблю использовать интерфейс I2C, но выбора нет.
Дополнительно датчик имеет линию сброса (XCLR) и выход “окончание преобразования” (EOC):
Диапазон питающих напряжений датчика от 1,8 до 3,6 Вольта. На купленной плате установлен стабилизатор питания для расширения диапазона вверх до 5 Вольт.
Для “тестирования” датчика буду использовать плату STM32VL-Discovery, но код будет работать и на остальной линейке STM32 (возможно и на STM8, пока не проверял).
Использовал модуль I2C1, его сигнальные линии выведены на PB6 и PB7:
Линию сброса (XCLR) и выход “окончание преобразования” (EOC) подключил к PB14 и PB15, соответственно:
Интерфейс I2C
Начальный опыт работы с шиной I2C у меня уже есть: читать.
Сейчас я просто упорядочил код и использовал для инициализации стандартную библиотеку от ST:
Чтение одного байта:
Запись одного и двух байт:
Работа с датчиком
Сброс и чтение корректировочных значений:
Чтение и расчет температуры:
Чтение и расчет давления:
Такой сложный расчет придумал не я, а инженеры создавшие этот чип
Пример использования:
Для вывода информации я пользовался программой STM Studio: