Система стабилизации DJI для вертолетов классической схемы и не только!
Для того чтоб корячить это все на логике нужно знать как сигналы совпадают по фазе поэтому и нужен двухлучевой осцыл чтоб это посмотреть меняется ли фаза при изменении высоты и направления
Сергей, Вы все верно говорите - безусловно понадобится двух лучевой осциллограф. Виктор вероятно изыщет такую возможность. Там все должно быть более-менее линейно, кроме участков с разворотами, из-за того, что Наза резко “подруливает” моторами в начале разворота. Важно понять на 100%, - в этот момент она “крутит” верхними и нижними одинаково или вернее: фазы на верхнем и нижнем моторе зеркально совпадают или нет. Если повезет и это так, то вариант на логике можно будет назвать простым и элегантным решением.
Я думаю что должны совпадать они должны работать от одного генератора а уже управляющий сигнал изменяет длительность для каждого двигателя и они должны быть одинаковые для верхних и нижних при изменении газа всё должно совпадать. Но это моё мнение надо проверять. Вы подробней описывайте а лучше и схемы рисуйте будем обсуждать а то приходится догадываться, а может я что не так понимаю.
Виктор, Вы не совсем уловили - они могут не совпадать специально, если это (к примеру) требуется для поддержания ровного висения на разворотах. Например, если верхние моторы уменьшают скорость вращения, то нижние должны увеличить и возможно зависимость будет не линейной, или могут запускаться раньше или позже. В общем х.з. - лучше взять Назу и сходить туда, где есть осциллограф с двумя входами. Если фазы совпадут на 100, то с логикой проблем не будет.
Ребята не надо забывать что любой компьютер может выполнять только одно действие в один момент времени , просто он делает это быстро и нам кажется что комп делает все сразу.
Авр пик контролеры наза и прочее это тот же комп и работают все одинаково поэтому и надо посмотреть как это все выглядит если этого не знать дальнейшее обсуждение тол ко мусорит ветку, значит засинхронизироватся надо от любого мотора можно взять и М1 и относительно его посмотреть как все выглядит.
Пример
__-__ верхний если такой вариант или __—__ такой
__–_ нижний тататататататат атататат __-___ (татата заполнитель для форматирования)
то смысл есть заморачиватся с логикой
в общем надо посмотреть что происходит в реале это если сочинять на логике
Если применить АВР тогда не надо заниматься ерундой нужно все это поручить компьютеру.
И так что мы знаем
1 с назы выходит управляющий сигнал с изменяемой скважностью диапазон приблизительно от 800 до 2100 мили секунд с частотой 400 гц
2 середина для серв приблизительно 1500 мс так же бывает 760 мс и еще один не помню но это сейчас не важно
3 используем схему три коптера по 2 мотора на луч
4 наза поворачивает моторами
5 цифровая серва жрет 200 Гц АП, 300 Гц хвост
теперь что нам нада
1 превратить сигнал с каждого луча для управления сервой
2 газ проще пустить в обход назы
3 добыть сигнал для рудера
4 установка конечных точек АП, для хвоста обычно есть в гироскопе
не надо сочинять велосипед назовцы уже все придумали Виктор это доказал на практике
видео не показывает
цифровая серва жрет 200 Гц
Цифровая серва прекрасно работает на 400 Гц. Я подключал сервы напрямую к NAZA-M и летал. NAZA-M прекрасно подходит к вертолету и цена в три раза дешевле NAZA-H но есть одно НО не работает автопилот.
Важно понять на 100%, - в этот момент она “крутит” верхними и нижними одинаково или вернее: фазы на верхнем и нижнем моторе зеркально совпадают или нет.
НАЗА рулит всеми моторам сразу, если на верхних длинна импульса уменьшается то на нижнем длинна импульса увеличивается, соответственно верхний мотор увеличивает обороты а нижний уменьшает. На сколько это происходит синхронно я попробую это проверить.
1 присваиваем значение переменным элерон=800
2 элеватор=800
3 пич=800
4 рудер=1500
5 лимит низ=800
6 лимит верх=2100
8 М1=лимит низ
9 М2=лимит низ
10 М3=лимит низ
11 М4=лимит низ
12 М5=лимит низ
13 М6=лимит низ
14 считываем длительность импульса с канала М6 и присваиваем значение переменой М6 и переменой а М6=а
15 считываем длительность импульса с канала М3 и присваиваем значение переменой М3 и переменой б М3=б переход в подпрограмму расчета длительности импульса переход на 43 строку
16 присваиваем новое значение пич=с
17 открываем выходной порт для пич настраиваем скорость выдачи 200Гц и передаем значение переменой пич
18 считываем длительность импульса с канала М5 и присваиваем значение переменой М5 и переменой а М5=а
19 считываем длительность импульса с канала М2 и присваиваем значение переменой М2 и переменой б М2=б переход в подпрограмму расчета длительности импульса переход на 43 строку
20 присваиваем новое значение элерон=с
21 открываем выходной порт для элерон настраиваем скорость выдачи 200Гц и передаем значение переменой элерон
22 считываем длительность импульса с канала М4 и присваиваем значение переменой М4 и переменой а М4=а
23 считываем длительность импульса с канала М1 и присваиваем значение переменой М1 и переменой б М1=б переход в подпрограмму расчета длительности импульса переход на 43 строку
24 присваиваем новое значение элеватор=с
25 открываем выходной порт для элеватор настраиваем скорость выдачи 200Гц и передаем значение переменой элеватор
26 сравниваем значение М6 и М3 вычисляем кто больше если М3 значит правый поворот и переход на строку 27 если М6 левый переход на строку 28
27 М3-М6=Хправ1 также присваиваем значение переменой поворот=1 переход строка 29
28 М6-М3=Хлев1 также присваиваем значение переменой поворот=2
29 сравниваем значение М5 и М2 вычисляем кто больше если М2 значит правый поворот и переход на строку 27 если М5 левый переход на строку 31
30 М2-М5=Хправ2 также присваиваем значение переменой поворот1=1 переход строка 32
31 М5-М2=Хлев2 также присваиваем значение переменой поворот1=2
32 сравниваем значение М4 и М1 вычисляем кто больше если М1 значит правый поворот и переход на строку 27 если М4 левый переход на строку 34
33 М1-М4=Хправ3 также присваиваем значение переменой поворот2=1 переход строка 35
34 М4-М1=Хлев3 также присваиваем значение переменой поворот2=2
35 если поворот+поворот1+поворот2=3 то переход на строку 38 пр
36 если поворот+поворот1+поворот2=6 то переход на строку 40 лев
37 рудер=1500 переход на 42 строку
38 (Хправ1+Хправ2+Хправ3)/3=угол.пов
39 1500+угол.пов=рудер переход на 42 строку
40 (Хправ1+Хправ2+Хправ3)/3=угол.пов
41 1500-угол.пов=рудер переход на 42 строку
42 открываем канал рудера настраиваем скорость передачи 300Гц и передаем переменную рудер переход на 14 строку
43 подпрограмма расчета длительности импульса
здесь высчитываем значение для луча (а+б)/2=с
здесь сравниваем результат с лимитами с <= лимит низ если истина присваиваем значение с=лимит низ если лож ничего не делаем
здесь сравниваем с >= лимит верх если истина присваиваем значение с=лимит верх если лож ничего не делаем
возврат
недосмотрел нужно заменить на вот эти строки
29 сравниваем значение М5 и М2 вычисляем кто больше если М2 значит правый поворот и переход на строку 30 если М5 левый переход на строку 31
32 сравниваем значение М4 и М1 вычисляем кто больше если М1 значит правый поворот и переход на строку 33 если М4 левый переход на строку 34
39 рудер+угол.пов=рудер переход на 42 строку
40 (Хлев1+Хлев2+Хлев3)/3=угол.пов
41 рудер-угол.пов=рудер
Всё таки не понимаю, зачем цепляться к фазе сигналов управления, моторы (сервы) управляются шим-сигналом, в котором информацию несёт именно длительность единичного уровня (зная частоту удобнее применять термин скважность)…
Устройство вывода - это то устройство на который будет выводиться информация со своего микроконтроллера. По алгоритму самой программы, всё в целом так, но когда вы увидите сами, что выходит с назы многие вопросы отпадут (а также добавятся новые) сами собой.
Многие моменты, таких как установка частоты сигналов управления серв делается очень просто, “автоматически”, так что на эти моменты можно внимания не уделять вообще.
(как хорошо, что на сайте заработала проверка лингвических ошибок 😃 )
к фазе нужно цепляться если строить на логике если программно то к фазе цепляться не надо замените длительность на скважность может так для вас будет понятнее
зачем видеть что с неё выходит если она сама следит за горизонтом и делает нужные коррекции конкретней что вас смущает в алгоритме данной программы
наша задача из 6 каналов сделать 4
Сергей здравствуйте !
Я противник “логики” (в смысле, собирать на отдельных логических элементах, в тоже время, в специализированных микросхемах, например шим контроллеры в блоках питания, логика уже встроена, без неё ни как), по поводу замены длительности на скважность, это да, кому как удобнее.
Зачем видеть что выходит с контроллера, да, в принципе это даром не надо. Но как удастся отстроить программу, не видя что приходит на контроллер, как выполнить масштабирование (соизмерение входных и выходных значений) сигналов. Безусловно, это всё можно просчитать (при достаточном практическом опыте), но на практике (говоря прямо, любителю-самоделкину) без этого “экранчика”, лично я не представляю как это можно сделать.
В программе не то что смущает, (мне знаком язык ассемблер и Си, у Вас другой язык, так мне кажется по “построению” и Вашему написанию, хотя это не важно). Я до конца не понимаю некоторые “тонкости” работы назы. Да, моторы в паре (при развороте) работают - один уменьшил обороты другой наоборот увеличил. Но это при “идеальных” условиях, то есть когда наза находится в “горизонте”. Если идёт болтанка и (или) резкое изменение высоты (например и режим автомат, не ручной) происходят не понятные мне процессы, У одного мотора обороты уменьшаются до одного предела (например -80 единиц) а у другого увеличивается на +130 (а не на +80, как можно было бы предположить) и ещё идёт поправка от крена итд. Предполагаю, это происходит (от части) не корректная отработка (на столе), а в полёте такого происходить не будет или же сама наза в ведёт свои дополнительные поправки. На счёт увеличения на +130 или уменьшения (-80) единиц, это нужно для получения сигнала корректировки на сервы автомата перекоса (и сигнала рудера). Для себя решил, на все эти “мелочи” не обращать, будут “полевые” испытания, они всё и покажут 😃
Алексей я так и не понял вы хотите написать программу назы для верта или адаптер для управления верта контролером квадрика
Алексей
Всё управление происходит синхронно то есть если летим в перёд передние двигатели верхний и нижний уменьшают обороты одинаково а задние увеличивают (длинна импульсов на верхних и нижних двигателях одного луча одинаковые на все 100%) изменение происходит при развороте длительность меняется на всех и тоже линейно (одинаково).
Если возьмем горизонтальное висение при идеальных условиях за 100 единиц то при полете вперёд передние верхние и нижние будут 90 ед. а задние 110 ед. если туда добавляем разворот то передние верхние 100 ед. задний верхний 120 ед. и соответственно передние нижние 80 ед. задний нижний 100 ед. так мы летим по кругу.
Программу назы - нет ! Для этого надо такую(большую 😃 ) голову иметь, её наверное и один человек вообще не напишет (если он не 10-ть раз гений).
Именно адаптер, но в нём (этом “адаптере”) всё равно придётся “генерировать” все сигналы управления (которые пойдут на сервы, все 5-ть (4-ре для электры, 5-ый сигнал соответственно на регуль мотора) штук). А их настройкой (крайние точки, среднее положение) надо будет заниматься, для этого и надо (желательно) иметь этот маленький экранчик, если это Вы имеете в виду. По крайней мере это моё представление данной затеи.
(длинна импульсов на верхних и нижних двигателях одного луча одинаковые на все 100%)
Виктор, честно говоря ,у меня в голове небольшая каша, в автоматическом режиме у меня получалось именно так как я написал (возможно я действительно ошибаюсь, но получал именно такой результат). У меня и появился большой вопрос, именно при этих разницах в значениях между верхним и нижним моторами одной пары, думаю это при “выворачивании” руля до упора (надо будет перепроверить), а если это так - то ничего страшного не будет, это же не 3Д верт, “газуешь” спокойно, плавно поворачиваешь 😃 и всё будет OK. (каша в голове - “сопротивление” буквально на каждом шагу, думал испытания проводить ещё недели две назад, а на практике нет, не тут то было и когда они будут пока не знаю…)
Алексей иногда если много знаешь вредит мне кажется что именно это и происходит в вашем случаи (не в обиду)
вам надо сначала написать саму программу а уже потом заниматься украшательствами, Виктор поднял верт если я правильно понял тупо воткнул место моторов сервы изменил настройки назы и он полетел и даже сам весел.
То что написал я это быстрей алгоритм чем программа переложите это на СИ и получите основной код адаптера и его можно облетать
средние точки серв нам ненужно нам нужен только максимально допустимые значения верх и низ чтоб не выламывать механику и была возможность настраивать максимальные углы атаки лопастей те же -6 +10 сигнал мотора правильней взять с приемника на прямую а наза будет управлять только шагом
эксперименты на столе нужного результата не дадут поскольку у назы мозг сносит и она не понимает что происходи поскольку нужного отзыва не видит
вот когда это полетит тогда можно заняться украшательством и то я вижу там всего 4 кнопки и один джампер для переключения цифровые или аналоговые сервы АП две для настройки нижнего предела и две для верхнего остальное написали назовцы
Виктор поднял верт если я правильно понял тупо воткнул место моторов сервы изменил настройки назы и он полетел и даже сам весел.
Да я поднял вертолет с NAZA-M и он прекрасно летает блинчиком и висит в режиме GPS.
понастрочили… 😃
Ребята не надо забывать что любой компьютер может выполнять только одно действие в один момент времени
Мы вкурсе 😉 Если Вы говорите о фазах программной обработки, то их значения (в нашем случае) мизерны и их величинами можно просто пренебречь, особенно если там будет:
16 гигагерц, для выполнения данной программы будет достаточно, AVR - это сила
(шутка) 😃
Мы говорим лишь о технической возможности.
и надо посмотреть как это все выглядит если этого не знать дальнейшее обсуждение тол ко мусорит ветку
понадобится двух лучевой осциллограф. Виктор вероятно изыщет такую возможность.
Кто нибудь спорит?
По поводу мусора - не согласен! Именно обсуждение вопросов адаптации Naza-M Lite к вертолету оживило эту ветку и наоборот только способствует поиску решения. Текущая активность говорит об интересе к теме сама за себя.
Виктор поднял верт если я правильно понял тупо воткнул место моторов сервы изменил настройки назы и он полетел и даже сам весел.
Сергей, не надо все валить в одну кучу. Есть два пути решения этой задачи: на логике и программный. Мы с Виктором, пока изучаем первый и есть вероятность, что все получится относительно просто.
Благодаря усилиям и практическим тестам Виктора мы выяснили несколько важных фактов:
- Вертолет в режиме коптера Y6 нормально стабилизируется, летает и управляется в ручном режиме (при наличии доп. гироскопа на рудере)
- Наза всегда делает вертолетный разворот в режиме RTH
- много других “мелочей”, который “всплыли” в процессе обсуждения
Это исходные данные и необходимый минимум тестов.
Но, теоретически, я за программный вариант, т.к. это на порядок больше возможностей. Вы написали примерный алгоритм - это замечательно, но еще нужен заинтересованный человек, имеющий опыт работы с AVR в соответствующей программной среде, чтобы доводить все это “до ума” Версия 1.0 никогда не бывает окончательной.
Добрый день. Не как не получается настроить naza h, может кто то поможет советом. Суть проблемы в том, что при взлете вертолет сильно начинает вилять хвостом, в чем дело не пойму, чувствительность менял,аппа jr pcm9x2, на хвосте серва align ds620, знает может кто в чем дело???
Олег я в принципе тоже за программный вариант но с логикой меня тоже вполне устроит чтоб мудрить на логике не хватает данных о них я уже писал да если сдвиг на пару тактов этим можно пренебречь а если на пол управляющего импульса тогда как, какой активный уровень 0 или 1 не зная этого можно рассуждать до посинения тем самым просто мусорить в ветке вот что я имел виду по поводу мусора
Виктор можете приоткрыть занавес вашего решения на предмет что кроме назы там добавилось нужен ли был реверс серв на тарелке ну в общем такие моменты
заинтересованное лицо надеюсь у нас есть это Алексей судя по его постам он уже достаточно освоился с АВР но у него может это коммерческий проект
Добрый день. Не как не получается настроить naza h, может кто то поможет советом. Суть проблемы в том, что при взлете вертолет сильно начинает вилять хвостом, в чем дело не пойму, чувствительность менял,аппа jr pcm9x2, на хвосте серва align ds620, знает может кто в чем дело???
если в полете перестает то подымите кривую газа из за малых оборотов не хватает производительности хвоста
до полета еще не дошло, на земле, когда вот вот вертолет оторвется, у него начинает вилять хвост