Квадрокоптер на Arduino DUE

Bulldog

Ну так в коде и смотри на какие инпуты должен приходить PWM с приемника.

rual
Dmitry_DM:

теперь проблема: я понятия не имею как подключать FlySky R6B… я создал схему… прошу помощи: просмотрите схему на ошибки и добавьте подключение приемника…

Красиво нарисовал, молодца! Компас и МПУ можно на одной И2Ц шине держать, но можно и так, земляные концы с регулей не нужны, кроме питающего(!). По приёмнимку: дорисовывтаь не буду, да и Дуину не знаю, каналы приёмыша надо подключать к ногам дуины, где она сможет принимать ШИМ.

Jade_Penetrate
rual:

земляные концы с регулей не нужны, кроме питающего(!)

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

rual
Jade_Penetrate:

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

если основной минус “правильный”, то не возникнут, а если “неправильный”, то силовой ток потечет по сигнальной земле. Что лучше выбирайте сами )

AlexeyStn

rual, поясните, пожалуйста, что в вашем понимании “правильный” и “неправильный” минус?

rual
AlexeyStn:

что в вашем понимании “правильный” и “неправильный” минус?

Все потребители расходятся из одной точки “звездой”, а не “гирляндой”. Ну и сечение проводов соответствует току.

Jade_Penetrate

Добиться идеальной земли в квадрокоптере весьма сложно - к каждому регулятору параллельно с сигнальным кабелем земля идти должна, если силовые провода имеют длину более 5-8см (значение на вскидку, все зависит от токов, регулятора, сечения и т.д.), в то же время, нужна земля от питающего контроллер бека и измерителей тока/напряжения. Выкидываешь землю от регуляторов - сигнал на них приобретает огромные помехи и часто приводит к срывам в работе, если убрать землю от бека и датчиков - плывет питающее напряжение, плывут показания с шунта и делителя. Решение проблемы - использование честных опто регуляторов, передача сигнала по дифференциальной линии, или использование коротких толстых проводов.
Но можно отказаться от звезды и смириться с уравнивающими токами, 90% так летают и не жалуются, зато при желании сделать все “правильно” начинаются проблемы.

rual
Jade_Penetrate:

Но можно отказаться от звезды и смириться с уравнивающими токами, 90% так летают и не жалуются

Так я не настаиваю ))) Более того, у меня все три проводка воткнуты, ибо не хочу чтоб концы во все стороны торчали.

Jade_Penetrate:

зато при желании сделать все “правильно” начинаются проблемы.

У Алексея Козина на сайте очень практичный совет по организации питания:

плата распределения питания (подойдет квадрат или круг из двухстороннего фольгированного стеклотекстолита – снимите глубокую фаску по всем торцам, используйте одну сторону для плюса а вторую для минуса, после пайки обеспечьте невозможность замыкания слоев платы а при необходимости изолируйте ), соответствующий силовой аккумулятор

Dmitry_DM
rual:

Компас и МПУ можно на одной И2Ц шине держать, но можно и так, земляные концы с регулей не нужны, кроме питающего(!).

спасибо вам за ответ! но в последствии мнения разделились… так все-таки, как лучше? земля только от 1 питающего регулятора (на схеме самый левый) или связать все земли 4 регулей?
второй вопрос: про I2C шину: то есть на схеме я собрался подключать компас к А5 А4, а вы предлагаете его (компас), как и MPU и как барометр подключать в SDA SCL ? (если так, то хорошо, что я еще не сделал тройники)

есть еще проблема с самим пультом, вернее с его конфигурацией, но об этом позже, надо все по-порядку

Jade_Penetrate

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

Dmitry_DM
Jade_Penetrate:

Лучше свяжите все 4 и подключите к земле контроллера.

все, значит так и будет,

Jade_Penetrate:

iic шину, на нее можно повесить много устройств, если пропускной способности будет достаточно

хорошо, попробую, там видно будет,

питать плату он BEC регуля все равно какого?

теперь о прошивке: я буду использовать MultiWii, заточенную под DUE (Multiwii_DUE называется), кто - то тут говорил, что надо смотреть к каким пинам подключать приемник. По этому несколько вопросов:

  1. У приемника надо использовать 4 канала, в каждом по 3 пина. Надо использовать только сигнальные? или +5v и gnd тоже надо использовать?
  2. как питать приемник? там у него на самой верхушке есть что-то про питание… +в комплекте был черный дугообразный провод для соединения чего-то… как его использовать?
  3. в каком файле Multiwii глядеть в какие пины подключать
    3_1) каналы приемника
    3_2) сигнальные пины от регулей
    P.S кто-то из вас говорил, что не знает о DUE, она почти как Mega2560, так что можно отталкиваться от ее данных о расположении пинов
Jade_Penetrate

Вы поставили себе задачу собрать собственный полетный контроллер (точнее просто скомпилировать исходники под свое железе), но при этом задаете ужасно глупые вопросы, не можете прочитать комментарии в коде и инструкцию к своей аппаратуре. Может стоит воспользоваться готовым полетным контроллером и настроить коптер по обучающим видео?
Ответы на ваши вопросы, как уже сказано, есть в комментариях в коде и его описании, инструкциях, обучающих статьях и видео.

Dmitry_DM

В секции радиоуправления есть такое:
//#define SERIAL_SUM_PPM PITCH,YAW,THROTTLE,ROLL,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For Graupner/Spektrum
//#define SERIAL_SUM_PPM ROLL,PITCH,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For Robe/Hitec/Futaba
//#define SERIAL_SUM_PPM ROLL,PITCH,YAW,THROTTLE,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For Multiplex
#define SERIAL_SUM_PPM PITCH,ROLL,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For some Hitec/Sanwa/Others
но у меня FlySky, и я выбрал последний, т.к там написано “Others”
судя по всему 8,9,10,11 это сигнальные пины для приемника
но тогда в какие пины втыкать сигналы от ESC? я ведь туда ранее хотел втыкать…

Dmitry_DM

ладно, попробую так:
Моторы
Передний левый 2
Передний правый 5
Задний левый 6
Задний правый 3
Приемник
Throttle A8
Roll A9
Pitch A10
Yaw A11

Jade_Penetrate

Тот параметр из секции радиоуправления отвечает за порядок каналов в пакете CPPM сигнала, никаких пинов там не задается. Номера входов и выходов задаются в другом месте.

Dmitry_DM
Jade_Penetrate:

Номера входов и выходов задаются в другом месте

подскажите, пожалуйста, в каком?

Dmitry_DM

Добрый вечер всем! Все-таки хочется узнать ответ на предыдущий вопрос, я хочу собрать БЛА, но уж простите, не могу найти в том коде где подключение пинов расписано… помогите кто нибудь! не закидывайте помидорами(( заранее спасибо!

Jade_Penetrate

Задается оно в файле output.cpp,
Дело в том, что, по умолчанию, выходные порты привязаны к аппаратным выходам таймера атмеги, хотя есть и программный шим. Поэтому, лучше вам попробовать вывести их на порты аппаратных таймеров вашего процессора, а процедуру инициализации таймеров, и название регисторв заменить на свои. Или делать все на программном шиме, описывается там же, но инициализацию и настройки под свое железо менять придется в любом случае.

AlexeyStn
Dmitry_DM:

не могу найти в том коде где подключение пинов расписано…

Откройте “def.h”.
В нём есть разделы, где определено подключение пинов для разных плат. Они озаглавлены #if defined(PROMINI), #if defined(PROMICRO), #if defined(MEGA) и т.д.
Найдите #if defined(ARDUINO_DUE) и посмотрите, какие функции каким пинам соответствуют.

Samer

Dmitry_DM Я сделал свое управление на 3DRadio модемах.
Из турниги использую батарею , стики и кнопки. В коробке ардуино и модем.
Ардуино считывает данные стиков и кнопок ( свой софт и протокол ) и передает пакеты по 6 байт примерно 10 раз в сек. Другой модем на коптере.
Ардуина в контроле управления принимает пакеты сравнивает контрольную сумму и выдает данные на управление. У тебя слишком большая плата. Делай
на нано версии. И еще совет - акселерометр надо крепить к железной пластине а её на демпферах подвешивать.
До этого был аксель LSM303 , хрень полная . Сейчас поставил MPU6050.
Виброразвязка самое главное.

Dmitry_DM

спасибо всем за ответы! буду пробовать все вышеописанное
отдельное спасибо Samer за то, что я всегда искал…
хотелось бы обсудить где - нибудь детальнее эту конструкцию, но несколько позже, надо хотя бы с нормальным научится
но я не хочу потерять человека, который сделал то, что я хотел, если можно, Samer, оставьте свою почту мне в ЛС

Jade_Penetrate:

инициализацию и настройки под свое железо менять придется в любом случае

возможно, это нужно проверить, но есть предположение, что в той версии Multiwii для Due это все продумано, ибо разработчик писал, что все что там написано работает на DUE
брал тут

14 days later
Dmitry_DM

Здравствуйте! В общем, соблюдая все вышеописанные рекомендации, мы все же собрали квадрокоптер… проводка идеальна, вибраций почти нет.
Но, к сожалению, конструкция не взлетела. Теперь опишу все по порядку

  1. Мы сконфигурировали MultiWii_for_DUE вот вся прошивка
    в config.h выбрано только датчики, в файле Output.cpp написано о моторах
#if defined(ARDUINO_DUE)
  uint8_t PWM_PIN[8] = {3,5,6,2,7,8,9,10};      //for a quad+: rear,right,left,front   //+ for y6: 7:under right  8:under left
#endif

а немного ниже

#if defined (ARDUINO_DUE)
   /* Thanks to  */
  #if (NUMBER_MOTOR > 0)
   setPWMpin(34); //PWM L0
   PWMC_DisableChannel(PWM, 0);
  #endif
  #if (NUMBER_MOTOR > 1)
   setPWMpin(36); //PWM L1
   PWMC_DisableChannel(PWM, 1);
  #endif
  #if (NUMBER_MOTOR > 2)
   setPWMpin(38); //PWM L2
   PWMC_DisableChannel(PWM, 2);
  #endif
  #if (NUMBER_MOTOR > 3)
   setPWMpin(40); //PWM L3
   PWMC_DisableChannel(PWM, 3);
  #endif

но мы, почему-то использовали не 3,5,6,2 (ШИМ), а 34,36,38,40 (цифровые) (только в них моторы после подачи питания издавали инициализирующий звук) и переставали пищать каждую секунду.
Так куда нужно втыкать пины мотора?
А так же как понять какой мотор по очереди втыкать: верхний левый, верхний правый, нижний левый, нижний правый?
Теперь в def.h написано

  #define THROTTLEPIN                0  //PIN 62 =  PIN A8
  #define ROLLPIN                    1  //PIN 63 =  PIN A9
  #define PITCHPIN                   2  //PIN 64 =  PIN A10
  #define YAWPIN                     3  //PIN 65 =  PIN A11
  #define AUX1PIN                    4  //PIN 66 =  PIN A12 (DAC0)
  #define AUX2PIN                    5  //PIN 67 =  PIN A13 (DAC1)

это, как я понимаю пины куда втыкать каналы приемника
Опять же: как понять в какой очередности вставлять каналы? По-очереди? С 1 по 6 в А8 по А13?
В общем при подключении нижеописанным образом аппарат не взлетел, даже не ввелся в режим Arming опустив левый стик пульта в нижний правый угол на 2 секунды вот так:

Подключали так:
Приемника R6B 5v. - 5v.
Приемника R6B GND - GND
THR: PIN 62 - A8
ALE: PIN 63 - A9
ELE: PIN 64 - A10
RUD: PIN 65 - A11
AUX1: PIN 66 -DAC0
AUX2: PIN 67 - DAC1

Motor 1: PIN 34 (digital)
Motor 2: PIN 36 (digital)
Motor 3: PIN 38 (digital)
Motor 4: PIN 40 (digital)

MPU6050, BMP085, HMC5883: SCL - SCL
MPU6050, BMP085, HMC5883: SDA - SDA
MPU6050, HMC5883 5v. - 5v.
BMP085 3.3v. - 3.3v.
MPU6050, BMP085, HMC5883 GND - GND

Питание Arduino DUE от BEC Motor 1
Все это показано на картинке:

Пульт настраивали по видео:

Прошу помощи у всех вас! Пожалуйста, помогите разобраться и запустить коптер! Буду благодарен за любую помощь!

еще забыл добавить, что программа Windows GUI for MultiWii версии 2.3 (совпадает с версией для коптера) не смогла соединиться с прошивкой на Arduino, подключенной по USB, при выборе ком порта, и нажатия Connect, оно написало “Connecting MavLink”, затем еще что-то с отсчетом в 24 сек., по истечению которых выдало ошибку

а так же в config.h какой выбрать SERIAL_SUM_PPM в секции 3 - RC SYSTEM SETUP ?
Мы выбирали последний

#define SERIAL_SUM_PPM         PITCH,ROLL,THROTTLE,YAW,AUX1,AUX2,AUX3,AUX4,8,9,10,11 //For some Hitec/Sanwa/Others
LampGraph

Дмитрий, начните уже курить теорию, хотя бы параллельно с практикой. Вот несколько наводящих вопросов разобравшись в которых вы перестанете задавать вопросы которые все называют глупыми и не хотят отвечать:
Что такое PWM? Принцип работы, как устроено в микроконтроллере, каким образом конфигурируется. Для практического закрепления берете светодиод и без всяких библиотек и функций заставляете его моргать с разной частотой. Причем пишете не на виринге, а на C - так понятней будет. Как освоите аппаратный шим, пробуете написать программный.
Что такое PPM? Разбираетесь в протоколе, втыкаете приемник к арудине и пишете программу для считывания сигнала. Тут вам сильно помогут исходники мультивия. После того как сможете самостоятельно считывать - убираете приемник, вместо него втыкаете вторую ардуину и генерируете PPM сигнал.
Как работает бесколлекторный двигатель? Разбираетесь какой сигнал должен подать регулятор на мотор что бы заставить его крутиться. Писать прошивку для регуля необязательно.
Режимы работы и программирования ESC Тут вы узнаете почему, как и когда пищит регулятор.
Далее подключаете к ардуине регулятор и уже с помощью шима заставляете не светодиод моргать, а проводите калибровку регулятора и заставляете крутиться моторы.
Затем подключаете приемник к ардуине и заставляете уже арудину с помощью аппаратуры управлять регуляторами что бы крутить моторы, но при этом вы будете понимать почему так происходит.
Только тогда сможете более-менее понимать исходники прошивки и займетесь наконец вашей задачей - управление коптером с компьютера.
А еще советую раздобыть осциллограф и увидеть все это в живую (PWM, PPM и прочее)
А еще научитесь читать даташиты - тоже полезно.

Dmitry_DM

я был спросил конкретные, выделенные жирным, вопросы, на которые хотел получить конкретные ответы

LampGraph:

проводите калибровку регулятора и заставляете крутиться моторы

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

LampGraph:

займетесь наконец вашей задачей - управление коптером с компьютера

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

Dmitry_DM

Добрый вечер! Ответьте, кто - нибудь на мои вопросы выше! Очень срочно нужна ваша помощь! Буду благодарен за любую подсказку по поводу “что сделать, что бы аппарат взлетел?”.