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

YAN=

У меня на санве, выставляется зарание запрограммированное положение стиков.

SovGVD
Musgravehill:

после нажатия на кнопочку

это всё не то, надо софтверный вариант, чтобы тупо врубать посадку или возврат домой при потере сигнала (а при его возвращении уже куда хочешь переключайся)
а для софтверного варианта надо знать как себя ведет приемник (какой сигнал на выходах каналов) после того как пропал сигнал
“газ падает, коптер в Стабе” тоже падает? =)
вечерком поэксперементирую может быть, в наличии обе аппы (4ch 6ch и 9x)

Covax

Кнопочка на фриске (как и в других приемниках с фэилсейвом) нажимается один раз в сезон, когда надо запомнить положение стиков и тумблеров, чтобы при потере сигнала включался нужный мод, собственно что тебе и требуется. Скажем RTL будет включаться, но тут надо понять что происходит с коптером на границе связи, иначе он будет постоянно включать RTL и обратно и так и не вернется, пока аппу не выключишь)

SovGVD

*facepalm* мне иногда кажется что надо найти и сходить на курсы - “как объяснить чтобы поняли вообще все”…
если на приемнике ЕСТЬ хардверный фейлсейв, то проблем особых нет (за исключением “передергивания” сигнала, но и тут проблем нет, можно поставить таймер в коде)
нам же надо задетектить этот фейл софтверно (без кнопочек и приемников с фейлсейвом)
т.е. нам надо чтобы в коде флаг FAILSAVE менялся с false на true, при пропадании (или не устойчивом) сигнала на приемнике и вот вариант со светодиодом мне очень понравился, хоть и костыльный он немного

Covax

Да все тебя поняли, в отличие от тебя) Чем тебя реализация фаилсейва в мультивие не нравится в таком случае?
P.s. Экономия менее 10% от стоимости всего коптера, а фриска с доставкой стоит гдето 40 долларей, может в легкую привести к опусу на страницах темы rcopen.com/forum/f134/topic253939 … Так стоит ли экономить?

SovGVD
Covax:

Чем тебя реализация фаилсейва в мультивие не нравится в таком случае?

дык из него родимого и передрал код на пару страниц раньше… просто не тестил - одни говорят что на приемнике остается тот же сигнал, другие что сигнал пропадает - это 2 совершенно разных варианта кода

Covax:

Так стоит ли экономить?

экономить не стоит, но и покупать еще (если можно без этого обойтись и даже сделать лучше) тоже не стоит
пойду в общем паять и тестить… а то так ничего и не узнаю =)

Sir_Alex
SovGVD:

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

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

Syberian:

…приемник На канале переключателя режимов настраивается ФС такой, чтобы включался режим “алт_холд”, “лоитер” или “домой” и все.

Олег, речь идет про случай, если в приемнике нету FS!

SovGVD

затестил =) код прерывания всеравно вызывается если на приемник идет питание, но если следить за одним пином, то failsave отлично детектится (пробовал с выдранным multiwii кодом и hk 6ch)

if (mask & 1<<0) {
        некий_счетчик=0;
}

внтури прерывания отлично обнуляется счетчик, внутри основного цикла плюсуем, если значение перевалило за 10…20 (число циклов плюсования), то явно fail

Sir_Alex:

легко детектится в APM_RC

легко, но там нет кода для детекта

Sir_Alex:

Вопрос в том, что дальше с этим делать

добавить дефайн действия - какой режим врубать после нескольких циклов без данных с аппы (в идеале еще задетектить временные провалы) - ALT_HOLD, LOITER или RTL… в идеале конечно найти режим посадки (по сути ALT_HOLD и уменьшать значение высоты удержания или например пока не начнет сонар работать)

как вариант - не обнулять, а минусовать внутри прерывания (некий_счетчик–; if (некий_счетчик<0) некий_счетчик=0; ), тогда если много потерь (или вообще отрубились) - значение будет увеличиваться и сработает FAIL, если всё отлично, то значение будет постоянно у нуля держаться

еще вариант дальнейший, как только сработал failsave сделать значение счетчика например 100 циклов, минусовать и не выходить из цикла пока нулем не станет - чтобы “дребезга” не было, а то будет скакать между режимами и еще хуже выйдет

Sir_Alex

Глеб, это все есть в пирате, но закоментировано 😃 от APM_RC требуется отдавать GetState = 1 если все нормально и 0 если пропала связь.

SovGVD
Sir_Alex:

GetState

APM_RC.GetState() == 1
имхо это готовность радио системы, а не флаг фейла
ну и вообще функция доставляет:

uint8_t APM_RC_Class::GetState(void)
{
return(1);// always 1
}

в APM_RC:
счетчике добавить в uint16_t APM_RC_Class::InputCh(uint8_t ch) (плюсовать когда ch=3 (или кто там газ?))
в прерывании счетчик=0 внутри if (!(pin & 1<<3)) {

сам счетчик я бы пихнул внутрь rcPinValue, например rcPinValue[8] (и в массив расширить и дефайн для CH_9 добавить)
и потом узнать его состояние можно будет через g.rc_9.set_pwm(APM_RC.InputCh(CH_9));

а вот throttle_failsafe(uint16_t pwm); я чето не осознал пока что… имхо это не совсем то что нам надо

upd: осознал… нам бы только поменять pwm < (unsigned)g.throttle_fs_value на pwm>fs_value (fs_value например 10 циклов) и throttle_failsafe(g.rc_9.radio_in);
upd2: ну и раскоментить set_failsafe, а потом в events.pde прописать нормальные действия

Sir_Alex
SovGVD:

имхо это готовность радио системы, а не флаг фейла

Нет, это как раз и есть тот самый флаг. Посмотри код failsafe в остальных местах и собственно обрати внимаение, как он активируется. 😃

Тем временем, ArduCopter’овцы выпустили 2.0.50, с множеством правок… правда, судя по всему пока хватает багов 😃 Подождем чуть чуть.

SovGVD

посмотрел, код счетчика реагирует на определенный уровень на 3 канале, если счетчик доходит до 10(11), врубается set_failsafe(), который запускает event в events.pde, который выставляется RTL (как то специфично выставляет)
или я не ту версию смотрю? (сужу по тому что в svn)

Sir_Alex:

с множеством правок…

че нить полезного добавили?

Sir_Alex
SovGVD:

посмотрел, код счетчика реагирует на определенный уровень на 3 канале, если счетчик доходит до 10(11), врубается set_failsafe(), который запускает event в events.pde, который выставляется RTL (как то специфично выставляет) или я не ту версию смотрю? (сужу по тому что в svn)

Не, это я тупанул, действительно GetState тут не используется в нужном нам виде.

SovGVD:

че нить полезного добавили?

Ну… не буду переводить:

What else else is new:
More aggressive Alt hold control - You can now achieve rapid ascents & descents in alt hold. The throttle acts like a large dead zone with the upper and lower 20% being a proportional control. Adjusting the throttle resets the new target altitude.

I’ve disabled the new climb rate calculation in this version since it requires some fiddling and isn’t so well tested. I was able to get amazing results with it, other not so much. It may be very altitude and temp specific since it forgoes the temp calculation to get a cleaner signal.

Added the ability to log arbitrary data for better debugging.

Recording WP in normal flight with Channel 7. This is a great way to get WPs recorded in the field. Just toggle ch7 High for 1 sec and it will save the WP to memory building a WP list on the fly. Switching to AUTO mode will fly the WPs. Rebooting will allow you to start over on a new mission.

Added separate Acro PIs for people to tune Acro mode.

Z dampening - Alt hold now has an optional Z accelerometer dampening system. You need to compile it yourself to test. I’m eager to hear user’s feedback on this so we can make it on by default.

Y6 now has top and bottom missing ratio enabled. It’s 1.0 for the top by default, but many users set it to 0.9.
Crosstrack correction is now enabled for WP navigation. Thanks to the SIL, we could test this properly. This makes the copter hold a very tight line to the next WP. The default gain is 4.0.

RTL now defaults to return at the current altitude.

Improved Circle mode performance.

Changed the Mission scripting execution order to be more intuitive. Conditional commands now execute after navigation commands are complete, not just loaded.
Various mission scripting bug fixes.

Removed some tests in the CLI for memory savings to fit the 1280.

There were also many small bug fixes and code cleanups performed - too many to list.

What’s next - complete Mavlink 1.0 upgrade, ensure better Mission planner support.

Отлично

Скажите, можно ли как нибудь проверить работоспособность датчиков/программы/прошивки имея ардуину и олинван (с гпс который). Все подключил, а планнер ноль внимания.
Спасибо

tusik
Отлично:

а планнер ноль внимания

А в планере справа вверху порт и его скорость выбрали? Кнопочку коннект нажали?

Gradient

Скажите, можно ли как нибудь проверить работоспособность датчиков/программы/прошивки имея ****

Mega AVR ATmega1280-16AU USB

и AeroQuad Shield v2.0 с датчиками Triple Axis Magnetometer Breakout - HMC5883L ,Barometric Pressure Sensor - BMP085 ,Accelerometer Sensor - BMA180 ,
Gyro Sensor - ITG-3200 .На мултиви летал,но очень хочеться на мегапирате полетать. Прошил Б8,но гиро и аксел не работают.файле AP_ADC_ADS7844 пробовал менять на allinone, не помогает . При подключении Mission Planner 1.0.89 баро и компас работают .В сетапе сделал все по инсерукции.
Очень хочу присоединиться к летающим ардупиратам 😉)
Буду благодарен за консультацию по озвученным вопросам.

SovGVD
Gradient:

AeroQuad Shield v2.0

на нем LLC стоит?

Gradient:

Прошил Б8

прошейте новую прошивку, Б8 никто не поддерживает давным давно

попробуйте залить этот код в ардуинку code.google.com/p/ardupirates/…/i2c_spy.pde?r=723 - выведет адреса датчиков, может быть банально адресация другая (да и заодно проверит определяются ли датчики)

spartanec

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

SovGVD

SDA <-> SDA
SCL <-> SCL
VCC <-> +5V
GND <-> GND
распиновка на бумажке в комплекте с платкой