Датчики
Датчик давления MPL115A2
Датчик давления MPL115A предназначен для измерения абсолютного давления в диапазоне от 50кПа до 115кПа с точностью 1кПа. Фактически данный диапазон перекрывает значения атмосферного давления, что позволяет использовать датчик для построения барометров, альтиметров, бытовой и промышленной техники. Выпускается MPL115A2 фирмой Freescale Semiconductor.
Основу MPL115 составляет MEMS‑сенсор, показания, которого обрабатываются встроенным АЦП. Для компенсации температурных возмущений, датчик также содержит термометр. Показания этого термометра доступны для считывания. Интерфейс пользователя реализован с помощью шины SPI (MPL115A1) или I2C (MPL115A2).
Конструкция и характеристики датчика
MPL115A изготавливается в корпусе LGA, размером 3 х 5 х 1.2 мм, что позволяет его использовать в компактных и портативных устройствах. Этому также способствует малый ток, потребляемый датчиком. В режиме сна он составляет 1 мкА, в работе с периодом измерений 1сек - 5 мкА. Напряжение питания 2.4 - 5.5 Вольт. Датчик сохраняет работоспособность в диапазоне температур -40…+105°C.
CAP – вывод для подключения конденсатора емкостью1мкФ.
SCL – тактовая линия шины I2C
SDA – информационная линия шины I2C
SHDN – спящий режим. Подключение к GND переводит датчик в спящий режим
RST – сброс датчика. Подключение к GND останавливает обмен по шине
Получение информации от датчика
MPL115A позволяет реализовать алгоритмы калибровочной и температурной компенсации измеренного значения давления, необходимые для исключения внешних возмущений и улучшения точности. При этом датчик не содержит законченной схемы обработки сигналов. Это значит, что часть операций по вычислению реального значения давления должна быть возложена на микроконтроллер. Алгоритм работы последнего с датчиком серии MPL115A изображен на рисунке.
Инициализация.
Инициализация датчика выполняется подачей питания на него. При этом никаких измерений не производится, датчик находится в режиме ожидания.
Чтение калибровочных коэффициентов.
Каждый датчик MPL115A индивидуально калибруется изготовителем, с помощью записи специальных коэффициентов. Эти коэффициенты обязательно используются в расчетах, поэтому пользователь должен позаботиться об их чтении, перед началом определения давления. Данная операция может выполняться только один раз, так как калибровочные коэффициенты не меняются в процессе работы.
Измерение давления.
В процессе измерения давления, встроенный АЦП производит опрос датчиков и преобразование их сигналов в цифровую форму. Измерение запускается после записи команды CONVERT в регистр датчика. Длительность преобразования, согласно документации, составляет от 1.6 до 3мсек. По окончании преобразования полученные данные записываются в выходные регистры, а датчик переводится в режим ожидания.
Расчет давления.
После окончания измерений, управляющий микроконтроллер должен прочитать необходимые данные из датчика и произвести расчет значения давления. При необходимости повторных измерений, необходимо по новой произвести преобразование давления.
Спящий режим
С целью экономии электрической мощности, в датчике реализован «Спящий режим». Активируется он путем подключения вывода SHDN к нулевому потенциалу. В этом режиме внутренние схемы датчика отключаются от шин питания, все регистры сбрасываются, информационные линии переводятся в высокоимпедансное состояние.
Вывод датчика из спящего режима производится подачей положительного напряжения на линию SHDN. Время «пробуждения» составляет максимум 5 мсек.
Регистры MPL115A2
Датчик MPL115A2 содержит 19 регистров с разрядностью 8 бит, 6 из которых не используются. Список рабочих регистров приведен ниже
Адрес (HEX) |
Имя |
Описание |
Количество значащих бит |
0x00 |
Padc_MSB |
Padc – 10-ти разрядный код АЦП, соответствующий измеренному значению давления |
8 |
0x01 |
Padc_LSB |
2 |
|
0x02 |
Tadc_MSB |
Tadc – 10-ти разрядный код АЦП, соответствующий измеренному значению температуры |
8 |
0x03 |
Tadc_LSB |
2 |
|
0x04 |
a0_MSB |
a0 – коэффициент смещения давления |
8 |
0x05 |
a0_LSB |
8 |
|
0x06 |
b1_MSB |
b1 – коэффициент чувствительности по давлению |
8 |
0x07 |
b1_LSB |
8 |
|
0x08 |
b2_MSB |
b2 – коэффициент смещения температуры |
8 |
0x09 |
b2_LSB |
8 |
|
0x0A |
c12_MSB |
c12 – коэффициент чувствительности по температуре |
8 |
0x0B |
c12_LSB |
8 |
|
0x12 |
CONVERT |
Старт преобразования давления |
Внешний вид калибровочных коэффициентов.
Калибровочные коэффициенты хранятся в памяти датчика в двоичном виде. При этом они представляют собой знаковые дробные числа. Перед использованием, двоичные значения необходимо перевести в формат с плавающей точкой. Кодирование произведено по правилам записи знаковых двоичных чисел. Обозначения: S – знак, F – дробная часть, I – целая часть.
Коэффициент смещения давления a0.
Коэффициент записан в виде 16-разрядного двоичного числа. Старший бит MSB определяет знак. Младшие три бита – дробная часть.
Байт |
MSB |
LSB |
||||||||||||||
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Код |
S |
I11 |
I10 |
I9 |
I8 |
I7 |
I6 |
I5 |
I4 |
I3 |
I2 |
I1 |
I0 |
F2 |
F1 |
F0 |
Коэффициент чувствительности по давлению b1.
Коэффициент b1 - 16-разрядное двоичное числ. Старший бит MSB определяет знак. Биты 6 и 5 MSB кодируют целую часть, оставшиеся 13 бит - дробную.
Байт |
MSB |
LSB |
||||||||||||||
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Код |
S |
I1 |
I1 |
F12 |
F11 |
F10 |
F9 |
F8 |
F7 |
F6 |
F5 |
F4 |
F3 |
F2 |
F1 |
F0 |
Коэффициент смещения температуры b2.
Коэффициент b2 также 16-разрядный. Старший бит MSB определяет знак. Бит 6 MSB кодирует целую часть, младшие14 бит - дробную.
Байт |
MSB |
LSB |
||||||||||||||
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Код |
S |
I0 |
F13 |
F12 |
F11 |
F10 |
F9 |
F8 |
F7 |
F6 |
F5 |
F4 |
F3 |
F2 |
F1 |
F0 |
Коэффициент чувствительности по температуре с12.
В отличие от предыдущих, с12 имеет разрядность 14. Старший бит MSB также отвечает за знак, следующие 13 бит определяют дробную часть, а 2 младших бита LSB не используются. При этом дробная часть имеет 9 нулей (в двоичном формате) перед первой значащей цифрой.
Байт |
MSB |
LSB |
||||||||||||||
Бит |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Код |
S |
F12 |
F11 |
F10 |
F9 |
F8 |
F7 |
F6 |
F5 |
F4 |
F3 |
F2 |
F1 |
F0 |
0 |
0 |
Вычисление давления.
Схема включения MPL115A2 |
Вычисление давления, измеренного датчиком MPL115A, производится в два этапа. На первом этапе выполняется расчет скомпенсированной величины, представляющей собой значение АЦП с компенсацией по температуре и наложенными калибровочными коэффициентами. Второй этап предназначен для приведения скомпенсированного давления к диапазону измерений датчика и получению давления в виде реальной физической величины.
Расчет скомпенсированного давления производится по формуле:
Pcomp = a0 + ( b1 + c12 * Tadc ) * Padc + b2 * Tadc
Формула приведения к диапазону измерений:
P(кПа) = Pcomp * (115 - 50) / 1023 + 50
Шина I2C в MPL115A2
Шина I2C датчика MPL115A2 поддерживает высокоскоростной режим. Для обмена используется стандартный протокол I2C. Адрес датчика на шине равен 0xC0 или 1100000X в двоичном варианте.
Фактически, при обмене с датчиком выполняется только три операции:
- чтение калибровочных коэффициентов
- команда старта преобразования
- чтение измеренных значений
Чтение данных выполняется с помощью классического варианта обмена по I2C. Микроконтроллер выставляет на шину адрес микросхемы и адрес первого регистра чтения. После повторного старта, формируется вновь адрес микросхемы, но с установленным битом чтения. Далее датчик последовательно передает содержимое регистров, начиная с заданного. Чтение калибровочных коэффициентов доступно в любое время работы датчика.
Для получения кода АЦП, соответствующего давлению и температуре, требуется вначале выполнить команду старта преобразования. Данная команда заключается в записи в регистр CONVERT числа 0. Максимальное время преобразования, согласно документации, составляет 3 мсек. После его истечения, данные кода АЦП записываются в соответствующие регистры и становятся доступными для считывания.
В статье использованы материалы Data Sheet: MPL115A2 Miniature I2C Digital Barometer, распространяемого Freescale Semiconductor.