Квадрокоптер на Arduino DUE
Задается оно в файле output.cpp,
Дело в том, что, по умолчанию, выходные порты привязаны к аппаратным выходам таймера атмеги, хотя есть и программный шим. Поэтому, лучше вам попробовать вывести их на порты аппаратных таймеров вашего процессора, а процедуру инициализации таймеров, и название регисторв заменить на свои. Или делать все на программном шиме, описывается там же, но инициализацию и настройки под свое железо менять придется в любом случае.
не могу найти в том коде где подключение пинов расписано…
Откройте “def.h”.
В нём есть разделы, где определено подключение пинов для разных плат. Они озаглавлены #if defined(PROMINI), #if defined(PROMICRO), #if defined(MEGA) и т.д.
Найдите #if defined(ARDUINO_DUE) и посмотрите, какие функции каким пинам соответствуют.
Dmitry_DM Я сделал свое управление на 3DRadio модемах.
Из турниги использую батарею , стики и кнопки. В коробке ардуино и модем.
Ардуино считывает данные стиков и кнопок ( свой софт и протокол ) и передает пакеты по 6 байт примерно 10 раз в сек. Другой модем на коптере.
Ардуина в контроле управления принимает пакеты сравнивает контрольную сумму и выдает данные на управление. У тебя слишком большая плата. Делай
на нано версии. И еще совет - акселерометр надо крепить к железной пластине а её на демпферах подвешивать.
До этого был аксель LSM303 , хрень полная . Сейчас поставил MPU6050.
Виброразвязка самое главное.
спасибо всем за ответы! буду пробовать все вышеописанное
отдельное спасибо Samer за то, что я всегда искал…
хотелось бы обсудить где - нибудь детальнее эту конструкцию, но несколько позже, надо хотя бы с нормальным научится
но я не хочу потерять человека, который сделал то, что я хотел, если можно, Samer, оставьте свою почту мне в ЛС
инициализацию и настройки под свое железо менять придется в любом случае
возможно, это нужно проверить, но есть предположение, что в той версии Multiwii для Due это все продумано, ибо разработчик писал, что все что там написано работает на DUE
брал тут
Здравствуйте! В общем, соблюдая все вышеописанные рекомендации, мы все же собрали квадрокоптер… проводка идеальна, вибраций почти нет.
Но, к сожалению, конструкция не взлетела. Теперь опишу все по порядку
- Мы сконфигурировали 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
Дмитрий, начните уже курить теорию, хотя бы параллельно с практикой. Вот несколько наводящих вопросов разобравшись в которых вы перестанете задавать вопросы которые все называют глупыми и не хотят отвечать:
Что такое PWM? Принцип работы, как устроено в микроконтроллере, каким образом конфигурируется. Для практического закрепления берете светодиод и без всяких библиотек и функций заставляете его моргать с разной частотой. Причем пишете не на виринге, а на C - так понятней будет. Как освоите аппаратный шим, пробуете написать программный.
Что такое PPM? Разбираетесь в протоколе, втыкаете приемник к арудине и пишете программу для считывания сигнала. Тут вам сильно помогут исходники мультивия. После того как сможете самостоятельно считывать - убираете приемник, вместо него втыкаете вторую ардуину и генерируете PPM сигнал.
Как работает бесколлекторный двигатель? Разбираетесь какой сигнал должен подать регулятор на мотор что бы заставить его крутиться. Писать прошивку для регуля необязательно.
Режимы работы и программирования ESC Тут вы узнаете почему, как и когда пищит регулятор.
Далее подключаете к ардуине регулятор и уже с помощью шима заставляете не светодиод моргать, а проводите калибровку регулятора и заставляете крутиться моторы.
Затем подключаете приемник к ардуине и заставляете уже арудину с помощью аппаратуры управлять регуляторами что бы крутить моторы, но при этом вы будете понимать почему так происходит.
Только тогда сможете более-менее понимать исходники прошивки и займетесь наконец вашей задачей - управление коптером с компьютера.
А еще советую раздобыть осциллограф и увидеть все это в живую (PWM, PPM и прочее)
А еще научитесь читать даташиты - тоже полезно.
я был спросил конкретные, выделенные жирным, вопросы, на которые хотел получить конкретные ответы
проводите калибровку регулятора и заставляете крутиться моторы
это уже делалось, и получилось более чем успешно, моторы крутятся, и просто радуют своей работой.
займетесь наконец вашей задачей - управление коптером с компьютера
это будет позже, сейчас я просто хочу что бы аппарат запустился, для
того мне крайне необходимы ответы на мною заданные конкретные вопросы
Добрый вечер! Ответьте, кто - нибудь на мои вопросы выше! Очень срочно нужна ваша помощь! Буду благодарен за любую подсказку по поводу “что сделать, что бы аппарат взлетел?”.
я просто хочу что бы аппарат запустился
Никто здесь не будет разбираться с вашим аппаратом и не будет заставлять его запуститься.
Посоветовать - да, делать за вас - нет.
Вы пишете
но мы, почему-то использовали не 3,5,6,2 (ШИМ), а 34,36,38,40 (цифровые) (только в них моторы после подачи питания издавали инициализирующий звук) и переставали пищать каждую секунду.
Почему они перестали пищать? Подозреваю что на цифровых каналах был высокий уровень, а на 3,5,6,2 его не было.
Инициализирующий звук - это какой именно? Может быть они переходили в режим калибровки?
Почему вы выбрали именно эти пины? Я не случайно написал про PWM, возможно на выбранных вами пинах вообще его нет, возможен только программный и он нигде не написан. Я не хочу за вас читать даташит, но вы сами пишете что воткнули не в шим, а в цифровые пины. А регули с помощью чего управляются? Возможно здесь ответ на ваш вопрос?
Почему регуляторы пищат каждую секунду? Очевидно потому что нет сигнала на входе. Почему его нет? Возможно потому что нет арминга.
Регуляторы с помощью контроллера калибровали?
Буду благодарен за любую подсказку по поводу “что сделать, что бы аппарат взлетел?”.
Подкинуть вверх?
Инициализирующий звук - это какой именно?
Сначала такой мелодичный, потом 3 коротких пиков (это вроде как кол-во банок), потом один длинный и замолкают
Регуляторы с помощью контроллера калибровали?
подключали регуль к 3-му каналу приемника и подавали мин-маск с пульта, они откалибровались, ибо 1 из них (до калибровки) стартовал с 40%, теперь с 0%, т.е калибровка помогла
читать даташит
ну вот такие там пины
при этом ШИМ: выводы с 2 по 13
На них реализуется 8-битный выход ШИМ с помощью функции analogWrite(). Разрешение ШИМ можно менять, используя функцию analogWriteResolution().
(так на сайте написано)
подключали регуль к 3-му каналу приемника и подавали мин-маск с пульта
Я спросил про калибровку с помощью контроллера, т.е. при подключении с ардуине с залитой прошивкой мультивий.
Дело в том, что арминг зависит от многих параметров (например, от калибровки компаса), а калибровка регуляторов - от правильности подключения.
при этом ШИМ: выводы с 2 по 13
На них реализуется 8-битный выход ШИМ с помощью функции analogWrite(). Разрешение ШИМ можно менять, используя функцию analogWriteResolution().
Еще раз спрашиваю: вы разобрались каким образом управляется регулятор? Как регулируется скорость вращения моторов?
калибровку с помощью контроллера, т.е. при подключении с ардуине с залитой прошивкой мультивий
не делали… я даже до сих пор не уверен, что регули надо подключать к 3,5,6,2
например, от калибровки компаса
походу я вообще ничего не знаю, т.к первый раз про это слышу… я думал калибровка всех датчиков начинается при старте Мультивии
калибровка регуляторов - от правильности подключения
что подразумевается под “правильностью?”
вы разобрались каким образом управляется регулятор? Как регулируется скорость вращения моторов?
ну теоретически читал в статьях, где люди строили коптеры, а практически проверить не смог
походу я вообще ничего не знаю
Золотые слова…) Вам уже раз 50 сказали, что нужно сначала изучить вопрос, вникнуть, понять что и как работает, а уж потом собирать все в одну кучу…
Для начала, разберитесь в принципе работы и назначении сервомашинок, или рулевых, в другой интерпретации… В радиоуправлении очень многое строится именно на работе серво, в том числе и регуляторы оборотов…
Изучите ШИМ в принципе, безотносительно к радиоуправлению и моделизму вообще, потом найдите связь между ШИМ и сервоприводом… На практике, научитесь управлять сервами с помощью ардуины, предварительно оценив работу сервы от пульта и приемника…
В идеале, начинать бы надо с понимания, что мультикоптер это программно-аппаратный эмулятор ротора вертолета…) Циклический и коллективный шаги ротора вертолета тоже управляются сервами…
Ну и, все, что Вам выше рекомендовали тоже надо изучать…
На практике, научитесь управлять сервами с помощью ардуины, предварительно оценив работу сервы от пульта и приемника…
Вот! Очень правильный совет. Прислушайтесь, Дмитрий.
Кроме того, иногда (у меня как правило) разбираться в чужом коде сложнее чем написать свой.