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

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… Сижу… разбираюсь - всеж-таки платформа незнакомая…
Короче, к грядущим сражениям надеюсь быть теоретически и практически подкованным 😉
Может, если другие дела не отвлекут, в скором времени нарисуюсь здесь с глупыми вопросами… Надеюсь, в пылу полемики никого не обидел и смогу расчитывать на умные ответы 😊

СЕРЖЖ

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

EagleB3
ADima:

на примере того же елевона … чтобы на логическом уровне и в качестве элерона и в качестве закрылка влияние на РВ было 100%

Сорри, не понял исходных условий, поэтому дальше вникать особо и не пытался.

  1. и главное: Чье влияние?
  2. Элевон = элерон работает в качестве РВ; стало быть машинки РВ при этом нет и влиять на РВ невозможно, ибо не на что. Стик РВ будет влиять на элерон (который поэтому и становится элевоном), но не наоборот.
  3. Элерон (по идее…) может влиять на РВ разве что когда используется в режиме флапперона. Оба элерона вниз -> нос “вспухает” -> даем РВ от себя. Но тогда и надо говорить про флапперон. И включается (управляется) флапперон от отдельного стика, не от элеронного, и не от РВ-шного, а совсем от отдельного. Но если элевоны - то элерон = РВ и дальше совсем уже непонятно.
Aviator73
EagleB3:

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

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

Да, это очевидно. Но если отклонить РВ на 100% и газ на 100% то ничего ни куда не добавится и оба канала будут находится в 100%. В чем тогда нескладуха в последних пяти страницах топика? 😃

СЕРЖЖ:

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

У моего передатчика тоже дергались и буззер постоянно попискивал при вставленном кварце в ВЧ модуль. По совету MSV провел от каждого тумблера отдельный массовый провод, обвил им сигнальные провода и припаял все в одной точке на минусовой клемме батарейного разъема. Как рукой сняло. Наводки от антенны были.

EagleB3
Aviator73:

Да, это очевидно. Но если отклонить РВ на 100% и газ на 100% то ничего ни куда не добавится и оба канала будут находится в 100%. В чем тогда нескладуха в последних пяти страницах топика? 😃

В двух вопросах:

  1. Может, не может, должно, не должно быть так, чтобы стик уже дошел до края, а серва еще нет; и это именно так, потому что […].
    Из выделенных слов нужное - подчеркнуть и излагать свое мнение в скобках.
  2. Может, не может, должно, не должно быть так, чтобы машинка уже дошла до края, а стик еще нет; и это именно так, потому что […].
    Аналогично: подчеркнуть и излагать.

В деревне “Седые шалуны” этими дебатами развлекаются уже третий день… 😁
Присоединяйтесь!

ADima

согласен несколько путано высказался.
с РВ промахнулся говорил про рулевые машинки на елевонах, а вообще имел ввиду тот кто настраивает микшеры должен понимать где и что у него ограничится и как будут вести себя рули в зависимости от положения стиков, задача математики микширования произвести расчет и ограничение в фиксированном логическом диапазоне значений а уже с помощью ЕРА приводятся физической величине длительности импульса максимальные пределы которого определяются возможностями конкретной РМ и если нам по конструктивным сооборажениям необходимо ограничить расходы РМ то мы с помощью ЕРА изменяем коэффициент пересчета логического значения в физическое. MSV писал что думал сделать подобное но на текущий момент решил с помощью ЕРА сделать просто ограничение, а чтобы не было ситуации стик двигается а РМ нет в случае если на канал смикширован только один орган управления надо выставлять процент влияния <100%

RW9UAO

чтоб дисплей не “сбоил” можно на сигнальные провода последовательно поставить резисторы ом по 100. керамику можно. не более 10 нф. на питание прям у дисплея надо керамику 0,1 мкф и электролит мкф на 10.

msv

Решил, что от такого бурного обсуждения должен остаться хоть какой-то выхлоп… 😃 Поэтому предлагаю версию 1.9. Ну на полноценную версию это конечно не тянет, но дабы не путаться не стал обзывать ее “1.8 1/2”.
Зато хорошая новость, схему менять не надо, все старые калибровки/настройки можно сохранить и загрузить после прошивки. Только скорректировать EPA прийдется (см. ниже).
--------
1.Пофиксил замедленный автоповтор для расходов.
2. (Специально для Pav_13… 😃 А он мишерами-то и не пользуется… Вот ведь ирония судьбы… 😃 ) В меню “Channel x” после пункта “Mixer” добавлена команда “Normalize”. Команда нормализует все значения микшера к общей сумме 100% пропорционально старым значениям. Может оказаться полезной при построении сложных микшеров, когда есть необходимость не выходить за физические ограничения PPM-сигнала при любых положениях органов управления. При расчете считаются и изменяются только коэффициенты микшера. “Расходы”, конечные точки кривых ( то-же влияющие на итоговые расходы) не учитываются и тем-более не меняются.
3. Шкала EPA приведена к ±120%. Это соответствует крайним точкам как для логического ( так и было), так и физического уровня (теперь срослось). В исходниках имеются три варианта работы EPA.
3.1 Как и было, просто ограничение исходной функции, полученной от логического уровня.
3.2 Масштабирование исходной функции в отдельных интервалах EPA-…0 и 0…EPA+. При нессиметричном ограничении EPA, cреднее положение сохраняется, но будут разные коэффициенты масштабирования для интервалов и исходная функция искажается.
3.3 Линейное масштабирование функции во всем интервале EPA-…EPA+. При нессиметричном EPA вид исходной функции полностью сохраняется, но сдвигается центр. Те. если поставить EPA-=120, EPA+=0, средней точкой становится -60, и исходная функция уменьшенная по амплитуде в 2 раза, будет крутится вокруг этой точки.
С позиции идеологии разделения на логический и физический уровень имхо вариант 3.3 самый правильный, тк. физический уровень не имеет обратного влияния на логику построения канала. Поэтому скомпилированная прошивка идет с этим вариантом.
Но каждый может выбрать то, что посчитает правильным и перекомпилить под себя.
4. После включения кодер верещит как недорезанный и запускается только после установки ручки газа в мин.
--------
Естественно, как обычно, сам толком ничего не проверил, жду замечаний…
narod.ru/disk/18899799000/3310_1_9.rar.html