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

Alex_from_Israel

Странный какой то последний Планнер. Сначала контролировал напряжение батареи, все окей и красота, потом четр меня дернуд в сетапе запустить тест тока батареи. Запустился, конечно! И моторы заодно в полный газ ушли. Минуты 2 ничего понять не мог, коптер взлетел и натянул тросики, которыми к столу привязан был! Так и висел, стараясь поднять стол. И красиво висел, прям ни малейшего крена, только листы со схемами по комнате летали! Опомнился, попытался посадить с пульта. Не реагирует! Ухватил снизу за лыжи и отключил батарею, до тумблера не дотянулся, боялся под винты попасть. После новой инициализации все работает, кроме контроля батареи!

SovGVD

а схему подключения батарейки можно?

Covax

У тебя же тросиков нету на коптере?)

Alex_from_Israel

У меня платка контроля AttoPilot со спаркфана, стандартное включение из их даташита. В скотче поменял 2 строчки в sensors.cpp

static void read_battery(void)
{
battery_voltage1 = BATTERY_VOLTAGE(analogRead(BATTERY_PIN1)) * .1 + battery_voltage1 * .9;
battery_voltage2 = BATTERY_VOLTAGE(analogRead(BATTERY_PIN2)) * .1 + battery_voltage2 * .9;
battery_voltage3 = BATTERY_VOLTAGE(analogRead(BATTERY_PIN3)) * .1 + battery_voltage3 * .9;
battery_voltage4 = BATTERY_VOLTAGE(analogRead(BATTERY_PIN4)) * .1 + battery_voltage4 * .9;

if(g.battery_monitoring == 1)
battery_voltage = battery_voltage3; // set total battery voltage, for telemetry stream
if(g.battery_monitoring == 2)
battery_voltage = battery_voltage4;
if(g.battery_monitoring == 3 || g.battery_monitoring == 4)
battery_voltage = analogRead(VOLTAGE_PIN_0)/12.99;
if(g.battery_monitoring == 4) {
current_amps = analogRead(CURRENT_PIN_1)/7.44; //reads power sensor current pin
current_total += current_amps * (float)delta_ms_medium_loop * 0.000278;
}

#if BATTERY_EVENT == 1
if(battery_voltage < LOW_VOLTAGE)
low_battery_event();

if(g.battery_monitoring == 4 && current_total > g.pack_capacity)
low_battery_event();
#endif

Covax:

У тебя же тросиков нету на коптере?)

У меня на столе тросики. Длина регулируется. Натягиваю так, чтобы при резком крене не лупил винтами по столу. И стараюсь держать его так, чтобы тросики провисали. Стол из реек, для снижения эффекта подушки.

SovGVD
Alex_from_Israel:

платка контроля AttoPilot со спаркфана

=( а как быть обычным смертным с сидуинкой? там чето хитрое или как на мультивии - делитель стоит?

Alex_from_Israel

В принципе ничего хитрого. Можно и без этой платы напряжение контролировать. В скетче код для контроля батареи 3 и 4 sell. 4 делителя напряжения, подключаются к балансирному разъему аккума и к пинам А0-А3. Тогда код менять не нужно, только нет контроля тока. Схема подключения есть на Ардукоптерском Вики, и там же расчет делителя для контроля разных напряжений.

Итак повоевал с АРС220 и противник сдался. Теперь измышляю план атаки на сонар. Похоже, что этот будет упорнее. Пока подключил по схеме и в сетапе выбрал sonar on, Эффек не то чтоб совсем нулевой, но показания в тесте твердо стоят на 700 чегото и не меняются. Если это в сантиметрах, то у сонара мания величия. От стола 7 сантиметров, от пола (поскольку стол из реек) метр без малого. При шевелении коптера показания не меняются. Может тоже TX RX местами поменять? Тогда это уже смешно. Подключение снова из Мегапиратского Вики.

И еще. Два варианта подключения. к ногам 47 и 48, если не путаю, и, в последнем варианте, D9 D10/ Это там, где моторы подключаются?

SovGVD
Alex_from_Israel:

Схема подключения есть на Ардукоптерском Вики, и там же расчет делителя для контроля разных напряжений.

чето не найду… или не там ищу code.google.com/p/arducopter ?

Galamaga

У меня сегодня коптер начал вести себя так:

Это на прошивке Олега. Понятия не имею в чем дело - раньше классно летал. Сейчас добавил APC и GPS, пришлось код менять и заново заливать. У кого-нибудь было что-то подобное?

Covax

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

SovGVD
Galamaga:

пришлось код менять и заново заливать

заново сетап проходил?

Covax

Ахаха, накаркал я, первый полет, 2 минуты отлично, потом ввожу коптер в маленькую раскачку роллом, квадр входит в буйку, реакция на стики начинает пропадать, на полном газу флипует и в планету, моторы не отлючаются с аппы, отрубаю батарейку = минус один проп, вчерашний. тоесть отрубился скорее всего передний левый, Глеб. Конечно у меня есть еще пропы, поставлю сейчас Олега B8.

SovGVD
Covax:

тоесть отрубился скорее всего передний левый

нафиг такую прошивку =) я лучше без сонара, но точно летает
мне бы вот научится менять ПИДы без APM проги, в консоле папарметры смотреть можно, но нельзя менять, будет время - хочу исправить

Covax:

поставлю сейчас Олега B8.

главное сетап заново пройти, а то малоли =)
кстаии в 2.0.38 код для моторов поменяли для квадрика, там чето хитрое

/* We need to clip motor output at out_max. When cipping a motors
     * output we also need to compensate for the instability by
     * lowering the opposite motor by the same proportion. This
     * ensures that we retain control when one or more of the motors
     * is at its maximum output
     */

закоментил от греха подальше, но всеравно мотор не стартует

Covax

ДА я по два раза всегда сетап прохожу с пиратом, в терминале обязательно 😃

Covax

О Боже, залил b8… Теперь правый передний сразу стартует на бешенной скорости, хочет показать что он альфа самец и перевернуть коптер… Чую терпение заканчивается… Регули попробывать переинициализировать? А смысл, если он час назад летал нормально?

SovGVD
Covax:

Регули попробывать переинициализировать?

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

upd: кто нибудь покажет как у летающих барометр упакован?

SovGVD

Добавил смену пидов через консольку, оказалось что в коде всё есть, просто не используется, кому интересно (B8+_r741 от Олега):
в setup.pde (первая строка и так есть, оставляю чтобы понимать куда надо вставлять)
добавляем :

static int8_t	setup_show				(uint8_t argc, const Menu::arg *argv);
static int8_t	setup_set				(uint8_t argc, const Menu::arg *argv);
	{"show",			setup_show},
	{"set",			    setup_set}

и куда угодно в setup.pde

static int8_t
setup_set(uint8_t argc, const Menu::arg *argv)
{
    AP_Var_menu_set(argc, argv);
    AP_Var::save_all();
    return(0);
}

теперь например нам надо поменять Stable Roll P:
заходим в консоле: setup
пишем: set STB_RLL_P 0.22
и вуаля =)
все возможные параметры можно посмотреть setup -> show

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

upd: теоретически в system.pde в set_mode добавить

    if (control_mode==STABILIZE) {
           g.compass_enabled = false;
    } else if (control_mode==ALT_HOLD) {
           g.compass_enabled = false;
    } else {
           g.compass_enabled = true;
    }

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

SovGVD

работает код, теперь в STABILIZE компас отключается и можно нормально летать… только надо сперва крутилкой покрутить, чтобы set_mode отработалось =)