чтобы не окирпичить девайс, не надо отключать входящий протокол на вкладке PRT. А то модуль может перестать реагировать на команды. Китайский модуль имеет только уарт распаянный, но в настройках можно включить и остальные протоколы, например второй уарт или i2c и отконфигурить отдельно. Судя по даташиту они работают независимо то есть можно управлять по i2c, а считывать координаты по UART.
Multiwii - это проект для которого разрабатывают железо и софт ( производитель Hextronic ) ( в данном случае плата называется Multiwii and Megapirate AIO Flight Controller w/FTDI (ATmega 2560) V2.0 )
ArduCopter - название проекта, для которого разрабатывали железо и софт ArduPilot Mega ( APM ) - это конктретный полетный контроллер проекта ArduCopter // MiniAPM ( мини ардупилот мега ) - мини полетный контроллер ( http://ardupilot-mega.ru/ )
Там мега_8. Бут там свой. Программой kkmulticopterflashtool надо прошивать. Выбрать ESC with bootloader, bs_nfet прошивка И кондеры сдуй, три штуки, с краю, на углу там стоят, увидишь, без них быстрее отклик.
Я заказал вот такой регуль TURNIGY Plush 30А ( купил б/у - все дело в цене )
1) б/у ZIPPY Flightmax 5000mAh 6S1P 30C - http://www.hobbyking.com/hobbyki....t=59720 С одной дохлой банкой. Сейчас переделаю его в 4s ( отпаяю две банки ) и буде коптер на нем летать 20 минут
Мои регули TURNIGY Plush 30А Как видно из таблицы таких регулей бывает два типа: (Plush / Flyfun) и (Plush / Flyfun NFET )
в таблице есть фотки, по которым можно определить какой именно у вас регуль. Первый из регулей оказался Plush / Flyfun NFET ( остальные нужно проверить!! возможно вовсе другие )
Теперь идем на сайт человека с ником OlliW http://www.olliw.eu/2012/owsilprog/ и качаем последнюю сборку ( zip-архив ) для самодельного программатора в разделе Latest Firm- and Software я качаю вот такую owSilProg BLHeliTool BLHeliBox v20131027
самодельный программатор я сделал из платы Arduino-Pro-Mini с микроконтроллером ATmega328P на борту датащит на 328ую мегу http://www.atmel.com/images....ete.pdf прошивку залил такую owsilprog_v120_m328p_16mhz_pb3pb4 смотрите в архиве hex_dlya_progra.zip прошивал ATmega328 с помощью SinaProg так как AVRDUDE не берет этот МК в силу каких то причин.. ( скачать можно тут https://dl.dropbox.com/u/26973339/blheli/SinaProg.zip ) контакты для подключения к SiLabs pb3 и pb4 ( это видно из названия )
Программатор для SiLabs готов!
Теперь нам нужна программа-программатор для прошивки SiLabs Открываем тот же ZIP-архив с нашей сборкой и ищем там программу BLHeliTool_v122.exe Нашли? Отлично! Запускаем!
Подключаем переходник FT232 к нашему самодельному программатору через UART ( регуль пока не подключаем! ) В нижнем левом углу окна программы выбираем нужный ком порт. Жмем "READ" видим:
Код
Нажимаем Read. В итоге должны получить что-то вроде: Read... Please wait! delay... OK v... OlliW SilProg v0.08 PB3PB4 r... rok d... Connection to target FAILED!
Значит программатор исправен и готов к работе!!!!! :D Если хоть буковка не совпадает - значит что программатор не отвечает.
Но не тут то было - нужной прошивки нет в списке!!!! ( есть, но не для N-канальных модулей ) Теперь вернемся к тому, где я раньше показал нужный исходник прошивки... Теперь два варианта: либо копаем в этом же направлении и ищем нужный hex-файл либо качаем другую сборку ( от другого автоора ) программу - BLHeliSuite.exe
1) Загрузил в свою Pro-mini бутлодер Arduino ( С помощью среды ардуино ) 2) С помощью программы BLHeliSuite и переходника USB-uart ( ft232 ) прошил ардуино-про-мини и сделал из нее некий программатор для SiLabs микроконтроллера 3) подключил регуль к ардуино-про-мини через серво-разъем черный к земле белый к PB4 ( miso ) 12-ая гога платы про-мини красный к PB3 ( mosi ) 11-ая нога платы про-мини и никаких дополнительных проводов не нужно припаивать! 4) подключаем питание к регулю и мотор 5) жмем кнопку "read setup" ( тут определится используемый регулятор - УБЕДИСЬ, ЧТО ОН ОПРЕДЕЛИЛСЯ ВЕРНО! ) 6) жмем кнопку "flash BLheli" - "ok" - "yes" ( прошиваем регуль ) 7) после прошивки жмем "ок" - "no" 8) отключаем питание, а затем программатор
Собрал специальный импульсный преобразователь с линейным стабилизатором на выходе. Линейный стабилизаторв взял LowDrop L4940V5 http://www.st.com/web....442.pdf Падение напряжения на нем сопоставляет: при токе 0,5А от 200 до 400 мили Вольт при токе 1 А примерно 450 мили Вольт при токе 1,5 А от 500 да 900 мили Вольт
Если посчитать по максимальному току, то на линейном стабилизаторе падение напряжения составит 0,9 Вольта. А это значит, что импульсный стабилизатор должен выдавать на вход линейного не меньше 5,9 Вольт При таком раскладе, нужно установить подстроечный резистор равный 850 Ом.. У меня такого не нашлось и я соединил последовательно 300+510+12=822 Ома ( позже заменю на SMD - попробую 825, 845 и 866 Ом - код товара 22205, 108130 и 22278 ) При этом импульсный стабилизатор стал выдавать 5,8 Вольта, чего должно хватить, ведь у нас в цепи будет протекать ток малого значения, а это в свою очередь означает, что падение напряжения на линейном стабилизаторе будет минимально и он будет работать как положено - преобразуется остатки в тепло...
Собрал, измерил напряжение ЭДС ( без нагрузки ) своим китайским мультиметром, получился результат, равный 5,01 Вольта. Если питать через разъем PowerModule, то падение напряжения на защитном диоде, встроенном в АПМ, составит 0,3 Вольта и напряжение на самой плате составит 4,71 Вольта, что не допустимо мало! По этому питание будем подключать к разъему A1 ( перемычку JP1, при этом вставлять не нужно! Хотя и питание в таком случае на колодку OUTPUTS подавать не нужно... )
Регули прошитые BLHeli калибровать способом описанным в руководстве к APM 2.5 НЕ нужно Такие регули калибруются тем же способом что и прошиваются. То-есть через программу BLHeliSuite значения по умолчанию 1148-1832 милесекунд замечу, что было бы неплохо снять галочку с Programming by tx - это спасет от изменения настроек регуля через аппу.
На аппаратуре Turnigy с родными ВЧ модулями функция FS реализуется на значении 950 первый раз делал 990 - коптер не армился. потом исправил на 950 и заработало...
при потере сигнала приемник Turnigy по всем каналам нуль ( ну или некоторое очень мизерное значение, близкое к нулю ) при использовании данного приемника наблюдаются некоторые глюки при сработке фэйлсэйф - читайте ниже
NMEA Из официального издания AC 3.2rcXX исключили поддержку протокола NMEA из за недостатка места во flash памяти контроллера APM Разработчик программного кода Randy предложил исключить что либо другое из функционала чтобы освободить меcто под протокол NMEA. Козин решил, что самым емким и бесполезным выглядит код управления гимбалом. Он расчитан на управление подвесом на сервоприводах.
Бывает на частоте 433 МГц и на 915 МГЦ бывает с разными протоколами, но лучше использовать с протоколом MAVLINK ( подробнее тут - http://vg.ucoz.ru/forum/15-355-1 )
Для этих целей можно использовать модуль OSD ( наложение данных телеметрии на видео-изображение курсовой камеры )
А если мне понадобятся данные телеметрии в чистом виде, то я буду использовать обратный канал связи радио модулей аппаратуры управления Open Orange LRS 1W
Сейчас уже начал понимать что к чему и какой порядок настройки запишу пожалуй сюда 1) настраиваем акселерометр 2) настраиваем компас 3) настраиваем ПИДы а) полностью в ручную http://ardupilot-mega.ru/wiki/arducopter/tuning.html б) в ручную сточной подстройкой через крутилки пульта ( например "P"-параметр ) - http://apmcopter.ru/apm....ll.html в) автоматически - режим Autotune - http://ardupilot-mega.ru/wiki/arducopter/autotune.html и http://apmcopter.ru/apm....ne.html 4) Бывает такое, что коптер не держит горизонт, причиной тому могут быть следующие причины: неправильная калибровка гироскопа/акселерометра, нарушения геометрии рамы (лучи разной длины, установлены под разными углами), несоосность моторов, и разнотяг моторов по тем или иным причинам. ( Возможно сюда можно отнести случай, когда центр тяжести находится не в центре конструкции ) Для того что-бы такой аппарат все таки правильно держал горизонт его нужно тримировать. а) в ручную - режим SAVE TRIM - http://apmcopter.ru/apm/save-trim.html б) автоматически - режим AUTO TRIM - http://apmcopter.ru/apm/apm-setup/auto-trim.html 5) Перед каждым полетом я рекомендую настраивать компас. ( В разных точка земного шара - разное магнитное склонение )
Я так и не смог настроить ПИД с помощью автотюн!!!!
на заметку:
1) в инструкции от Юлиана есть оговорка, вот по этому нужно читать оригинальные мануалы !
Цитата
8. Установите переключатель канала в нижнее положение , а затем в верхнее, что бы проверить новые настройки PID.
А я не переключал, думал что после AUTOTUNE настройки сразу изменяются... Грубо говоря - летал на стоковых и думал, что это автотюн мне так аппарат настроил.
Хорошие значения калибровки — офсеты в районе нуля. Ну так же не плохо до +-50. Если больше, значит что-то постоянно влияет на компас (плохо или не плохо это — покажет полет). Чтобы добиться близких к нулю значений — плату и все окружающее надо размагнитить. Красная полоска — нос коптера. Она должна совпадать с положением коптера в пространстве. Т.е. поставили вы коптер точно на северный магнитный полюс и красная полоска должна показывать на север. После калибровки хорошо бы сделать тест на все 4 направления. Максимум отклонения должен быть не более 5°. Желтая полоска — направление на следующую точку, если задана автомиссия. Зеленая так понимаю связана с ROI — ниразу ее не видел. Черная — направление движения, рассчитанное от GPS. Если летите носом, то вот вроде красная и черная должна совпадать.
Моторы будут вращаться (медленно) по умолчанию, как только квадрокоптер будет снят с охраны (arming)! Вы можете поменять эту функцию, установив параметр MOT_SPIN_ARMED в ноль.
По идее, должно быть так: После того как сработал режим FailSafe по потере сигнала, включился режим RTL ( возврат домой ) Затем радиолинк востановился, но для того, что-бы вернуть управление нужно сменить полетный режим.. ( можно просто щелкнуть тумблером туда-сюда ) Но, я специально проверял: управление восстанавливается сразу после того как возобновляется сигнал!
Если выключить аппаратуру, то срабатывает ФэйлСэйф и включается режим возврата домой. Как только я включаю аппаратуру, то получаю полный контроль над управлением.
Приемник TURNIGY при появлении радиосигнала сначала выдает какое-то значение по всем каналам и только после этого выдает пакет с истиной информацией. АПМ видит изменение на пятом канале и думает, что я переключил полетный режим.
Взлетел до того как АМП зафиксировал спутники. Улетел подальше и включил режим RTL ( режим возврата домой ) Коптер совершил посадку в режиме LAND, в той точке, где он был, когда я включил режим Перед взлетом нужно убедиться что спутники зафиксированы. ( Или включить предполетную проверку 3D Fix )
Если график логов выходит за пределы допустимых значений, то открываем лог-файл блокнотом. Ищем там недопустимые значения и удаляем строку. Поиском ищем в текстовом редакторе зчачек "плюс" или букву "E" в числовых значениях IMU
Сейчас перенастрою регуляторы на нормальный диапазон. Думаю, что нужно сделать 1000-2000 милисекунд.
UART переходник нужно переключить на 3,3 вольта! Так как микроконтроллеры SiLabs трех вольтовые !
0) Качаем архив https://u.to/_EBpDQ <br / прямая ссылка https://u.to/pZ0jDw ) 1) Загрузил в свою Pro-mini бутлодер Arduino ( С помощью среды ардуино ) 2) В программе BLHeliSuite выбираем "D", что бы прошить ардуино в программатор 3) С помощью программы BLHeliSuite и переходника USB-uart ( ft232 ) прошил ардуино-про-мини и сделал из нее некий программатор для SiLabs микроконтроллера 4) подключил регуль к ардуино-про-мини через припаянные проводки черный к GND ( к земле ) белый к PB4 ( miso ) 12-ая нога платы про-мини красный к PB3 ( mosi ) 11-ая нога платы про-мини 5) подключаем питание к регулю и мотор 6) выбираем "B", что-бы прошить или настроить регуль 7) жмем кнопку "read setup" ( тут определится используемый регулятор - УБЕДИСЬ, ЧТО ОН ОПРЕДЕЛИЛСЯ ВЕРНО! ) 8) жмем кнопку "flash BLheli" - "ok" - "yes" ( прошиваем регуль ) 9) после прошивки жмем "ок" - "no" 10) отключаем питание, а затем программатор
// Если хотите прошивать через через один проводок ( однопроводной COM ), то это нужно делать через подменю с буквой "C" // А если хотите прошивать через серво разъем, то ардуино нужно перепрошить в другой программатор. Нужно выбрать подменю с буквой "C"
Изменил диапазон в регулях Теперь установлен 1000-2000 милисекунд
Один из регулей отказался работать в таком диапазоне. Пришлось диапазон немного снизить, но снизил с запасом. 1008-1992
параметр ACRO_YAW_P отвечает за максимальную угловую скорость по оси рыскания.
Преобразует вход рыскания пилота в желаемую скорость вращения в режимах ACRO, Stabilize и SPORT. Более высокие значения означают более высокую скорость вращения.
ATC_RATE_Y_MAX - maximum rotation rate in roll/pitch axis requested by angle controller used in stabilize, loiter, rtl, auto flight modes ( максимальная скорость вращения по оси крена / тангажа, запрашиваемая контроллером угла, который используется в режимах стабилизации, loiter, rtl, auto ) думаю тут речь идет об оси YAW, так как за roll/pitch отвечает параметр ATC_RATE_RP_MAX
ATC_SLEW_YAW - Maximum rate the yaw target can be updated in Loiter, RTL, Auto flight modes ( Максимальная скорость изменения цели рыскания может быть обновлена в режимах Loiter, RTL, Auto. )
Yaw axis rate controller P gain. Converts the difference between desired yaw rate and actual yaw rate into a motor speed output ( Регулятор скорости вращения оси рыскания P усиление. Преобразует разницу между желаемой скоростью рыскания и фактической скоростью рыскания в выходную скорость двигателя)
Слишком большой параметр стабилизации по курсу может вызывать нарушения стабилизации по уровню. По этому, на начальной стадии настройки, установленный по умолчанию параметр желательно уменьшить. Это особенно актуально, если на раме установлены максимально допустимые размеры пропеллеров. Например, если на раме с диагональю 550 установить 14-дюймовые пропеллеры то параметр уменьшают вдвое - иначе аппарат может даже кувыркнуться на старте. Если впоследствии вы сочтете, что курсовое управление не достаточно интенсивно - этот параметр можно увеличить..
Летел в Loiter. Улетел далеко - сработал FS и автопилот включил режим RTL. Автопилот привел коптер ко мне на той высоте, на которой он был. Я решил забрать управление себе. Щелкнул Stabilize, затем снова Loiter. А коптер вместо того, что-бы послушаться меня заглушил моторы и камнем пошел вниз. Уже на подлете к земле я успел щелкнуть Stabilize, но ему не хватило высоты и он разбился.
Сперва я подозревал, что сам накосячил. Я подумал, что в переключился в стаб, а стик газа был в это время на нуле. Но после просмотра логов увидел, что коптер начал падать в режиме "лойтер" Где в это время был стик газа - не помню... Аккум не был севший
у ардукоптера заложено в логику убирать throut в случае если углы достигают закритичных величин, если не ошибаюсь 90 град. т.е. теоретически если коптер встал боком или изза вибраций и ухода гироскопов мозг решил что он ушел за 90 градусов - throut упадет и моторы в авторижимах отключатся
Вот это уже интереснее, но отключение моторов произошло в режиме stabilize. Или Stabilize тоже относится к авторежимам ? ( он все таки задает автоматическое удержание горизонта ) Лог вибраций у меня есть. На нем видно что вибрации есть, но они в допустимом уровне. Ну и по поведению коптера я видел, что он возвращался удерживая горизонт. Думаю что сразу бы горизонт не ушел. Хотя...
Во время падения ( на полпути ) я включил режим стабилизации и моторы ненадолго включились. Коптер чуть мертвую петлю не сделал. Вычудил какой то странный пируэт - не могу описать словами, так как толком и не помню, но углы при этом были запредельные ( как раз под 90 градусов ) и снова отключил моторы. Если бы моторы не включились, то я бы не смог восстановить его. Этот маневр сильно погасил энергию падения.
ЦитатаКозин ()
у вас там совсем краткий переход в стабилайз, и возможно с нулевым газом на пульте, а потом долго идет лоитер, если включили стабилайз с нулевым газом то коптер мог начать свободное падение и к моменту лоитера быть за 90 градусами, при этом в лоитере моторы не включатся
Нужно убедится что подшипники плотно сидят в своих посадочных местах. ( https://vg.ucoz.ru/forum/30-181-6361-16-1589054107 ) При необходимости заменить мотор От греха можно вклеивать подшипники на резиновый клей-момент
не успеваю за своими мыслями......
Сообщение отредактировал uwrtey - Воскресенье, 10.05.2020, 01:05
фильр акселерометра в full parametr list = ins_mpu6k_filter
Козин рекомендует:
В случае если вибрации невелики, то для большинства аппаратов мы рекомендуем установить аппаратное подавление шумов от вибраций ins_mpu6k_filter=20, для полетов не связанных с измерением уровня вибраций...
для тестирования вибраций в ins_mpu6k_filter задать значение 43гц ОТ СЕБЯ ДОБАВЛЮ: Для тестирования виброаций фильтр должен быть отключен. Затем по ЛОГам смотрим на какой частоте вибраци от вмг И на эту частоту ( или ее гармонику ) включаем фильтр И затем перенастраиваем ПИД регулятор По факту в ЛОГах мы не увидим ни чего толкового. И фильтр придется подбирать методм исключения. Ну и не забываем перенастраивать ПИД каждый раз при изменении значения фильтра акселя
появился странный унитазинг взлетаю в стабе - все норм щелкаю в лойтер - все норм летаю в лойтере - все норм но стоит покрутить коптер по YAW несколько раз туда-сюда, как он тут же начинает унитазить...
Проверю магнитное склонение проверяем магнитное склонение - https://u.to/rE7KDw в 2017 показывает 14,90° = 14°54'!!! // для 2020года 15°8' (15.13°) надо бы изменить, а то у меня 15 градусов 30 минут... ( 15,5 градусов ) При этом пересчитываются градусы/минуты в радианы и заносятся в параметр COMPASS_DEC ( который находится в ФуллПараметрЛист ). Именно он и меняется, когда мы крутим магнитуду по крутилке.
Я сделал неоднозначный вывод: ( http://forum.apmcopter.ru/threads....t-34690 ) Причина тряски и желе сам АПМ. Ведь включая фильтр, я ни коим образом не смог-бы избавится от вибрации, источник которой - дисбаланс в винтомоторных группах. Значит, это АПМ сам себя раскачивает.... Нет, я ни в коем случае не спорю, возможно первоисточник - это, все-же, дисбаланс винтомоторных установок, но влияние на тряску камеры у него косвенное. То-есть, возможно, аксель чувствует вибрацию с винтомоторных установок и пытается ее компенсировать регулируя скорость вращения этих моторов, что приводит к раскачиванию самого коптера... Итак, какие методы решения я вижу: 1) динамическая балансировка винтомоторных групп до идеального состояния 2) установка фильтра на аксель ( ins_mpu6k_filter ) 3) более точная настройка ПИД регуляторов в АПМ 4) Виброизоляция полетного контроллера ( Мне кажется Козин этому больше внимания уделил, у него кстати можно заказать силиконовые изоляторы, а то двусторонний скотч на морозе тоже замерзает )
Вполне может быть что ПИД регуляторы АПМ входят в резонанс с ПИД регуляторами подвеса
Можно я попробую? Спасибо!!! ) Дело в том, что для Ваших контроллеров это почти неактуально... А вот для контроллеров от DJI - вполне... У них максимальный угол наклона около 25 градусов, вот они и пошли на хитрость, чтобы не лопатить алгоритмы. Тут все дело в векторах тяги. Нарисуйте на бумажке стилизваный коптер в профиль и сделайте выкосы в 10 градусов, а потом понаклоняйте рисунок в вооброжаемые стороны полета... Допустим, вперед на те же 10 градусов, получается, что передние пропы почти горизонтальны и вектор их тяги направлен вертикально(коптер лучше держит высоту), а задние пропы наклонены вперед аж на 20(10+10) градусов, таким образом достигается высокая горизонтальная скорость при малых углах наклона... еще один момент - парусность. В случае коптера без выкосов, при горизонтальном полете все пропы наклонены одинаково к потоку воздуха, а в случае выкосов, часть пропов оказывается ребром к потоку, уменьшая тем самым сопротивление... Этот вопрос, на самом деле, спорный, потому что остальные пропы больше наклонены к потоку... Оставим этот вопрос теоретикам...) И, главный момент, вся эта фигня справедлива для окты, на крайняк - для гексы. На квадриках, ИМХО, бессмысленна...)