Baychi OpenLRS - дружелюбная ЛРС с широкими возможностями )

ВлАс
Shuricus:

Газ у меня, когда в нуле, показывает - 988. Так же показывает и мишкин планер.

Тема для арду(коптера или пилота). Приемник на прошивку аппы плевать хотел.
Что показывает МР если выключить аппу?

Shuricus:

в аппе значение газа уменьшается до 900. А в мишкинпленере ничего не уменьшается!

Потому, что когда калибровалось РУ в АРМе, последний запомнил минимальный газ, после этого ему хоть 800 подай.
Надо только выставить в настройках положение газа на FS.
Остальное в теме про АРМ, ОК?

Shuricus
svir:

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

У вас Байчи стоит?

Настройка не идиотская на мой взгляд, это опция. И очень полезная, т.к. позволяет в том числе защитится от физической потери приемника. Если он, например, выпадет из модели 😃

А ФС в ардукоптере можно и классически настроить, по каналу управления. Без гиморов.

тигромух:

А в отладке передатчика (R6=1) значение на канале уменьшается?

Вот я об этом же думаю! ) Так неохота все разбирать и тыкать туда ФТДИ. Поэтому и спрашиваю, не может прошивка ЛРС как-то ограничивать импульс до 988? Потому что в меню передатчика все работает корректно, а в мишенпланере ниже 988 ни за какие коврижки не опускается. Но зная, что там это точно настраивается, например на Фрскае, возникает логический вывод, что причина только во входящих данных!

Plohish

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

** Примечание по длительностям импульсов (проценты, градусы и микросекунды)**

Исторически сложилось, что PWM импульсы передают положение стиков РУ и определяют ход сервомашинок, меняясь в пределах от 1000 до 2000 мкс. В большинстве стандартных РУ нейтрали стика и сервомашинки соответствует импульс длительностью 1500 мкс. За -100% хода стика РУ и поворота качалки стандартной машинки на -45-50 градусов, принята длительность 1100 мкс. За +100% и +45-50 градусов - 1900 мкс (+/- 400 мкс от нейтрали). Максимальное изменение импульсов (1000-2000 мкс) таким образом задает диапазон управления -120% - +120% или -60 до +60 градусов поворота качалки сервопривода.
Заметим, что максимальный диапазон представления импульсов в режиме 0 и 1 (стандартный Эксперт) составляет 988-2012 мкс, что эквивалентно -128% … +128% хода стиков РУ.
Futaba использует несколько иные длительности и диапазон. За нейтраль принят импульс длительностью 1520 мкс., за -100% - 1100 мкс, а +100% = 1940 мкс. При этом предельное изменение импульсов от Futaba составляет 880-2160 мкс или +/- 640 мкс относительно нейтрали в 1520 мкс. Следовательно минимальной длительности в 880 мкс соответствует - 160% хода стика (до 80 градусов отклонения качалки сервомашинки от нейтрали), а максимальной 2160 - +160% хода стика или +80 градусов. В протоколе s.bus и режиме передачи 2 (R5=2) кодируется именно такое представление длительностей. PPM сигнал Futaba 750 мкс (12 и более каналов), выдаваемый некоторыми передатчикам Futaba в режиме PPM12 имеет в 2 раза меньшие длительности импульсов.
Обратите внимание что контроль состояния FS в режиме ретранслятора, проверяет нахождения всех каналов в пределе 1000-1999 мкс при PPM подключении. И если хоть один канал будет вне этого диапазона, передатчик прекратит передачу (при R4 = 1). В режиме s.bus длительности каналов не проверяются, критерием FS служит соответствующий флаг в пакетах от источника.

пожалуйста, перенесите обсуждение вашего ардукоптера в соответствующую ветку…

Shuricus

Я только не пойму при чем тут ардукоптер? Вопрос был по прошивке оба раза - как сделать в ФС отсутствие сигнала, и ограничивает ли прошивка значения ППМ. И обсуждать я их буду здесь. Хватит пожалуйста просить переносить темы, а пожалуйста внимательно читайте вопросы.

С первым вопросом Константин уже подсказал. А вот со вторым, не смотря на очень увлекательный экскурс в теорию от Сергея, как то ясности не прибавилось!

Хотя если есть ссылка на Эксперта, как раз с магическим числом 988 - то мои опасения верны, и меньше 988 прошивка не пропускает. А поскольку в аппе я настроил 970, значит прошивка все что ниже 988 просто приравнивает к 988. Но с другой стороны еще в руководстве написано - При установленном бите 1 в регистре 5 на экран постоянно выводятся длительности принятых PPM импульсов в микросекундах (от 880 до 2159, середина = 1500).

Значит все же должно быть 880!

max809
Shuricus:

С первым вопросом Константин уже подсказал.

Т.е. хотите сказать, что Константин разобрался, как допилить код, чтобы в режиме ФС было отсутствие сигнала?

тигромух
max809:

Т.е. хотите сказать, что Константин разобрался, как допилить код, чтобы в режиме ФС было отсутствие сигнала?

Разобраться и допилить - разные вещи. С первым нет проблем, а на второе нет времени…

Если хотите допилить, то смотрите флаг PWM_enable. Достаточно его снимать при входе в ФС и устанавливать при выходе.

LaPart
Shuricus:

Хотя если есть ссылка на Эксперта, как раз с магическим числом 988 - то мои опасения верны, и меньше 988 прошивка не пропускает. А поскольку в аппе я настроил 970,

Если бы я в аппе таки настроил бы 970, знал бы, что это точно мой РРМ, а не сбас, и хотел использовать такой диапазон у себя (а не подсунуть кому-нибудь еще), то заглянул бы в исходники, а там:

  • модуль ppmsbus из набора OpenTiny_TX (Александр комментарии не экономил)

    bool checkPPM(void) // проверка PPM/SBUS на failSafe ретранслятора
    {
    if(Regs4[4]) { // если проверка разрешена
    FSdetect=1;
    if(ppmMicroPPM == 255) { // режим SBUS, FS = бит3 в управл. байте
    if(sbusPkt[23]&0x8) return false;
    } else {
    for(byte i=0; i<nchan; i++) {
    if(PPM[i] < 1976 || PPM[i] > 4022) return false; // проверяем выход канала за диапазон
    }
    }
    }
    FSdetect=0;
    return true; // PPM в порядке
    }

    Тогда там где
    // проверяем выход канала за диапазон - 1976. Это как раз то “заколдованное” число микросекунд, умноженное на 2.
    Если есть желание уменьшить для себя с 988мкс до 970 (или даже еще немножко),
    строку
    if(PPM[i] < 1976 || PPM[i] > 4022) return false; // проверяем выход канала за диапазон
    заменяю на
    if(PPM[i] < 1936 || PPM[i] > 4022) return false; // проверяем выход канала за расширенный диапазон 968-2011мкс
    и компилирую.
    Проверяю и радуюсь 😃, либо, если “что-то пошло не так 😃” слегка огорчаюсь и меняю код на исходный, автор ведь посчитал, что так правильнее…
    ===========================
    Не пойдет такой вариант?
Shuricus

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

Теперь появилась ясность. Попробую эти варианты.

А что дальше происходит в коде с данными ппм, если они выходит за диапазон?

LaPart
Shuricus:

А что дальше происходит в коде с данными ппм, если они выходит за диапазон?

в предыдущем сообщении функция bool checkPPM(void) // проверка PPM/SBUS на failSafe ретранслятора
как раз и проверяет, входит ли сигнал в нужный диапазон.
Если входит -

LaPart:

FSdetect=0;
return true; // PPM в порядке

сообщает программе, что это не файлсейв и все в порядке, импульс будет передан по значению на передачу.

Если не входит в диапазон -

LaPart:

FSdetect=1;

LaPart:

if(PPM[i] < 1976 || PPM[i] > 4022) return false;

то это файлсейв (это следует из неглубокого копания только в этом модуле).

Возвращается ответ в модуль OpenTiny_TX, откуда вопрос и задавался,
если глубоко не вдаваться, то после обработки ответа есть строка с комментарием
// нет PPM - нет и передачи
Пока всё, я убежал, удачи 😃

Shuricus

Тут не состыковка с тем фактом, что если у меня есть импульс меньше 988, то все равно все продолжает работать.

тигромух
LaPart:

bool checkPPM(void) // проверка PPM/SBUS на failSafe ретранслятора

Это штука работает, только если установлен соответствующий регистр. Собственно, это в следующей строке написано:

if(Regs4[4]) { // если проверка разрешена

Plohish
Shuricus:

На нескольких теоретиков, все же находится один практик, который не пытается советовать обсуждать все в другой теме

Shuricus:

Значит все же должно быть 880!

если бы ты почитал нормально мой экскурс в историю от Байчи, то наверное пришло бы понимание что в режиме S.bus прошивка прекрасно обрабатывает длительности менее 988…

Shuricus

Если бы ты почитал нормально мой вопрос, то наверное пришло бы понимание, что мне нужен ППМ, а не сбас! 😃

Кстати, экскурс был в теорию, а не в историю. 😃

тигромух:

Это штука работает, только если установлен соответствующий регистр. Собственно, это в следующей строке написано:

Другими словами, на стандартный режим работы это не влияет?

Я предположу, что есть еще алгоритм проверки ППМа.

Plohish

опять возвращаемся к тому что длительности менее 1000 для PPM это не стандарт и у тебя частный случай извращения с ардупилотом…

Shuricus
LaPart:

в предыдущем сообщении функция bool checkPPM(void) // проверка PPM/SBUS на failSafe ретранслятора
как раз и проверяет, входит ли сигнал в нужный диапазон.

Ну это и указанно в мануале:

Обратите внимание что контроль состояния FS в режиме ретранслятора, проверяет нахождения всех каналов в пределе 1000-1999 мкс при PPM подключении. И если хоть один канал будет вне этого диапазона, передатчик прекратит передачу (при R4 = 1).

Поскольку у меня не режим ретранслятора, то к сожалению, к моему случаю это все не относится.

Plohish:

опять возвращаемся к тому что длительности менее 1000 для PPM это не стандарт

Где это написано?

Plohish

насколько я понимаю это дело, нет разницы как работает передатчик LRS, через приём сигнала от приёмника или напрямую из аппы… один хрен там подаётся на вход CPPM
у прошивки от Саши нет такого режима как “ретраслятор”, это условное название схемы подключения…

Shuricus:

Где это написано?

у Байчи в мануале… исторически сложилось 😃

Shuricus

4 - FS check enable - это условно называется режимом ретранслятора.

Перелопатил интернет, так и не смог найти - каковы физические ограничения по диапазону каналов в ППМ и с чем это связанно?

Plohish
Shuricus:

4 - FS check enable - это условно называется режимом ретранслятора.

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

Shuricus

Спасибо, я это уже давно понял.
Я пытаюсь выяснить, почему не лезет меньше чем 988. Осталось всего два вопроса:

  • 988 это тоже условное ограничение, и можно и меньшие значения передавать, т.е. нет физических ограничений со стороны формата ППМ
  • обрезает ли прошивка, все что меньше 988, и где этот код
тигромух
Shuricus:

Я пытаюсь выяснить, почему не лезет меньше чем 988.

Уже бы давно подключили уарт к передатчику и выяснили этот вопрос 😃