YMFC-3D V2: простой квадрокоптер на Arduino Uno с автонастройкой
Примечание
Автор проекта и всех материалов: J.M. Brokking (Joop Brokking), brokking.net. Ниже подробный пересказ его страниц и его файлы без изменений. Оригиналы: главная, Q&A, загрузки, медиа; копии в Wayback Machine.
YMFC-3D — первая и самая простая серия автора: контроллер на Arduino Uno с гироскопом (только по скорости вращения, без автовыравнивания, то есть наклон нужно выравнивать вручную). Версия 2 сделана так, чтобы настройка максимально автоматизировалась. Оценка автора: около 150 долларов. Видеоуроки: серия YMFC-3D (см. Видео и ссылки на оригинальные страницы).
Файлы
YMFC-3D_V2.zip— три скетча (YMFC-3D_V2_setup,YMFC-3D_V2_esc_calibrate,YMFC-3D_V2_Flight_controller), схема (PDF и JPG),ReadMe.txt.
Зачем нужна версия 2
Автор отфильтровал вопросы из комментариев YouTube и выделил главные проблемы первой версии: (1) у многих пультов нет настройки конечных точек (endpoints), и тогда код пришлось править вручную; (2) многие хотели использовать MPU-6050, которого первая версия не поддерживала; (3) для L3GD20H приходилось менять адрес гироскопа в коде; (4) моторы не запускаются или светодиод мигает, если конечные точки не настроены. В версии 2 настройка автоматическая: определение гироскопа, распознавание осей крена/тангажа/рыскания, распознавание движений стиков, программный расчёт конечных точек. Все настройки сохраняются в EEPROM, главный код читает их и сам адаптирует данные гироскопа и приёмника.
Хроника разработки (даты автора)
12.01.2016 — программа настройки почти готова, готова калибровка ESC. Для тестов автор заказал дешёвые ESC и моторы (30 А, «совместимые с DJI Flamewheel и 2212»): реакция заметно медленнее, чем у DJI ESC, но работают.
16.01.2016 — готовы три скетча, загружаемые поочерёдно: настройка гироскопа и пульта, калибровка ESC и балансировка моторов, полётный контроллер.
17.01.2016 — первый полёт на MPU-6050 и L3GD20H у автора во дворе, работает без сбоев. Тест шума: график гироскопа при работающих неуравновешенных моторах в масштабе −15…+15; L3GD20H даёт меньше шума, чем MPU-6050 при одинаковой вибрации; остаётся найти правильные настройки регистров MPU-6050.
19.01.2016 — большинство предложений из комментариев реализованы; благодарность тестеру Varad. Релиз был назначен на пятницу 22 января 2016.
Что делает программа настройки (пример вывода автора)
Мигание светодиода с обратным отсчётом. Проверка наличия сигналов приёмника.
Поставить все стики и субтримы в центр за 10 секунд; сохраняются центры (на входах 8–11, в примере ~1504).
По очереди: газ до максимума и обратно, тангаж «нос вверх», крен «левое крыло вверх», рыскание «нос вправо» — для каждого определяется вход Arduino и нужна ли инверсия.
Аккуратно подвигать все стики до крайних положений — измеряются конечные точки (в примере 1004–1504–2004).
Поиск гироскопа по адресам: MPU-6050 (0x68, 0x69), L3G4200D (0x68, 0x69), L3GD20H (0x6A, 0x6B); запись настроек регистров.
Калибровка гироскопа (около 8 секунд, не двигать): вычисляются смещения трёх осей.
Определение осей гироскопа: поднять левую сторону на 45° за 10 секунд, затем нос на 45°, затем повернуть нос на 45° вправо; для каждой оси определяется, какая функция и инвертирована ли.
Запись в EEPROM, проверка записанного, сообщение что можно заливать основной код.
Как начать (вопрос 1 Q&A)
Скачать пакет и прочитать
README.txt.Смотреть видео YMFC-3D часть 1 (железо) и собрать по схеме. Поддерживаются L3G4200D, L3GD20H, MPU-6050; ориентация гироскопа уже не важна, нужно лишь выровнять края датчика по краям рамы. Выходы приёмника (крен, тангаж, рыскание, газ) на порты 8, 9, 10, 11 в любом порядке. Регуляторы: D4 — правый передний (против часовой), D5 — правый задний (по часовой), D6 — левый задний (против часовой), D7 — левый передний (по часовой).
Винты снять, залить программу настройки, монитор порта 57600, выполнять указания; батарея на этом этапе не нужна.
Залить скетч калибровки ESC и откалибровать регуляторы по их инструкции.
Поставить винты и сбалансировать их по одному.
Залить полётный контроллер и проверить функции в руках. Старт: газ вниз + рыскание влево, стоп: газ вниз + рыскание вправо.
Подстроить ПИД (видео YMFC-3D часть 5, с 12:50).
Смотреть остальные видео серии.
Ошибки настройки
Ошибки 1–7 те же, что в YMFC-AL: квадрокоптер с автостабилизацией на Arduino Uno (нет сигналов приёмника, нет движения стика за 30 секунд, гироскоп не найден, нет вращения за 10 секунд, EEPROM, каналы приёмника, оси гироскопа). Дополнительно ошибка 8: частота шины I2C не 400 кГц. Каждый цикл программы занимает 4 мс, поэтому время дорого и I2C должна работать на 400 кГц. Нужно в файле twi.h Arduino IDE (папка libraries/Wire/utility или hardware/arduino/avr/libraries/Wire/utility в новых IDE) заменить значение TWI_FREQ со 100000L на 400000L и заново залить скетч настройки.
Остальные вопросы Q&A
Где скачать — в разделе загрузок. 4. Arduino Pro Mini подойдёт (питания приёмника может не хватить), Due и Mega2560 требуют переписать код. 5. A4/A5 и SDA/SCL — одно и то же на Uno. 6. ПИД индивидуальны для каждой конструкции. 7. PWM не использован: проще, 500 Гц не принимают все ESC, нельзя получить импульс 2000 мкс. 8. Железо: как в YMFC-AL: квадрокоптер с автостабилизацией на Arduino Uno, пульт Flysky FS-T6. 9. Светодиод: 5 секунд горит, затем быстро мигает (8 Гц) при калибровке гироскопа, потом гаснет; медленное мигание (1 Гц) — газ не в нуле; постоянное свечение — setup не выполнен или регистры гироскопа заданы неверно. 10. Моторы замедляются на земле — нормально (ПИД сразу работает, а аппарат не может отреагировать), взлетать сразу. 11. Автовыравнивания нет — у YMFC-3D только гироскоп. 12. 4S вместо 3S: те же замены резисторов делителя (R3 1500 → 8200 Ом, R2 1000 → 3300 Ом) и констант пересчёта напряжения, строки 138, 204, 207 и 218–223 в коде (точные значения — в оригинале). 13. Подключение ESC и 14. приёмника: как в YMFC-AL: квадрокоптер с автостабилизацией на Arduino Uno. 15. Агрессивное поведение — возможные электромагнитные помехи; регуляторы убрать от Arduino и датчика, провода короче, без макетных плат; диагностика выводом сырых данных гироскопа в монитор порта.
Видео автора (YouTube)
Видео проекта на канале автора MacPuffdog: плеер ведёт на оригинал, ролики лежат у автора.
Фото на сайте автора
Фотографии и рисунки к проекту лежат на сервере автора (у сайта нет HTTPS, поэтому здесь только ссылки, они открываются в новой вкладке). Копия всех файлов хранится у нас в архиве.