MultiWii

ADF
mahowik:

при подаче питания нужно несколько сек. не дергать коптер, т.к. идет калибровка гирррр. и если гиры не в нуле после калибровки, то интегратор в ИМУ в момент начнет копить оши…

Да, такое подозрение было, возможно я даже слегка пнул 😈 коптер в момент инициализации.

Большое спасибо за наводку!

mahowik:

вообще если читаете код или хотябы на инглише, то проще прочитать комменты в config.h и…

С английским проблем нет, есть проблемы с объемом информации, которая за раз в голову просто не лезет. Приходится осваивать код и его фичи поэтапно, крэш за крэшем 😁

kostya-tin
mikush:

Получается при 1500 PITCH и ROLL должен взлетать без заносов, а триммирование на пульте это как раз что бы выставить эти 1500?

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

serenya
Ratverg:

а куда подключать пищалку?

Вообще по стандарту вот

Но думаю не составит труда переназначить например на D11.
В def.h в секции atmega32u4 (Promicro) ищем

 #if defined(D8BUZZER)
    #define BUZZERPIN_PINMODE          DDRB |= (1<<4);
    #if defined PILOTLAMP
      #define    PL_PIN_ON            PORTB |= 1<<4;
      #define    PL_PIN_OFF           PORTB &= ~(1<<4);
    #else
      #define BUZZERPIN_ON               PORTB |= 1<<4;
      #define BUZZERPIN_OFF              PORTB &= ~(1<<4);
    #endif

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

p.s. и включить в конфиге #define BUZZER

ADF

А не может ли быть такого, что при включении коптера, в силу длительного процесса коннекта приемника к передатчику, мозга успевает уйти в фэйлсэйв?

Ratverg
serenya:

Вообще по стандарту вот

вот на этом buzzer pin у меня напруга не менялась что я ни делал.
Попробуем переназначить, может поможет.

Art_Nesterov
ADF:

А не может ли быть такого, что при включении коптера, в силу длительного процесса коннекта приемника к передатчику, мозга успевает уйти в фэйлсэйв?

А вы собственноручно настраивали файлсейв? (раскомментировали соответствующие строки в коде?) По умолчанию он вроде не активирован…

Ratverg
Ratverg:

вот на этом buzzer pin у меня напруга не менялась что я ни делал.
Попробуем переназначить, может поможет.

Нет, не выходит =(
переназначил как вы сказали, раскоментил строчку #define BUZZER, в конфигураторе показывает правильно напругу, но на выходе тестером меряю - какая-то ерунда. Либо 1.8V либо 0,3 - 0,6 - и не меняется…
Может чего-то ещё надо сделать?

serenya
Ratverg:

вот на этом buzzer pin у меня напруга не менялась что я ни делал.

Может аукс был раскомментирован?

Ratverg:

тестером меряю - какая-то ерунда. Либо 1.8V либо 0,3 - 0,6 - и не меняется…

Ну так Вы повесьте хотя бы светодиод что-бы видеть наглядно а не тестером.

Ratverg:

Может чего-то ещё надо сделать?

Может везде где есть определение buzzer pin поменять надо? Там далее по коду еще есть где можно поменять.

ADF
Art_Nesterov:

А вы собственноручно настраивали файлсейв? (раскомментировали соответствующие строки в ко…

Вы меня за дебила держите? Естественно речь идет о ситуации, когда фэйлсэйв активирован и настроен…

Ratverg
serenya:

Ну так Вы повесьте хотя бы светодиод что-бы видеть наглядно а не тестером.

светодиод не загорается вообще.

serenya:

Может везде где есть определение buzzer pin поменять надо? Там далее по коду еще есть где можно поменять.

попробовал - тоже не получилось.
Блин,да что ж не так

Art_Nesterov
Ratverg:

попробовал - тоже не получилось.
Блин,да что ж не так

Может ошибаюсь, но светодиод, так же как и буззер-пищалку нужно через ключик подключать… иначе вы перегружаете выход Меги

Ratverg
Art_Nesterov:

так же как и буззер-пищалку нужно через ключик подключать… иначе вы перегружаете выход Меги

ну у меня походу дела просто не включается почему-то выход…

serenya

Может в конфиге включить A32U4ALLPINS?
this moves the Buzzer pin from TXO to D8 for use with ppm sum or spectrum sat. RX (not needed if A32U4ALLPINS is active) */

Или здесь поковыряться
override default pin assignments

Аа на стандартном d8 работает?

Ratverg
serenya:

Аа на стандартном d8 работает?

дак а на нановие разве есть D8?

Ratverg

Спасибо! всё в итоге заработало, я, балбес не раскоментировал #define D8BUZZER а только #define BUZZER

Нашёл от Маховика такое сообщение, а куда этот код ставить?
Он должен “эмулировать” писк - как аз то что мне нужно!

mahowik:

#if defined(BUZZER)
static int8_t buzzerCount = 0;
if((buzzerCount % 2) && (buzzerCount > 0)) {
BUZZERPIN_ON;
} else {
BUZZERPIN_OFF;
}
buzzerCount++;
#endif

ADF
Ratverg:

а куда этот код ставить?

Объявление переменной куда-то в шапку или функцию инициализации засунуть, остальной код - в основной цикл, который вызывается с частотой несколько сотен герц, более точно не скажу, так как еще не во всем оригинальном коде разобрался.

И еще: судя по всему, где-то должно быть место в коде, которое постоянно делает buzzerCount = 0 пока пищалка должна быть выключена.

serenya
Ratverg:

дак а на нановие разве есть D8?

Аукс как раз на d8 висит. Код который Вы нашли предназначен для пищалок без встроенного генератора.

DmS
mahowik:

аксель не причем и калибруется один раз ровно в горизонт + иногда вишными тримами (шаг 0.2 град.) с пульта можно подкорректировать…

mahowik:

при подаче питания нужно несколько сек. не дергать коптер, т.к. идет калибровка гирррр. и если гиры не в нуле после калибровки, то интегратор в ИМУ в момент начнет копить ошибку с частотой примерно 300гц, что и выползет завалом горизонта. аксель конечно тут помогает, т.к. по нему идет корректировка, но это не спасет от завала горизонта т.к. в итоге в комплиментарном фильтре будет найден баланс между накоплением ошибки и корректировкой…

Ну а проще врубить дефайн GYROCALIBRATIONFAILSAFE и забыть

Когда участвовал в конкурсе Крока, пришлось дрейф по yaw несколько другим способом, выводил на отладку значение att.heading (которое находил по своей формуле), и по времени засекал дреф на 5 градусов (у меня минута получалась),
затем врубал счетчик и автоматом корректировал каждую 1/5 минуту на один градус, в общем замечательно получилось.

Сама процедура калибровки гироскопов в положении покоя на MW весьма сомнительная, так как значения за 512 циклов суммируются, а потом делятся на 512:
gyroZero[axis]=(g[axis]+256)>>9; (+256 добавлено в версии 2.3)

а так как калибровочное значение - целое (int16_t gyroZero[3] = {0,0,0}😉,
то получаем, что если гир за 512 циклов уплыл на значение меньшее 256, то корректировка =0,
в этом случае нужно переходить на float

  • Вообще писать на ардурино - очень грустное дело, отладки полноценной нет (JTAG), уходит много времени, чтобы понять в чем ошибся,
    думаю перейти на опенпилот, пробовал кнонибудь писать под эту платформу ?
Ratverg
serenya:

Код который Вы нашли предназначен для пищалок без встроенного генератора.

да да! у меня просто основная идея - это подать сигнал с мультивия на микрофонный вход видеопередатчика FPV сетапа. И таким образом мониторить напряжение 😃 (во всяком случае, протянуть до доставки OSD)
Попробовал вставить код в разные места - нихрена не вышло. Пишет ошибки при компиляции.

Ratverg

Реализовал то что хотел сделать, результатом доволен, но надо ещё допилить немного будет =)
Спасибо serenya 😃 переназначил успешно на выход D11 на нановиее.
Купил микродинамик со встроенным генератором на 5V.

Разобрал его(схема странная немного, два транзистора и два резистора, даже конденсатора нет, не понял как генерирует и от чего частота зависит) и через кондёр подал сигнал от одной лапки катушки динамика на микрофонный вход видеопередатчика.
Теперь когда падает напруга у меня пищит и динамик на моделе и динамик на пульте FPV 😃 В принципе, может и вообще не буду тогда OSD вешать на свой микросетап, довольно удобно вышло.

Недостаток - у этого динамика частота зависит как-то от хрен знает чего. У меня выходит что если дырочку заклеиваешь на динамике, скотчем (чтобы дома не глушил) частота понижается чуть-чуть и сигнал на видео сразу становится раза в два громче.
Убираешь скотч с дырочки - частота повышается чуть чуть и сразу писк в видеоприёмнике как-то хрипнет и глохнет 😃 В принципе, различим, пользоваться этой “телеметрией” можно. Нужно будет схему перерисовать и спросить у кого-нибудь знающего, как сдвинуть чуток частоту этой пищалки (может кондёр куда впаять мелкий. Реально не понимаю, как с двумя транзисторами и двумя резисторами она генерирует, один из них, при этом похоже просто ограничивает ток)

Ещё, пока не понял, в мультивиее 3 уровня напряжения контроля - 1 предупреждение, 2-е предупреждение и critical.
При первом - одинарный писк, при втором - двойной писк. А вот при критикал - ничего не происходит, так и пищит двойной, что-то не так, хотелось бы чтобы начинал попискивать не переставая.

ADF
Ratverg:

А вот при критикал - ничего не происходит, так и пищит двойной, что-то не…

Наверное он подразумевает, что в этот момент уже должен неуправляемо падать в землю? 😃

Извиняюсь за оффтоп.