ArduCopter Mega: порт на обычную Arduino (тестим)

Triumpher
Serj=:

Сегодня тестировали Failsafe на прошивке V2.7 R4.
С 8-ми канальным приемником Turnigy Failsafe работает!

Как проверяли? Просто выключали питание передатчика?
А пробовали в момент выключения передатчика один из каналов управления (крен, тангаж, курс) не в центре держать? Допустим по курсу влево дать и выключить передатчик?

Я пробовал все это с таким же приемником:
При таком тесте, у меня срабатывает FailSafe и коптер вращаясь идет домой. А это плохо! Мегапират не перехватывает полностью управление. А дебильный приемник не ставит каналы хотя бы в 1500 uS.

Sir_Alex
Triumpher:

При таком тесте, у меня срабатывает FailSafe и коптер вращаясь идет домой. А это плохо! Мегапират не перехватывает полностью управление.

Не вкурил… Собственно задача Failsafe вернуть домой коптер! Если нету GPS (или нет 3D Fix’a) - просто сядет.

vadson

а когда будете новую прошивку 2,9 обрабатывать?

Sir_Alex
vadson:

а когда будете новую прошивку 2,9 обрабатывать?

  1. У меня сегодня переезд на другую квартиру, и там не будет интернета недельку… да и времени не будет скорее всего
  2. Пока наверное нет смысла портировать, надо подождать пока не выйдет релиз. (ИМХО)
Serj=
Triumpher:

Как проверяли? Просто выключали питание передатчика?

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

Sir_Alex:

Если нету GPS (или нет 3D Fix’a) - просто сядет.

Тоже надо проверить, дома в планере не видно, включается Land или нет.

Triumpher
Sir_Alex:

Не вкурил.

Тут даже не в мегапирате наверное дело.
Приемник Turnigy 8ch при потере сигнала на каналах 1,2,4 выдает последние полученные значения. На 3-м канале у меня приблуда от RCtimera, которая ставит канал 3 (газ) в 975 ms, включается файлсейф, и если на одном из этих каналов значения не в центре (перед пропажей сигнала мы например поворачивали по курсу или летели прямо ), то они будут подмешиваться в управление при возврате домой.

Короче: нормальный приемник с файлсейвом на всех каналах нужен.
Заказал себе FrSky.

Serj=
Sir_Alex:

Не вкурил… Собственно задача Failsafe вернуть домой коптер!

У меня приемник при пропадании сигнала с пульта продолжает выдавать последние полученные значения по каналам.
Возможна такая ситуация при которой Failsave срабатывает когда коптер на полном газу пилит от тебя. Как в этом случае отработает RTL если коптер получает от приемника сигнал лететь вперед? Ведь во время RTL коптером можно рулить с пульта.

Triumpher:

На 3-м канале у меня приблуда от RCtimera

Опередил!
Я без приблуды тестил.

SovGVD

давайте по порядку
сейчас есть 2 версии FAILSAFE

  1. выдранная мной из Multiwii, работает с приемником от турниги, детектит пропажу сигнала (нет прерываний от приемника) и делает тоже что и ардукоптер(*)
  2. где то проскакивала версия с failsafe, который требует приблуду с rctimer и детектик падение сигнала на газу от 975 (кажется) и ниже, и делает затем тоже что и ардукоптер(*)

* ардукоптер при наличии GPS делает возврат домой при условии что не включен AUTO режим (где то в настройках можно задать что бы игнорировал AUTO)
* при отсутствии GPS, коптер делает LAND в месте потери сигнала

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

Triumpher
Serj=:

Возможна такая ситуация при которой Failsave срабатывает когда коптер на полном газу пилит от тебя

Вот оно самое, что имею в виду!
Нужно чтоб мегапират игнорировал данные от приемника по 1,2,4 каналу при failsafe. Это для турниг 8 ch. А вот хоббикинговский 6-ти канальный более умный. По 1,2,4 каналам, сигнал ровно в центр (1500 ms) ставит.

Вобщем конечно лучше нормальный применик с файлсейвом.

SovGVD:

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

Смотрел через ARM-планер, в RadioCalibration. Значения зависают в последних полученных значениях. Или это неверный способ?

SovGVD:
  1. выдранная мной из Multiwii, работает с приемником от турниги, детектит пропажу сигнала (нет прерываний от приемника) и делает тоже что и ардукоптер(*)

Вот эту версию я не нашел. Если же она в есть в 2.7R4 или 2.7R3 то оно не работает. Пробовали.

SovGVD:
  1. где то проскакивала версия с failsafe, который требует приблуду с rctimer и детектик падение сигнала на газу от 975 (кажется) и ниже, и делает затем тоже что и ардукоптер(*)

Вот эту версию юзаем. Это как 2.7R4 слегка поправленная товарищем couger

Serj=
SovGVD:

давайте по порядку
сейчас есть 2 версии FAILSAFE

У меня стоковая 2,7 R4, в ней похоже, как раз твой Failsafe работает.

SovGVD:

обычный турниговый приемник не зависает на старых значениях, насколько мне известно…

Еще как зависает, доказано двумя Сеснами на сосне 😃

SovGVD
Serj=:

У меня стоковая 2,7 R4, в ней похоже, как раз твой Failsafe работает.

у меня чето не работает =)
попробовал сейчас наушники подключить - 1 канал молчит (остальные наверное тоже), т.е. зависание значение происходит в прошивке т.к. нет прерываний и значения последние остаются, при этом действительно если стики были наклонены, то коптер и будет продолжать лететь по последний значениям без FS
осталось понять почему FS не работает multiwii-йный вариант (хотя в параметрах и в прошивке выставил чтобы работало)

Serj=
SovGVD:

у меня чето не работает =)

Просто серву в приемник воткни и проверь.
Я тебе в скайп кинул мой radio.ino

SovGVD
Serj=:

Просто серву в приемник воткни и проверь.

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

дождался GPS fix, работает всетаки multiwii-йный вариант - переключается в RTL при выключении пульта, НО значения подмешиваются нехорошие - надо в FS обнулять их на 1500

Serj=
SovGVD:

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

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

SovGVD

На свой страх и риск - версия 2.7r4, с FS, которые roll/pitch/yaw выставляет в центр (1500) при пропаже сигнала с турниги
Сам пират (принудительный FS) direct.nekaka.com/XW8PGLVIeU/Cxgn
либы (как обычно удаляем старые и ставим новые) direct.nekaka.com/tCYTYhXsGh/n3iC
если лениво все либы перезаливать то вот этот файлик в APM_RC пихнуть direct.nekaka.com/zlQ2AJxqfJ/sQTs
там одна единственная правка:

uint16_t APM_RC_PIRATES::InputCh(uint8_t ch)
{
  uint16_t result;
  uint16_t result2;

  // Because servo pulse variables are 16 bits and the interrupts are running values could be corrupted.
  // We dont want to stop interrupts to read radio channels so we have to do two readings to be sure that the value is correct...
	result=readRawRC(ch);

  // Limit values to a valid range
  result = constrain(result,MIN_PULSEWIDTH,MAX_PULSEWIDTH);
  if(failsafeCnt >= 20 && ch!=2 && ch<=3) {
	result=1500; // можно было и красивее
  }
  radio_status=1; // Radio channel read
  return(result);
}

проверка:

  • заходим в планер, выводим raw sensors вкладка radio,
  • заводим коптер (без винтов конечно, как бы виртуально), стик roll/pitch в любую сторону
  • вырубаем пульт - должен переключится в RTL (наличие GPS fix обязательно, чтобы увидеть RTL, иначе можно глянуть в radio, как себя стики ведут) и в rawsernsor->radio roll/pitch/yaw должны быть по центру

ВНИМАНИЕ нельзя при этом использовать FS с rctimer

www.youtube.com/watch?v=5WXi6nVpsZc

Serj=
SovGVD:

На свой страх и риск - версия 2.7r4, с FS, которые roll/pitch/yaw выставляет в центр (1500) при пропаже сигнала с турниги

Проверил, работает, 1, 2 и 4 каналы выставляются в 1500, при Failsafe без GPS газ постепенно снижается до 1200, то есть Land срабатывает.

SovGVD:

кстаии с газом не потятно что делать - он остается на максимуме:
и при RTL получается будет набирать высоту

Ну он и должен набирать на величину ALT_HOLD_RTL а потом с постоянным газом идти домой.

SovGVD

короче надо тестить в реальности, а реальность холодная очень, но вроде бы как бы всё работает =)
Sir Alex, предлагаю ввести 2 варианта FAILSAFE, один multiwii-шный, другой через железку с rctimer

Serj=
SovGVD:

другой через железку с rctimer

Он же для нормальных приемников, на которых уровни при Failsafe выставить можно, типа Фриски.
И, по моему, железка лишняя, она же на остальных каналах уровни не выставит, если только 4 штуки ставить.