ArduCopter Mega: порт на обычную Arduino (тестим)
Но потом перестал опять армиться…
Отпишусь о своей эпопее…
Основная проблема была в том. что при калибровке аппы(FlySky FS-TH9B 2.4G 9CH System ( TX+ RX)) стик Yaw уходил на максимум больше, чем положено, причём в максимальном режиме был довольно высокий шум(расхождение в 15-20 ед.) из-за этого в крайнем правом положении уровень частенько опускался немного, либо не доходил до максимума калибровки - видимо это и стало проблемой арминга, когда стик в правом нижнем положении. Вышел из положения перекалибровкой аппы с уменьшением максимального положения на 30 ед(не доводил стик при калибровке)
Пока тестировал, усадил 2 акка по 3300, взлетает при 45-50% газа, насчёт стабильности пока не выяснил всех нюансов и пидов(занизил согласно инструкции, стал намного стабильнее, но пока не то…)
Следующие этапы:
- сборка шилда на плате, подключение к ней по нормальной схеме датчиков и всей периферии
- виброизоляция и защита всего мозга вместе с датчиками
- прикручивание к системе эхолота(Arduino Ultrasonic Module HC-SR04 Distance Measuring)
Вопрос немного не по теме: Заряжаю липольку 3300mah током 0.4А в режиме балансировки, когда считать, что батарея зарядилась?:
- на каждой банке по 3.7~3.8В
- время зарядки 3300/400 = 8.25ч
Вопрос немного не по теме: Заряжаю липольку 3300mah током 0.4А в режиме балансировки, когда считать, что батарея зарядилась?:
когда на одной из банок (в идеале на всех) на минимальном токе который может выдать зарядка будет 4,2 вольта …
заливать током от 0,5с ( в вашем случае 1,6а) когда некуда торопиться или 1С (3,3а) когда нужно быстрее … при подходе к порогу 4,2 вольта зарядка должна начать уменьшать ток не допуская повышения напруги выше 4,2 вольта и так вплоть до минимума тока , после чего должна остановить цикл заряда …
Заряжаю липольку 3300mah током 0.4А
и это при том что ток заряда должен быть 3.3A для обычных аккумов или до 5С (5*3.3) для нанотеков
чего бы крутануть, чтобы на 2.0.49 не так резко коптер реагировал на стики, т.е. сейчас чуть отклонишь, а он уже наклоняется сильно, отпускаешь - резко в горизонт, аж до небольшой осциляции
Там есть какой то косячок с определением координат GPS (врет метров на 600-1км)
С какой версии это началось?
Я на 2.6 редактированной, на четверке и на шестерке летаю - супер!
Какие используете датчики, железо? И что редактировалось в коде, если не секрет?
Какие используете датчики, железо? И что редактировалось в коде, если не секрет?
АРМ1 Я свою разьвел, а то коптеров много )), на все не накупишся -так дешевле!
По поводу пидов - как новое железо включаю, все по дефолту записывается.
Со всеми рамами летает нормально только P и D подкрутить надо, в основном вниз!
Также Лойтер настроить но это уже к ГПС!
Редактировал - я уже писал, добавил фильтры на моторы, маштабирование сигнала (первостепенно выравнивание),ну и так по мелочи - калибровку компаса, полетными режимами дрыгаешь и вкл, а трещит пищалкой (как у немца) и тд.
На фото с права родной!
Ох как бы не стало так что 2.0.49 будет последняя летаюшая прошивка
Хм… а вот интересно, прошивко “до портирования” летабельны более поздние? Косяки портирования вылазят, или все же дело в железе?
АРМ1 Я свою разьвел
у нас тут не APM, а обычная ардуинка (т.е. одна атмега и датчики по i2c заведены) с платкой неких датчиков
APM насколько я помню сделан на 2х атмегах + датчики заведены через SPI
настроил сегодня P, висит отменно, если нет ветра - почти не дрейфует (2.0.49), но подвес работает совершенно не адекватно, и работает только когда к компу платка подключена, как буду дома - поковыряю код подробнее + хочется добавить некоторые фишечки из multiwii (например комбинации стиков для настройки)
а кстатии failsafe добавлен в новые прошивки (вроде бы давно писали что приемник перестает сигналы отдавать контроллеру, в multiwii это работает)?
у нас тут не APM, а обычная ардуинка (т.е. одна атмега и датчики по i2c заведены) с платкой неких датчиков
APM насколько я помню сделан на 2х атмегах + датчики заведены через SPI
…
ААА ну сори!
Вобще я одну атмегу разьвел 2560 и подаю ППМ СУМ, вторая в АРМ декодер.
Вот видео, там в конце два тела летящих в небе увидел, что это до сих пор гадаю???
Хм это он у тебя в стаб моде такой резвый, или в акро летал?
Хм это он у тебя в стаб моде такой резвый, или в акро летал?
Да в стабе.
А что в прошивке то наменял, что не у кого не летает, а у тебя так зачетно пархает 😃?
А что в прошивке то наменял, что не у кого не летает, а у тебя так зачетно пархает ?
ничего он не менял, человек скопировал оригинальный ардукоптер под свои размеры
Доброго времени суток!
прошивка 2.6r3
попробовал прикрутить эхолот:Ultrasonic Module HC-SR04 Distance Measuring
вопросы:
- К каким контактам подключать правильно? (D9,D10)?
- Какой тип датчика выбрать, ато показывает неправильно расстояние(такое ощущение, что в дюймах, хотя пишет в см…)
- Как можно проверить сонар (какой режим, Alt Hold) и как правильно настроить удержание по-высоте и при каких условиях он включается?
- При полёте постоянно приходится доруливать в одну сторону(и в акро и в стабе), чтобы не упал(доруливаю вправо), что крутить? (датчики откалиброваны, стоит при старте по-горизонтали)
кто нибудь летает с подвесом с сервами на 2.0.49?
какая то непонятная странность у меня (сервы аналоговые), при подключении через usb - сервы нормально работают, но слабо (0.5A всетаки у usb только), при подключении основного питания сервы тупо подрагиваются и не стабилизируют ничего в полете, при этом добавляя очень быструю и паразитную тряску
ничего он не менял
В оригинальном арду 2 меги, одна делает все то же что и у нас, а вторая лишь из PWM делает PPM_SUM, правильно? Вот интересно, не ужели PPM_SUM жрет столько ресурсов??? Я понимаю если бы одна мега работала только на обработку данных с датчиков чтоб не сбивался алгоритм на всяких других задачах, а другая все остальное…
а еще датчики подключены по шине SPI, если память не изменяет, а у нас через i2c всё
Хм… и в чем приемущество? Не думаю что SPI шина быстрей работает… Интересно какое время исполнения у них быстрого цикла?
Входы выходы на других пинах? Мне по идее PPM_SUM делать не надо, могу его сразу с приемника послать, плату датчиков то же повесить куда угодно, может попробовать оригинальную прошивку, раз на ней все так хорошо и радужно 😃
может попробовать оригинальную прошивку, раз на ней все так хорошо и радужно
только у нас нет ни логера, ни spi датчиков ни еще какой нибудь приблуды =)
я тут кстаии failsafe ночью начал вкорячивать, щас глянул на код и понял что он сработает только если приемник работает, а не если не работает ^_^ эх, зря до 3 ночи сидел
понять бы как часто read_radio() вызывается… сколько там по времени фаст луп идет?
ничего он не менял, человек скопировал оригинальный ардукоптер под свои размеры
Что менял, написал, в основном это обработка сигнала на моторы фильтры и тд!
Железо тоже, за исключением пары штук, просто давно с 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), так вот, они вызывались все в момент срабатывания таймера и могли просто не успеть считать все значения до вызова следующего таймера. В новой версии будет вызываться только один драйвер за один вызов таймера.