MultiWii

chanov

Порылся в закромах и спаял Multiwii из Nano и GY_80 10 DOF (L3G4200D ADXL345 HMC5883L BMP085, LLC) китайской. Собрал трёшку … Подскажите почему при арминге движки запускаются, да ещё с нехилыми оборотами … ковырял уже 3 разных контроллера и вот при арминге запуск увидел только на мультивии.
Проблему усугубляет что движки 1400кв с пропами 8 на 4,5 - рвут как болид формулы 1 =)

Что то тут надо подправить видимо?:

/**************************** Motor minthrottle *******************************/
/* Set the minimum throttle command sent to the ESC (Electronic Speed Controller)
This is the minimum value that allow motors to run at a idle speed */
//#define MINTHROTTLE 1300 // for Turnigy Plush ESCs 10A
//#define MINTHROTTLE 1120 // for Super Simple ESCs 10A
//#define MINTHROTTLE 1064 // special ESC (simonk)
#define MINTHROTTLE 1150

/**************************** Motor maxthrottle *******************************/
/* this is the maximum value for the ESCs at full power, this value can be increased up to 2000 */
#define MAXTHROTTLE 1850

/**************************** Mincommand *******************************/
/* this is the value for the ESCs when they are not armed
in some cases, this value must be lowered down to 900 for some specific ESCs, otherwise they failed to initiate */
#define MINCOMMAND 1000

p/s а ход стиков аппы как нибудь калибруется как например на АРМ мозгах? Или тут нет такого?
p/p/s #define MINTHROTTLE 1150 уменьшал до 1050 … таже картина (

DVE

Motor_stop ищите

Мне тоже непонятно зачем по умолчанию включено, всегда выключаю.

dROb
DVE:

Motor_stop ищите

Мне тоже непонятно зачем по умолчанию включено, всегда выключаю.

#define MINTHROTTLE 1150 - сделайте поменьше.
А запускаться при арме они должны, и работать после этого постоянно. Сделано это, чтобы моторы не потушились в воздухе (это чревато тем, что для запуска обратно им может понадобиться некоторое время, которое приведет к крашу)

chanov
dROb:

#define MINTHROTTLE 1150 - сделайте поменьше.
А запускаться при арме они должны, и работать после этого постоянно. Сделано это, чтобы моторы не потушились в воздухе (это чревато тем, что для запуска обратно им может понадобиться некоторое время, которое приведет к крашу)

Как то логику не понял … как моторы выключатся? При минимальном газе что ли? Так это нормально … все известные мне контроллеры так работают … ЧуднО как то … или это такой колхозный фэйлсев?
p/s #define MINTHROTTLE 1150 А это в каких попугаях кстати? Обороты в минуту? Тогда 30 поставлю - самое оно =)

Probelzaelo
chanov:

//#define MINTHROTTLE 1300 // for Turnigy Plush ESCs 10A

Определитесь при каком минимальном значении стартуют ваши регули(моторы) и какой минимальное число дает аппаратура при стике в упор.
Значение MINTHROTTLE должно быть больше вашего минимального но меньше минимума для регулей.
Тогда у вас будет гарантия что при удержании стика на минимуме моторы не будут запущены, но при движении стика запустятся уже на минимальных оборотах которые способны. Сейчас у вас они стартуют при значении 1150, а это видимо, уже далеко не минимум на который они смогут запуститься…

Проще. Допустим, при движении стика от мин до макс значение колеблется от 900 до 2200. MINTHROTTLE указан 1150
значит, при движении стика вперед. На регуляторы “не будет подаваться” управляющего, канального импульса. Но как только положение стика окажется соответствующим значению 1150, канальный импульс сразу пойдет на регули, как бы “прорвало” и поперло… А это значение может соответствовать и 5% и 40% от максимальной тяги, все зависит от того какой именно минимум понятен именно вашим регулям, .
Главное. Этот параметр нужно указать исходя из характеристик своих регулей, а не из авторских догадок и соображений.

chanov:

А это в каких попугаях кстати?

Это длительность канального импульса. В мкс, с попугаями ни чего общего )

chanov
Probelzaelo:

канальный импульс сразу пойдет на регули, как бы “прорвало” и поперло… А это значение может соответствовать и 5% и 40% от максимальной тяги, все зависит от того какой именно минимум понятен именно вашим регулям,

Вчера это и произошло при тесте в руке над головой, чтоб понять как отрабатывает контроллер … в итоге порезало мне локоть и руку чутка … слишком лёгкий и слишком мощный получился агрегат, да и опыта небыло с мултивием, вот и поплатился …

gorbln
chanov:

в итоге порезало мне локоть и руку чутка … слишком лёгкий и слишком мощный получился агрегат

Уже, наверное, сто раз спрашивал при таких вопросах, но всё же: а регуляторы ТОЧНО откалиброваны? и чем. Минтроттл убавлять до 1050-1100 - это нормально. По объяснению создаётся ощущение, что у вас реги так откалиброваны, что 1100 это минимум а 1200 максимум =) А должно быть 1000/2000

dROb
chanov:

Вчера это и произошло при тесте в руке над головой, чтоб понять как отрабатывает контроллер … в итоге порезало мне локоть и руку чутка … слишком лёгкий и слишком мощный получился агрегат, да и опыта небыло с мултивием, вот и поплатился …

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

  1. Чтобы не было случаев, аналогичных Вами описанных (или, когда вы например заармили, но забыли об этом, и сели на стик газа, дав полный газ. Я, например, человек не очень аккуратный, у меня тысячу раз бывали ситуации, когда на включенном питании я на самолётах и вертолётах, и один раз на квадрике с КапитанКуком давал газ. На квадрике это могло окончиться очень плохо - рядом был ребенок, и мне пришлось ловить руками работающий на полную мощь коптер. Руки пострадали)
  2. Когда коптер, например, снижается, на некоторые из моторов/регулей может быть подан низкий сигнал, что заставит регулятор перейти в режим “мотор выключен”, и когда сигнал вновь вырастет до некоего порогового значения - регуль примет это как включение мотора и, (если это не специальные регули SimonK), будет запущена некая процедура запуска мотора (быть может это займет долю секунды, а для каких то регулей может и больше). Всё это дело будет отличаться от стандартной ситуации когда мотор вращается, а вы просто увеличили газ. Опять же, не факт что всё это приведет к крашу, но однозначно - для коптера и его регулей - это нескольно нестандартный режим, и лучше его избегать. (у меня, например, было пару случаев, когда мотор вообще раскочегаривался при старте секунду или две. И я бы избегал перехода из режима “мотор стоп” и “мотор старт” прямо посреди полёта)

P.S. Знаю, что много народу летает так, что при арминге моторы молчат (в т.ч. вы правы, что так, вроде, было и в ККкоптере), но мне кажется это чуть менее рационально. Не говоря о том, что если понаблюдать за логикой самого мультивия при арминге, становится ясно, что такова и была задумка. (до арминга на моторах - нули, после - MINTHROTTLE)

Probelzaelo
dROb:
  1. Чтобы не было случаев, аналогичных Вами описанных

При включении питания или при арминге моторы должны стоять! НЕЗАВИСИМО от положения стика газа. Для пуска моторов, нужно “газом” посетить ноль, и потом пойти вверх и пересечь значение MINTHROTTLE. С таким алгоритмом проблема номер один пропадает автоматом.

dROb:
  1. Когда коптер, например, снижается, на некоторые из моторов/регулей может быть подан низкий сигнал, что заставит регулятор перейти в режим “мотор выключен”,

При уже работающих моторах газ вполне может быть и ниже, но моторы при этом совсем не обязательно должны выключаться. снимать с регулей канальный импульс сразу после MINTHROTTLE ни кто не заставляет. Но снимать его надо! и снимать обязательно одновременно со всех, не дожидаясь того момента когда регули сами начнут отрубаться по одному… а они сами никогда не отрубятся одновременно благодаря элементарному разбросу во внутренних параметрах процессоров регулей они работают как правило на не кварцованных частотах калибровать их врядли кому то приходило в голову… Думаю что не нужно обьяснять ни кому что получится если моторы будут останавливаться в разнобой…

dROb:

становится ясно, что такова и была задумка. (до арминга на моторах - нули, после - MINTHROTTLE)

Задумка описана в комментарии config.h multiwii
/**************************** Motor minthrottle *******************************/
/* Set the minimum throttle command sent to the ESC (Electronic Speed Controller)
This is the minimum value that allow motors to run at a idle speed */

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

Однако есть еще один момент:
/**************************** Mincommand *******************************/
/* this is the value for the ESCs when they are not armed
in some cases, this value must be lowered down to 900 for some specific ESCs, otherwise they failed to initiate */

Тот минимум который “висит” на регулях пока коптер в состоянии “дизармед”.

Про него тоже нельзя забывать.

gorbln
Probelzaelo:

При включении питания или при арминге моторы должны стоять! НЕЗАВИСИМО от положения стика газа.

Вы сами себе противоречите. При арминге, ну то есть, после него - двигатели должны управляться от ручки газа. Так что, моё мнение - после арма - в целях безопасности, движки ДОЛЖНЫ крутиться. Чтобы юзер видел, что коптер “взведён”, и приближаться к нему и уж тем более брать в руки - чревато.

chanov
gorbln:

Уже, наверное, сто раз спрашивал при таких вопросах, но всё же: а регуляторы ТОЧНО откалиброваны? и чем. Минтроттл убавлять до 1050-1100 - это нормально. По объяснению создаётся ощущение, что у вас реги так откалиброваны, что 1100 это минимум а 1200 максимум =) А должно быть 1000/2000

Вот сказали и призадумался … я калибровал через строчку в конфиге, но думаю надо руками через 3ий канал сделать - как то по старинке, надёжней что ли =)

gorbln:

Вы сами себе противоречите. При арминге, ну то есть, после него - двигатели должны управляться от ручки газа. Так что, моё мнение - после арма - в целях безопасности, движки ДОЛЖНЫ крутиться. Чтобы юзер видел, что коптер “взведён”, и приближаться к нему и уж тем более брать в руки - чревато.

Кстати, а на каких контроллерах заводятся так же как на мультивие то? Я использовал KK2, Rabbit, APM1 (APM2.5) так на них нет подобного …

gorbln
dROb:

до арминга на моторах - нули, после - MINTHROTTLE

Не нули, а MINCOMMAND. При этом значении регулятор должен проинициализироваться (не входить в режим калибровки и всякое такое) - но крутить движками не должен.

dROb

Насколько я начинаю понимать, мы с вами говорим о разных вещах: я - о том, как есть и должно быть сейчас в Multiwii, а Вы о том, как должно быть по-правильному? Или, данный метод арминга, указанный вами ниже, уже есть в Мультивие? может я что-то упустил…

Probelzaelo:

При включении питания или при арминге моторы должны стоять! НЕЗАВИСИМО от положения стика газа. Для пуска моторов, нужно “газом” посетить ноль, и потом пойти вверх и пересечь значение MINTHROTTLE. С таким алгоритмом проблема номер один пропадает автоматом.

Никак не могу понять, как данный метод арминга может гарантировать безопасность? Что если вы уже случайно сделали первую часть арминга (посетили газом ноль), и после этого задели рычаг и пересекли MINTHROTTLE, причём, например, не просто пересекли, а сразу до упора?

Probelzaelo:

При уже работающих моторах газ вполне может быть и ниже, но моторы при этом совсем не обязательно должны выключаться. снимать с регулей канальный импульс сразу после MINTHROTTLE ни кто не заставляет. Но снимать его надо! и снимать обязательно одновременно со всех, не дожидаясь того момента когда регули сами начнут отрубаться по одному… а они сами никогда не отрубятся одновременно благодаря элементарному разбросу во внутренних параметрах процессоров регулей они работают как правило на не кварцованных частотах калибровать их врядли кому то приходило в голову… Думаю что не нужно обьяснять ни кому что получится если моторы будут останавливаться в разнобой…

Мне кажется вы неверно понимаете логику работы регулей. Регули, по мере снижения импульса ниже определённого значения, остановят движки, а после повышения - запустят снова. Отсутствие же канального импульса вообще - равносильно для большинства регулей потере сигнала, или неподключенности к приемнику/контроллеру (большинство регулей начнут попикивать). Мультивий всегда отправляет некий импульс на все движки (в разармленом состоянии в т.ч.), а при арминге увеличивает сигнал до MINTHROTTLE.

Probelzaelo:

Задумка описана в комментарии config.h multiwii
/**************************** Motor minthrottle *******************************/
/* Set the minimum throttle command sent to the ESC (Electronic Speed Controller)
This is the minimum value that allow motors to run at a idle speed */

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

Однако есть еще один момент:
/**************************** Mincommand *******************************/
/* this is the value for the ESCs when they are not armed
in some cases, this value must be lowered down to 900 for some specific ESCs, otherwise they failed to initiate */

Тот минимум который “висит” на регулях пока коптер в состоянии “дизармед”.

Про него тоже нельзя забывать.

А здесь неправильное трактование (и перевод, собсно). Первое значение (перевод), это “Минимальное значение, отправляемое на регули, позволяющее им крутиться на холостом ходу”
А вторая переменная, как раз то, про что я говорил чуть выше - минимальное значение, отправляемое на регули, чтобы дать им понять, что они подключены к контроллеру (канальный импульс присутствует), но находятся в режиме “стоп мотор” (газ на нуле).

Probelzaelo
gorbln:

Вы сами себе противоречите.

Я не противоречу себе, просто вы не поняли главного, либо не дочитали. После подключения питания на коптер, движки должны запускаться только после того как стик газа пересечет минтротл от нуля в сторону повышения, те когда вы сознательно прибаляете газ с полного минимума и переходите стиком через точку запуска. Положение стика в момент включения электропитания должно игнориться до тех пор, пока газ не побывает в “нуле” кстати такой алгоритм присутствует непосредственно во многих регулях. Это правило безопасности, позволяющее остаться при целых руках и пальцах при подключении к модели батареи. иначе есть риск получить гору фарша еще дО того как успеешь сообразить, что газ то не убавлен!

dROb:

мы с вами говорим о разных вещах:

Не исключаю.

dROb:

как данный метод арминга может гарантировать безопасность?

я токо что уточнил что я имею ввиду, предыдущему оратору.

dROb:

Что если вы уже случайно сделали первую часть арминга (посетили газом ноль)

вероятность события сразу двух случайностей подряд очень сильно снижает риск. разумеется если сидеть на стике и одновременно ковырять провода это не решит проблемы.

dROb:

А здесь неправильное трактование (и перевод, собсно).

Переведите правильнее. смысл не уйдет далеко.

gorbln
Probelzaelo:

Положение стика в момент включения электропитания должно игнориться до тех пор, пока газ не побывает в “нуле”

Так оно и игнорится. Мы точно про мультивий тут с вами разговариваем? Положение стика в момент включения питания вообще в расчёт не принимается. Арм делается стиком, и делается он так: стик газа в минимум (!) - этот минимум должен быть меньше, чем MINTHROTTLE, и YAW максимально вправо. Именно после этого - движки начинают крутиться на холостых оборотах. Так чтобы они начали крутиться - надо газ-то полюбому вниз опустить. Есть ещё арм выключателем - ну, тут я логикой не интересовался, однако уверен, что если попытаться заармить коптер выключателем когда газ в максимуме - арм не произойдёт.

Probelzaelo
dROb:

А вторая переменная, как раз то, про что я говорил чуть выше - минимальное значение, отправляемое на регули, чтобы дать им понять, что они подключены к контроллеру (канальный импульс присутствует)

Я так понимаю что другими словами, но смысл примерно тот же. не очень много меняется от этого. Я лишь хотел обратить внимание на то, что про Mincommand забывать не надо и при значении указанном в этом параметре некоторые регули могут запросто поехать …

Самое главное в обоих случаях это зависимость от конкретных регулей. И что эти значения нужно брать не с потолка и врядли возможно из готового “справочника”.

gorbln:

Так оно и игнорится.

А я про что? Мне только не ясным стало как так получилось, что человек себе порезал руки слегка. Вернее в принципе как раз понятно что MINTROTLE оказался сильно выше чем нужно было, остальное уже рассуждения около темы.

gorbln:

Так чтобы они начали крутиться - надо газ-то полюбому вниз опустить.

Ну правильно. Для чего это именно так я и пытался вкратце порассказать.

dROb
Probelzaelo:

Переведите правильнее. смысл не уйдет далеко.

Олег, ну чесслово, перевел же выше 😃 Кратко и вроде ёмко.

А по армингу. Давайте взвесим вероятности отрубания пальцев на высокой скорости вращения пропов коптера:
Текущий арминг “по Мультивию”:

  1. Стик YAW Вправо
  2. Стик THROTTLE Вниз. Моторы крутятся (если это было сделано случайно - то реакция человека - алярм!)
  3. Стик THROTTLE в диаметрально противоположном направлении - Максимум (резкий взлёт с отрубанием членов)

Ваш вариант:

  1. Стик THROTTLE вниз. Тишина.
  2. Стик THROTTLE вверх. Взлёт и отрубание членов без предупреждения.
Probelzaelo:

А я про что? Мне только не ясным стало как так получилось, что человек себе порезал руки слегка. Вернее в принципе как раз понятно что MINTROTLE оказался сильно выше чем нужно было, остальное уже рассуждения около темы.

Да, похоже высокий MINTHROTTLE, и, как сказал Егор, возможно неправильно откалиброваны регули.
Задумался тут - а что если первая проверка коптера была бы не в комнате, а на улице? 😉 Досадно было бы увидеть свой первый коптер, улетающий на холостых в небо 😄

chanov
Probelzaelo:

Мне только не ясным стало как так получилось, что человек себе порезал руки слегка. Вернее в принципе как раз понятно что MINTROTLE оказался сильно выше чем нужно было, остальное уже рассуждения около темы.

Я думаю у меня наложилось MINTROTLE на криво сделанную калибровку … в итоге после прибавления газа чутка он стартанул как минимум на 1 регуле в полную и поэтому крен на правый бок с переворотом и зацепил мне руку … Надо быть аккуратнее, тем более на новых контроллерах, где есть свои тонкости …
p/s остался вопрос где брать это MINTROTLE. Например у меня сейчас плюши 30ки, пока не шитые, лень было … но потом перешью на BLHeli … и вот этот MINTROTLE изменится насколько я понимаю … его методом тыка настраивать без пропов?

Probelzaelo
dROb:

Ваш вариант: 1. Стик THROTTLE вниз. Тишина. 2. Стик THROTTLE вверх. Взлёт и отрубание членов без предупреждения.

Боюсь что это уже перебор )))

Мой “вариант” лишь о том что случайного пуска не должно быть.
А пункт 2 это уж совсем не был предусмотрен. ибо я не предлогаю делать Педаль в пол ))))) и запуск при арминге на самых малых оборотах это как раз вполне логично обьяснимый алгоритм действия.

Мы тут расходимся в главном, вы пишете о том как делается, а я почему так должно быть. “об однОм мясе спорите…”(с)Chappi

chanov:

Я думаю у меня наложилось MINTROTLE на криво сделанную калибровку

“Смешались в кучу, кони люди…”
MINTROTLE видимо оказался по значению заметно выше чем нужно, и тяги хватило для того чтобы не усидеть на месте. А калибровка видимо добавила хаоса со своей стороны.

mahowik
gorbln:

Есть ещё арм выключателем - ну, тут я логикой не интересовался, однако уверен, что если попытаться заармить коптер выключателем когда газ в максимуме - арм не произойдёт.

так и есть

я как то на оф. форуме уже предлагал главному разработчику АлексуВпариже вообще нафиГ выкосить дефайн MOTOR_STOP. На что он ответил: “давай пожалеем психику самолетчикоФ”, ибо им трудно понять с ходу 😃

Все верно сверху писали. Холостые обототы нужны:

  1. По причине ТБ. Это индикатор! Все просто, машина заведена - мотор работает. Сколько раз присаживаясь к коптеру, после дизарма, задевал стик газа одеждой, т.к. пульт висит на шее на ремне и присажваясь оказывается между коленями и животом. Страшно подумать, когда нагибаясь к коптеру, он полетит вам в лицо…
  2. Моторы ни в коем случае не должны глохнуть в воздухе. На перезапуск может потребоваться сотни миллисекунд, а если коптер в активном/быстром снижении/падении, то поток воздуха через проходящий винт создает доп. сопротивление и мотор вообще может не стартонуть… Для тех кто не верит. Простой тест, так сказать демо стабилизации, которое я так любил с годик назад… Поднимаем коптер на метров 30, газ в ноль, падаем… на высоте метров 10 газ в пол, выходим в стаб… Так вот! один раз я вошел лучом в асфальт, потому что перекалибровал регули и не проверил холостые обороты. Точнее они были, но слабые… В итоге поток воздуха при падении не дал мне взвести движки… Мой кореш с арду контроллером, сторонник остановки движков на мин газу, тоже спорил и утверждал, что эффект остановки не влияет на арминг… Итог: повторил мой опыт (воткнулся в землю) на одном из демо стабилизации, т.е. падаение с выравниванием…

Так что, спасибо что напомнили! 😃
В своей след-й версии прошивки удалю MOTOR_STOP, от греха подальше и не только сам дефайн, но и логику его обработки выкошу, чеб соблазна небыло…

Probelzaelo
mahowik:

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

И каков вердикт? я так понимаю что первый после включения пуск и останов в последствии это вещи совсем разные.
Я так полагаю, если контроллер активен, моторы полностью останавливаться не должны. если неактивен то могут быть выключены до тех пор пока не будет переведен в активный режим. А насчет MOTOR_STOP эта фича не для сохранности аппарата задумана, каждый сам может решить касается ли его безопасность окружающих. )) В России это точно прокатит…

mahowik:
  1. Моторы ни в коем случае не должны глохнуть в воздухе.

100500 - “Глушить нельзя, не заведешь!”(с)Какое то кино