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

Aleksey_Gorelikov
v61:

А управление мне удобнее джоем от SONY PS

Хм… А зачем вам кодер в этом корпусе, если не секрет? Нет, конечно, личные предпочтения - это дело каждого, но… Взял я у ребенка джойстик такой, воткнул в комп. Запустил реалфлай… Летать - невозможно. Вот танком управлять - да, получится. А летать - я не представляю как!

v61
Aleksey_Gorelikov:

Хм… А зачем вам кодер в этом корпусе, если не секрет?

Ну, ради спортивного интереса попробую…

JT_UA
v61:

Ну, ради спортивного интереса попробую…

Желание это хорошо
НО как собираешся калибровать переменики а это уже мне интерестно

dollop

В джое от PS стоит два “джойстика” с двумя переменными резисторами каждый. Так что все нормально откалибруется и центры надет. Вот только летать на нем не удобно по той причине, что плечи у джоев маленькие и точности никакой в управлении не будет. Нужно ставить расходы на минимум и включать экспоненту.
Народ же как-то и на дискретной аппе умудряется летать. Извращение конечно, но факт.
Я из джойстиков от PS делал аппу для микро (на ИК) - там точности управления точно хватает, но стики удлиннял

v61
dollop:

Я из джойстиков от PS делал аппу для микро (на ИК) - там точности управления точно хватает, но стики удлиннял

Насчет удлинения стиков тоже мысли были, но посмотрим как получится
А пульт такой планируется для складного квадрокоптера (типовой не входит в заданный объем кейса;))

leprud

Еще раз (в рамках этой темы) вопрошу о настройке CCPM на 120 градусов.
Какие правильные коэффициенты должны быть?
100-50 (как в документации от 29.05.2010 на сайте “самокодер”) или 60-60 как в этой теме ранее упоминалось?
У меня при любых этих настройках вылетает за 120 единиц канал управления при определенных движениях стиков…

Aleksey_Gorelikov

Для трикоптера настраиваете? 😃 Вот тут rcopen.com/blogs/50021/9239 г-н Хакер выкладывал прожку- эмулятор ССПМ. Можно по ней коэф. подобрать. А вобще - там ж геометрия условно простая. Просто потом коэф. нормализовать надо, чтобы за 100 не результат не выходил (ну или за 120).

Aleksey_Gorelikov

Прикинул на бумажке. Чтобы получалось максимум - 100, надо все поделить к примеру на 2. А вобще - тут зависит от того, расходы по чему вас больше интересуют. Хотя, расход - весма относительное понятие. Ну да ладно, приступим:
Пусть, канал один - это ротор по ходу движения вашего трикоптера), а второй и третий - “боковые”. Тогда:
ch1 = 50% газ + 50% выстота.
ch2 = 50% газ - 25% высота + 25% крен
ch3 = 50% газ - 25% высота - 25% крен.
Нетрудно догадаться, что в сумме все весовые коэф.ты максимум дадут 100 %, и если расходы не выходят за 100% то и на выходе должно получиться не больше 100. Где-то так, наверное. Пробуйте. Ну если что плюсы с минусами поменять местами.

Единственное, у нас получился 50% расход по газу, 50% по высоте и 25" по крену. Ну можно поиграться для получения более равномерного управления. По логике - надо бы поставить +\-50% на крен, но тогда выскочите за пределы 100% расходов. Всетаки не хватает в кодере новомодной функции “виртуального кольца”. Имейте ввиду, что по рулю высоты отношения переднего ротора и пары боковых 1/2. Т.е. если захотите расходы по высоте уменьшить, а по крену увеличить, то будет примерно так:
ch1 = 50% газ + 40% выстота.
ch2 = 50% газ - 20% высота + 30% крен
ch3 = 50% газ - 20% высота - 30% крен.
Т.е. тут мы уменьшили чувствительность по высоте до 40 и увеличили по крену до 30, не изменяя при этом общих границ максимальных перемещений. Можно за счет уменьшения диаппазона газа добавить еще управляемости по крену:
ch1 = 40% газ + 40% выстота.
ch2 = 40% газ - 20% высота + 40% крен
ch3 = 40% газ - 20% высота - 40% крен.

Ну и так далее… 😃

Кстати, а где у трикоптера " перед" ??? Я коэф.-ты расставлял, имея ввиду, что перед - это ротор. А если ротор, это хвост - то с точностью до наоборот. 😃 Инвертировать руль высоты. Только не в меню ченалс!!! Это инвертирует весь канал (рулевую машинку), а нам надо влияние ручек - т.е. только коэфициенты в “микшеры” напротив органов управления “руль высоты”. Коэф.-ты указывают, какое влияние вносит стик (орган управления) в конструируемый нами канал. Сумма коэф-тов канала - - максимально допустимый его “расход”.

msv
Aleksey_Gorelikov:

Всетаки не хватает в кодере новомодной функции “виртуального кольца”.

Не в курсе новомодных функций, но напомню что есть Normalize. Это не то?

leprud

Алексей, снова большое спасибо! Теперь понял логику работы таких микшеров (а вроде документацию то читал и не раз…, и про normalize читал…)
Меня просто еще смущали фразы про настройку CCPM типа

Go into the swash menu and change the settings to Aileron +40, Elevator +40 and Pitch +100.

Действительно делаю для трикоптера, там 2 мотора (левый-правый) спереди и один сзади. Знаки коэффициентов уже “подобрал”, с этим проблем не возникло, как ни странно 😃

Чуть выше вы наверно опечатались в строках

Aleksey_Gorelikov:

ch1 = 50% газ + 40% выстота.

и

Aleksey_Gorelikov:

ch1 = 40% газ + 40% выстота.

Имея в виду 50% и 60% высоты (элеватора) соответственно?

Aleksey_Gorelikov
msv:

Не в курсе новомодных функций, но напомню что есть Normalize. Это не то?

Не то!

Сергей, смотри: У вертушки тарелка перекоса висит, скажем так на шаре, на оси ротора. Собственно, она может перекашиваться на этом шаре на один максимальный угол в одном и том же направлении. Согласен? Для простоты понимания возьмем автомат перекоса, где машинки расположены под 90 градусов, хотя это и не столь важно. Допустим, тарелка отклоняется механически максимум на 45 градусов, дальше просто упирается своим дном в ось. Одна машинка - может отклонить ее на 45 градусов. Но если две машинки (крен и высота) будут пытаться отклонить тарелку по 45 градусов сразу в обе стороны - то тарелка будет пытаться отклониться в итоге на больший угол (60? считать надо) и в итоге ее заклинит, а машинки возможно поломают себе редуктора. Раньше (только для моде-2) делали ограничительную пластину ввиде отверстия, которая привинчивалась к джойстику и создавала ему механический упор, не давая перемещаться в максимумы по Х и У одновременно. В современных аппах - есть функция “виртуального кольца”, т.е. контроллер ограничивает расход автоматом, когда джойстик двигается в максимум по диагонали. Вот такая штука.

А нормализовать - в примере выше - тоже неправильно, т.к. тогда по рулю высоты микшер тоже нормализуется, и уплывет “середина тарелки”. Т.е при даче руля выстоты будет уплывать коллективный шаг. Вот. Хотя, я не смотрел логику твоей нормализации и могу ошибиться. Если ты находил максимальное значение по каналам, нормализовывал его, а потом приводил с _ЭТИМ ЖЕ КОЭФ._ остальные каналы (т.е. когда пропорциональность не меняется) - то нормализация поможет не выйти за 100 процентов расходов. Для трикоптера - этого достаточно, для вертушки с тарелкой - см. выше. Если нормализация для каждого канала независима - то не пойдет, ибо в первом канале в моем примере - не 100% значение в сумме и приводить его к 100 - нельзя.

leprud:

Имея в виду 50% и 60% высоты (элеватора) соответственно?

Нет. вроде бы верно. Описаться я описался с креном. если на тарелку перекоса сзади смотреть, то проекции плеч там меньше получатся, чем плечо по высоте, соответвенно для равных расходов физически - в настройках то они одинаковыми не должны быть… А на первый ротор - который до 100 процентов не дотягивает, можно микс от руля направления завести, чтобы при рулении нос (в моем примере, или “хвост” - в вашей реализации) не проваливался при повороте “руля направления”. Если там изменить пропорциональность, то и по другим каналам менять тоже придется. В протвном случае будет “уплывать” центр условно говоря “тарелки перекоса” и при рулении по высоте аппарат будет не только вращаться вокруг своего геометрического центра, но и прыгать по высоте засчет “изменившегося шага” по вертолетной терминологии…

Запутал всех. Представляем тарелку перекоса. При рулении стиком элерона - элеватора - она должна наклоняться, но не двигаться вверх-вниз, при рулении шагом (газом) - двигаться, но не наклоняться. При рулении и тем и тем - и то и другое. 😃

leprud

Да, запутался я еще больше 😃
Вот я сейчас сделал так:
где стоит одна серва, 60%–40%
а где 2 сервы: 60%–20%–20%
(мне нужно уменьшить расходы по элеронам/элеватору )
Правильно ли, что сумма всех - 100%?

Aleksey_Gorelikov:

А на первый ротор - который до 100 процентов не дотягивает, можно микс от руля направления завести, чтобы при рулении нос (в моем примере, или “хвост” - в вашей реализации) не проваливался при повороте “руля направления”.

Это единственная причина, почему в вашем примере первый ротор до 100% не дотягивает в сумме коэффициентов микширования? Или есть глубокий смысл, которого я не вижу по причине отсутствия опыта?..

Aleksey_Gorelikov

да, правильно. Где одна серва - там по рулю высоты расход в 2 раза побльше, чем на двух других и другого знака. (т.к. проекция плеча у тарелки в 2 раза больше). Газ - во всех каналах одинаковый. Элероны - на двух сервах равны и противоположны.
Ни в одном канале превышения 100 быть не должно. Если за счет газа будете чутье по элеронам увеличивать, то в канале, где одна серва будет меньше 100, и это нормально.

Aleksey_Gorelikov
leprud:

Это единственная причина, почему в вашем примере первый ротор до 100% не дотягивает в сумме коэффициентов микширования? Или есть глубокий смысл, которого я не вижу по причине отсутствия опыта?..

Нет. У него как бы плечо в два раза больше. 😃 А нам нужен баланс для плеч и перемещений. До 100 то его можно догнать, но тогда по другим каналам либо крена не хватит, либо за расходы по крену выползем. Если на этом принципе квадрик сделать, то там все симметрично будет.

16 days later
belyay

Всем привет, подскажите у меня есть аппа Hobby King 2.4Ghz 6Ch V2 можно ли ее переделать под этот кодер, но оставить родной ВЧ модуль и приемник.

Aleksey_Gorelikov

Конечно. И ее уже тут переделывали вроде бы. И платки уже разведенные выкладывали.

штефан_в

Доброго времени суток! Разрабатываю свою аппаратуру радиоуправления.
Особенности - приемник с прямого преобразования с ПЧ 22Кгц, поэтому в передатчик и приемник ставятся 2 одинаковаых кварца.
ПЧ загоняется на компаратор атмеги 48.
Метод кодирования оригинальный, каждый полубайт полезных данных в эфире передается 6ти битовыми словами, в которых 3 еденицы и 3 нуля. Это позволяет избавится от постоянной составляющей в сигнале, а еще кодововое расстояние таких слов 2 и более, поэтому без труда обнаруживается 1 кратная ошибка. Кадровая синхронизация обеспечивается 8ми разрядным словом. Обнаружение сигнала кадровой синхронизации и битовой синхронизации обеспечивается корреляционными алгоритмами (8ми разрядные корр регистры). Скорость данных в эфире 2400 бит/с, передается 6 8ми разрядных каналов 30 кадров/с. Модуляция ЧМ, частота 27МГц.
Готовность проекта
передатчик железо 100%
передатчик софт, только самое необходимое для передачи 6ти каналов и управления мощностью
приемник дейсвующий макет с сервами (EK2-0508), готовы чертежи платы в пикаде.
Буду писать статью в одном известном журнале, думаю закончить до конца года.
Хотелось бы обменятся опытом с такими же самодельщиками, особенно по части практики реализации протоколов передачи данных, возможно я еще не все знаю? Или буду кому полезен со своим опытом.
Если есть люди хорошо изучившие микростар, расскажите о том какое кодирование они используют.

msv
штефан_в:

каждый полубайт полезных данных в эфире передается 6ти битовыми словами, в которых 3 еденицы и 3 нуля.

Чет не пойму, как к четырем битам данных добавить 2, чтобы всегда получалось 3+3 нуля/единицы…
И хотелось бы понять, в чем сверхзадача проекта? Ведь не заморачиваясь с совместимостью с существующими “стандартами”, все имхо можно более проторенными способами решить.

Aleksey_Gorelikov

А я не совсем догнал про приемник прямого преобразования с промежуточной частотой 22кгц. 😃
Гетеродинный, с пч22кгц? С одинаковыми кварцами? А как кварц на 22кгц затянуть? Стабильности ж никакой не будет. Или дедовским способом, распаять корпус и подтачивать ластиком пластину?
Или прямого усиления полосой 22кгц? ? А кварц в качестве полосового фильтра? Нифига не понимаю… Или регенеративный? Тогда полоса широченная… Или прямого преобразования (преобразование в 0!), тогда причем тут ПЧ?
Можно схему

В микростаре используется обычный ППМ.

штефан_в

Биты к полубайту не добавляются, а преобразуются с помощью таблцы:
const unsigned char __flash TRTAB[0x10]={
0x0B,0x0D,0x13,0x15,
0x16,0x19,0x1A,0x23,
0x25,0x26,0x29,0x2A,
0x2C,0x31,0x32,0x34};

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

По прямоу преобразованию, ну не совсем прямое, супер с низкой ПЧ. Кварцы на 5кГц затягиваются легко, в передатчеке емкостью в приемнике дроселем + умножение частоты на 2 в передатчеке + смеситель на встречных диодах в приемнике. Грел кварцы до 60с уход 600Гц для моей схемы это не критично.
Совсем прямое преобразование - сложное дело.

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

Aleksey_Gorelikov
штефан_в:

По прямоу преобразованию, ну не совсем прямое, супер с низкой ПЧ.

Рискуете словить таксиста с 200Вт в антене по зеркальному каналу. Да и 27мгц весьма чумавой бенд. Днем можно не услышать соседа по улице, но общаться с Украиной или Испанией… Я бы не рискнул.