Популярные ультразвуковые сонары измеряют дистанцию с точностью до одного-двух сантиметров, но работают на очень ограниченном расстоянии до отражающей поверхности, как правило, не более 3–4 м. Сонарам безразличны потоки воздуха, но они крайне чувствительны к качеству отражающей поверхности. Трава, вспаханная земля, снег, рябь на воде — такие поверхности рассеивают ультразвуковой импульс либо вносят большие искажения. Поэтому применение сонара оправдано при полетах в закрытых залах, где высота полета как раз соответствует рабочей дальности сонара, а пол хорошо отражает ультразвук. Нужно также учитывать, что сонар правильно показывает высоту при горизонтальном положении коптера. Как только рама наклоняется и импульс ультразвука отражается в сторону под углом к полу, сонар становится бесполезен.
В настоящее время даже в открытых прошивках решена проблема стабильного удержания высоты при помощи комбинации барометра и акселерометра. При удержании высоты логично предположить, что если показания барометра изменились, но акселерометр не показывает вертикальное ускорение, то наверняка это флуктуация показаний барометра. На самом деле, алгоритм достаточно сложен, надо учитывать конечную чувствительность акселерометра и барометра, продолжительность и скорость изменения показаний сенсоров, правильно задать весовые коэффициенты влияния этих сенсоров при расчетах и т. д. Рассуждения на эту тему выходят за рамки книги, ограничимся лишь констатацией факта, что использование барометра позволяет в безветренную погоду "подвесить" правильно настроенный квадрокоптер, и он будет стабильно висеть без участия пилота, дрейфуя по высоте максимум ±20 см.
Использование сонара оправдано для автоматического включения посадочных огней при заходе на посадку. Обычно нужно, чтобы подсветка посадочной площадки включалась на высоте около 2–3 м. Барометр на этой высоте будет иметь большую погрешность, особенно если во время полета изменилось атмосферное давление, а точности сонара вполне достаточно для включения огней.
В качестве примера использования полного набора сенсоров рассмотрим плату популярного полетного контроллера CRIUS All-In-One Pro (AIOP) версия 2 (рис. 2.8).
Рис. 2.8. Популярный полетный контроллер MultiWii AIOP v.2:
1 — микроконтроллер ATMEGA2560; 2 — конвертер логических уровней шины I2C PCA9306DP1; 3 — барометр MS5611; 4 — магнитометр HMC5883L; 5 — гироскоп + акселерометр MPU6050; 6 — адаптер USB/UART FT232RQ; 7 — стабилизатор +3,3 В; 8 — флеш-память 16Mbit AT45DB161D
Микроконтроллер (1) выполняет обработку управляющих сигналов от радиоаппаратуры и показаний сенсоров и формирует управляющие сигналы для регуляторов оборотов моторов. Наиболее часто применяются микроконтроллеры Atmel, достаточно быстродействующие, недорогие и с низким энергопотреблением. Однако в последнее время, с совершенствованием и усложнением вычислительных алгоритмов, разработчики все чаще упираются в ограничения быстродействия процессора и объема программной памяти. Существуют более мощные решения, например на ARM-контроллерах от ST Microelectronics, и даже экзотические конструкции на базе микрокомпьютера Raspberry Pi.
Встроенный стабилизатор напряжения 3,3 В (7) необходим для питания микроконтроллера и сенсоров. Как правило, источник бортового питания имеет напряжение 5 В, потому что именно это напряжение требуется для питания радиоприемника и различных дополнительных модулей.
Конвертер уровней шины I2C (2) используется для согласования логических уровней микроконтроллера и внешних устройств, подключенных к шине. Микроконтроллер питается напряжением 3,3 В и поддерживает соответствующие низковольтные логические уровни на шине. Но некоторые внешние устройства, такие как модули GPS, выносные компасы, дисплеи, могут питаться напряжением 5 В. Разница логических уровней между трех- и пятивольтовыми схемами может вывести из строя микроконтроллер.
Встроенный конвертер USB-UART (6) не нужен в процессе полета, но он позволяет подключить полетный контроллер непосредственно к разъему USB стационарного компьютера или ноутбука для записи прошивки или настройки. Микроконтроллер обменивается данными с компьютером через протокол последовательной передачи данных UART, а компьютерный СОМ-порт — это одна из реализаций протокола UART, называемая RS-232. Но даже если в вашем компьютере еще остался аппаратный СОМ-порт, то напрямую подключать к нему выводы микроконтроллера нельзя! Электрические параметры порта RS-232 существенно отличаются от уровней стандартной трех- или пятивольтовой TTL-логики. В протоколе RS-232 логический ноль лежит в диапазоне от +3 до +12 В, а единица— от -3 до -12 В. Промежуток от -3 до +3 В считается зоной неопределенности. Бытовые ноутбуки вообще не содержат стандартные физические СОМ-порты. Общепринятым и наиболее удобным решением является использование специальных микросхем-конвертеров. При подключении такой микросхемы к порту USB операционная система компьютера создает виртуальный СОМ-порт, который с точки зрения прикладных программ ничем не отличается от физического. Через этот порт вы можете записывать прошивку в микроконтроллер или настраивать различные параметры.