Нужна помощь по AeroQuad

TheGreatDom

Собираем аэроквадовский квадрокоптер, но возникла проблема. Коптер всё время крутится против часовой стрелки вокруг своей оси, даже если даем ему команду крутиться по часовой. В конфигураторе всё вполне нормально, команды идут правильно.
В чем может быть ошибка?
Помогите, пожалуйста!

sandeve
TheGreatDom:

Собираем аэроквадовский квадрокоптер, но возникла проблема. Коптер всё время крутится против часовой стрелки вокруг своей оси, даже если даем ему команду крутиться по часовой. В конфигураторе всё вполне нормально, команды идут правильно.
В чем может быть ошибка?
Помогите, пожалуйста!

Проверьте, для начала, подключение моторов и винтов:

#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 - против

TheGreatDom

Это мы проверили сразу, всё правильно.
На все остальные команды он реагирует более менее нормально, т.е. если на небольшом газу на земле двигать его вправо-влево, вперед-назад, всё хорошо, да и взлетает он ровно, только крутится всё время.

benamur

Какое у вас железо и прошивка?
Да, верно как пишут (основное внимание на Yaw channel)но бывает из за вибрации и не сбалансированных винтов.
Приходилось трим на передатчике.И в софте была ошибка кажется 2.01.(но для моего железа)

sulaex

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

sandeve
TheGreatDom:

Это мы проверили сразу, всё правильно.
На все остальные команды он реагирует более менее нормально, т.е. если на небольшом газу на земле двигать его вправо-влево, вперед-назад, всё хорошо, да и взлетает он ровно, только крутится всё время.

Если откалибровали все регули и трансмитер и делали инициализацию в конфигураторе, то на закладке Transmiter Adjustement оттримируйте все каналы (основное внимание на Yaw channel). Нужно чтобы бегунки (Yaw, Pitch, Roll) крутились вокруг 1500, при включенном передатчике ес-но.
Лучше, конечно, все это делать без винтов!!!

TheGreatDom
benamur:

Какое у вас железо и прошивка?
Да, верно как пишут (основное внимание на Yaw channel)но бывает из за вибрации и не сбалансированных винтов.
Приходилось трим на передатчике.И в софте была ошибка кажется 2.01.(но для моего железа)

железо аналогичное shield v2, прошивка v2.4.2

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

sandeve
TheGreatDom:

железо аналогичное shield v2, прошивка v2.4.2

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

Не поленитесь, откалибруйте регули еще раз. Один может пропустили, бывает.
Если турниги или хоббивинды - прямо в конфигураторе.

Вот вы даете газку, он начинает на земле крутиться против часовой. Вы прибавляетет постепенно Yaw вправо, он что делает? Перестает крутится против часовой и заворачивает по часовой? Или игнорирует вашу команду?

TheGreatDom
sandeve:

Вот вы даете газку, он начинает на земле крутиться против часовой. Вы прибавляетет постепенно Yaw вправо, он что делает? Перестает крутится против часовой и заворачивает по часовой? Или игнорирует вашу команду?

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

sandeve

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

TheGreatDom
sandeve:

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

команды идут правильные, судя по графикам, моторы прибавляют одинаково, но на деле он всё равно крутится

benamur

Попробуйте поставить на ровную поверхность и заново датчики откалибровать.
А если держать в руках и в разные стороны он сопративляется пытается назад вернуться или продолжает крутить?
У меня было именно так я в конфигураторе где pid Yaw поставил знак -
И все вращаться перестал но у меня шелд 1.7 и датчики другие.

sandeve

Ну значит, в сухом остатке что: электроника + софт отрабатывают нормально, и если в контроллерах и пропах вы уверены - остаются моторы.
Меняйте местами, пытайтесь найти паршивца.
Но честно говоря, имхо, наиболее вероятные причины такого поведения:

  • не откалиброванные регули
  • не оттримированный Yaw

Видео можете сделать?

aleksas

А не пробовали прошивку залить от multiwii?

sandeve

Поведение конечно абсолютно не адекватное. Вы говорите, что сигналы на моторы идут пропорциональные по всем моторам, но на видео полный расколбас сразу. Как установлен шилд, демпферы есть?

Попробуйте так и скажите что изменится:

  • Yaw PID (P=150, I=3, D=0)
  • Heading hold отключите, если включен

Проверяйте в стаб-моде.

Все остальные настройки оставьте по дефолту. У вас судя по длине луча (около 28) и весу должны нормально работать деф. настройки.

И еще, когда софт заливали дефайны правильно указали?

TheGreatDom

Вот поведение с Yaw PID (P=150, I=3, D=0)

Сигналы на моторы почти пропорциональные, не должен вроде так крутиться.

Залил в него новую прошивку AeroQuad_v2.5_Beta1. Изменений никаких. Yaw PID по ощущениям никак не влияет.

sandeve

Картинка из конфига, имхо, идеальная. Если это с работающими моторами, то просто лучше не бывает. На середине газа почти прямые линии - класс. Значит от моторов нет дребезга, уже хорошо.
Ну что остается проверить?

  • поясните по шилду, он все-таки есть? ну и проверить, конечно, не перепутали ли подключение каналов!
  • уменьшите пиды
    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

TheGreatDom

Картинка конфигуратора с выключенными моторами, показывает просто сигналы на контроллеры. Завтра сделаем с работающими движками и будем пробовать запускать с предложными пидами.

Самого шилда нету, датчики соединены на макетной плате.

В прошивке стоит плюс.

sandeve
TheGreatDom:

Картинка конфигуратора с выключенными моторами, показывает просто сигналы на контроллеры. Завтра сделаем с работающими движками и будем пробовать запускать с предложными пидами.

Самого шилда нету, датчики соединены на макетной плате.

В прошивке стоит плюс.

Понятно)
Зря вы дефайны не выкладываете, так можно долго гадать.

Если у вас есть 5843, ну его на фиг пока, закройте HeadingMagHold и FlightAngleMARG, определите только FlightAngleARG.

Сейчас, пока не полетите, только эти оставьте:
#define AeroQuadMega_v2
#define plusConfig
#define FlightAngleARG

TheGreatDom

оставили только это
#define AeroQuadMega_v2
#define plusConfig
#define FlightAngleARG

включенные моторы с пропеллерами:

команды вправо-влево:

поставили такие пиды:

sandeve:

roll accel (2; 0.3)
pitch accel (2; 0.3)
roll rate (50; -300)
pitch rate (50; -300)
yaw(50; 2; 0)

команды вправо-влево (влево крутится, вправо не крутится вообще):

слегка увеличенный газ, вертолет крутится влево:

sandeve

У вас каналы перепутаны (тут надо прикинуть, может просто оси перепутали!)
При повороте налево:

  • front и rear обороты растут
  • left и right падают
    Это и для икса и для плюса. У вас на графике где вы пишете влево - растут обороты right и left (зеленый и голубой график). Это не верно! При правильных соединениях при повороте влево расти должны front и rear (синий и красный график).

TheGreatDom

Может быть просто на картинке перепутали подписи:)
Жаль не получится пока это проверить, где нибудь через недельку руки дойдут. Спасибо что пытаетесь помочь!

27 days later
wlad

Мужики нужна помощь.

Сам не программист, но прогу 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 с любым кварцем.

wlad

С аэроквадом разобрались, оказалось что в оригинальном архиве с программой конфигуратором стояла скорость 111111 вместо 115200, это не заметил, первый раз ещё. Казалось бы вроде не сильно отличимо, но не работало… Ещё не сразу удалось скомпилить программу, так как не все датчики имелись в наличии и хотелось опробовать те что были (с этим вопросом помогли). И теперь касательно самой ардуины, никакой ботлоадер не нужен, достаточно скомпилить прогу в ардуине и найти хекс, а точнее путь к нему - путь к хексу активен по умолчанию в папке windows - temp где создаётся временная папка build_xxxxxx.tmp Потом любым программатором хекс заливаем в проц, а проц общается с компом через FT232. Вообщем всё. Потренируюсь на I2c датчиках и попробую переделать МК2.0, подключить ADXRS610 и LIS344.