6-осевые инерциальные датчики QMI8658A для систем управления, стабилизации, навигации и отслеживания движения
2 июля
Михаил Варакин (г. Ишим)
Модули QMI8658A производства китайской компании QST отличаются малым энергопотреблением, компактностью и благодаря встроенному функционалу отлично подходят для применений, в которых требуется отслеживание движения. Они схожи по параметрам и являются хорошей заменой продукции европейских брендов.
Инерциальный датчик представляет собой устройство, позволяющее определить перемещения объекта в пространстве путем измерения изменений его ускорения и/или угловой скорости. За время развития науки и техники были разработаны и реализованы различные технологии инерциальных измерений. Сегодня массово применяются устройства следующих базовых типов:
- датчики линейных ускорений (ДЛУ), или акселерометры;
- датчики угловой скорости (ДУС), они же гироскопы;
- инерциальные блоки (модули), в корпусах которых совмещены в разных сочетаниях акселерометры, гироскопы, магнитометры, барометры для измерения высоты и даже термодатчик для компенсации температурной зависимости.
Инерциальные навигационные системы (ИНС) – это отдельная категория навигационных систем, характеризующаяся малым уровнем шумовой составляющей измерений c высоким темпом выдачи данных, которая, однако, обладает существенной накапливающейся ошибкой, то есть растущей со временем погрешностью измерений положения. Инерциальные датчики и блоки являются важной составляющей ИНС для движущихся механизмов и позволяют автономно, без сигналов спутниковой навигации, определять текущие параметры движения.
Для понимания работы блока представим себе декартову систему координат с осями X, Y и Z, как показано на рисунке 1, с датчиками, способными измерять линейное движение в направлении каждой оси, а также вращательное движение вокруг каждой из них. Это фундаментальный принцип для всех инерциальных модулей, и на нем строятся все инерциальные навигационные системы.

Рис. 1. Расположение осей системы координат инерциального модуля
DOF – это количество степеней свободы, измеряемое модулем. Например:
- модуль с тремя акселерометрами и тремя гироскопами измеряет 6 степеней свободы;
- модуль с тремя акселерометрами, тремя гироскопами и тремя магнитометрами измеряет 9 степеней свободы и так далее.
С развитием MEMS—технологий, позволивших изготавливать микромеханические компоненты и электронные схемы на одной кремниевой пластине, появились компактные инерциальные модули и датчики с малым энергопотреблением. Они получили широкое распространение в производстве портативных устройств с аккумуляторным питанием.
Датчики и блоки на основе MEMS нацелены на удовлетворение потребностей таких сегментов рынка, как:
- потребительская электроника (гаджеты, игрушки, бытовая техника), требующая низкой стоимости устройств параллельно с массовым объемом их производства;
- растущий рынок средств персональной мобильности (электросамокатов, электроскейтбордов, гироскутеров, сигвеев, моноколес);
- автомобильная электроника (датчики начала движения в системах охраны и слежения, стабилизации и подруливания, датчики ускорения для подушек безопасности и подобные приборы);
- промышленный (роботы, дроны, системы контроля устойчивости зданий и сооружений);
- рынок специального назначения, относящийся к области High End
Со склада КОМПЭЛ доступны к заказу микросхемы инерциальных датчиков QMI8658A производства китайской компании QST Corporation Ltd. (рисунок 2), представляющих собой полный 6D MEMS инерциальный измерительный блок (IMU). Он включает в себя 3-осевой гироскоп с возможностью выбора диапазона ±16…±2048 град/с, 3-осевой акселерометр с диапазонами измерения ±2…±16 g и температурный датчик. Основные особенности:
- встроенный датчик температуры для компенсации погрешностей;
- возможность настроить скорость передачи данных, фильтрацию шумов, диапазоны измерений, измеряемые параметры и выбрать режимы энергосбережения;
- сопроцессор обработки слежения за движением, позволяющий распознать различные режимы движения;
- функции калибровки и самотестирования.

Рис. 2. Внешний вид датчика QMI8658А
На рисунке 3 показана типовая схема подключения датчика QMI8658 к управляющему микроконтроллеру (HOST) через 4-проводной интерфейс SPI, а основные параметры модуля QMI8658A представлены в таблице 1.

Рис. 3. Схема подключения датчика QMI8658 к управляющему микроконтроллеру
Таблица 1. Основные параметры модуля QMI8658A
| Характеристика | Инерциальный блок: 3-осевой акселерометр, 3-осевой гироскоп, температурный датчик |
|---|---|
| Количество осей | 6 |
| Возможность подключения магнитометра | Да |
| Диапазон измеряемых ускорений, g | От ±2/±4/±8/±16 |
| Диапазон измеряемых угловых скоростей, dps | ±16/±32/±64/±128/±256/±512/±1024/±2048 |
| Интерфейс | MIPI, I2C, I3C, SPI, QSPI |
| Напряжение питания, В | 1,71…3,6 |
| Разрядность, бит | 16 |
Датчик температуры
Модуль QMI8658A оснащен внутренним 16-битным встроенным датчиком температуры, который по умолчанию автоматически включается при работе акселерометра или гироскопа и используется для коррекции температурной зависимости их параметров калибровки. В диапазоне -40…85°C датчик имеет разрешение 0,0625°C (1/16°C) или обратное значение 16 LSB/°C.
Блок выводит внутреннюю температуру чипа, которую может считать HOST-контроллер. Выходной сигнал представлен в виде 16-битного значения с разрешением 1/256°C на LSB. Чтобы прочитать температуру, HOST необходимо получить доступ к регистру TEMP (TEMP_L и TEMP_H регистра вывода данных в таблице 1). Расчет выполняется по формуле 1:
$$T=TEMP\_\:H+\left( \frac{TEMP\_\:L}{256}\right)\qquad{\mathrm{(}}{1}{\mathrm{)}}$$
Обзор карты регистров
Микросхема QMI8658А оснащена различными регистрами, которые позволяют настраивать режимы работы и извлекать результаты. Карта регистров может быть классифицирована по следующим категориям:
- регистр общего назначения;
- регистры настройки и управления различными аспектами модуля;
- управляемые хостом калибровочные регистры, которые управляют и настраивают различные аспекты модуля через командный интерфейс CTRL9;
- сдвиговые регистры FIFO, используемые для настройки FIFO и обнаружения доступности данных и их переполнения;
- регистры состояния;
- регистры отметок времени;
- регистры данных датчиков;
- регистр сброса.
Доступ к ним можно получить по протоколу I²C или SPI. Подробное описание ключевых регистров, включая настройки для рабочих режимов QMI8658А, представлено в таблице 2.
Таблица 2. Ключевые регистры микросхемы QMI8658А
| Название | Тип | Адрес регистра | По умолчанию | Описание | ||
|---|---|---|---|---|---|---|
| Десятичный | Шестнадцатиричный | Двоичный | ||||
| Регистр общего назначения | ||||||
| WHO_AM_I | r | 0 | 00 | 00000000 | 00000101 | Идентификатор |
| REVISION_ID | r | 1 | 01 | 00000001 | 01101000 | Идентификатор версии |
| Регистры настройки и управления | ||||||
| CTRL1 | rw | 2 | 02 | 00000010 | 00100000 | Включение интерфейса и датчика |
| CTRL2 | rw | 3 | 03 | 00000011 | 00000000 | Акселерометр: скорость выходных данных, полная шкала, самотестирование |
| CTRL3 | rw | 4 | 04 | 00000100 | 00000000 | Гироскоп: скорость выходных данных, полная шкала, самотестирование |
| Зарезервировано | rw | 5 | 05 | 00000101 | 00000000 | Зарезервировано |
| CTRL5 | rw | 6 | 06 | 00000110 | 00000000 | Настройки фильтра нижних частот |
| Зарезервировано | rw | 7 | 07 | 00000111 | 00000000 | Зарезервировано |
| CTRL7 | rw | 8 | 08 | 00001000 | 00000000 | Включение датчика |
| CTRL8 | rw | 9 | 09 | 00001001 | 00000000 | Детектирование движения |
| CTRL9 | rw | 10 | 0A | 00001010 | 00000000 | Команда из HOST |
| Калибровочные регистры (см. CTRL9: использование не обязательно) | ||||||
| CAL1_L | rw | 11 | 0B | 00001011 | 00000000 | Младшие 8 бит |
| CAL1_H | rw | 12 | 0C | 00001100 | 00000000 | Старшие 8 бит |
| CAL2_L | rw | 13 | 0D | 00001101 | 00000000 | Младшие 8 бит |
| CAL2_H | rw | 14 | 0E | 00001110 | 00000000 | Старшие 8 бит |
| CAL3_L | rw | 15 | 0F | 00001111 | 00000000 | Младшие 8 бит |
| CAL3_H | rw | 16 | 10 | 00010000 | 00000000 | Старшие 8 бит |
| CAL4_L | rw | 17 | 11 | 00010001 | 00000000 | Младшие 8 бит |
| CAL4_H | rw | 18 | 12 | 00010010 | 00000000 | Cтаршие 8 бит |
| Регистры FIFO | ||||||
| FIFO_WTM_TH | rw | 19 | 13 | 00010011 | 00000000 | Переполнение |
| FIFO_CONTR | r | 20 | 14 | 00010100 | 00000000 | Настройка |
| FIFO_RMPL_CNT | r | 21 | 15 | 00010101 | 00000000 | Количество |
| FIFO_STATUS | r | 22 | 16 | 00010110 | 00000000 | Состояние |
| FIFO_DATA | r | 23 | 17 | 00010111 | 00000000 | Данные |
| Регистры состояния | ||||||
| STATUSINT | r | 45 | 2D | 00101101 | 00000000 | Доступность данных |
| STATUS0 | r | 46 | 2E | 00101110 | 00000000 | Вывод данных |
| STATUS1 | r | 47 | 2F | 00101111 | 00000000 | Состояния движения |
| Регистры времени | ||||||
| TIMESTAMP_LOW | r | 48 | 30 | 00110000 | 00000000 | Временная отметка выборки Младшие 8 бит |
| TIMESTAMP_MID | к | 49 | 31 | 00110001 | 00000000 | Средние 8 бит |
| TIMESTAMP_HIGH | r | 50 | 32 | 00110010 | 00000000 | Старшие 8 бит |
| Регистры данных | ||||||
| TEMP_L | r | 51 | 33 | 00110011 | 00000000 | Температура Младшие 8 бит |
| TEMP_H | r | 52 | 34 | 00110100 | 00000000 | Старшие 8 бит |
| AX_L | r | 53 | 35 | 0011010 1 | 00000000 | Ось Х, акселерометр Младшие 8 бит |
| AX_H | r | 54 | 36 | 00110110 | 00000000 | Старшие 8 бит |
| AY_L | r | 55 | 37 | 00110111 | 00000000 | Ось Y, акселерометр Младшие 8 бит |
| AY_H | r | 56 | 38 | 00111000 | 00000000 | Старшие 8 бит |
| AZ_L | r | 57 | 39 | 00111001 | 00000000 | Ось Z, акселерометр Младшие 8 бит |
| AZ_H | r | 58 | 3A | 00111010 | 00000000 | Старшие 8 бит |
| GX_L | r | 59 | 3B | 00111011 | 00000000 | Ось X, угловая скорость Младшие 8 бит |
| GX_H | r | 60 | 3C | 00111100 | 00000000 | Старшие 8 бит |
| GY_L | r | 61 | 3D | 00111101 | 00000000 | Ось Y, угловая скорость Младшие 8 бит |
| GY_H | r | 62 | 3E | 00111110 | 00000000 | Старшие 8 бит |
| GZ_L | r | 63 | 3F | 00111111 | 00000000 | Ось Z, угловая скорость Младшие 8 бит |
| GZ_H | r | 64 | 40 | 01000000 | 00000000 | Старшие 8 бит |
| Регистр обнаружения активности | ||||||
| TAP_STATUS | r | 89 | 59 | 01011001 | 00000000 | Ось, обнаружение, количество касаний |
| STEP_CNT_LOW | r | 90 | 5A | 01011010 | 00000000 | Младший байт подсчета шагов |
| STEP_CNT_MIDL | r | 91 | 5B | 01011011 | 00000000 | Средний байт подсчета шагов |
| STEP_CNT_HIGH | r | 92 | 5C | 01011100 | 00000000 | Старший байт подсчета шагов |
| Сброс | ||||||
| RESET | w | 96 | 60 | 01100000 | 00000000 | Мягкий сброс |
При программировании управляющего HOST-микроконтроллера нужно учитывать, что микросхема QMI8658A имеет несколько режимов работы: обычный и заблокированный, поэтому необходимо выбирать для применения программную библиотеку, которая может работать с обоими. В обычном режиме работы мы можем пинговать каждый выходной регистр датчика в удобное для нас время, но регистры не обязательно будут синхронизированы друг с другом, то есть вы можете получить ускорение по оси X из последнего показания, а ускорение по оси Y – из текущего, в зависимости от того, когда считывается каждый регистр. Или, что еще хуже, вы можете считать младший байт одного показания и старший байт следующего. Чтобы решить эту проблему, QMI8658A имеет механизм блокировки, при котором считываются показания датчиков, а данные синхронизируются и блокируются в регистрах до тех пор, пока хост не завершит их считывание. Блокировка осуществляется использованием библиотек в ходе написания программы.
В отрытом доступе можно найти несколько библиотек для работы с микросхемой QMI8658A (QMI8658C) для:
К примеру, для платформы xTM32duino с контроллером xTM32F103C8 следует выбрать библиотеку QMI8658.h. Чтобы получить доступ к режиму блокировки в этой библиотеке, нужно использовать команду qmi.setState(sensor_locking) после begin(): использование функции считывания продолжится в обычном режиме, но теперь быстрые последовательные считывания в течение 2 мс будут гарантированно выполняться из одной и той же выборки.>
| Примечание: порог для получения новых данных можно изменить, установив QMI8658_REFRESH_DELAY на новое значение в микросекундах. |
Этот режим работы рекомендован для таких чувствительных приложений, как AR/VR (виртуальная и дополненная реальность) или SLAM-навигация, где требуется высокая точность.
| Примечание: на платформе xTM32duino xTM32F103C8 с частотой 400 кГц при передаче I²C один вызов getRawReadings() занимает около 600 мкс. |
В таблице 3 представлены основные характеристики двух инерциальных датчиков-блоков:
- QMI8658А, выпускаемого компанией QST и находящегося на складе КОМПЭЛ;
- LSх6DS3 производства известного европейского бренда.
Таблица 3. Сравнение основных характеристик инерциальных датчиков азиатского и европейского производства
| Наименование | QMI8658А | LSх6DS3 | |
|---|---|---|---|
| Состав | 6D MEMS: 3-осевой акселерометр, 3-осевой гироскоп, температурный датчик | 6D MEMS: 3-осевой акселерометр, 3-осевой гироскоп, температурный датчик | |
| Количество осей | 6 | 6 | |
| Возможность подключения магнитометра | Да | Да | |
| Корпус | 14-pin LGA | 14-pin LGA | |
| Диапазон измеряемых ускорений, g | От ±2/±4/±8/±16 | От ±2/±4/±8/±16 | |
| Диапазон измеряемых угловых скоростей, dps | ±16/±32/±64/±128/±256/±512/±1024/±2048 | ±125/±250/±500/±1000/±2000 | |
| Плотность шума | Акселерометры, mg/√Hz | 150 | 90 |
| Гироскопы, mdps/√ Гц | 15 | 6 | |
| Чувствительность акселерометра, LSB/g | 16,4 | 16,4 | |
| Чувствительность гироскопа, LSB/dps | 2048 | 228 | |
| Температурный коэффициент чувствительности, %/°C | акселерометра | ±0,04 | ±0,04 |
| гироскопа | ±0,05 | ±0,06 | |
| Диапазон рабочих температур, °C | -40…85 | -40…85 | |
| Интерфейс | MIPI, I2C, I3C, SPI, QSPI | SPI, I2C | |
| Напряжение питания, В | 1,71…3,6 | 1,71…3,6 | |
| Потребляемый ток (акселерометр + гироскоп), мкА | 1031 | 1250 | |
| Габариты, ДхШхВ, мм | 2,5×3,0×0,86 | 2,5×3,0×0,83 | |
| Схема контактов (распиновка) | ![]() |
![]() |
|
Если сравнить вышеперечисленные характеристики, можно сделать вывод, что параметры блоков QMI8658А, выпускаемых компанией QST, уступают только по чувствительности гироскопа, по остальным параметрам находятся на уровне, а по некоторым — даже превосходят модули западного бренда. Отсюда следует, что производство данных модулей нацелено на удовлетворение потребностей массового сегмента рынка и даже занимает промежуточное значение между им и рынком специального назначения.
Микросхемы QMI8658А от QST Co. Ltd. могут найти применение в таких устройствах и гаджетах, как:
- смартфоны;
- игровые контроллеры, пульты дистанционного управления и указывающие устройства;
- роботы;
- беспилотные устройства;
- электронные велосипеды и скутеры;
- гарнитуры Bluetooth;
- автомобильные системы безопасности;
- игрушки;
- системы виртуальной и дополненной реальности;
- портативная электроника с функцией управления отображением в портретном и альбомном режимах.
Благодаря встроенному функционалу, малому энергопотреблению и компактному корпусу (рисунок 4) инерциальные модули QMI8658А являются идеальным решением для применений, в которых требуется отслеживание движения, и хорошей заменой инерциальным модулям европейского производства.

Рис. 4. Миниатюрный корпус QMI8658А


Наши информационные каналы