Самодельный передатчик (часть 2)

EagleB3
Pav_13:

А вот случай “перекрестного” микширования (“первый канал микшируется на второй, второй канал микшируется на третий, третий канал микшируется на первый”) совсем не представляю, ни зачем это надо, ни как сделать 😃

Зачем - не важно. Как сделать - микшеры назначить.
Но если такое перекрестное или кольцевое микширование возможно, значит:

  • либо такое миширование должно быть запрещено идеологически и программа кодера должна препятствовать организации таких завязок;
  • либо алгоритм управления должен корректно его реализовывать.
Pav_13

Я тему читал всю (но давно) и, мне кажется, здесь уже была эта ссылка rconline.ru/modules/smartsection/item.php?itemid=6…

Если да, и уважаемые авторы программы это читали, то можно коротко пояснить… обработка каких функций, использованных в обсуждаемом кодере не рассмотрена в статье по ссылке?
Просто, я статью бегло читал и ранее, и сейчас просмотрел… Вроде бы, в ней рассмотрены и конечные точки, и микширование, и экспоненты 😃
Чего не хватает для математики кодера?

Denn

"Поэтому вопрос к Denn (и я удаляюсь паять кодер):

Так все же, тот факт, “что ручка продолжает двигаться, а машинка уже стоит” - это нормально или “имеет место неверно сконструированный канал”?! "

Ещё раз попробую объяснить: ручка продолжает двигаться, а машинка уже стоит - это нормально при работе микшера. Это значит, что все ручки поставлены в такое положение , что модель должна лететь ( или ехать … ) с таким положением руля.

Если миксеров в канале нет, то , конечно, это не совсем правильно, хотя при желании можно оправдать и такой режим. Всё зависит от необходимости управления.
Лично меня такое положение вещей вполне устраивает, как и JR , и Hitec.
И особенно приятно использование аналоговой крутилки для настройки этих положений!

Pav_13
Denn:

Ещё раз попробую объяснить:

Спасибо за попытку!

К сожалению, по причине моего ничтожного опыта обращения с микшерами, я опять ничего не понял 😊
А может, у меня с Вами логика не совпадает?
К примеру, такой логический ход мои мозги не переваривают:

Denn:

ручка продолжает двигаться… Это значит, что все ручки поставлены

Как может двигаться то, что уже поставлено (остановлено, то есть) 😃?

Предлагаю прекратить дискуссию, тем более, что вот такой аргумент

Denn:

Лично меня такое положение вещей вполне устраивает…

для меня абсолютно бесспорен! Ибо каждый имеет право на личные предпочтения!

А вот в том, что такое положение вещей устраивает

Denn:

как и JR , и Hitec.

у меня есть определенные сомнения, но они требуют проверки, поэтому возражать пока не буду… Пойду читать инструкции … Хайтек у меня есть, ДжиЭр есть у товарища…

serg111

Решил сделать кодер и столкнулся с этим:

dollop:

Не первый раз делаю кодер с экраном от 3310, но такое вижу впервые. Кто подскажет, как лечить?

Я так понял уже пофиксили для этого экрана, можете выложить?

serg111

Разбрался кажись.

void LCD_clear (void)
{
unsigned char x, y;
for (y=1; y<7; y++)
for (x=0; x<84; x++) buff[y][x]=0;

void LCD_refresh (void) // Обновление дисплея (отображение буффера)
{
unsigned char i,j;

LCD_DC=0 ;
spi(64);
LCD_DC=1;
for(i=1; i<7; i++)
{
LCD_DC=0 ;
spi(64+i);
spi(128);
LCD_DC=1;
for (j=0; j<84; j++) spi(buff[i][j]);
}
}

void LCD_pixel (unsigned char x, unsigned char y, unsigned char color)
{ // Рисуем пиксель. Все остальные процедуры работают через нее
unsigned char i, bt;
//x=83-x;
//y=47-y;
y=y+8;
i=y>>3;
bt=1<<(y & 0x7);
if(color) buff[i][x]|=bt;
else buff[i][x]&=(~bt);
}

По мотивам msv1.8 3310 upsidedown

Coder.rar

sslobodyan

Можно, я чуть выскажу свое видение микширования и ЕРА? 😃
Для микширования можно применять два метода.
1 - как сделано у Фокуса. Просто складываем каналы умноженные на их весовые (процентные) коеффициенты.
2 - с пересчетом весовых коеффициентов. Для этого сначала расчитываем новые коеф (К2) пропорционально установленным пользователем, но так, чтобы их сумма давала 100% (или ЕРА). Т.е. если пользователь установил смешивание 3 каналов с коеф. 50, 40 и 30, то расчетные К2 будут 50/(50+40+30)*100=42, 40/(50+40+30)*100=33 и 30/(50+40+30)*100=25. В этом расчете 100 - это ЕРА. Такой расчет гарантирует, что при максимальных отклонениях стиков всех микшируемых каналов не даст машинке выйти за ЕРА. И если мы изменим ЕРА, то соотношение влияния стиков на результат не изменится. Даже если пользователь установит для всех трех каналов 100% микширования, то каждый из каналов получит только по 33% и равную долю влияния на результат. Не будет ситуации, что стик еще движется, а машинка уже уперлась. И функция двойных расходов в таком случае решается как изменение ЕРА в зависимости от какого-либо переключателя или даже крутилки.

Сорри за многабукафф 😃

EagleB3
sslobodyan:

2 - с пересчетом весовых коеффициентов

Вот этот алгоритм и описан в посте #2698. Неужели настолько неузнаваемо? 😊

А вот идея менять расходы движением EPA мне кажется не хорошей. Потому, что в одном месте приходится оперировать весовыми коэффициентами каналов (процентами), а в другом - градусами или миллиметрами.

Гораздо более юзефульно, КМК, определять общий коэффициент канала “одинарные/двойные” из установленных значений расходов и использовать этот коэффициент. На примере sslobodyan’а:
Двойные расходы = 100, одинарные = 60. Считаем коэффициент 60/100 = 0,6.
Веса установлены 50, 40 и 30 (сумма=120); веса, приведенные к 100% составят 0.42, 0.33 и 0,25 соответственно (в сумме = 1).

Полное (100%) отклонение главного стика канала даст:

  • на двойных расходах 100*0,42=42%
  • на одинарных расходах 100*0,42*0,6=25%
    Полное (100%) отклонение стика второго канала даст:
  • на двойных расходах 100*0,33=33%
  • на одинарных расходах 100*0,42*0,6=20%
    Полное (100%) отклонение стика третьего канала даст:
  • на двойных расходах 100*0,25=25%
  • на одинарных расходах 100*0,25*0,6=15%
    Сумма полного отклонения трех стиков:
  • на двойных расходах 42%+33%+25%=100% (А)
  • на одинарных расходах 25%+20+15%=60%. Как просили. (Б)

И при этом не надо никуда EPA перестраивать. EPA как параметр геометрии самолета или… Не знаю как лучше сказать… “На первый вылет - расходы поменьше”. Смысл не в расходах поменьше, а в уменьшении предельно допустимых углов отклонений рулей. Вот это - в чистом виде работа для EPA. КМК.

Проценты (А) и (Б), которые мы получили - это проценты от длительности канального импульса, установленного через EPA. Осталось добавить (вычесть) триммирование - и все, можно грузить длительность в таймер.

Триммирование, КМК, просится в процентах от установленного EPA, ибо тоже имеет прямое отношение к геометрии самолета. Получим простое смещение нуля рулевой машинки (на графике из поста #2696 вертикальная ось, от которой откладываются + и - рулевой машинки двигается триммированием влево-вправо).

dollop
EagleB3:

И при этом не надо никуда EPA перестраивать. EPA как параметр геометрии самолета или… Не знаю как лучше сказать… “На первый вылет - расходы поменьше”. Смысл не в расходах поменьше, а в уменьшении предельно допустимых углов отклонений рулей. Вот это - в чистом виде работа для EPA. КМК.

Ой встряну немножко.
Сразу оговорюсь, что ничего серьезней этого кодера я не видел.
Мне интересно, почему люди у которых есть аппа с возможностью изменения EPA, не могут поставить эксперимент? И выставить-таки все точки над ё. Хотя, может просто времени не хватает 😒
С выше приведенной цитатой не совсем согласен. Ибо даже в очень бюджетных аппах есть переключатель именно расходов. И я не думаю, что нужно на первых полетах рулить этими расходами посредством EPA. Микроскопом гвозди забивать. Хотя, может, я чего-то в высказывании недопонял.
Почитав несколько инструкций от разных футаб (в них говорится, что используется EPA именно для ограничения движения машинки по конкретному каналу. И как пример дается организация предотвращения перемещения манинки в одном из направлений…), хочу задать такой вопрос:
А если мы EPA поставим в 0 - то машинка отклоняться не будет. А стик на аппе мы двигаем. Я не думаю, что тут идеология нарушилась. И что так быть не должно? Машинка все-таки должна рулиться? Стоять как вкопаная она должна?
Ну КМК все в кодере работает вполне корректно в отношении EPA.

Aleksey_Gorelikov

Ребят, Расходы - имхо это логика. Конечные точки - имхо это физика. Вот и все.
Т.е в качестве конечных точек задается предельное положение качалки сервы, при котором серва не упрется в свой ограничитель или не начнет ломать рулем направления руль высоты. А расходы - это уже как вам летать комфортнее.

Посмотрите на ту же футабу к примеру. Там сейчас есть аналогичная, но более продвинутая функция “виртуальное кольцо”. Функция позволяет настроить “конечные точки” серв автомата перекоса таким образом, чтобы тарелка перекоса при угловых положениях стика по одной оси и по двум осям наклонялась от вертикали на один и тот же угол, который максимален для данной тарелки перекоса физически.
Чего спорить то? ЕРА должно ограничивать движение сервы, даже если стик не уперся. Контролировать, чтобы использовался весь ход стика - должен ЮЗЕР при помощи расходов/коэфициентов микширования. По сути - ЕПА это ограничение длительности канального импулься дла конкретной физической реализаци модели.

Pav_13
Aleksey_Gorelikov:

Посмотрите на ту же футабу к примеру.

Хорошее предложение!
Давайте посмотрим, как Вы настраиваете “виртуальное кольцо”

Aleksey_Gorelikov:

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

Если я правильно понял термин “угловое положение” стика, как “стик уперся в угол”, то мне понятна логика такой настройки… Без вопросов!

А вот следующая Ваша фраза уже вызвала у меня недоумение

Aleksey_Gorelikov:

ЕРА должно ограничивать движение сервы, даже если стик не уперся.

Вы действительно можете проделать такой “фокус” на своей футабе?

Aleksey_Gorelikov:

Контролировать, чтобы использовался весь ход стика - должен ЮЗЕР при помощи расходов/коэфициентов микширования.

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

dollop:

А если мы EPA поставим в 0 - то машинка отклоняться не будет.

Будет! Но чтобы это заметить, потребуется микроскоп 😉!

dollop:

Ну КМК все в кодере работает вполне корректно в отношении EPA.

Не имею морального права в этом сомневаться - нет пока у меня это кодера 😦

Но “с какого перепугу” были написаны посты 2655 и 2656 ?!
Перечитайте!

dollop:

Мне интересно, почему люди у которых есть аппа с возможностью изменения EPA, не могут поставить эксперимент? И выставить-таки все точки над ё

Да могут… ставили!
Только кто сказал, что за инженерами футабы или хайтека должно оставаться последнее слово 😉?!

EagleB3
Pav_13:

Вы действительно можете проделать такой “фокус” на своей футабе?

Я уверен, что сможет! Хотя сам (на своей футабе) это не проверял и не исследовал.
У “футабы” логика такая. Для них +120% триммера и +140% EPA - это нормально.

А вот 140% чего? Глубоко убежден, что именно стика. Если поставить расход на стике в 140% (такое там тоже возможно! Но не обязательно…), то отклоненный до упора (100% механики) стик как раз и приедет в 140% EPA.

Я же говорю - принципы построения алгоритма могут быть разными. На разной логике.
Эта логика не плохая и не хорошая. Она РАЗНАЯ.
Кому-то ближе и удобнее одна, кому-то другая.

dollop:

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

Скорее именно недопонял.
Я знаю три метода “уменьшения расходов для первых полетов” (да и не для первых тоже):

  1. Уменьшить расход;
  2. Переставить EPA;
  3. Поставить крепкую экспоненту в минус (-60…-70).
    Каждый по своему удобен. Использовать надо то, что удобно и наиболее подходит.

Я против того, чтобы использовать EPA вместо того, чтобы переназначить расходы. Мне вот это очень не понравилось:

sslobodyan:

И функция двойных расходов в таком случае решается как изменение ЕРА в зависимости от какого-либо переключателя или даже крутилки.

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

А эксперимент - можно. Я же предлагал. Но я не просто так попросил программу эксперимента. Я не вижу смысла крутить неизвестно что неизвестно зачем; крутить надо ради чего-то.
Ну покрутим, увидим как делает Футаба. Оно имеет смысл, только если кто-то еще возьмется проделать аналогичный эксперимент с Хитеком, или Санвой, или еще с кем. Чтобы сравнить и выбрать базу для нашего кодера.

А иначе… Да , “Футабы” вот так. Да и хрен с ней! А у нас вот эдак, совершенно по-другому, но всем нравится.

P.S. А в алгоритме, который я прописал в посте #2707, надобно сделать улучшение: считать, что двойной расход главного канала тоже может быть менее 100%. Тогда и для двойных расходов, и для одинарных надо считать коэффициент N/100 ; если расход = 100%, то коэффициент равен 1. И если расход меньше 100%, то при полностью упертом стике (и всех вмикшированных стиков тоже!) качалка не доедет до EPA. И это - правильно!

sslobodyan
EagleB3:

А вот идея менять расходы движением EPA мне кажется не хорошей.

Я несколько плохо выразился 😃 Имел ввиду именно так как Вы и поправили. Множить на ЕРА*Кдвойного расхода. Так и делал у себя в кодере.

Pav_13
EagleB3:

Я уверен, что сможет! Хотя сам (на своей футабе) это не проверял и не исследовал.

Ну так, проверте 😉! Как активный участник обсуждения “проблемы”…
Я на своей проверял, но у меня такая футаба, что футабе за нее должно быть стыдно 😊… (4EX) Она так не сможет!
Эклипс тоже так не может…
А может, у меня интеллекта не хватает заставить их так поступить 😦? Хотя… может, и хватило бы, если бы я понимал, зачем такое может потребоваться в управлении моделями? Но пока я такого понимания не достиг… Увы! И по-прежнему пребываю в убеждении (или заблуждении ?), что “машинка не должна останавливаться пока стик не уперся!”

EagleB3:

Я уверен, что сможет! Хотя сам (на своей футабе) это не проверял и не исследовал.

Ну так, проверте 😉! Как активный участник обсуждения “проблемы”…
Я на своей проверял, но у меня такая футаба, что футабе за нее должно быть стыдно 😊… (4EX) Она так не сможет!
Эклипс тоже так не может…
А может, у меня интеллекта не хватает заставить их так поступить 😦? Хотя… может, и хватило бы, если бы я понимал, зачем такое может потребоваться в управлении моделями? Но пока я такого понимания не достиг… Увы! И по-прежнему пребываю в убеждении (или заблуждении ?), что “машинка не должна останавливаться пока стик не уперся!”

EagleB3:

…при полностью упертом стике (и всех вмикшированных стиков тоже!) качалка не доедет до EPA. И это - правильно!

Пока писал свой пост, Вы добавили…

Если вставить в Вашу фразу уточнение “… не доедет до EPA, но и не остановится, пока все стики не упрутся.” - то я соглашусь, что "И это - правильно!" 😁

msv

2serg111

Разбрался кажись.

Что-то не то… Ваши изменения -только неправильная адресация буфера, причем с выходом за его границы… Чревато…

dollop
msv:

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

Та не. Там все правильно. У этого дисплея совсем другой буфер. По-более - 102x67 пикселей.

2serg111 И еще, если не устраивает контраст этого “паленого” дисплея, то поиграйтесь напряжением питания дисплея (даже просто резисторным делителем) ну и не забудьте поменять в инициализации значение VOP - контраст улучшится раза в 2-3

void LCD_init(void) // ИНИЦИАЛИЗАЦИЯ ДИСПЛЕЯ
{
LCD_DC =0;
LCD_RESET=0;
delay_ms(1);
LCD_RESET=1;
delay_ms(1);
LCD_DC=0;
spi(0x21);     // включить питание, расшир. команды
spi(0xE4);     // A large VOP for China displays
spi(0x45);     // China LCD Correction (Y offset +5)
spi(0x06);     // Temp. coefficient
spi(0x13);     // bias=3
spi(0x20);     // обычный набор инструкций
spi(0x0c);     // Normal Mode
delay_us(500);
LCD_clear();
LCD_refresh(); 
EagleB3
Pav_13:

Я на своей проверял, но у меня такая футаба, что футабе за нее должно быть стыдно 😊… (4EX) Она так не сможет!

да лааадно прибедняться-то! Расходов у нее нет, а EPA точно также, 0…+140 в каждую сторону.

Я попробую, конечно. Только не уверен что сегодня. Подготовиться надоть. Машинку закрепить, шкалу, стрелочку…

Кому чего интересно проверить/уточнить - пишите!

Pav_13:

Если вставить в Вашу фразу уточнение “… не доедет до EPA, но и не остановится, пока все стики не упрутся.” - то я соглашусь, что "И это - правильно!" 😁

Ы! 😁 А я изначально хотел возле этой добавки “2 Pav_13:” написать…
При таком (модифицированном) алгоритме фишка в том, что по отношению “расход главного канала”/100 считается ОБЩИЙ коэффициент. Допустим, расход = 80%; тогда общий коэффициент = 0,8. Дальше расход главного канала становится весом. Сумма весов относится к 100%. По весам считаются коэффициенты участия каналов. Да, все три (в наших примерах - три…) на полном отклонении дадут 100%, но эти 100% будут умножены на ОБЩИЙ коэффициент. И когда все три стика лягут на упоры, качалка дойдет только до 80% от EPA.
Не нравится, что всего 80? А зачем тогда ставили расход на 80%? Ставьте расход 100% - получите отклонение качалки 100% EPA.

Проверка, как в начальной школе: нету микширования. Никакого. Вообще. Расход 80%. До какого отклонения должна дойти качалка при полном отклонении стика? Тот, кто считает, что до 100% EPA, моментально получает двойку… Логично?..

Пример для осмысления: Условия точно как в “проверке”, но вы добавили 1% микширования от стика второго канала. Отклонили до упора первый стик. Потом до упора второй стик. До скольких процентов отклонилась качалка?
Подсказка: неужели до EPA? До 100% EPA? Как же это 1% от второго канала превратился в эквивалент 20% от первого?
Решение:
Расход главного канала = 80%
Микширование от второго кнаала = 1%
Общий коэффициент 80/100=0,8;
Сумма весов = 80+1
Весовой коэффициент главного канала =(80*100)/(80+1) = 98.76
Весовой коэффициент второго канала =(1*100)/(80+1) = 1.24.
Полное отклонение стика главного канала отклонят качалку на 98,76*0,8=79,008% от величины EPA,
Полное отклонение стика второго канала добавит 1,24*0,8=0,992% от величины EPA.
В сумме полное отклонение обоих стиков вызовет отклонение качалки 80% от величины EPA.
…А сколько хотел получить тот, кто установил расход 80%?

msv

Та не. Там все правильно.

Не могу согласится… В циклах не используется 0-вая строка буфера, зато залезаем за последнюю. Если размер буфера не скорректирован, то недалеко до беды… Единственное изменение во всех этих изменения по логике работы с индикатором- это команда адресации. Попробуйте в функции LCD_refresh поменять spi(64+i); на spi(65+i);,а все остальное вернуть.
//—
Прямо буря! (в стакане? 😃 ) Позиция Pav_13 уже давно понятна. А вот в объяснениях EagleB3 уже потерял нить… Периодически упомянается “главный канал”… Ну не понимаю какой канал главный для правого(левого) элевона… Дмитрий, прошу написать конкретно, какие изменения по вашим соображениям следует внести в логику обработки. Или это абсолютно другая концепция?
//—
Для меня более-менее все ясно, изложил выше. Один вопрос остался - как правильнее обрабатывать триммеры, субтриммеры? Или просто сдвигать всю фукцию (как сейчас) или менять только центр и менять наклон для сохранения конечных точек?

EagleB3

Я не готов сказать, какие изменения надо внести.
Я вообще (пока?..) не уверен, что они нужны.
Но зашла речь об алгоритмах - и появился (надеюсь…) реальный шанс найти концепцию, а в рамках этой концепции - алгоритм, который понравится всем (и за одно будет всем понятен. Даже тем, кто не умеет разбираться в исходниках).

“Главный канал” - тот, управление машинкой которого мы рассматриваем.
Боюсь запутать и скажу так: если при добавлении газа нос затягивает вниз, то стик РВ надо взять на себя. Берем канал РВ и микшируем в него сигнал от канала газа. Я в этом случае канал РВ считаю главным, а канал газ - микшируемым (“вмикшируемым”; криво, зато, КМК, не запутаешься).

Для левого элерона главный канал (традиционно? Только на Футабе?) первый. Для правого элерона при раздельных машинках - главный канал шестой. В шестой канал вмикшируется первый канал, с обратным знаком (если левый вверх, то правый - вниз).

Для левого элевона главный канал первый. В него микшируется второй канал (РВ).
Для правого элевона - главный канал шестой. В него микшируется два канала - первый канал и второй канал.

Но случай и элевонов, и раздельного управления элеронами - маненько специальный!
Общий коэффициент канала по описанному алгоритму считается через расход стика канала (сам физический смысл расхода - проекция стика на интервал, заданный EPA). А на 6-м канале стика нет! Общий коэффициент для 6-го канала (правый элерон/элевон) должен быть равен общему коэффициенту 1-го канала (левый элерон/элевон), а при подсчете весов расход…
А вот тут надо еще подумать!.. Либо расход 6-го принимается за 0, либо расход 1-го игнорируется. Либо еще более сложно…

В той же “Футабе” V-Tail и элевоны - два отдельных, специальных, заготовленных на заводе режима микширования…

Триммер, КМК, это должен быть аналог перестановки качалки РМ на нужное количество зубов. Поэтому наиболее простой (и правильный) вариант - двигать точку 1,5mS (“0” РМ).

Про субтриммеры ничего не знаю. 😊 Что такое “субтриммер”?

dollop
EagleB3:

В той же “Футабе” V-Tail и элевоны - два отдельных, специальных, заготовленных на заводе режима микширования…

О! Наконец-то есть некий общий знаменатель.
Хотите меньше ручной работы, и чтоб за вас все само настраивалось? - вэлкам - мастера/предустановки брендов помогут как нельзя лучше.
Хотите гибкость? - нет ничего лучше кодера от msv. Ручками, ручками таки нужно. И добиться можно всего и так чтоб правильно было. И, действительно

Я не готов сказать, какие изменения надо внести.
Я вообще (пока?..) не уверен, что они нужны.

На данном этапе изменений не нужно. Это, если делать вуаль в виде тех самых предустановок - тогда и нужно думать. А так, вся прелесть - гибкость

2 msv. По-поводу дисплея. Попытался изобразить

serg111
msv:

Не могу согласится… В циклах не используется 0-вая строка буфера, зато залезаем за последнюю. Если размер буфера не скорректирован, то недалеко до беды… Единственное изменение во всех этих изменения по логике работы с индикатором- это команда адресации. Попробуйте в функции LCD_refresh поменять spi(64+i); на spi(65+i);,а все остальное вернуть.

Чувствовал что что-то нето. Поменял spi(64+i) на spi(65+i), все остальное вернул. Работает 😃

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