Система стабилизации DJI для вертолетов классической схемы и не только!

alekseii
btr1209:

так ссылку бы сразу дал

Нашёл ссылку на конкретного участника сайта и уже у него на личной странице ссылка на программу.
Интересует вот эта программа MultiWii_2_1_AIO_v2
Вопрос (один из многих), где сама функция - spekTime=micros(); не могу её найти.

btr1209

это случаем не оно

в том архиве файл RX

alekseii

spekTime = micros(); - это сам вызов этой функции (чтение “времени”), а вот где она сама из чего она состоит и что делает вопрос (если я всё правильно понимаю, конечно).

btr1209

судя по тому как она используется micros() это встроенная функция ни в одном файле с архива нет ее определения а вот как ее используют файлы

MultiWii_2_1.ino ,Sensors.ino возможно она определяется в програмной среде для авр

vik500

Сергей в #1180 пишет главное чтоб был правильный алгоритм

ВОТ ВОТ я тоже про это, я пытался привлечь всех к написанию алгоритма но откликнулся только Олег #1142 и он прав что для рудера надо учитывать все шесть двигателей. На этом всё и закончилось, я готов заплатить программисту и такой есть но надо чётко на все сто написать алгоритм если что по его вине не будет работать он исправит а если по нашей вине то платить надо.

У нас каждый сам, а вроде как общее дело делаем.

alekseii

Я тоже готов заплатить, Виктор, если действительно у Вас есть человек который сможет помочь я напишу (и если сумма приемлемая оплачу) что надо (мне сейчас), напишите в личку (есть ли этот спец).
{судя по тому как она используется micros()} так скорее всего и есть, но это под свою среду разработки (ардуино), а что там и как X… его знает.

alekseii

(мысли одна за другой, надеюсь не “одна безумней другой”)
Итак, главное без паники. Про эту функцию, нашёл её, правда толку от этого не много, точнее, главный вопрос, когда в ней происходит перезапуск таймера (аппаратного) не понятно, но с другой стороны, это наверное и не важно. Производится проверка конечных (измеренных) значений, так что, будут каждый 10-ый (например) измеренный пакет “не правильным” да и фиг с ним. Не понял, как на ту же мегу 328 они (мультивийци) умудрились подсоединить 8-мь моторов (именно моторов) мне не понятно, похоже они переключают аппаратные таймеры то на один мотор то на другой (моё предположение). Понял, что (пишу, может кто что “поправит”…) входные сигналы определяются по прерываниям (прерывания PCI).
Главное, похоже у меня не получится собрать этот “адаптер” на уже купленном контроллере m32u4, нужен m2561. С одной стороны ещё потеря двух недель (на заказ и доставку и денег…), но с другой по настоящему, на конец то появляется (так думаю) “свет в конце туннеля” 😃

vik500

Я только что разговаривал со специалистом с ИРИС www.pkpiris.ru в понедельник или вторник надо уже конкретную дать информацию.

vik500

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

btr1209

Алексей вам надо скачать вот от сюда arduino.cc/en/Main/Software вот это Windows ZIP file for non admin install
весит 202 метра и подключит от туда все библиотеки тогда многое заработает более корректно там практически все функции которыми пользуются мультивии есть

там неплохие исходники для управления сервами

alekseii

Виктор, гадать какой будет алгоритм (такой или иной) - гадать без толку !!!
Сделать плату со входами и выходами и подключённым экраном, далее “тупое” (это я про себя:) ) сидение перед изменяющимися цифрами (при изменении положений джойстиков на пульте). Именно так.
По поводу алгоритмов, да он понадобится, но после осознания “увиденных” сигналов (конкретно по поводу программы для адаптера, в ней нет обработки данных ГПС (ГЛОНАСС), в целом, будет гораздо проще). Посоветуетесь, Вам всё расскажут, главное выбрать МК (микроконтроллер) . На самом деле, как я написал, можно (практически) любой МК, в том же хеликоманде (в блоке с “проводами”) стоит старенькая мега48, но надо “с уметь” “запустить” свою программу на на тех так сказать “дровах”. Всё можно сделать, нет аппаратного таймера - “делаем” программный, нет встроенного интерфейса - “пишем” его сами, итд. Как говорится, МК не сможет только кофе сварить 😃 Но для этого нужны знания и опыт. Если его нет - то лучше “взять” современный МК, в котором многое реализовано в “железе”, то есть аппаратно.

alekseii

P.S. есть люди для которых важен процесс управления моделью, а есть для которых важен сам процесс изготовления 😃

vik500

Люди помогите дописать этот бред. Программист видел вертолет только на витрине детского мира, и ему надо рассказать всё до последней мелочи.
Техническое задание для программиста.

  1. В состоянии покоя когда мы не трогаем ручки управления все сигналы на выходе НАЗЫ одинаковые, и они должны повторятся на выходах микроконтроллера 1,2,3,4.

Управление Шаг-Газ
При изменении газа на всех шести выходах НАЗЫ сигналы изменяется одинаково (меняется скважность) и на выходах 1,2,3 нашего микроконтроллера должны быть такие же, но при этом надо учитывать что выход НАЗЫ

М1,М4 управляют выходом 1 микроконтроллера,

М2,М5 управляют выходом 2 микроконтроллера,

М3,М6 управляют выходом 3 микроконтроллера,

То есть у нас здесь три независимых канала.

При изменение длительности импульсов сигнала между выходами НАЗЫ (при развороте) они меняются, на М1,М2,М3, скважность уменьшается а на М4,М5,М6 увеличивается или наоборот это зависит от направления разворота, а на выходах 1,2,3 сигнал не должен меняться.

Управление Курсом

4 канал не зависит от предыдущих трех. Выход 4 микроконтроллера, при изменении газа сигналы на выходе М1, М2, М3, М4, М5,М6 изменяются одинаково а на выходе 4 нашего микроконтроллера сигнал не должен меняться и только при повороте когда сигналы на выходах НАЗЫ М1,М2,М3 будут отличатся от М4,М5,М6 по длительности импульса на выходе 4 длительность сигнала тоже будет меняться. Тем самым будет управление хвостом.

Управление креном.

При изменении сигнала между М2 и М5 а также между М3 и М6 сигнал на выходе 1 и 3 также меняется. (пояснение: на М2 длительность сигнала уменьшается на М5 увеличивается, на М3 увеличивается а на М6 уменьшается то есть сервоприводы должны вращаются в разные стороны)

Управление тангажом.

  1. На все четырёх выходах микроконтроллера надо сделать

а) регулировку конечных точек.

б) регулировку центральной точки.

в) а также реверс.

robis
alekseii:

P.S. есть люди для которых важен процесс управления моделью, а есть для которых важен сам процесс изготовления

А есть еще те, для кого важно и одно и другое 😉

alekseii:

похоже у меня не получится собрать этот “адаптер” на уже купленном контроллере m32u4, нужен m2561

Почему? Задача Y6=>H3 вроде не архисложная (хотя все относительно), но Вы и сами пришли к выводу, что тип контроллера не сильно важен - иногда можно менять просто подход (например, таймер аппаратный или программный). Можно и на меге 328.
Мне думается, что при выборе МК важнее его вес с обвязкой, размер, цена, доступность, и удобство применения для наших целей (например, возможность менять параметры в поле).

vik500:

Я только что разговаривал со специалистом с ИРИС www.pkpiris.ru в понедельник или вторник надо уже конкретную дать информацию.

Виктор, если Вы ставите задачу программисту, то лучше предварительно определиться с МК (тут важно мнение Алексея, т.к. он ближе всех касался темы). Далее, я тоже готов финансово поддержать этот проект, но не стоит надеяться, что первая версия вот так замечательно и сразу заработает. Практически всегда “всплывают” мелкие и крупные неожиданности как по части постановки задачи так и в программ или сама Наза “выкинет” сюрприз. Обычно бывает несколько версий (~10-30) и за каждую платить?
Поэтому, лучше будет, предварительно согласовать железо (МК), еще раз “вылизать” начальный алгоритм (его надо максимально именно закончить), предать все это дело программисту, ну и сразу договориться о передаче исходников и готовой среды программирования для нас.

P.S. С логикой пока “заминка”. Есть сложности, поначалу показалось, что все проще, но когда нарисовал на бумаге возникли вопросы.

vik500

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

btr1209
vik500:

Люди помогите дописать этот бред. Программист видел вертолет только на витрине детского мира, и ему надо рассказать всё до последней мелочи.
Техническое задание для программиста.

  1. В состоянии покоя когда мы не трогаем ручки управления все сигналы на выходе НАЗЫ одинаковые, и они должны повторятся на выходах микроконтроллера 1,2,3,4.

Будим считать что на входе одинаковые а вот на выходах разные должны быть

vik500:

Управление Шаг-Газ
При изменении газа на всех шести выходах НАЗЫ сигналы изменяется одинаково (меняется скважность) и на выходах 1,2,3 нашего микроконтроллера должны быть такие же, но при этом надо учитывать что выход НАЗЫ

не должны быть такие же , если по уму они должны быть одинаковы в процентном соотношении по отношению к входным

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

vik500:

М1,М4 управляют выходом 1 микроконтроллера,

элеватор

vik500:

М2,М5 управляют выходом 2 микроконтроллера,

элерон

vik500:

М3,М6 управляют выходом 3 микроконтроллера,

пич или шаг (кто как привык)

vik500:

То есть у нас здесь три независимых канала.

При изменение длительности импульсов сигнала между выходами НАЗЫ (при развороте) они меняются, на М1,М2,М3, скважность уменьшается а на М4,М5,М6 увеличивается или наоборот это зависит от направления разворота, а на выходах 1,2,3 сигнал не должен меняться.

плевать на выходы 1,2,3 полетный контролер с механической обратной связью так что это уже проблемы назы если верт даст крен наза выровняет вы и не заметите

vik500:

Управление Курсом

4 канал не зависит от предыдущих трех. Выход 4 микроконтроллера, при изменении газа сигналы на выходе М1, М2, М3, М4, М5,М6 изменяются одинаково а на выходе 4 нашего микроконтроллера сигнал не должен меняться и только при повороте когда сигналы на выходах НАЗЫ М1,М2,М3 будут отличатся от М4,М5,М6 по длительности импульса на выходе 4 длительность сигнала тоже будет меняться. Тем самым будет управление хвостом.

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

и по возможности стоб был выбор между 1520 , 760 и третий не помню допишите кто знает это центр сервы значить тоже в процентном прибавляться или отнимается от середины
пример разница между верхним и нижнем составит 10% значит 1520+10%= 1748 это одно направление или 1520-10%=1292 это другое направление итак для всех возможных
серв

vik500:

Управление креном.

При изменении сигнала между М2 и М5 а также между М3 и М6 сигнал на выходе 1 и 3 также меняется. (пояснение: на М2 длительность сигнала уменьшается на М5 увеличивается, на М3 увеличивается а на М6 уменьшается то есть сервоприводы должны вращаются в разные стороны)

мне кажется здесь ошибка как то лишено логике на столе может и так
а воздухе вряд ли кто мерил разве что назовцы М6,3 это один луч М5,2 второй луч логичнее М5,2 убавить а М6,3 добавить газу чтоб получился крен и при этом центр коптёра сохранил свое положение , проверьте плиз свои наблюдения на этот счет

реверс нужен на все 4 канала

vik500:

Управление тангажом.

  1. На все четырёх выходах микроконтроллера надо сделать

а) регулировку конечных точек.

б) регулировку центральной точки.

не вижу необходимости в центральной точке вообще если считаете что нужна объясните зачем то есть практическое применение

vik500:

в) а также реверс.

vik500:

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

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

1 ISR(TIMER0_COMP_vect) // Прерывание по совпадению
2{
3 if (servo_state) // Если не нулевое состояние то
{
OCR0 = ServoNextOCR[servo_state]; // В регистр сравнения кладем
4 PORTA &= ~ServoPortState[servo_state]; // Сбрасываем биты в порту, в
//соответствии с маской в массиве масок.

vik500

ТИПОВОЙ СОСТАВ ТЕХНИЧЕСКОГО ЗАДАНИЯ

Название или цель проекта. Должно вкратце отражать суть задания: что должна делать разрабатываемая программа или устройство на её основе.
Предмет разработки. Опишите, что конкретно Вы хотите получить от нас в качестве результата: только ПО для микроконтроллеров, либо ПО и схему устройства на бумаге, либо готовое устройство, и так далее. Для готовых устройств укажите количество экземпляров, изготавливаемых при заказе разработки.
Чётко укажите границы разрабатываемой части системы: какие конкретно части системы разрабатываем мы, а какие уже существуют или будут созданы Вами (разработаны, приобретены и т. д.) самостоятельно. Один из хороших способов сделать это – нарисовать функциональную схему всей системы (в виде «квадратиков» и связей между ними) и обвести пунктиром те её части, которые должны разработать мы.
Тип микроконтроллера, язык программирования. Укажите тип микроконтроллера, который должен будет использоваться (если он известен), либо укажите, что выбор микроконтроллера оставлен на наше усмотрение. Также укажите язык программирования, который должен использоваться (если для Вас он имеет значение), либо укажите, что выбор языка программирования оставлен на наше усмотрение.
Если эти вещи не имеют для Вас принципиального значения, мы рекомендуем оставлять их на наш выбор. При этом Вы можете указать свои требования или пожелания к выбираемым микроконтроллерам (тип корпуса, напряжение, температурные характеристики, цена, и т. п.).
Технологии изготовления (для устройств). У Вас уже выбраны требуемые типы корпусов и внешних разъёмов разрабатываемого нами устройства, или они остаются на наше усмотрение (либо не нужны совсем)? Требуется ли создать дизайн внешнего вида устройства, или он не имеет значения?
Нужно ли делать разводку печатных плат, или устройство можно собрать на макетной плате? Какие технологии должны использоваться – обычная пайка или поверхностный монтаж? Если Вам трудно определиться с этим, укажите, какое количество таких устройств планируется производить в будущем и где Вы будете их делать (сами или у нас), и мы поможем Вам выбрать оптимальные технологии изготовления.

Детали реализации программы или устройства. Чётко поясните следующую информацию:
· Какие сигналы от каких устройств и в каком виде получает микроконтроллер или устройство (АЦП, датчики, другие контроллеры и т. п.).
· Какие сигналы формирует микроконтроллер или устройство (управляет какими-то другими устройствами и т. п.).
· Связывается ли микроконтроллер (устройство) с ЭВМ. Если да, то каким образом (по какому протоколу) и какая программа будет с ним взаимодействовать.
· Алгоритм работы программы или устройства (что конкретно в какой момент она должна делать и т. п.). Например, можно составить и приложить блок-схему, либо описать алгоритм словесно.
· Характеристики питания микроконтроллера или устройства (напряжение питания контроллера, предельный потребляемый ток, нужен ли энергосберегающий режим, и т. п.).
Укажите все известные Вам подробности – конкретные типы и модели устройств и элементов схемы, протоколы связи, и другую известную Вам техническую информацию о проекте. Если у Вас есть функциональная или электрическая схема устройства, желательно приложить её, т. к. это поможет нам понять задачи, решаемые микроконтроллером, и алгоритмы его работы. Вы также можете указать, какие технические вопросы Вы оставляете на наше усмотрение. Если проект подразумевает, что мы должны разработать также программу для ЭВМ, необходимо описать требования к ней.
Прошивка и отладка. Как будет происходить прошивка микроконтроллеров: сможете ли Вы прошить микроконтроллеры самостоятельно, или это должны делать мы (в последнем случае, вышлете ли Вы нам чистые микроконтроллеры или мы должны приобрести их сами).
Те же вопросы возникают в отношении тестирования и отладки ПО или работы устройства: будем ли мы производить их сами, либо эту работу будете выполнять Вы. Учтите, что отладка, как правило, многоэтапна и требует определённых технических навыков. В подавляющем большинстве случаев отладка производится на стороне разработчика. Однако в некоторых случаях какие-то части конечной системы (управляемое оборудование, датчики, источники специфических сигналов и т. п.) могут у нас отсутствовать. Как в таком случае можно будет проверить и отладить работу изготавливаемого ПО или оборудования? Можете ли Вы предоставить нам такие средства на время выполнения работ? Может ли мы сами сымитировать их работу? Или конечная отладка возможна только у Вас?
Другая информация. Опишите любые другие Ваши пожелания, касающиеся проекта (например, что важнее – повысить надёжность или быстродействие устройства, снизить цену, повысить скорость выполнения заказа и т. п.).
Полнота описания. Опишите задачу настолько полно и точно, насколько можете. При необходимости наш специалист свяжется с Вами и уточнит детали, не отражённые в ТЗ.

btr1209

тут столько написано что проще сказать “вертолетная наза с возвратом домой”

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

vik500

Это типовое задание а нам надо написать своё, вот я выложил своё и попросил проверить и дописать как я назвал бред.