Search
Write a publication
Pull to refresh

Часть 3. Аппаратная часть: от микросхемы до дисплея

Level of difficultyMedium
Reading time4 min
Views5.5K

Выбор процессора и датчиков

Идея собрать инерциальный навигатор пришла в голову быстро, но подобрать подходящие компоненты было сложнее. Главный микроконтроллер должен иметь достаточную вычислительную мощность для интегрирования уравнений движения и работы пользовательского интерфейса, при этом потреблять минимум энергии. Я выбрал контроллер семейства STM32 от STMicroelectronics, основанный на ядре ARM Cortex‑M. Этот чип обладает богатым набором периферии (I²C, SPI, UART, SDIO) и аппаратным блоком плавающей точки. К тому же компания ST поставляет готовые программные библиотеки для работы с MEMS‑датчиками.

В прототип заложил использование одновременно 2х контроллеров STM32 - один для вычислений и корректирвоки курса, второй для работы с элементами управления, экраном, отрисовка карты и прочие действия не связанные с координацией инерциальных датчиков.

Интегральный датчик инерции — сердце устройства. За основу взял 9‑осевой MEMS‑IMU WitMotion WT901, сочетающий три акселерометра и три гироскопа и электронный компас, что соответствует классическому INS. Этот модуль имеет низкий шум ускорений (~0,03 m/s²) и угловых скоростей (~0,02°/s) и выдает данные по интерфейсу SPI. Для обеспечения работы в широком температурном диапазоне датчик снабжён встроенным термодатчиком, данные которого учитываются при калибровке.

WT901 Attitude Angle Sensor
WT901 Attitude Angle Sensor

Дополнил его комплектом дополнительных инерциальных датчиков - LSM6DSV16X и LIS2DW12 более простой модификации с х10 дискретизацией для построения областей вероятного перемещения и дополнительных данных для улучшения траектеории внутри одного интервала.

Все это развел в 2 каскада с учетом длины дорожек - дискретизация высокая, данных много, учет длины дорожек и расчет их емкостного сопротивления снизит вероятность ошибки. Каждый каскад имеет один датчик WT901 + 5х LSM6DSV16X + 3х LIS2DW12.

Дисплей: 5‑дюймовый TFT LCD с контроллером SSD1963

Пилоту важно видеть навигационные данные в графическом виде: карту местности, индикатор искусственного горизонта, векторную траекторию. Поэтому я отказался от маленьких OLED и выбрал 5‑дюймовый цветной TFT‑экран с разрешением 800×480 пикселей. Согласно спецификации, модуль поддерживает 16‑битный RGB формат (65 тысяч цветов), имеет активную область 108×64,8 мм, поддерживает как резистивный, так и ёмкостной сенсорный слой и использует контроллер SSD1963. Передача данных осуществляется по 16‑битной параллельной шине, что обеспечивает высокую скорость обновления и плавную отрисовку карты. Важный плюс — наличие слота для SD‑карты и SPI‑flash — можно хранить карты и журнал полётов прямо на устройстве. Экран выдерживает температуры от −10 до +60 °С и питается от 3,3В.

Питание: литий‑полимерный аккумулятор 4800 мА·ч

Решил, что инерциальное устройство должно работать автономно не менее 3 часов. С дисплеем, процессором и датчиками энергопотребление составляет 4–5 Вт. Остановился на литий‑полимерном аккумуляторе LP105274 ёмкостью 4800 мА·ч и номинальным напряжением 3,7 В. Производитель указывает размеры 10×52×74 мм, наличие защитного модуля и массу около 96г. Аккумулятор рассчитан на более 500 циклов заряда‑разряда и имеет допустимый ток разряда до 2400мАч, что с запасом перекрывает наши потребности. При полной зарядке батарея способна питать прибор около трёх часов; в дальнейших ревизиях я планирую добавить возможность подключения внешнего питания ||от "прикуривателя" самолёта.

Печатная плата: первый прототип

Разработка схемы платы заняла около 1 месяца, потребовалось основательно подойти к вопросам резервирования цепей питания, смоделировать диаграммой процессов различные сценарии работы.

Схема разводки
Схема разводки
Разводка №1 контроллера STM32
Разводка №1 контроллера STM32
Разводка №2 контроллера STM32
Разводка №2 контроллера STM32

Первый прототип представлял собой двухслойную плату размером около 140×90 мм. На фотографии видно два крупных чипа — микроконтроллер STM32 и сопроцессор, а также разъём USB‑C для зарядки, слот под SD‑карту и разъём для подключения дисплея. В левом верхнем углу размещён пассивный звуковой излучатель, который оповещает пилота о событиях. Небольшой синий потенциометр рядом с процессором предназначен для регулировки контраста подсветки. На нижней части платы размещены DC‑DC преобразователи и контроллер заряда. Несмотря на «сырой» вид, эта плата позволила быстро протестировать связь с дисплеем и IMU.

Вид спереди
Вид спереди
Вид сзади
Вид сзади

Корпус и механика

Пилот ценит удобство: устройство должно крепиться на приборную панель и выдерживать вибрацию. На первых порах в качестве корпуса использовали 3D‑печать из ABS‑пластика, добавил резиновые прокладки и протянутые винты. В дальнейших версиях планируется использовать алюминиевый корпус с пассивным охлаждением и защитным стеклом на экране.

Один из первых эскизов корпуса и компоновки инструментов управления
Один из первых эскизов корпуса и компоновки инструментов управления

Остались открытыми вопросы джойстика способного перемещаться в 3 осях - X, Y, Z(вращение). Если кто-то имеет опыт работы с такими джойстиками - прошу написать, т.к. на текущий момент используется 2-осевой + одельное колечко для управления третей осью.

В следующей части я покажу что получилось в живую, какие сложности при изготовлении платы возникли, как это вообще можно сделать не имея опыта.

А затем я разберу, какие алгоритмы использовались для обработки данных IMU, как реализовали фильтрацию и какие результаты дала имитация.

Tags:
Hubs:
+18
Comments16

Articles