Новые многофункциональные МЭМС-датчики движения производства STMicroelectronics
Часть 2. Новые инерциальные МЭМС-блоки измерений движения производства STM
Комбидатчики движения STM
Кроме отдельных датчиков, STM выпускает комбинированные датчики, объединяющие в одном корпусе акселерометр, гироскоп, магнитометр. Компания STM называет эти датчики inertial module (наиболее точный русский перевод — «инерциальные модули»). Самый распространенный вариант — это комбидатчики движения. В литературе употребляются и другие названия таких датчиков: «блоки инерциальных измерений БИИ», «мультисенсорные датчики», «мультиосевые датчики», «совмещенные датчики».
Используя такие приборы, разработчики могут быстро и с минимальными затратами создавать современные устройства с высокой степенью функциональности. Комбидатчики занимают на плате меньше места, чем отдельные датчики, обеспечивающие аналогичные характеристики. Кроме того, подобные датчики дешевле, чем несколько отдельных датчиков.
Малые габариты, высокая точность, стабильность и помехоустойчивость позволяют применять МЭМС-датчики движения производства STM в самых различных областях:
- смартфоны, планшеты, гаджеты, ноутбуки;
- автомобильные спутниковые системы навигации и системы безопасности;
- системы обеспечения устойчивости и отсутствия вибраций неподвижного оборудования;
- спортивное и туристическое оборудование;
- профессиональные высокоточные спутниковые антенны;
- бытовая и офисная техника;
- видеокамеры;
- системы экстренного торможения и оповещения об опасности;
- автоматизированные сборочные линии.
В настоящее время наибольший объем продаж МЭМС-датчиков движения наблюдается на рынке смартфонов, планшетов и компьютеров. Хорошо известна функция мгновенной блокировки жесткого диска современных ноутбуков в случае удара или резкого наклона.
Встроенные в смартфон или планшет комбидатчики движения добавляют ряд новых полезных опций. Так, двигая планшет определенным образом, можно увеличить или уменьшить громкость звука. Новые модели смартфонов с гироскопом позволяют при встряхивании отвечать на звонки.
Комбидатчики движения служат стимулом создания различных программных приложений для Android. В качестве известного примера можно привести калькулятор, в котором при повороте из вертикального в горизонтальное положение добавляются новые опции вычисления сложных функций. Практически все последние модели смартфонов имеют режимы управления с помощью различных движений, предназначенные для людей с ограниченными возможностями.
Немаловажное значение в индустрии датчиков движения имеют компьютерные игры, в которых особой популярностью пользуются виртуальные автомобили, танки, самолеты, космические корабли и т. д. Ни одна из таких игр не может обойтись без использования МЭМС-гироскопа или акселерометра.
На втором месте по объему продаж МЭМС-датчиков движения находится автомобильный рынок.
Все современные автомобили оснащены несколькими подушками безопасности, срабатывающими от акселерометров. Эти системы занимают значительную долю рынка МЭМС-датчиков движения.
В другом сегменте автомобильного рынка нужно выделить устройства для экстренного реагирования в аварийных ситуациях и модемы для страховой телематики.
Термин «страховая телематика» является переводом английского выражения “Insurance telematics”. Крупнейшие мировые страховые компании используют схемы, в которых платежи рассчитываются в зависимости от многих параметров эксплуатации автомобиля. Как правило, страховые компании сами в обязательном порядке устанавливают на автомобиль страхователя модемы, оснащенные современными комбидатчиками, объединяющими МЭМС-акселерометр и гироскоп. Модемы передают на центральный сервер не только текущие геодезические данные автомобиля, но и информацию о том, как водитель разгоняется и тормозит, перестраивается или нарушает правила движения. Кроме того, эти устройства позволяют восстановить историю тяжелых аварий.
Системы экстренного реагирования (СЭР) в аварийных ситуациях на автомобильном транспорте предназначены для автоматического оповещения специальных служб по каналам сотовой связи о факте и тяжести аварии, координатах автомобиля и состоянии его пассажиров. Такие системы существуют в Европе (eCall), РФ («ЭРА-ГЛОНАСС»), Бразилии (SIMRAV), США (OnStar) и в других странах. Аварийный сигнал, передаваемый на центральный пульт, во всех подобных системах вырабатывается с помощью МЭМС-датчика движения. Некоторые из автомобильных устройств дополнительно оснащают многофункциональными МЭМС-датчиками движения. Например, в соответствии с расширенной спецификацией «ЭРА-ГЛОНАСС» автомобильное устройство опционно должно фиксировать, хранить в памяти и передавать на центральный пульт профиль ускорения и траектории движения транспортного средства до и после аварии. Для получения указанных данных необходимо, чтобы автомобильное оборудование было оснащено высокоточными акселерометрами и гироскопами.
Третье место по объему продаж датчиков движения производства STM занимает рынок спортивного оборудования и бытовой электроники. По всему миру в огромных количествах изготавливаются различного вида шагомеры, пульсометры с индикацией ускорения, датчики силы удара и другое аналогичное оборудование.
МЭМС-датчики движения широко используются и в других приложениях. В частности, многие модели дорогостоящего бытового и промышленного оборудования оснащены датчиками движения, предохраняющими его от хищений и актов вандализма.
Детальный обзор МЭМС-датчиков производства STM можно найти в презентации [3].
Ниже приведены подробные технические характеристики двух новых совмещенных МЭМС-датчиков движения от компании STM.
Новые инерциальные блоки измерений движения iNEMO LSM6DS3 и LSM6DS33
Основные технические характеристики LSM6DS3
Наименование iNEMO — это аббревиатура от Multi-sensor Inertial Measurement Unit (IMU) devices [8].
Комбинированный 2‑кристальный датчик движения iNEMO LSM6DS3 содержит в одном корпусе 3‑осевой акселерометр и 3‑осевой гироскоп.
Отличительными чертами модели являются экономичное энергопотребление, микроминиатюрный размер, буферная FIFO-память и исключительно низкий уровень шумов.
Совмещенный датчик LSM6DS3 предназначен для использования в смартфонах, гаджетах, бытовых навигаторах, шагомерах, туристическом и спортивном снаряжении и в других устройствах, предназначенных для «Интернета вещей».
Комбидатчик LSM6DS3 поддерживает работу с операционными системами Android KitKat, Android L, Windows.
В модели LSM6DS3 предусмотрены перестраиваемые режимы, которые дают возможность регистрировать следующие события:
- изменение положения в пространстве по угловым и линейным координатам;
- ускорение по линейным координатам;
- удары;
- наличия ускорения и перемещения с постоянной скоростью по линейным координатам;
- критические углы наклона.
Комбидатчик LSM6DS3 содержит механические сенсоры акселерометра и гироскопа, а также электронные блоки, предназначенные для обработки сигналов этих сенсоров.
Структурная схема акселерометра комбидатчика LSM6DS3 не отличается от структурной схемы МЭМС-акселерометра, показанной на рис. 2 (в первой части статьи).
Электронный блок обработки сигналов акселерометра комбидатчика LSM6DS3 содержит четыре узла: аналоговый фильтр нижних частот, АЦП, цифровой фильтр нижних частот и составной многофункциональный цифровой фильтр. Аналоговый сигнал, поступающий от механической части, сглаживается фильтром нижних частот и затем преобразуется в цифровую форму.
Тонкая обработка сигнала акселерометра осуществляется в составном многофункциональном цифровом фильтре (composite filter), структурная схема которого показана на рис. 5.
Составной цифровой фильтр содержит цифровые фильтры нижних (digital HP) и верхних (digital LP) частот, а также фильтр наклона (slope filter). Cоставной фильтр перераспределяет сигнал между управляющими регистрами, которые отвечают за соответствующие функции комбидатчика LSM6DS3. Так, бит SLOPE_FDS регистра TAP_CFG активирует фильтры верхних HP и LPF2. Бит HP_SLOPE_XL_EN регистра CTRL8_XL переключает сигнал между полосовыми и высокочастотными фильтрами. Бит LOW_PASS_ON_6D регистра CTRL8_XL определяет параметры ФНЧ в различных режимах работы 6‑осевого комбидатчика (рис. 5).
Скорость нарастания сигнала на входе составного фильтра зависит от того, как быстро меняется ускорение и как часто выводятся на электронный блок сигналы чувствительного элемента акселерометра. Крутизна кривой определяется с помощью устройств, которые в общем случае называются фильтрами наклона.
В модели LSM6DS3 фильтры наклона используются для контроля состояния активности акселерометра, а также для регистрации свободного падения и двойного события double tap. Функция double tap позволяет выводить сигнал прерывания на выделенный контакт при повторном событии, наступившем через заданный интервал времени.
Подробное описание работы составного фильтра комбидатчика LSM6DS3 выходит за рамки данной статьи. Эту информацию можно найти в технической документации [9].
Алгоритм работы электронного блока гироскопа комбидатчика LSM6DS3 аналогичен рассмотренному в первой части статьи алгоритму работы акселерометра. Поэтому мы не будем останавливаться на данном вопросе.
Технические характеристики LSM6DS3 приведены в таблице 4.
Диапазон измерения акселерометра |
±2/±4/±8/±16 g |
Чувствительность акселерометра (диапазон ±4) |
0,122 мг/LSB (LSB — НЗБ) |
Диапазон измерения гироскопа |
±125/±245/±500/±1000/±2000 °/с |
Чувствительность гироскопа (диапазон ±245) |
8,75 mdps/LSB |
Температурная нелинейность акселерометра в диапазоне –40…+85 °С |
±1% |
Температурная нелинейность гироскопа в диапазоне –40…+85 °С |
±1,5% |
Скорость считывания данных акселерометра (ODR) |
13, 26, 52, 104, 208, 416, 833, 1666, 3332, 6664 Гц |
Скорость считывания данных гироскопа (ODR) |
13, 26, 52, 104, 208, 416, 833, 1666 Гц |
Интерфейсы |
SPI и I2C |
Встроенный температурный датчик (ODR = 52 Гц, 8 LSB/°C) |
–40…+85 °C |
Функция самотестирования (раздельно акселерометр, гироскоп) |
Режимы: Normal mode, Positive sign self-test, Negative sign self-test |
Напряжение питания |
1,71–3,6 В |
Напряжение на выводах I/O |
1,62–3,61 В |
Внешние прерывания |
1×INT и 1×DRDY |
Ток в режиме Combo Normal Mode |
0,9 мА |
Ток в режиме High-Performance mode (1,6 кГц) |
1,25 мА |
Регистр данных |
16 бит |
Встроенный температурный датчик |
|
Корпус |
LGA-14 |
Габаритные размеры |
2,5×3×0,83 мм |
Рабочий температурный диапазон |
–40…+85 °C |
Предельно допустимое значение ускорения в течение 0,1 мс |
10 000 g |
Управляющие регистры LSM6DS3
В комбидатчике LSM6DS3 имеется 85 управляющих регистров, подробное описание которых приведено в [9]. В этой статье рассмотрены только регистры, обеспечивающие наиболее важные функциональные особенности датчика.
Режим работы гироскопа задается с помощью бита G_HM_MODE регистра CTRL7_G. Если в этом разряде устанавливается значение, равное нулю, гироскоп будет работать в расширенном высокоскоростном режиме с частотами в диапазоне 13–1600 Гц.
После включения гироскоп и акселерометр находятся в режиме Power-Down mode. Для перевода датчика в рабочий режим необходимо задать нужную конфигурацию в регистрах CTRL1_XL, CTRL9_XL, CTRL2_G и CTRL10_C.
Выбор режима определяется битами: G_HM_MODE (регистр CTRL7_G (16h) и XL_HM_MODE (регистр CTRL6_C (15h).
Как для гироскопа, так и для акселерометра режим Low power mode может быть реализован для значений ODR, равных 13, 26, 52 Гц. Режим Normal mode доступен при ODR, равных 104 и 208 Гц.
Режимы работы LSM6DS3
Комбинированный датчик движения LSM6DS3 может работать в одной из трех конфигураций:
- активен только гироскоп, акселерометр в режиме Power-Down mode (питание выключено);
- активен только акселерометр, гироскоп в режиме Power-Down mode (питание выключено);
- активны гироскоп и акселерометр (Power on), с независимыми значениями частоты регистрации (ODR).
После подачи напряжения питания на датчик в течение первых 20 мс происходит автоматическая загрузка рабочих параметров.
- Акселерометр и гироскоп можно независимо друг от друга конфигурировать для работы в четырех возможных режимах энергопотребления с различными значениями ODR:
- Power-Down (питание выключено);
- Low-Power (экономное энергопотребление);
- Normal (стандартный режим работы);
- High-Performance mode (расширенный, высокоскоростной режим работы).
В зависимости от частоты семплирования ток потребления в режиме полной функциональности (гироскоп и акселерометр) меняется от 0,9 до 1,25 мА.
В энергосберегающем режиме ток потребления при частоте семплирования 13 Гц составляет 0,42 мА.
Интерфейсы I2C и SPI модели LSM6DS3
В модели LSM6DS3 имеются интерфейсы I2C и SPI, которые обеспечивают доступ к регистрам памяти, а также возможность подключения внешних датчиков и микроконтроллера. Эти интерфейсы реализованы на одних и тех же выводах: CS, SCL/SPC, SDA/SDI/SDO, SDO/SA0. Выбор необходимого интерфейса можно выполнить с помощью управляющих регистров.
Возможны следующие варианты подключения портов LSM6DS3:
- режим 1 — только режим «ведомый» (slave): I2C/SPI (3‑ и 4‑проводной);
- режим 2 — режим коммутации внешних датчиков (Sensor Hub): I2C/SPI (3‑ и 4‑проводной);
- режим 3 — вспомогательный режим (auxiliary): дополнительный 3‑проводной SPI-интерфейс для подключения специальных внешних устройств.
Первый режим (slave) используется для программирования регистров памяти.
Третий режим (auxiliary) предназначен для подключения внешнего устройства одновременно по двум интерфейсам: I2C и дополнительному 3‑проводному SPI. В качестве примера такого устройства можно привести системы стабилизации изображения (EIS). В этом случае совмещенный датчик движения LSM6DS3, работающий в высокоскоростном режиме, подключен одновременно к процессору и контроллеру изображения.
Управление датчиком LSM6DS3 реализуется через программируемые регистры памяти. Чтобы прочитать или записать информацию в регистры памяти, нужно передать через интерфейс SPI определенную последовательность логических импульсов.
На рис. 6 показаны сигналы на четырех линиях интерфейса SPI датчика LSM6DS3.
Каждая линия несет определенный байт информации:
- DO7…DO0 — байт данных, которые акселерометр отправил микроконтроллеру;
- DI7…DI0 — байт данных, которые акселерометр принял от микроконтроллера;
- AD5…AD0 — адрес регистра чтения/записи;
- RW = 0 байт данных DI7…DI0 записывается в регистр с адресом AD5…AD0;
- RW = 1 байт данных DO7…DO0 читается из регистра с адресом AD5…AD0;
- MS — последовательное чтение или запись нескольких регистров подряд.
Интерфейс SPI работает в режиме ведомого, управляемого внешним микроконтроллером, который программируется с помощью специальных отладочных средств.
Комбидатчик LSM6DS3 можно использовать со всеми микроконтроллерами серии STM32. Для этой цели выводы датчика SCL/SPC, SDA/SDI, SDO, CS, INT1, INT2 подключаются соответственно к выводам микроконтроллера PA5, PA7, PA6, PE3, PE0, PE1.
Буферная память FIFO LSM6DS3
Буферная память FIFO объемом 8 кбайт позволяет автономно, без обращения к управляющему микроконтроллеру, хранить и обрабатывать большие объемы данных, снижая тем самым общее энергопотребление. Внешний микроконтроллер подключается только в тех случаях, когда нужно выполнить сложные команды управления.
Память FIFO оперирует тремя категориями событий, обусловливающих команды прерываний: «пороговое значение», «переполнение» и «буфер пуст».
Программируемая память FIFO предназначена для хранения и обработки следующих данных:
- гироскоп;
- акселерометр;
- внешние датчики;
- датчик контроля температуры;
- счетчик циклов;
- метки времени.
Переключение режимов записи в FIFO осуществляется с помощью следующих сигналов:
- сигнал готовности данных акселерометра или гироскопа, ODR которых должны быть больше, чем ODR FIFO;
- сигнал готовности хаба внешних сенсоров;
- сигнал счетчика цикличности.
Кроме того, каждый вид данных может быть сохранен с десятикратной разрядкой по сравнению с частотой семплирования FIFO.
С помощью программируемой памяти FIFO можно переключать режимы чтения данных акселерометра, гироскопа, счетчика циклов и внешних датчиков. Данные каждого сенсора можно сохранять с частотой FIFO ODR, деленной на десять. Эти функции задаются в регистрах памяти FIFO_CTRL3 (08h) и FIFO_CTRL4 (09h). В памяти FIFO можно сохранить до 4096 показаний датчиков, объемом 16 бит каждое.
Программируемые пороги FIFO задаются в регистрах FIFO_CTRL1 (06h) и FIFO_CTRL2 (07h) с использованием бита FTH {11:0}. Посредством регистров FIFO_STATUS1, FIFO_STATUS2 (3Bh), FIFO_STATUS3, FIFO_STATUS4 можно контролировать переполнение памяти, занятый и свободный объемы, количество сохраненных непрочитанных данных, пороговые значения.
В модели LSM6DS3 предусмотрено пять режимов работы памяти FIFO, их можно использовать в следующих режимах:
- FIFO mode — память включена, данные непрерывно записываются вплоть до полного заполнения;
- Continuous mode — память включена, данные непрерывно записываются, при полном заполнении новые данные записываются на место старых;
- Continuous-to-FIFO mode — переключение между режимами Continuous и FIFO в том случае, когда наступает триггерное событие, записанное в регистрах прерывания FUNC_SRC (53h), TAP_SRC (1Ch), WAKE_UP_SRC (1Bh), D6D_SRC;
- Bypass mode — память не задействована и остается пустой;
- Bypass-to-continuous mode — переключение между режимами при наступлении триггерного события.
Прерывания LSM6DS3
В комбинированном датчике LSM6DS3 поддерживаются команды прерывания, которые вырабатываются как ответная реакция на определенные события — например, свободное падение, перемещение по шести координатам, превышение предельного угла наклона (35°), пробуждение и другие аналогичные действия. Функции прерывания изменяют состояния управляющих выходов, к которым подключены различные исполнительные устройства. Существует два типа сигналов прерывания. В одном случае внешний микроконтроллер анализирует показания датчиков, в соответствии с которыми он управляет исполнительными устройствами. В другом случае команды прерывания вырабатываются автоматически без участия внешнего микроконтроллера в соответствии с состояниями регистров датчика. Такой подход значительно упрощает конструкцию устройств, использующих LSM6DS3, поскольку дает возможность реагировать на стандартные ситуации без обращения к управляющему микроконтроллеру, экономя тем самым энергопотребление и сокращая время срабатывания.
Сигналы прерываний выводятся на контакты INT1 и INT2 и записываются в соответствующие регистры FIFO. На INT1 и INT2 можно выводить как сигналы прерываний (Interrupt Signals), так и показания датчиков. Функции выводов INT1 задаются в регистрах MD1_CFG и INT1_CTRL. Режимы INT2 выбираются в регистрах MD2_CFG и INT2_CTRL.
В качестве примера работы с выводами прерывания можно привести описание регистров INT1_CTRL и MD1_CFG:
- бит 7 INT1_CTRL INT1_STEP_DETECTOR: сигнал прерывания фиксации шагомера;
- бит 6 INT1_CTRL INT1_SIGN_MOT: сигнал прерывания значимого движения;
- бит 5 INT1_CTRL INT1_FULL_FLAG: сигнал полного прерывания FIFO;
- бит 4 INT1_CTRL INT1_FIFO_OVR: сигнал прерывания переполнения FIFO;
- бит 3 INT1_CTRL INT1_FTH: сигнал прерывания порога FIFO;
- бит 2 INT1_CTRL INT1_BOOT: сигнал прерывания загрузчика;
- бит 1 INT1_CTRL INT1_DRDY_G: показания гироскопа;
- бит 0 INT1_CTRL INT1_DRDY_XL: показания акселерометра;
- бит 7 MD1_CFG INT1_INACT_STATE: сигнал прерывания неактивности;
- бит 6 D1_CFG INT1_SINGLE_TAP: сигнал прерывания одиночного события;
- бит 5 MD1_CFG INT1_WU: сигнал прерывания пробуждения;
- бит 4 MD1_CFG INT1_FF: сигнал прерывания свободного падения;
- бит 3 MD1_CFG INT1_DOUBLE_TAP: сигнал прерывания двойного события;
- бит 2 MD1_CFG INT1_6D: сигнал прерывания 6D;
- бит 1 MD1_CFG INT1_TILT: сигнал прерывания допустимого наклона;
- бит 0 MD1_CFG INT1_TIMER: сигнал прерывания таймера.
В заводских установках все функции INT1 и INT2 отключены, что соответствует значению ноль во всех битах этих регистров. Для того чтобы активировать функции INT1 и INT2, нужно в соответствующем бите поставить значение, равное единице.
Под событием подразумевается изменение линейного или углового ускорения по некоторой оси, при котором нарушаются заданные пороги в течение определенного интервала времени. Если фронты сигнала быстрые, то срабатывает генератор сигнала прерывания. Однако возможны варианты, когда фронты нарастания и спада сигнала будут затянуты и датчик не сможет среагировать на изменение ускорения в заданный интервал времени. В этом случае полезна опция Double Tap. При возникновении единичного события (в шестом бите регистра MD1_CFG задана единица) изменяется состояние выводов INT1 (или INT2). Кроме этого, третий бит данного регистра активирует реакцию на аналогичное повторное событие, которое следует за первым через заданный интервал времени. Этот процесс напоминает двойное нажатие клавиши компьютерной мыши.
Бит H_LACTIVE регистра CTRL3_C используется для выбора полярности сигналов прерываний. По умолчанию в этом бите установлено значение, равное нулю, соответствующее изменению сигнала прерывания от низкого до высокого уровня.
Бит PP_OD регистра CTR3_C позволяет выбрать режим вывода прерываний между открытым стоком и подтягивающим резистором. С помощью бита LIR регистра TAP_CFG устанавливается характер сброса сигнала прерываний — автоматический или по дополнительному сигналу, записанному в специальном регистре.
Подробно регистры прерывания описаны в [10]. Принцип работы команд прерывания можно рассмотреть на примере обнаружения изменения пространственной ориентации (6D-прерывание). Прерывание 6D вырабатывается в том случае, когда два последовательных показания акселерометра превысят заданные пороги.
Возможные варианты событий, вызывающие срабатывание прерываний 6D, показаны на рис. 7. Различные состояния регистра D6D_SRC для шести вариантов движения (рис. 7) приведены в таблице 4.
Прерывание 6D контролируется с помощью регистра D6D_SRC следующим образом:
- бит 6 D6D_IA переключается в высокое состояние (1) при любом перемещении;
- биты 5, 4, 3 ZH, YH, XH переключаются в высокое состояние, когда происходит перемещение с положительным ускорением по одной из линейных осей или вращение вокруг одной из осей с превышением по модулю заданных порогов;
- биты 2, 1, 0 ZL, YL, XL переключаются в высокое состояние, когда происходит перемещение с отрицательным ускорением по одной из линейных осей или вращение вокруг одной из осей с превышением по модулю заданных порогов.
В регистре TAP_THS_6D (бит SIXD_THS{1:0}) задаются пороговые значения, при которых срабатывает прерывание 6D.
Кроме того, в регистре управления фильтром нижних частот CTRL8_XL можно задать дополнительные настройки сигналов прерывания 6D.
Температурный датчик в модуле LSM6DS3
Модель LSM6DS3 имеет встроенный температурный датчик (ТД), предназначенный для измерения температуры окружающего воздуха.
- Температурный датчик может работать в следующих режимах:
- ТД выключен, когда гироскоп и акселерометр находятся в режиме Power-Down;
- ODR температурного датчика равна 13 Гц, если гироскоп или акселерометр выключен и ODR акселерометра или гироскопа равна 13 Гц (режимы Low-Power и High-Performance mode);
- ODR температурного датчика равна 26 Гц, если гироскоп или акселерометр выключен и ODR акселерометра или гироскопа равна 26 Гц (режим Low-Power);
- ODR температурного датчика равна 52 Гц, если гироскоп или акселерометр выключен и акселерометр или гироскоп работает в отличных от перечисленных выше режимах;
- ODR температурного датчика равна 52 Гц, если включены гироскоп и акселерометр (High-Performance mode);
- ODR температурного датчика совпадает с максимальным значением скорости считывания данных включенных гироскопа и акселерометра.
Для температурного датчика сигнал Data-Ready определяется битом TDA в регистре STATUS_REG. Сигналы температурного датчика будут выведены на контакт INT2, если в бите INT2_DRDY_TEMP регистра INT2_CTRL значение будет равно единице.
Данные температурного датчика представлены в 16‑битном формате в двух каскадных регистрах OUT_TEMP_H и OUT_TEMP_L с разрешающей способностью +16 LSB/°C.
Нулевой уровень соответствует температуре 25 °C. В том случае, когда в регистре CTRL3_C значение бита BLE равно единице, будет реализован обмен данными между регистрами температурного датчика OUT_TEMP_H и OUT_TEMP_L. Данные ТД могут быть сохранены в памяти FIFO с десятикратной разрядкой.
Подключение внешних датчиков к LSM6DS3
С прикладной точки зрения наиболее интересен режим конфигурирования портов (Sensor Hub), позволяющий подключить до четырех внешних датчиков к LSM6DS3 через интерфейс I2C. Структурная схема такого соединения показана на рис. 8.
Все внешние датчики подключаются параллельно к входам SDx/SCx. Подтягиваю-щие резисторы и триггерный сигнал, управляющий входом INT2, зависят от типа конкретного внешнего датчика.
Для корректной работы режима Sensor hub нужно, чтобы в бите FUNC_EN регистра CTRL10 было выставлено значение, равное единице. Настройка интерфейса I2C в режиме «мастер» производится с помощью регистра MASTER_CONFIG.
Регистры SLVx_ADD, SLVx_SUBADD, SLAVEx_CONFIG специально выделены для работы с четырьмя внешними датчиками. Дополнительный регистр DATAWRITE_SRC_MODE_SUB_SLV0 предназначен только для работы с ведомым устройством номер #0. Он может быть использован для режима расширенной записи показаний внешнего датчика. Восемнадцать регистров от SENSORHUB1_REG до SENSORHUB18_REG используются для хранения данных внешних датчиков. В регистре FUNC_SRC бит SENSORHUB_END_OP устанавливается в высокое положение, когда данные одного из отмеченных восемнадцати регистров будут готовы для чтения.
С помощью функциональных регистров SLV0_ADD (02h), SLV0_SUBADD (03h), SLAVE0_CONFIG (04h) контролируется работа внешнего датчика с номером #1.
Регистры SLV1_ADD (05h), SLV1_SUBADD (06h), SLAVE1_CONFIG (07h) контролируют работу датчика #2. Аналогичные регистры есть для третьего и четвертого внешних датчиков.
При включении вспомогательного интерфейса auxiliary I2C для каждого из внешних датчиков будет считываться информация об адресах регистров, записанная в Slavex_numop (х = 0, 1, 2, 3).
Данные внешних датчиков могут быть сохранены в памяти FIFO LSM6DS3.
Количество внешних датчиков, данные которых нужно хранить и обрабатывать, определяется битом Aux_sens_on в регистре SLAVE0_CONFIG:
- 00 — один внешний датчик;
- 01 — два внешних датчика;
- 10 — три внешних датчика;
- 11 — четыре внешних датчика.
Прочитанные данные сохраняются в памяти последовательно в том же порядке, как они читаются. Для конфигурирования внешних датчиков можно использовать функцию сквозного доступа к их регистрам. С этой целью в бите PASS_THROUGH_MODE регистра MASTER_CONFIG должно быть записано значение, равное 1.
Пример заполнения регистров для работы LSM6DS3 в режиме Hub mode приведен в таблице 5. Эта таблица демонстрирует многофункциональность новых комбинированных датчиков. Аналогичный вариант можно использовать, например, в том случае, когда в качестве внешнего датчика необходимо подключить магнитометр.
Значение |
Регистр |
Действие |
80h |
FUNC_CFG_ADDRESS |
Активирован доступ к функциональным регистрам |
38h |
SLV0_ADD |
LIS3MDL адрес ведомого — 0011100b. Для случая SDO = 0. Доступна операция чтения rw_0=0 |
22h |
SLV0_SUBADD |
22h — регистр LIS3MDL для записи данных |
00h |
DATAWRITE_SRC_MODE_SUB_SLV0 |
00h значение, которое должно быть записано в регистр 22h для конфигурирования LIS3MDL в режиме Continuous Conversion |
00h |
FUNC_CFG_ADDRESS |
Отмена доступа к функциональным регистрам |
3Ch |
CTRL10_C |
Активизация встроенных функций и Pull-up on SDx/SCx |
09h |
MASTER_CONFIG |
Триггерный сигнал в режиме Sensor hub — XL Data Ready. |
80h |
CTRL1_XL |
Включение акселерометра по триггерному сигналу |
38h |
CTRL10_C |
Отключение встроенных функций |
00h |
MASTER_CONFIG |
Отключение функции ведущего в дополнительном интерфейсе auxiliary I2C |
00h |
CTRL1_XL |
Отключение акселерометра |
80h |
FUNC_CFG_ADDRESS |
Активация доступа к регистрам встроенных функций |
39h |
SLV0_ADD |
Адрес ведомого LIS3MDL — 0011100b; для варианта SDO = 0 доступна операция чтения rw_0=1 |
28h |
SLV0_SUBADD |
28h — первый из регистров LIS3MDL, который должен быть прочитан |
06h |
SLAVE0_CONFIG |
Нет децимации |
00h |
FUNC_CFG_ADDRESS |
Отмена доступа к регистрам встроенных функций |
3Ch |
CTRL10_C |
Активация встроенных функций |
09h |
MASTER_CONFIG |
Активация Pull-up on SDx/SCx. Триггерный сигнал — XL Data Ready; активирован auxiliary I2C master |
80h |
CTRL1_XL |
Акселерометр включается по триггерному сигналу |
Важной функциональной особенностью комбидатчика LSM6DS3 является поддержка коррекции показаний внешнего магнитометра. Различают два типа ошибок измерений магнитометра. Первый тип ошибок связан с наличием внешних значительных постоянных магнитных полей, искажающих магнитное поле Земли в данной точке hard-iron. Это стационарные внешние поля, влияние которых на магнитометр не зависит от его ориентации в пространстве. Для идеального случая магнитное поле вокруг точки описывается расширяющимися правильными сферами. При отсутствии hard-iron любые вращения точки в любых направлениях не вызовут изменений формы магнитного поля. Наличие внешнего магнитного поля hard-iron сдвинет естественное геомагнитное поле в направлении действия постоянного магнита (рис. 9).
С помощью специального алгоритма можно рассчитать векторные координаты, характеризующие смещение геомагнитного поля за счет внешнего магнитного поля hard-iron. Этот алгоритм активируется битами FUNC_EN в регистре CTRL10_C и IRON_EN в регистре MASTER_CONFIG. Значения смещения по осям X, Y, Z записываются соответственно в регистры MAG_OFFX_L и MAG_OFFX_H, MAG_OFFY_L и MAG_OFFY_H, MAG_OFFZ_L и MAG_OFFZ_H.
Эти данные сравниваются с результатами калибровки магнитометра, проведенной в специальных камерах.
Другой тип ошибок обусловлен слабыми внешними переменными магнитными полями и электромагнитными наводками soft-iron. Показания магнитометра также могут быть искажены магнитными экранами. Действие полей soft-iron зависит от того, как магнитометр расположен относительно магнитного поля Земли. Под действием soft-iron локальное геомагнитное поле деформируется в разной степени в зависимости от направления. При наличии soft-iron геомагнитное поле, которое в идеальном случае описывается правильной сферой, искажается и выглядит в горизонтальном плане как вытянутый эллипсоид (рис. 10).
Аналогичным образом корректируется смещение. Алгоритм коррекции soft-iron correction запускается битами FUNC_CFG_EN в регистре FUNC_CFG_ACCESS, FUNC_EN в регистре CTRL10_C, IRON_EN в регистре MASTER_CONFIG и SOFT_EN в регистре CTRL9_XL.
В результате описанных действий рассчитываются поправки к чувствительности внешнего магнитометра (mGauss/LSB) и смещению относительно нуля. Подробно механизм коррекции влияния внешних магнитных полей на результаты измерений магнитометра описан в документе [10].
Модель LSM6DS33
Комбинированный 2‑кристальный датчик движения iNEMO LSM6DS33 содержит в одном корпусе 3‑осевой акселерометр и 3‑осевой гироскоп. Основные технические характеристики LSM6DS33 совпадают с характеристиками рассмотренной выше модели LSM6DS3. Различия состоят в корпусе и некоторых функциональных возможностях.
Модель LSM6DS3 имеет размеры 2,5× 3× 0,83 мм и корпус LGA‑14.
Комбидатчик LSM6DS33 изготовлен в корпусе LGA‑16 размерами 3× 3× 0,86 мм. Вместе с тем в этой модели зарезервированы и не используются пять выводов (8, 9, 10, 11, 15).
В модели LSM6DS33 несколько иначе, чем в рассмотренной выше LSM6DS3, организовано управление и программирование интерфейсов I2C и SPI. В частности, у комбидатчика LSM6DS33 нет вспомогательного 3‑проводного SPI-интерфейса. Сигналы SCx и SDx не поддерживаются. Комбидатчик LSM6DS33 не поддерживает функцию коррекции показаний внешнего магнитного датчика, которая есть у модели LSM6DS3. Подробно технические характеристики LSM6DS33 рассмотрены в [11].
Новый инерциальный блок измерений движения iNEMO LSM9DS1
Основные технические характеристики LSM9DS1
Новый комбидатчик LSM9DS1 содержит в одном корпусе 3‑осевой акселерометр, 3‑осевой гироскоп и 3‑осевой магнитный датчик.
Практически в этом устройстве реализована схема подключения магнитометра LIS3MDL к совмещенному датчику LSM6DS3, показанная на рис. 8. Принципы работы по структурной схеме акселерометра и гироскопа в совмещенном датчике LSM9DS1 такие же, как и в рассмотренной выше модели LSM6DS3.
Оба этих датчика имеют одинаковый алгоритм работы, основанный на использовании программируемых через внешний микроконтроллер регистров памяти. Однако архитектура памяти и управляющих регистров разная.
В комбинированном 9‑осевом датчике LSM6DS3 используется 85 управляющих регистров. Из них под акселерометр и гироскоп отведено 40 регистров памяти.
Для управления встроенным магнитным датчиком в LSM9DS предусмотрено 16 регистров. Напомним, что в дискретном исполнении магнитометра LIS3MDL используется 14 управляющих регистров.
Таким образом, можно говорить о том, что в модели LSM9DS применен оптимизированный алгоритм управления, позволяющий значительно сократить процесс программирования. Вместе с тем 9‑осевой датчик имеет менее гибкий интерфейс управления по сравнению с LSM6DS3 и LIS3MDL.
В основном технические характеристики LSM9DS1 совпадают с техническими характеристиками LSM6DS3 и LIS3MDL, которые приведены в таблицах 1 и 4. Однако существует и ряд различий. Так, комбидатчик LSM9DS1 имеет корпус LGA‑24L. В модели LSM9DS1 есть только три диапазона измерений гироскопа: ±245/±500/±2000°. Здесь нет диапазонов ±125 и ±1000°, которые есть в модели LSM6DS3. Кроме того, по сравнению с LSM6DS3 у комбидатчика LSM9DS1 меньше диапазон напряжений питания — 1,71–3,6 В.
Так же, как и LSM6DS3, модель LSM9DS оснащена интерфейсами I2C и SPI, обеспечивающими связь с внешними устройствами и программирование регистров памяти. Память датчика может функционировать в режиме FIFO. Встроенный температурный датчик позволяет работать с различными значениями ODR в диапазоне температур –40…+85 °C.
Детальное описание технических характеристик модели LSM9DS было бы повторением того, что рассмотрено в предыдущих разделах для LSM6DS3 и LIS3MDL. Поэтому такое описание здесь не приводится.
Режимы работы LSM9DS1
Акселерометр и гироскоп совмещенного датчика LSM9DS1 могут работать в двух конфигурациях:
- AC — активен только акселерометр, гироскоп выключен (Power-Down mode);
- AC/GY — активны акселерометр и гироскоп, работающие с одинаковым значением ODR.
Активация режима AC реализуется через процедуру записи в регистр CTRL_REG6_XL (20h). Переключение в режим AC/G осуществляется при записи в регистр CTRL_REG1_G (10h).
В случае, когда акселерометр действует в нормальном режиме, магнитный датчик включен в высокоскоростной режим (ODR = 20 Гц), а гироскоп выключен, ток потребления составляет 600 мкА.
Если все три датчика — гироскоп, акселерометр и магнитометр — включены и работают в нормальном режиме, ток потребления составляет 4 мА.
Буферная память FIFO комбидатчика LSM9DS1
Буферная память FIFO может работать в одном из пяти перечисленных режимов:
- Bypass mode;
- FIFO mode;
- Continuous mode;
- Continuous-to-FIFO mode;
- Bypass-to-Continuous.
Выбор режима определяется битом FMODE [2:0] регистра FIFO_CTRL (2Eh). В регистре FIFO_SRC (2Fh) задаются пороговые значения, определяющие прерывания на выводах INT1 (регистр INT1_CTRL) и INT2 (регистр INT2_CTRL). Кроме того, в регистре FIFO_CTRL (2Eh) можно задать уровень переполнения результатов измерений, после которого начинается запись новых данных поверх старых.
Регистр FIFO_SRC (2Fh)(FSS [5:0]) определяет непрочитанные результаты измерений.
В режиме Bypass mode память FIFO не активна и находится в режиме ожидания. В этом режиме для каждого канала используется только один адрес.
В основном режиме работы буферной памяти FIFO mode (FIFO_CTRL (2Eh) (FMODE [2:0] = 001) данные всех выходных каналов сохраняются в соответствующих разделах памяти до тех пор, пока не будет превышен заданный уровень переполнения. При этом вырабатывается сигнал прерывания, в соответствии с которым прекращается сбор данных по указанному каналу.
Схема работы буферной памяти в режиме FIFO mode представлена на рис. 11.
Режим Continuous mode (FIFO_CTRL (2Eh) (FMODE [2:0] = 110) обеспечивает непрерывное обновление памяти. Когда появляются новые данные, старые данные стираются. Пороговое значение сигнала переполнения определяется объемом непрочитанных данных, заданным в регистре FIFO_CTRL (2Eh) (FTH4:0). Также предусмотрена возможность внешнего прерывания в этом режиме.
Схема работы буферной памяти в режиме Continuous mode показана на рис. 12.
В триггерном режиме Continuous-to-FIFO mode поведение FIFO определяется битом INT_GEN_SRC_XL (26h) (IA_XL).
При высоком состоянии этого бита реализуется режим FIFO mode. Низкое состояние обеспечивает режим Continuous mode.
Если бит INT_GEN_SRC_XL (26h) (IA_XL) равен единице, то FIFO работает в режиме Bypass-to-Continuous и результаты измерений датчиков сохраняются в буферной памяти. При значении этого бита, равном нулю, FIFO отключается, и работа будет продолжена в режиме Bypass mode.
Конструктив LSM9DS1
Комбидатчик LSM9DS1 выполнен в корпусе LGA‑24L и имеет габаритные размеры 3,5× 3× 1 мм. Эта модель занимает на плате площадь меньше, чем два отдельных датчика LSM6DS3 (2,5× 3× 0,83 мм) и LIS3MDL (2× 2× 1 мм), которые обеспечивают такую же функциональность. Немаловажное значение имеет и тот факт, что для подключения LSM9DS1 требуется меньше внешних резисторов и емкостей, чем при использовании раздельных датчиков LSM6DS3 и LIS3MDL.
Отладочные платы и программное обеспечение датчиков движения производства STM
Отладочные платы
Для разработки изделий на базе датчиков движения выпускаются отладочные комплекты STEVAL-MKI1xxV1, которые представляют собой макетные платы с датчиком движения, все выводы которых подключены к стандартному 24‑контактному разъему. Через этот разъем подсоединяется другая плата разработчика, содержащая высокопроизводительный 32‑разрядный микроконтроллер STM.
При проектировании систем на базе LSM6DS3 используется плата STEVAL-MKI160V1 [13], полностью совместимая с отладочной платформой STEVAL-MKI109V2 [14], изготовленной на базе микроконтроллера STM32F103RET6 (ARM Cortex-M3). Данная плата оснащена интерфейсами USB 2.0 и отладочным разъемом SWD/JTAG, благодаря чему ее можно подключить к ПК и программировать датчик с помощью графического интерфейса пользователя или другого специального программного обеспечения. На плате имеется вся периферия (конденсаторы, резисторы), необходимая для полной функциональности. Для начала работы достаточно подать питание на плату.
Аналогичные отладочные платы, совместимые с платой микроконтроллера STEVAL-MKI109V2, выпускаются для дискретных датчиков:
- магнитометр LIS3MDL — STEVAL-MKI137V1 [15];
- акселерометр IIS328DQ — STEVAL-MKI170V1 [16];
- гироскоп I3G4250D — STEVAL-MKI169V1 [17].
Для комбинированного 9‑осевого датчика движения выпускается плата STEVAL-MKI159V1 [18].
Широкие возможности для разработчика предоставляет универсальная отладочная плата X‑NUCLEO-IKS01A1 [19], предназначенная для работы с комбинированными датчиками семейства LSM6DS0, а также магнитометром LIS3MDL, датчиком влажности HTS221 и датчиком давления LPS25HB. Плата X‑NUCLEO-IKS01A1 имеет интерфейс I2C, который можно использовать для подключения STM32 Nucleo board.
Все интерфейсы датчиков выведены на стандартный 24‑контактный разъем, с помощью которого подключаются дополнительные внешние датчики. Питание каждого датчика реализуется через отдельную шину, поэтому можно контролировать ток потребления конкретного датчика в различных режимах работы.
Плата X‑NUCLEO-IKS01A1 совместима с программно-аппаратным комплексом Arduino UNO R3 platform («Ардуино»), предназначенным для создания простых систем автоматики и робототехники. Комплекс Arduino, ориентированный на непрофессиональных пользователей, содержит бесплатную программную оболочку (IDE) и набор смонтированных печатных плат. Полностью открытая архитектура системы Arduino, позволяющая свободно копировать или дополнять линейку продукции, дает возможность сотням миллионов любителей электроники по всему миру попробовать свои силы в создании различных конструкций датчиков движения.
Внешний вид отладочной платы X‑NUCLEO-IKS01A1 показан на рис. 13.
Кроме указанных выше датчиков, на плате расположены переключатели и разъемы, позволяющие контролировать токи, напряжения и сигналы в ключевых точках. Подробная пошаговая инструкция работы с этой платой приведена в [20].
Программное обеспечение
Для программирования датчиков движения используются приложения к базовому ПО STM32Cube, предназначенному для работы с микроконтроллерами STM32 [21].
Программа X-CUBE-MEMS1 является расширением STM32Cube [22]. Эта утилита позволяет собирать данные о температуре, давлении, влажности и девяти параметрах движения от датчиков HTS221, LPS25H, LSM6DS0 и LIS3MDL. Программа содержит драйверы этих датчиков. Программа не привязана жестко к конкретной модели микроконтроллеров и может работать с большинством моделей серии STM‑32. В этой программе приведены примеры работы драйверов с платой X‑NUCLEO-IKS01A1 при подключении к платформам NUCLEO-F401RE или NUCLEO-L053R8. Подробно работа с программным обеспечением датчиков движения STM приведена в документах, которые можно свободно скачать на сайте STM.
- www.memx.com/products.htm
- www.st.com/web/catalog
- www.st.com/web/catalog/sense_power/FM89/SC1288
- www.st.com/web/catalog/sense_power/FM89/SC444/PF261516
- www.st.com/web/catalog/sense_power/FM89/SC1288
- www.st.com/web/catalog/sense_power/FM89/SC1288/PF261537
- www.st.com/web/en/catalog/sense_power/FM89/SC1449/PF255198
- www.st.com/web/en/catalog/sense_power/FM89/SC1448?sc=inemo
- www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00133076.pdf
- www.st.com/st-web-ui/static/active/cn/resource/technical/document/application_note/DM00157511.pdf
- www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00157718.pdf
- www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00103319.pdf
- www.st.com/web/en/catalog/tools/PF261599
- www.st.com/web/en/catalog/tools/PF252688
- www.st.com/web/en/catalog/tools/PF258935
- www.rutronik24.com/product/st/steval-mki170v1/7208343.html
- www.rutronik24.com/product/st/steval-mki169v1/7208342.html
- www.st.com/web/catalog/tools/FM116/CL1620/SC1116/PF261598
- www.st.com/web/catalog/tools/FM116/SC1248/PF261191
- www.st.com/st-web-ui/static/active/en/resource/sales_and_marketing/presentation/product_presentation/x-nucleo-iks01a1_quick_start_guide.pdf
- www.st.com/stm32cube
- www.google.com/search?q=X-CUBE-MEMS1&ie=utf-8&oe=utf-8