Бесколекторный команч 2.4 ГГц!

Genosse

Спасибо, Сергей! Я, правда, уже приобрел новый микшер и с ним все ОК. У меня на старом микшере пропал сигнал на одной из дорожек, возможно, я что-то сам напортачил, когда компоновал схему (я снял с него термоусадку и т.д.)…
Будет время, разберусь с поломкой… задумок много, и если окажется, что он исправен, то сходу в дело пойдет. 😃

Hirobo_Shuttle_Plus

Хочу поделиться опытом с собирающими бесколлекторный соосник.

Собрал верт по рекомендациям Andrey73 и с его микшером:

Подпиливал корпус и сервы. Поставил движки OR2020F-3500: , гироскоп: и регуляторы www.rangevideo.ru/index.php?productID=127:

Были следующие проблемы: Биение хвостовой балки около 5 см около нормали не смог побороть никакими настройками гироскопа и передатчика Futaba 7CH. Летать было практически невозможно.

Поставил регуляторы rcmag.ru/index.php?cPath=15_311_251#product_info.p…

И чудо: хвостовая балка, как иногда пишут “как прибитая”. Вертолет управляется очень адекватно, плавно, я бы сказал мягко. В сравнении с легендарным Hirobo XRB - на уровне, боюсь быть субъективныым - не хуже. Hirobo XRB тоже имею место иметь:

Указанный регуль хоть и расчитан на 6А, но имеет хорошие характеристики, защиту от перегрева, и хорошее описание по программированию. Кроме того, легче на 2 гр. первого и почти в два раза меньше. Замерял потребляемый ток указанными движками - не выше 3, 5 А. Думаю и 6А-рного регуля хватит, если не врубать полный газ при стопоре роторов.

Вот фотка установки регулей на соосник:

Я получил огромное удовольствие и от сборки и от результата. Желаю всем удачи и готов поделиться опытом.

m_denisov

Очень хорошее описание и, судя по фото и отзывам, результат, мне очень понравилась компановка.

Рааскажите подробнее про работу гироскопа, работает ли удержание балки, не уводит ли хвост при резком подъеме например метра на 3-5, и последний вопрос, сколько груза может поднять ваш вертолет, пока рекорд доп нагрузки к снаряженному вертолету составляет 200-250г.
У вас мощьные и оборотистые моторы, какой результат будет у Вас?

Не забудте лопасти Xtreme потавить, тяга увеличится ощутимо.

PigTail

2 MPetrovich Формулы совершенно правильные, ИМХО более правильноих было бы изобразить так:
channel0_out = channel0_in + (channel1_in - MIDDLE_VALUE)
channel1_out = channel0_in - (channel1_in - MIDDLE_VALUE)
Т.е. то, чтов скобках на самом деле просто приращение от середины сервоимпульса, т.е. в нашем случае на один канал идет увеличение на приращение руддера, а на второй канал уменьшение на приращение руддера от среденего положения

MPetrovich
PigTail:

2 MPetrovich Формулы совершенно правильные, ИМХО более правильноих было бы изобразить так:
channel0_out = channel0_in + (channel1_in - MIDDLE_VALUE)
channel1_out = channel0_in - (channel1_in - MIDDLE_VALUE)

Ну и что получиться? Пробовал ли ты подставлять значения в эти формулы?
Для примера возмём: channel0_in=2мСек, а channel1_in=1,7мСек. Получим: 2+(1,7-1,5)=2,2мСек. Опять за границей диапазона.
Во втором случае для примера возмём: channel0_in=1мСек, а channel1_in=1,7мСек. Считаем: 1-(1,7-1,5)=0,8мСек.) Снова вылетели за диапазон.
Я после всех этих “разборок” стал думать, что Андрей сделал свой миксер именно “правильно считающим”, оттого и работает он правильно, чётко и аккуратно. А какая математика в тех миксерах, что продаются под названием V-tail, так никто и не знает. Если она такая, как приведена в примере прошивки, то понятно отчего эти миксеры “дуркуют” на вертолётах.

leprud

Чего-то я окончательно запутался…
Итак, берем 2 канала входных, выставляем оба в центр, на выходе тоже оба канала в центре.
А теперь один из входных уводим в ноль.
Что должно быть на выходе??

PigTail

Вообще то там еще ограничение на минимальный и максимальный размер выходных импульсов, без этого естественно за диапозон выскочите.

MPetrovich
leprud:

Чего-то я окончательно запутался…
Итак, берем 2 канала входных, выставляем оба в центр, на выходе тоже оба канала в центре.
А теперь один из входных уводим в ноль.
Что должно быть на выходе??

А вот о том и разговор, что должно быть на выходе. Всё зависит от формул, по которым считаются выходные значения.
Я думаю, при вышеуказанных параметрах, на одном выходе сигнал должен стать больше относительно среднего значения, а на другом меньше. Причём, если смешение происходит с к-том 1, то при выведении одного канала в 0, +/-дельта на выходах должна составить 1/4 диапазона, т.е 0,25мСек. Если же оба канала двинуть в начало диапазона, то на одном выходе должно быть макс. значение - 2мСек, а на другом мин. - 1мСек. При максимальных значениях входных сигналов выходы поменяются местами. Там, где была 1мСек станет 2мСек, а где было 2мСек станет 1мСек. По-моему должно быть так.

PigTail:

Вообще то там еще ограничение на минимальный и максимальный размер выходных импульсов, без этого естественно за диапозон выскочите.

Зачем же ограничивать диапазон регулировок? Это нелогично.

PigTail
MPetrovich:

Зачем же ограничивать диапазон регулировок? Это нелогично.

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

MPetrovich
PigTail:

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

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

Кстати в нашем случае соостного верталета еще неплохобы ограничение на выходные сигналы при минимальном газе (это channel0_in),

Это чтобы не стопорился мотор при сбросе газа? Согласен, полезная функция.

да и сигнал от руддера с коэффициентом брать и возможно меняющимся от величины…

Ну, это на любителя.

PigTail
MPetrovich:

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

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

MPetrovich:

…Это чтобы не стопорился мотор при сбросе газа? …

Скорее чтобы гира не вращала моторы при газе в нуле.

MPetrovich
PigTail:

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

Сигнал на моторе ограничен напряжением питания, а не длительностью РРМ-импульсов. Я же говорил о том, что не стоит ограгичивать РРМ-сигнал по длительности находящийся внутри диапазона от 1 до 2мСек.

Скорее чтобы гира не вращала моторы при газе в нуле.

С этим также не могу не согласиться.

mama40li

Снова здраствуйте!!
Похоже настало время пояснить в дискуссии физический смысл т н V-tail mixer’а.
V-tail - берем обыкн хвост самолёта, который управляется прямо: стик вверх-вниз - работает стабилизатор, стик лево-право - работает руль направления (допустим такие упрощения: хотя обычно эти каналы конечно на разных ручках и допустим, что нет обычного реверса на канале стабилизатора). Теперь берем, поворачиваем наш хвост на 45 град по часовой стрелке - делаем из него – т н V-tail. И как нам добиться теперь, чтобы он вел себя также как и обычный хвост, реагируя на стик по прямым???. Выходит что нам необходимо точно так же повернуть и ситемы управления - каждая из серв в отдельности будет теперь управляться не по прямым “верх-низ”,“лево-право” - а по ДИАГОНАЛЯМ. Вот и вырисовываются те самые 45 град, которые Вы, МПетрович, пытались вставить в формулы работы миксера. Но только появляется одна проблема - железо на котором всё это приходится реализовать.
8-битный RISC контроллер младшего звена, 2 входн и 2 выходн ШИМ(англ PWM) сигнала в реальн времени на прерываниях таймера и изменения входн логич уровней - какая там тригонометрия? Там ни набора инструкций ни времени ни памяти - ни фига. Вот и апроксимируют тупо сложением и вычитанием, не заморачиваясь даже над тем, что ход ручек по диагоналям немного больше чем по прямым - вот тут нам и тригонометрия не повредила бы.

mama40li

P. S. To МПетрович: когда вы вставляете в эти формулы значения для channel0 и channel1 то вставляйте вычитая 1 мс стробирующего импульса, т к их область значений его не покрывает.

MPetrovich
mama40li:

P. S. To МПетрович: когда вы вставляете в эти формулы значения для channel0 и channel1 то вставляйте вычитая 1 мс стробирующего импульса, т к их область значений его не покрывает.

Какое отношение стробирующий импульс имеет к выходу приёмника? На выходе уже наличиствует чистый РРМ-сигнал с длительностью в фиксированном диапазоне. Стробирование необходимо для разделения каналов и в исполнительных устройствах никакого стробирования не происходит.
Спасибо за пояснения насчёт V-tail. Я для себя наконец уяснил что это такое.
В моих формулах нет даже намёка на тригонометрию - сплошная голая арифметика. Я просто предлагал делать вычисления через среднее арифметическое. Может Вы меня спутали с leprud?
Однако, если построить графики по предложенным мною формулам, то получатся те самые пряммые под углом в 45 градусов.

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

Этой фразы я совсем не понял. При чём здесь “ход ручек”? Всё масштабирование происходит внутри миксера и нет нужды учитывать фактическое расстояние, которое проходит конец стика. И не нужна здесь никакая тригонометрия.

MPetrovich

Вчера проверил работу миксера с помощью сервомашинки. Подключил входы миксера к каналам газа и раддераи смотрел поочерёдно на одном и на другом выходе как реагирует сервомашинка. По-моему (как я понял после тестов) в миксере тупо складывают и вычитают сигналы не обращая внимание вышел выходной сигнал за диапазон или нет.
При включении, когда газ в нуле и раддер посредине, серва занимает одно из крайних положений - в зависимости от того, к какому выходу подключена. При перемещении стика газа серва соответственно идёт в сторону среднего значения (либо вверх, либо вниз - смотря к какому выходу подключена) и при достижении стиком среднего значения также достигает среднего положения. Если оставить газ в нуле и двигать раддер, то серва будет отклоняться в так, как будто она в среднем положении. Т.е. серва выходит за пределы диапазона и выдаёт значения “меньше нуля” (или “больше нуля”, если подключена к другому выходу. В обратную сторону серва в максимуме доходит до середины диапазона.
Таким образом, на выходах миксера явно присутствуют сигналы с длительностью меньше 1мсек и больше 2мСек. Данный факт проливает свет на причины, по которым соосники с установленным миксером “сходят с ума”.

Barin
MPetrovich:

Вчера проверил работу миксера с помощью сервомашинки…

Речь идет об обычном V-миксере? А кто нибудь, у кого есть миксер Андрея, может провести эксперемент именно с ним? Будет ли он вести себя так:

Если оставить газ в нуле и двигать раддер, то серва будет отклоняться в так, как будто она в среднем положении.

MPetrovich
mama40li:

Вот пару формул основных из файла асма для ATiny13:
channel0_out = channel0_in + channel1_in - MIDDLE_VALUE
channel1_out = channel0_in - channel1_in + MIDDLE_VALUE
www.gadgetparadise.com/121901/index.htm
Это ссылка на простой V-tail mixer и рабочий код даже в исходнике на AVRAsmе, ну с схемка там тоже есть.

Посмотрел наконец схемку и программу по ссылке. Сайт отчего-то долго отказывался открываться. В программе понял очень мало, практически ничего, но формулы приведённые выше отловил. ‘mama40li’, если Вы разбираетесь в программировании, то может подскажете как откорретировать эти формулы под выведенные мной “среднеарифметические”? Было бы любопытно попробовать прошить контроллер с этими формулами и полетать с ним.
И вообще, мужики, подключайтесь пожалуйста! Среди вас есть люди знающие и понимающие, не поленитесь поковырять программку. Исходник на Ассемблере есть в той ссылке.

esp
MPetrovich:

Среди вас есть люди знающие и понимающие, не поленитесь поковырять программку. Исходник на Ассемблере есть в той ссылке.

Что вы оттуда хотите ковырнуть?

Помимо выше приведённых формул, есть проверка на ограничения диапазона в функции limit_output_pulse_length , там все по комментариям видно (лишнее убрал чтобы не пугать):
limit_output_pulse_length:
; check for negative value
brmi lopl_set_low

; check for the upper limit
brsh lopl_set_high

lopl_add_min_pulse_length:
; add min pulse length

; substract 256 (because the first timer wraparound is not counted)

ret

lopl_set_high:
; set pulse length to the maximum value
rjmp lopl_add_min_pulse_length

lopl_set_low:
;обнуление
rjmp lopl_add_min_pulse_length

MPetrovich
esp:

Что вы оттуда хотите ковырнуть?

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

Помимо выше приведённых формул, есть проверка на ограничения диапазона в функции limit_output_pulse_length , там все по комментариям видно (лишнее убрал чтобы не пугать):

Для Вас “…там все по комментариям видно…”, а для меня - тёмный лес.

esp
MPetrovich:

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

Для Вас “…там все по комментариям видно…”, а для меня - тёмный лес.

Эти?

Out1=(In1+In2)/2
Out2=30-(In1+In2)/2

Что такое 30?

В схеме Attiny13 использует внутренний генератор (кварц) вроде как 9.6Мгц (надо еще разбираться - он калибруется). Таймер запрограммирован на тики кварца 1/8. Все константы приведены в тиках таймера.

Вот константы из кода:

;***** Constants
.equ CHANNEL_RESOLUTION = 1200 ; resolution of channels
.equ MIDDLE_VALUE = CHANNEL_RESOLUTION / 2 ; middle position value
.equ CHANNEL_MIN_PULSE_LENGTH = 1200 ; min pulse length measured in timer increments
.equ CHANNEL_PULSE_REPEAT_RATIO = 24000 ; PPM pulse repeat ratio measured in timer increments
.equ GLITCH_TOLERANCE = 600 ; If the pulse length is lower or higher by this value than expected the pulse considered as glitch
.equ PULSE_REPEAT_TIMEOUT = 200 ; Servo pulse repeat timeout value for pulse timeout (in 256x timer increment)
.equ PULSE_OUT_DISABLED_STATUS = 0xff ; Pulse output disabled status code

; default input output values
.equ DEFAULT_CHANNEL_OUT_VALUE = MIDDLE_VALUE + CHANNEL_MIN_PULSE_LENGTH - 256;
.equ DEFAULT_CHANNEL_IN_VALUE = MIDDLE_VALUE;

Есть у кого дока по сигналу который управляет сервами и т.д.