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

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мк прям на ноги дисплея, лучше не стало. Камень не сбоит, проверено.

PARSEK

Здравствуйте всем!
Очень заинтересовался этой темой, хочу повторить девайс.
По мере сбора информации, выяснения наличия в местном магазине комплектующих, возник такой вопрос:

  • какой микроконтроллер подойдет для кодера из перечисленных:
    mega128-16AU (TQFP64)
    mega128L-8AI (TQFP64)
    mega128L-8AU (TQFP64)
EagleB3

Но лучше всего - первый. Штатный кварц в кодере = 12МГц.
Первый на этой частоте работать обязан,
второй и третий обычно не отказываются, но…

Aviator73
EagleB3:

Решение:
Расход главного канала = 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%?

Давно читаю этот топик и никак не вкурю, о каких + и - тут вы говорите, если слово МИКШЕР подразумевает смешивание, а ни как не добавление!
Я EPA настраиваю так - ставлю стик в край, а циферками подгоняю под нужные мне предел. И все. А если и что-то микшируется с чем-то, то никак не пойму, как канальный импульс может от этого изменятся? Если один канал смикширован с другим на 100%, то он просто будет повторять первый, если на 50% - будет отклоняться на половину хода и т.д. Что к чему добавляется?
Поясните люди добрые, а то после последних 5-ти страниц вообще запутался…

Denn

Хочу добавить, что ЕРА это End Point Adjusment ( регулировка конечной точки ). И всё.

ADima

совсем уже запутался с весами и прочим.
моё мнение что все ограничения должны выполнятся ещё на логическом уровне а ЕРА задаёт длительности импульса для РМ перекладки из одного крайнего положения в другое и если нам так надо то можем из своих соображений его изменить в меньшую сторону.
на примере того же елевона - мы хотим чтобы на лгическом уровне и в качестве элерона и вкачестве закрылка влияние на РВ было 100% тогда если мы дадим крен до упора в право и закрылки до упора вниз (стиками, 100% допустим 100 тиков) то получим на РМ левого елевона -200 тиков, а на РМ правого элевона 0 так вот на логическом уровне мы ограничеваем значение ±100 тиками предельные значения для выдачи результата в реальный канал, а уже с помощью ЕРА масштабируем в мсек для реальной РМ параметры которой зависят от производителя
А при ограничении длительности ипмульса и соответственно хода РМ мы в любом случае теряем точность позиционирования, разрядность таймера не меняется и мертвые интервалы изменения длительности импульса на которые не реагирует РМ тоже не меняются

EagleB3
Aviator73:

если слово МИКШЕР подразумевает смешивание, а ни как не добавление!

А как для Джеймса Бонда могли смешать мартини с водкой, не добавляя водку к мартини или мартини к водке? 😉

Условно, без долей и весов: Допустим, ты микшируешь канал газа в канал РВ на 50%.
Потом отклоняешь стик РВ на 20%. Качалка РВ отклонится? Да.
Потом ты дал 100% газа. Качалка дополнительно отклонится? Да. “Дополнительно” это тоже самое, что “добавление”? Да.
Канальный импульс РВ при этом (т.е. при отклонение стика газа) изменится? Да.

Pav_13

Ну вот! В борьбу с “крайними точками” включились свежие силы 😁!
Значит, подуставшим бойцам можно воспользоваться “музыкальной паузой”!
Правда я, поскольку не меломан, скачал все файлы по кодеру, добыл дисплей, заказал Мегу, поставил на комп CodeVision, PoniProg, купил аж три книжки по AVR… Сижу… разбираюсь - всеж-таки платформа незнакомая…
Короче, к грядущим сражениям надеюсь быть теоретически и практически подкованным 😉
Может, если другие дела не отвлекут, в скором времени нарисуюсь здесь с глупыми вопросами… Надеюсь, в пылу полемики никого не обидел и смогу расчитывать на умные ответы 😊

СЕРЖЖ

Кто подскажет почему дергаются сервы? Может быть виной кодер и если да то что надо подстроить?