Нужна помощь по AeroQuad
Собираем аэроквадовский квадрокоптер, но возникла проблема. Коптер всё время крутится против часовой стрелки вокруг своей оси, даже если даем ему команду крутиться по часовой. В конфигураторе всё вполне нормально, команды идут правильно.
В чем может быть ошибка?
Помогите, пожалуйста!
Собираем аэроквадовский квадрокоптер, но возникла проблема. Коптер всё время крутится против часовой стрелки вокруг своей оси, даже если даем ему команду крутиться по часовой. В конфигураторе всё вполне нормально, команды идут правильно.
В чем может быть ошибка?
Помогите, пожалуйста!
Проверьте, для начала, подключение моторов и винтов:
#if defined(AeroQuadMega_v2) || defined(AeroQuadMega_Wii) || defined (AeroQuadMega_CHR6DM)
#define FRONTMOTORPIN 2
#define REARMOTORPIN 3
#define RIGHTMOTORPIN 5
#define LEFTMOTORPIN 6
#define LASTMOTORPIN 7
#else
#define FRONTMOTORPIN 3
#define REARMOTORPIN 9
#define RIGHTMOTORPIN 10
#define LEFTMOTORPIN 11
#define LASTMOTORPIN 12
#endif
FRONT, REAR - винт по часовой
RIGHT, LEFT - против
Это мы проверили сразу, всё правильно.
На все остальные команды он реагирует более менее нормально, т.е. если на небольшом газу на земле двигать его вправо-влево, вперед-назад, всё хорошо, да и взлетает он ровно, только крутится всё время.
Какое у вас железо и прошивка?
Да, верно как пишут (основное внимание на Yaw channel)но бывает из за вибрации и не сбалансированных винтов.
Приходилось трим на передатчике.И в софте была ошибка кажется 2.01.(но для моего железа)
была аналогичная ситуевина, перепрограммировал регуль, все нормально стало
я как то на одном музыку врубил, по началу квадрик нормуль летал, потом начал крутиться, убрал музыку, перестал, щас на всех четырех музыка влючена, оркестр блин прям 😃
Это мы проверили сразу, всё правильно.
На все остальные команды он реагирует более менее нормально, т.е. если на небольшом газу на земле двигать его вправо-влево, вперед-назад, всё хорошо, да и взлетает он ровно, только крутится всё время.
Если откалибровали все регули и трансмитер и делали инициализацию в конфигураторе, то на закладке Transmiter Adjustement оттримируйте все каналы (основное внимание на Yaw channel). Нужно чтобы бегунки (Yaw, Pitch, Roll) крутились вокруг 1500, при включенном передатчике ес-но.
Лучше, конечно, все это делать без винтов!!!
Какое у вас железо и прошивка?
Да, верно как пишут (основное внимание на Yaw channel)но бывает из за вибрации и не сбалансированных винтов.
Приходилось трим на передатчике.И в софте была ошибка кажется 2.01.(но для моего железа)
железо аналогичное shield v2, прошивка v2.4.2
передатчик откалиброван, все каналы отриммированы
пробовали на разных винтах, одно и тоже(
железо аналогичное shield v2, прошивка v2.4.2
передатчик откалиброван, все каналы отриммированы
пробовали на разных винтах, одно и тоже(
Не поленитесь, откалибруйте регули еще раз. Один может пропустили, бывает.
Если турниги или хоббивинды - прямо в конфигураторе.
Вот вы даете газку, он начинает на земле крутиться против часовой. Вы прибавляетет постепенно Yaw вправо, он что делает? Перестает крутится против часовой и заворачивает по часовой? Или игнорирует вашу команду?
Вот вы даете газку, он начинает на земле крутиться против часовой. Вы прибавляетет постепенно Yaw вправо, он что делает? Перестает крутится против часовой и заворачивает по часовой? Или игнорирует вашу команду?
игнорирует команду, крутится также против часовой, но медленнее
А что видите на графиках Motor output, когда имитируете эту ситуацию, но без пропов и на столе? Проверьте - в стаб-моде на графиках моторы должны прибавлять одинаково, не должно быть большой разницы в числах на графиках.
А что видите на графиках Motor output, когда имитируете эту ситуацию, но без пропов и на столе? Проверьте - в стаб-моде на графиках моторы должны прибавлять одинаково, не должно быть большой разницы в числах на графиках.
команды идут правильные, судя по графикам, моторы прибавляют одинаково, но на деле он всё равно крутится
Попробуйте поставить на ровную поверхность и заново датчики откалибровать.
А если держать в руках и в разные стороны он сопративляется пытается назад вернуться или продолжает крутить?
У меня было именно так я в конфигураторе где pid Yaw поставил знак -
И все вращаться перестал но у меня шелд 1.7 и датчики другие.
Ну значит, в сухом остатке что: электроника + софт отрабатывают нормально, и если в контроллерах и пропах вы уверены - остаются моторы.
Меняйте местами, пытайтесь найти паршивца.
Но честно говоря, имхо, наиболее вероятные причины такого поведения:
- не откалиброванные регули
- не оттримированный Yaw
Видео можете сделать?
А не пробовали прошивку залить от multiwii?
вот видео, калибровали всё не раз, результат один:
Поведение конечно абсолютно не адекватное. Вы говорите, что сигналы на моторы идут пропорциональные по всем моторам, но на видео полный расколбас сразу. Как установлен шилд, демпферы есть?
Попробуйте так и скажите что изменится:
- Yaw PID (P=150, I=3, D=0)
- Heading hold отключите, если включен
Проверяйте в стаб-моде.
Все остальные настройки оставьте по дефолту. У вас судя по длине луча (около 28) и весу должны нормально работать деф. настройки.
И еще, когда софт заливали дефайны правильно указали?
Картинка из конфига, имхо, идеальная. Если это с работающими моторами, то просто лучше не бывает. На середине газа почти прямые линии - класс. Значит от моторов нет дребезга, уже хорошо.
Ну что остается проверить?
- поясните по шилду, он все-таки есть? ну и проверить, конечно, не перепутали ли подключение каналов!
- уменьшите пиды
roll accel (2; 0.3)
pitch accel (2; 0.3)
roll rate (50; -300)
pitch rate (50; -300)
yaw(50; 2; 0)
ну и включите Heading hold, пид (3; 0.1; 0)
И дефайны ваши покажите, что установлено.
Еще вот что, мега ваша перевенутая белым кругом смотрит на фронт (должна, если с шилдом работает). И у вас она точно по лучу, значит у вас + конфиг. Но когда вы roll даете влево, очень похоже что отрабатывают и Right и Rear мотор. Проверьте у вас д.б. define plusConfig
Картинка конфигуратора с выключенными моторами, показывает просто сигналы на контроллеры. Завтра сделаем с работающими движками и будем пробовать запускать с предложными пидами.
Самого шилда нету, датчики соединены на макетной плате.
В прошивке стоит плюс.
Картинка конфигуратора с выключенными моторами, показывает просто сигналы на контроллеры. Завтра сделаем с работающими движками и будем пробовать запускать с предложными пидами.
Самого шилда нету, датчики соединены на макетной плате.
В прошивке стоит плюс.
Понятно)
Зря вы дефайны не выкладываете, так можно долго гадать.
Если у вас есть 5843, ну его на фиг пока, закройте HeadingMagHold и FlightAngleMARG, определите только FlightAngleARG.
Сейчас, пока не полетите, только эти оставьте:
#define AeroQuadMega_v2
#define plusConfig
#define FlightAngleARG
оставили только это
#define AeroQuadMega_v2
#define plusConfig
#define FlightAngleARG
включенные моторы с пропеллерами:
поставили такие пиды:
roll accel (2; 0.3)
pitch accel (2; 0.3)
roll rate (50; -300)
pitch rate (50; -300)
yaw(50; 2; 0)
команды вправо-влево (влево крутится, вправо не крутится вообще):
У вас каналы перепутаны (тут надо прикинуть, может просто оси перепутали!)
При повороте налево:
- front и rear обороты растут
- left и right падают
Это и для икса и для плюса. У вас на графике где вы пишете влево - растут обороты right и left (зеленый и голубой график). Это не верно! При правильных соединениях при повороте влево расти должны front и rear (синий и красный график).
Может быть просто на картинке перепутали подписи:)
Жаль не получится пока это проверить, где нибудь через недельку руки дойдут. Спасибо что пытаетесь помочь!
Мужики нужна помощь.
Сам не программист, но прогу arduino скачал, прогу для aeroquad (v2.4.2 она вроде на сегодняшний день стабильная) тоже скачал, конфигуратор AeroQuadConfigurator_v2.7.1 скачал.
Сделал аналог arduino nano v3.0 (atmega328, 16mhz) в инете видел что на минимальной конфигурации на ней летали.
Прогу aeroquad.pde откомпилил предварительно закомментировав под минимальную конфигурацию (выбрал пока для пробы #define AeroQuad_v1 // Arduino 2009 with AeroQuad Shield v1.7 and below, ну и выключил датчики давления, компас и т.п) и пытался залить в пустой проц.
Фузы выставил на проце правильно, но в терминале конфигуратора не видится платка… блин. (прога получилась по сообщению ардуино 26.5 кб (хекс на диске 75кб))
Схема мозгов правильная 100%, ft232rl (работает) настроена на com7 (в конфигураторе видится, но к плате не подключается).
Перед этим делал как было положено:
Протравил и собрал платку на atmega328, подключил ft232rl, прошил в мегу bootloader (с официального сайта ардуино), выставил фузы на 16мгц и отсечку на 2.7В, выставил фузы на ботлоадер, всё видится в проге ардуино ну и попробовал залить пробную прогу (мигалка светодиодом). Всё залилось, upload прошёл успешно через ft232rl, а когда повторно попробовал залить - не заливается (ошибка). Я начал менять комбинацию lock bits для запрета стирания прогой ардуино (скетчем) ботлоадера. (в инете есть статьи). Попробовал залить пробный скетч - залилось, но ошибка верификации, попробовал залить аэроквад - залилось, опять же с ошибкой верификации… ну и не видится прога в терминале конфигуратора… ё моё… задолбался уже.
Ещё сделал так - скомпилил ардуиной прогу аэроквада и в папке темп в винде нашёл свой hex и залил его в чистый проц атмега 328 (фузы на кварц 16мгц, лок биты по умолчанию) - всё равно не коннектится в конфигураторе… ft232 видимо не опознаётся и просится ботлоадер туда…
Чё я не так делаю?..
p.s Пока требуется минимальная версия для проб на основе atmega328 (arduino nano v3.0) + датчики (аксель + гиро типа ITG500 ISZ500)
Ещё вопрос, если пока подключать проц без датчиков - ft232 работать ведь должна? Прога конфигуратор всё равно должна определить что к ней atmega328 приконнектилась?
Ещё вопрос конкретно по ардуино - кто делал сам, как выставить lock bits в программе Code Vision avr?
В текстовом файле в ардуиновском архиве даны настройки фузов:
##############################################################
atmega328.name=Arduino Duemilanove or Nano w/ ATmega328
atmega328.upload.protocol=stk500
atmega328.upload.maximum_size=30720
atmega328.upload.speed=57600
atmega328.bootloader.low_fuses=0xFF
atmega328.bootloader.high_fuses=0xDA
atmega328.bootloader.extended_fuses=0x05
atmega328.bootloader.path=atmega
atmega328.bootloader.file=ATmegaBOOT_168_atmega328.hex
atmega328.bootloader.unlock_bits=0x3F
atmega328.bootloader.lock_bits=0x0F
atmega328.build.mcu=atmega328p
atmega328.build.f_cpu=16000000L
atmega328.build.core=arduino
##############################################################
С фузами разобрался - есть калькуляторы фузов из бинарного в нормальный вид - где в принципе видно какие галочки куда ставить и конкретно для Arduino nano v3.0 ставить
Bootrst = 0
Bootsz0=0
Bootsz1=0
Bodlevel1=0 , что типа значит что загрузка с ботлоадера и отсечка 2.7В
Далее надо выставить lock bits, чтобы “скетчи” ардуино не стирали ботлоадер, но тут я сразу не понял как…
надо сделать
atmega328.bootloader.unlock_bits=0x3F
atmega328.bootloader.lock_bits=0x0F
а калькуляторов перевода этих значений в инете не нашёл, потому как в кодевижене и пони проге ставить надо галочками:
bootlock bit 0 (4 варианта 11 / 10/ 01 /00) и bootlock bit 1 (4 варианта 11 / 10/ 01 /00)
Я на всякий случай скачал прогу программатора под avrdude SinaProg1.7.5.10 b и в ней через STK-200 перепрошил проц и выставил уже в виде бинарных значений, но блин опять скетч заливается, но верификацию не проходит, или херится ботлоадер… отсюда видимо не работает или не определяется ft232 в программе конфигуратора…
Вообщем кто понял что я спрашиваю просьба помочь, а так если всё пойдёт как надо попробую МК немецкий подключить к атмеге 328 (датчики ADXRS610 и аксель LIS344), если опыты пройдут успешно отпишусь.
p.s Можете кто-нить считать lock bits с помощью понипрога хотя бы… а то я пол ночи сидел угадывал, ну и фузы на всякий случай и прислать картинку или на форуме выложить, это для платы Arduino nano v3.0 или любой на атмеге 328 с любым кварцем.
С аэроквадом разобрались, оказалось что в оригинальном архиве с программой конфигуратором стояла скорость 111111 вместо 115200, это не заметил, первый раз ещё. Казалось бы вроде не сильно отличимо, но не работало… Ещё не сразу удалось скомпилить программу, так как не все датчики имелись в наличии и хотелось опробовать те что были (с этим вопросом помогли). И теперь касательно самой ардуины, никакой ботлоадер не нужен, достаточно скомпилить прогу в ардуине и найти хекс, а точнее путь к нему - путь к хексу активен по умолчанию в папке windows - temp где создаётся временная папка build_xxxxxx.tmp Потом любым программатором хекс заливаем в проц, а проц общается с компом через FT232. Вообщем всё. Потренируюсь на I2c датчиках и попробую переделать МК2.0, подключить ADXRS610 и LIS344.