Начало. Стабилизированная платформа (из MultiWii 328P + HXT-900)

Привет, решил что пора использовать уже платку которая досталась мне случайно, да и повод есть.

2013-09-26 19.28.34

И так что такое MultiWii и что мы будем делать?

MultiWii 328P представляет собой контроллер мультикоптера с базовой инерциально-навигационной системой, который может быть запрограммирован соответственно вашим требованиям. Эта версия MultiWii контроллера имеет поддержку сателитных приемников DSM2*. С расширенными возможностями и возможностью полного программирования, это устройство может контролировать любой тип самолета. Это идеальный контроллер полета для ваших многороторных авиамоделей.

Вот, так пишут продавцы.

К плате написан прекрасный софт для настройки отладки и проверки всех его возможностей, взглнем на него.

Без имени-1

Подключив плату через USB надо не забыть поставить дрова на FTDI, хотя скорее они поставятся сами. Все что есть в проге делится на несколько разделов, кароче не паримся и жмакаем коннект (прога сама определит на каком COM порте сидит устройство). Самое веселое это закладка Realtime Data, после подключения в этой закладке отображаются значения всех датчиков которые стоят на плате и значения сервомашинок.

Вращая платку видно что показания меняются, это двольно таки весело, уже придумал много способов применения (вплоть до 3D очков с эффектом присутствия)

Конечно хотелось бы поюзать все его возможности, но начинать надо с малого.

Сейчас ставлю перед собой задачу сделать просто стабилизированную платформу, чтобы в будущем на нее поставить веб-камеру например.

Что нам нужно для этого?

  • 2 сервопривода (чем дорожже тем точнее будет держать, вообще то надо бы для съемки использовать качественные, но я беру какая есть) – от 60 рублей/шт
  • 1 плата multiwii 328p – от 800 рублей/шт
  • для конечной конструкции еще надо будет всяких уголков как из детского конструктора

Софт

  • все написано под ардуино так что качаем его
  • готовый проект на ардуино от производителя платы
  • GUI для платы

Что делать?

Для того чтобы запустить дополнительные 2 сервомашинки, которые будут стабилизировать нашу камеру надо перепрошить нашу плату, не пугайтесь, тут бутлоадер, так что прошивается пряма через юсб, очень удобно.

Открываем arduino, запускаем скачанный проект (MultiWii_2_1.ino), в открывшемся проекте открываем закладку config.h и в ней меняем несколько строк,надо снять коменты:

//#define CRIUS_SE // Crius MultiWii SE

самое главное, это выбрать устройство которое вы юзаете (это новая прошивка не та что была уже залита, так что вот)

/**************************    The type of multicopter    ****************************/
    #define GIMBAL
/************************************************************************************/

вот с такой строки – это разрешение использовать порты под дополнительные сервомашинки.

***********************          Cam Stabilisation             ***********************/
    /* The following lines apply only for a pitch/roll tilt stabilization system. Uncomment the first or second line to activate it */
    //#define SERVO_MIX_TILT
    #define SERVO_TILT
    #define TILT_PITCH_MIN    1020    //servo travel min, don't set it below 1020
    #define TILT_PITCH_MAX    2000    //servo travel max, max value=2000
    #define TILT_PITCH_MIDDLE 1500    //servo neutral value
    #define TILT_PITCH_PROP   14     //servo proportional (tied to angle)           
    #define TILT_ROLL_MIN     1020
    #define TILT_ROLL_MAX     2000
    #define TILT_ROLL_MIDDLE  1500
    #define TILT_ROLL_PROP    14

со строки #define SERVO_TILT и значения  TILT_PITCH_PROP, TILT_ROLL_PROP пригодятся для подстройки под каши серваки.

В закладке Output:

#ifdef GIMBAL
    servo[0] = constrain(TILT_PITCH_MIDDLE + TILT_PITCH_PROP * angle[PITCH] /6 + rcCommand[PITCH], TILT_PITCH_MIN, TILT_PITCH_MAX);
    servo[1] = constrain(TILT_ROLL_MIDDLE + TILT_ROLL_PROP   * angle[ROLL]  /6 + rcCommand[ROLL], TILT_ROLL_MIN, TILT_ROLL_MAX);

тут есть число 16 меняем на примерно 6, можно будет с ним поиграть потом тоже.

Еще в разделе Servo Refreshrates, можно задать частоту обновления сервоприводов, для аналоговых она 50 Гц, а вот цифровые могут и почаще.

Итак, все с конфигом, теперь надо сохранить проект, и залить его на контроллер, делается это так:

  1. Сервис -> Последовательный порт -> COM8 (у меня)
  2. Сервис -> Плата -> Arduino Nano /w ATmega 328

Далее жмем кнопку  загрузить, он компилирует проект и заливает его на плату. Теперь остается подключить к плате сервопривод на ногу A0 и A1 и отстроить значения для конкретной сервомашинки. (Не забывайте что Земля-Коричневый провод)

Еще полезные ссылки:

http://www.ixbt.com/digimage/gyro2.shtml - Применение для машины

http://www.rcgroups.com/forums/showthread.php?t=1710318 - Исходник

PS: Нашел интересный вариант GUI - https://play.google.com/store/apps/details?id=com.ezio.multiwii