ArduCopter Mega: порт на обычную Arduino (тестим)
ничего он не менял, человек скопировал оригинальный ардукоптер под свои размеры
Что менял, написал, в основном это обработка сигнала на моторы фильтры и тд!
Железо тоже, за исключением пары штук, просто давно с IDG работаю!
Я уже понял написал не в ту тему сорри!!
кто желает протестить FAILSAFE? =)
nekaka.com/d/AR9xFg3N9p
тестил только в GUI, если отключить приемник при заведенных моторах, то газ скидывается на 1300 (задается в APM_Config.h), остальные стики (roll/pitch/yaw) по центру, а так же принудительно STABILIZE включается (эта штука не работает с ppmsum (пока что))
в основной код пока не добавляю, т.к. без реальных тестов довольно опасно =)
для Sir Alex: в APM_RC.cpp добавил новую функцию
uint8_t APM_RC_Class::GetFailState(void)
{
failsafeCnt++;
if(failsafeCnt > 20) failsafeCnt = 20;
return(failsafeCnt);
}
в самом прерывании (чтобы обнулялся счетчик, если есть сигнал)
if (mask & 1<<0) { // If pulse present on THROTTLE pin, clear FailSafe counter - added by MIS fow multiwii (copy by SovGVD to megapirateNG)
failsafeCnt = 0;
}
ну и failsafeCnt туда же
в основном коде (radio.pde) дергается функция throttle_failsafe() в а в ней дергается GetFailState, который прибавляет счетчик ошибок, пороговое значение 15 быстрых циклов, если за это время счетчик так и не обнулился, то дергается измененная функция set_failsafe, которая дергает евенты + выставляется ch3_failsafe, который в radio.pde->read_radio() меняется принудительно первые 4 значения аппы (стики)
может чего упустил важного, но теоретически должно работать, у кого гарантированно работает RTL, то можно в events.pde->failsafe_on_event() вместо set_mode(STABILIZE); поставить set_mode(RTL); тогда при пропадания сигнала с аппы будет возврат домой (но хз как это соеденится с тем что значения стиков принудительно задаю)
я тут кстаии failsafe ночью начал вкорячивать, щас глянул на код и понял что он сработает только если приемник работает, а не если не работает ^_^ эх, зря до 3 ночи сидел
Я как то пытался по быстрому вкорячить FS, но как оказалось при потере связи не всегда пропадает сигнал на приемнике, причем все приемники ведут себя по разному - не понятно на что ориентироваться. И даже если приемник переходит в режим FS - выдавая постоянно последнее значение, из за способа обработки сигнала, значения немного прыгают - что детектируется как наличия нормального сигнала (т.е. надо вводить Deadband).
Кроме того, в APM - FS реализован на втором проце… по сути в основном коде ничего нет. Если что то и делать, то в самой APM_RC
Хм… и в чем приемущество? Не думаю что SPI шина быстрей работает… Интересно какое время исполнения у них быстрого цикла?
SPI как минимум в 2 раза быстрее.
С одной стороны Пират имеет лишнюю обработку в виде APM_RC библиотеки (обработка RC приемника), но с другой стороны, у нас нет логирования (ИМХО достаточно медленная операция). Так что по идее, то на то и выходит. Но Оригинал нормально летает, а у нас колбасня какая то. Эх, не хватает у меня времени во всем разобраться. Уже и оригинальный APM имеется… попробую тайминги сравнить.
Кстати, благодаря новому осцилу, нашел один баг в коде обработки датчиков. Все они опрашиваются по таймеру (scheduler), так вот, они вызывались все в момент срабатывания таймера и могли просто не успеть считать все значения до вызова следующего таймера. В новой версии будет вызываться только один драйвер за один вызов таймера.
как я понял FS бывает нескольких видов, то что в multiwii сделано (и то что вроде бы сегодня добавил в пирата) работает как минимум на народной аппе turnigy 9x, другие приемники могут выставлять определенные значения сигналов при потере (в ардукоптере на это рассчитано, судя по всему), а третьи просто замирают (вот тут уже хз как детектить, т.к. не ясно пилот не трегает стики или нет сигнала)
как я понял FS бывает нескольких видов, то что в multiwii сделано (и то что вроде бы сегодня добавил в пирата) работает как минимум на народной аппе turnigy 9x, другие приемники могут выставлять определенные значения сигналов при потере (в ардукоптере на это рассчитано, судя по всему), а третьи просто замирают (вот тут уже хз как детектить, т.к. не ясно пилот не трегает стики или нет сигнала)
Все верно, разные приемники ведут себя по разному. Кстати на пин ориентироваться нельзя, т.к. при разных схемах подключения (mwi, standart…) Throttle попадает на разный пин. Там в коде есть массив с маппингом канала на пин, с его помощью можно определить где собственно throttle находится.
Chester_kz, Версия доступна в SVN. Я жду когда отпишутся люди у которых GPS врал на километр (этот баг вроде поправлен).
Кстати на пин ориентироваться нельзя
да там вроде на всех стразу пропадает сигнал (хотяяяяааа, хз), в общем это первая проба, если заработает, то уже можно накручивать костыли, да и в самом дефайне (типа TX_mwi) можно прописать на какой пин ориентироваться
сейчас смотрю как trim_accel прикрутить, чтобы в поле в горизонт выставлять на земле (в общем мне понравились multiwii фишки с конфигурированием некоторых вещей на поле без ноутов)
да там вроде на всех стразу пропадает сигнал (хотяяяяааа, хз)
Вот именно! В моем Turnigy пропадали не все каналы, а первые 4! остальные какую то ботву начинали показывать…
сейчас смотрю как trim_accel прикрутить, чтобы в поле в горизонт выставлять на земле
Level в поле лехко сделать. Дизарминг держим секунд ~10 и включается LEVEL.
Держим арминг ~10 секунд - включается режим триммирования. Взлетаем и пытаемся удержать коптер на месте в течении 45 сек, потом садимся и дизарминг. Главное делать это в безветренную погоду, иначе будет непредсказуемый результат. (Эту же фичу можно повесить на 7й канал)
Главное делать это в безветренную погоду
в этом то и косяк, поэтому хочу чтобы можно было за земле оттримировать горизонт, в multiwii это спасало, например при дрейфе акселя
Вот именно! В моем Turnigy пропадали не все каналы, а первые 4!
ну значит огромными буквами надо написать ВНИМАНИЕ НА СВОЙ СТРАХ И РИСК ну и чего нибудь про ТЕСТИТЬ НА ЗЕМЛЕ БЕЗ ВИНТОВ
Пост 4855 подскажите что-нибудь?
вот видео полёта
Бедный коптер… ((( Как вы его мучаете.
Пропы какие? 10x45? Timing на регулях какой?
Можно попробовать залиить 2.0.49 и удостовериться что дело не в железе.
На этой прошивке я бы начал уменьшася Rate P. И экспоненты поставить на пульте.
А газом надо аккуратней самому работать.
Валы у моторов укоротить.
С вибрациями кстати как?
… и не юзать ACRO режим пока не научитесь летать (если опыта нет), я например боюсь включать
Кстати, по сравнению с 2.0.49, в 2.6 выключен Instant_PWM и по умолчанию стоит 490Hz PWM на моторы, может быть это то же влияет на воблинг и стабильность.
И еще, я посмотрел на конфиги некоторых людей с оригинальным APM, так вот они то же уменьшают Rate P до 0.09 (дефолт 0.180), так что возможно вообще с нашими платами проблем нет.
выключен Instant_PWM и по умолчанию стоит 490Hz PWM на моторы
как поправить? я через часок смогу протестить
Пропы какие? 10x45? Timing на регулях какой?
Пропы 10х47
Регули Плюшки 30А
тайминг 400
Rate P = 0.15
экспоненты поставить на пульте
Валы у моторов укоротить.
спасибо, попробуем вечерком… (про экспоненты, ткните носом как, если не сложно 😃 )
С вибрациями кстати как?
Да вроде нестрашно, всё никак не проверю, но вроде жутких не замечено, как определить что надо избавляться, какие допустимые показатели? (должно просто жужжать?)
как поправить? я через часок смогу протестить
В Планере в конфиге есть
В Планере в конфиге есть
ну я там и так 400мгц высталял и rateP менял - как дергался не пойми как, так и продолжил дергаться, только еще и управляться перестал =)
как поправить?
В файле APM_Config.h строка
#define INSTANT_PWM DISABLED
У товариша оригинальный APM2. Рама 450 мм 2830-14(750кв) 11x47.
Cо стока полетел как по рельсам. Разве что дрейфеут и на управление слишком резво реагирует. насчет уменьшить rc-rate кстати идея. немного офтопа но на кролике многие люди с Plush регулями уменьшали частоту до 330 (что и я сделал) говорят на 450 болтает. Я на на 330 идеально практически полетел(на кролике) и эксперементировать не стал. На коптере с видео. тоже какдеться Plush.
Приеду домой начну активно тестить прошивку на хексе, предварительно излечив сильные вибрации.
тайминг 400
Здесь иммел в виду тайминг регуля Low,Mid,High
(про экспоненты, ткните носом как, если не сложно )
Это от пульта зависит. Сомтрите мануал на ваш пульт или прошивку пульта (если шили). На видео вроде у вас Turingy 9X или аналог.
Алекс а какой refresh rate стоял в 2.0.49 на моторы? по памяти не скажите?
Здесь иммел в виду тайминг регуля Low,Mid,High
“Mid”, ставил с программатора
аппа FrSky 9Ch
поставил прошивку из SVN, включил инстант пвм, rate p 0.090 и 400мгц выставил скорость pwm… летает =) только реакции на стики не хвататает (или наоборот перебор, не пойму пока, но при дергании стика коптер довольно резко дергается в сторону наклона) и дефолтный P явно надо поднять
буду мучить и тестить сейчас 😁
пруф видео, задрал stabP о 5.6, держится отлично
после второго взлета видно как резко дергается при отлонении стиков (может кривые надо настроить на roll/pitch?)
пиды (больше для себя, мало ли нахимичу):
udp: stabp=6 - стало еще лучше ^_^
поставил прошивку из SVN, включил инстант пвм
Если INSTANT_PWM включен, бесполезно менять скорость регулей, этот параметр не используется.
Большое спасибо за видео и пиды познавательно. Мне вот интресно есть ли в пирате то-то типа Rc Rate в мультиви. Поведение коптера на видео чемто напомнило поведение оригинального APM2. Я имею в виду резкую реакцию на стики.