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

focus

Izvinite, chto pishu translitom - s mobili… Vo vtoroy versii codera ya budu ispolzovat’ differencialnie vhodi ADC. A seychas iz-za obichnih vhodov ya doljen podavat’ na Vref 3,1V, t.k. ruchki pitayutsa ot 5V, a rabochiy hod - ot 2 do 3V. I chem vishe napryajenie ya podam na Vref, tem men’she razreshenie ADC. T.e. pri 3.1V na Vref polniy hod ruchci lejit v promejutke 660-990. A pri 5V 409-614.

Jurgen
Vad64:

Алексей, нет ничего удивительного, что никто не откликнулся. Придумать и оформить ТЗ - не менее сложная, ответственная и трудоемкая задача, чем собственно разработка схемотехники и софта. Это мало кто сможет, а главное - захочет сделать. Поэтому я бы посоветовал самодельщикам не стремиться к “топовости” и универсальности, а делать вещь под свои текущие требования.

Сложно не согласиться с Vad64. А самое главное, придет время - допишете недостающее. Исходники то в ваших руках. 😃 Например в моем кодере функций, на текущий момент как у 5-го флеша, и для моего уровня этого вполне достаточно.
Что касается количества точек на кривой - здесь достаточно обоснованно и красиво описан алгоритм расчета экспоненты вего по 3-м отрезкам (4 точки) Точность вполне достаточна. Да и вообще, кодеропроектировщикам есть что почитать. 😉

klen_s

Давно, читаю ветку. Могу теперь вставить и свои пять копеек.

Сделал приемо-передатчик на CC2420 и ATmega128.
Частота 2.4 ГГц, скорость в обе стороны 250кбит/c питается от 3.3 вольт.
Хочу на ацп Atmega подать сигнал с потэнциометров и предать на борт модели. 12 канальный программный шим уже работает - это чтоб на рулевые машинки раздовать. А назад можно будет передовать состояние модели, например напряжение на аккамуляторах, давление в пневмобалоне и тд.

aleks_shap
klen_s:

Сделал приемо-передатчик на CC2420 и ATmega128.

А какая дальность этого приемо-передатчика? ya.ru толковых результатов не выдал.

klen_s
aleks_shap:

А какая дальность этого приемо-передатчика? ya.ru толковых результатов не выдал.

У этого мало - на поле 200м, выход у СС2420 0dBm - это стандартная мощность для ZigBee трансиверов, это отладочная платка на которой буду тренироваться, если все получится то тогда поставлю усилитель, который специально к СС2420 и аналогичным есть. Тогда выходная мощность 24dBm, дальность до 2км в прямой видимости.

Лично для меня и 200м вполне хватит, это при 250кБ/с. При снижении скорости обмена уровень сигнала необходимого для приема данных снижается. Я самолет строю для испытания всего этого, размером примерно ~650x650мм, его уже на 100м видно не будет.

Vad64
klen_s:

Я самолет строю для испытания всего этого

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

aleks_shap

А если использовать модули на 433Mhz, то проблем с пропаданием сигнала не будет?

klen_s
Vad64:

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

Проблем не должно быть - четыре или три расположенных по бортам штыревых лямда/4 (~3,4см) через полосковый мост-сумматор дают почти изотропную ДН (тоесть шарообразную). В любом случае буду пробовать.

chwor

2 focus

Что то не так с прожигание МК. PPM на вьiходе нет. Если не настроить fuses CKSEL и CKOPT, то микроконтролер не будет работать с внешним кварцам(заводские настройки на Internel RC 1MHz). Я поменял CKSEL=1110 i CKOPT=1 и внешньiй генератор заработал, но только он.

Help !!!

Vad64
klen_s:

Проблем не должно быть - четыре или три расположенных по бортам штыревых лямда/4 (~3,4см) через полосковый мост-сумматор дают почти изотропную ДН (тоесть шарообразную).

Т.е. гарантированно нельзя будет подобрать такое положение и ориентацию модели, что сумма сигналов от антенн будет близка к нулю? В любом случае, будет интересно узнать результаты испытаний.

А вот ссылка на DSM аппаратуру для паркфлайеров от Спектрум:
www.spektrumrc.com/Products/Default.aspx?ProdID=SP…

klen_s
Vad64:

Т.е. гарантированно нельзя будет подобрать такое положение и ориентацию модели, что сумма сигналов от антенн будет близка к нулю? В любом случае, будет интересно узнать результаты испытаний.

Нули ДН бывают только в теории. В жизния просто есть “очень хорошие” провалы. Ту ведь главное не устранить их, что невозможно, а сделать как можно уже, тогда они не будут сильно влиять. Тем более в любом случае надо предусмотреть полет в условиях кратковременного отказа канала связи (например от помех).

А вот ссылка на DSM аппаратуру для паркфлайеров от Спектрум:
www.spektrumrc.com/Products/Default.aspx?ProdID=SP…

Чтото савсем он какойто кастрированный. Я не понимаю что мешает навесит машинокэдак хотябы 32?
По количеству каналов и частоте можно сделать что там стоит ZigBee-модуль аналогичный тому который я сделал. На нем можно получить гораздо больше, раз в сто например. Видимо маркетинг - забивать видеомагнитафоном гвозди. Шесть каналов это мне принципиально не понятно.

aleks_shap

2klen_s
Пара вопросиков к Вам есть.

  1. У Вас стоит mega128l, т.е. питание от 3.3В, как Вы будете выводить на сервы? Разве там не стандартный 5-ти вольтовый уровень TTL?
  2. Антена как я понимаю напечатана на плате, а где Вы взяли ее размеры, а то есть возможность заказать модуль MC13192, аналог от моторолы, в даташите не нашел размеры, т.е. там написано что антена напечатана, но размеров нет.

и 3-е Вы уже пробовали это все включать?

Заранее спасибо.

klen_s
aleks_shap:

2klen_s
Пара вопросиков к Вам есть.

  1. У Вас стоит mega128l, т.е. питание от 3.3В, как Вы будете выводить на сервы? Разве там не стандартный 5-ти вольтовый уровень TTL?
  2. Антена как я понимаю напечатана на плате, а где Вы взяли ее размеры, а то есть возможность заказать модуль MC13192, аналог от моторолы, в даташите не нашел размеры, т.е. там написано что антена напечатана, но размеров нет.

и 3-е Вы уже пробовали это все включать?

Заранее спасибо.

  1. между машинками и 3вольта ТТЛ, можно поставить буфер оаботающий от 5 вольт. Это вариант, я же хочу на атмегу завести сигнал с потенциометров РМ и непосредственно через драверы(LB1630/1634/1635/1644… любую бы купить попробывать) вращать двигатели РМ. У меня валяются РМ с исправными двигателями и потенциометрами с сдохшей схемой. Если получится, то можно будет точно знать в каком положении находится руль фактически! а не только знать что ты ему выдал команду.

  2. Антенна передрана с даташита, вместе с согласующими цепями, следущий вариант как я писал хочу сделать с полосковым сумирующим мостом, и вывести через SMA на тонкие кабели к антеннам. До этого как до китая раком.

  3. пробывал некоторые части по отдельности - управлять атмегой восьмю РМ с декодированием сигнала приемника и тд. К сожалению плата, фотка которой выложена распаяна с ошибками, в прошлую пятницу пределал схему под атмегу168 и до выходных мне должны сделать новую платку на которой буду трансиверы щупать.В одной из контор в которых работаю, убедил начальство что беспроводные технологии это круто, и теперь совмещаю приятное с полезным - и оаботу делаю и паралельно под самики эксперименты провожу.

Если получится выложу, и раскажу. Кстате в Москве появились новые кристаллы, в которых кроме трансивера еще и 51 ядро с флешем и 14битным ацп. стоит 6$ - видать скоро на одном кристале можно будет все сделать, кроме силовых ключей к эл.двигателям

aleks_shap

Я просто думаю как лучше, поставить mega128 и ставить переходник между MC13192, он на 3.3V. Или ставить mega128l и ставить переходник между сервами и контроллером.
Склоняюсь в сторону mega128, т.к. на фирме где я работаю их применяют, и можно будет воспользоваться 😲 .
Но не поплохеет ли трансиверу от этого?

klen_s

Представляю второй вариант - который правильно распаян.
128 мегу поменял на 168, потомучто заказчик потребовал минимального размера, просто гад.
Сегодня завелась мега - шьется и моргает светодиодом.
Пока спать не свалюсь буду оживлять сей девайс. Нада для начал убедиться в том что все регистра трансивера читаются. Я всетаки не рискнул CC2420 на 5 вольт запитывать - в даташите четка написано - 3,6 - верхний край. Но на всякий случай в стабилизаторе на корпусном выводе место для SMD диодика оставил, потом поробую на 0,6 вольта поднять напряжение.

8 days later
VitaliyB

For Focus
Собрал кодер на Mege16 и появились вопросы.
При включении микшера, ручки управления элеронами и рулем высоты меняются местами.
Можно ли исправить этот глюк?
Заодно наверное есть смысл ввести програмное ограничение длительности канальных импульсов с коефициентом 1.2 , при натройке смешивания каналов длительности импульсов часто выходят за
пределы и сервоприводы совершают непредсказуемые движения.
С уважением .
Виталий.

jeti

Я так и не понял,
при прошивке в кодере от Фокуса с фьюзами чтото делать надо?

focus
VitaliyB:

For Focus
Собрал кодер на Mege16 и появились вопросы.
При включении микшера, ручки управления элеронами и рулем высоты меняются местами.
Можно ли исправить этот глюк?
Заодно наверное есть смысл ввести програмное ограничение длительности канальных импульсов с коефициентом 1.2 , при натройке смешивания каналов длительности импульсов часто выходят за
пределы и сервоприводы совершают непредсказуемые движения.
С уважением .
Виталий.

Глюк исправит можно… В коде замени
if (mix[1]==-1) {
ch[2]=2250+(adc[4]+adc[2])/2+trim[2]*10;
ch[4]=2250+(adc[4]-adc[2])/2+trim[4]*10;}

if (mix[2]==-1) {
ch[2]=2250+(adc[1]+adc[2])/2+trim[2]*10;
ch[1]=2250+(adc[1]-adc[2])/2+trim[1]*10;}

if (mix[3]==-1) {
ch[6]=2250+(adc[1]+adc[6])/2+trim[6]*10;
ch[1]=2250+(adc[1]-adc[6])/2+trim[1]*10;}

на if (mix[1]==-1) {
ch[2]=2250+(adc[2]+adc[4])/2+trim[2]*10;
ch[4]=2250+(adc[2]-adc[4])/2+trim[4]*10;}

if (mix[2]==-1) {
ch[2]=2250+(adc[2]+adc[1])/2+trim[2]*10;
ch[1]=2250+(adc[2]-adc[1])/2+trim[1]*10;}

if (mix[3]==-1) {
ch[6]=2250+(adc[6]+adc[1])/2+trim[6]*10;
ch[1]=2250+(adc[6]-adc[1])/2+trim[1]*10;}

Ограничения и прочее будут во второй версии. Она уже разрабатывается.

VitaliyB
focus:

Глюк исправит можно… В коде замени
if (mix[1]==-1) {
ch[2]=2250+(adc[4]+adc[2])/2+trim[2]*10;
ch[4]=2250+(adc[4]-adc[2])/2+trim[4]*10;}

if (mix[2]==-1) {
ch[2]=2250+(adc[1]+adc[2])/2+trim[2]*10;
ch[1]=2250+(adc[1]-adc[2])/2+trim[1]*10;}

if (mix[3]==-1) {
ch[6]=2250+(adc[1]+adc[6])/2+trim[6]*10;
ch[1]=2250+(adc[1]-adc[6])/2+trim[1]*10;}

на if (mix[1]==-1) {
ch[2]=2250+(adc[2]+adc[4])/2+trim[2]*10;
ch[4]=2250+(adc[2]-adc[4])/2+trim[4]*10;}

if (mix[2]==-1) {
ch[2]=2250+(adc[2]+adc[1])/2+trim[2]*10;
ch[1]=2250+(adc[2]-adc[1])/2+trim[1]*10;}

if (mix[3]==-1) {
ch[6]=2250+(adc[6]+adc[1])/2+trim[6]*10;
ch[1]=2250+(adc[6]-adc[1])/2+trim[1]*10;}
Ограничения и прочее будут во второй версии. Она уже разрабатывается.

К сожалению безуспешно.
Почему-то не заработало.

Andrey_K
focus:

Возникли вопросы. Сколько каналов должно быть? (по моим расчетам 8 - выше крыши) Какие типы моделей? (думаю самолет, планер с одной, двумя и четырьмямашинками на крыло и наверное верт, делется по типу автомата перекоса) Сколько режимов полета? И какие они для каждого типа моделей? Что в них должно настраиваться?

Решил ответить, хоть и с задержкой.
Может, стоит потратить время и довести то, что есть до логического завершения?
Оформить подробное описание и инструкцию по программированию. Чтобы самоделкин сразу понял что сможет, а что не сможет запрограммировать в этом передатчике.
Дать самоделкиным, у которых нет готовых джойстиков и нет внутрисхемного отладчика, рекомендации по настройке джойстиков. Т.е. рекомендации для тех, кто не может увидеть результаты АЦП на экране ПК. А если твоих знаний хватает – создай ПК интерфейс, позволяющий увидить. Это будут ОГРОМНЫЙ шаг вперед.

Смотрим на формулы

read_adc(3);
adc[1]=(ADCW-814); //читаем канал АЦП, вычитаем ненужный промежуток
read_adc(2);
adc[2]=(ADCW-832); //читаем канал АЦП, вычитаем ненужный промежуток
read_adc(1);
adc[3]=(ADCW-810); //читаем канал АЦП, вычитаем ненужный промежуток
read_adc(0);
adc[4]=(ADCW-818); //читаем канал АЦП, вычитаем ненужный промежуток
read_adc(4);
adc[6]=(ADCW-810);

и видим разные цифры: 814,832,810,818.

Может, стоит подробно описать процедуру выбора этих чисел? А заодно сказать, что делать тому, кто не обладает достаточными знаниями для переделки программы под себя?

В описании стоит уделить достойное внимание терминам и определениям. Например, что такое реверс. Все понимают, что это изменение направления вращения серво, но программно это м.б. выполнено по разному. Например, я для себя принял, что реверес осуществляется за счет реверса сигнала, полученного с канального потенциометра или тумблера. Или – что такое EPA. Я всегда считал, что ЕРА – это назначение конечных точек серво для канала. Т.е. это ИТОГОВОЕ масштабирование после всех смесителей.
Прибавление триммера – это тоже смеситель!
Хотя иногда ЕРА применяется для перецентрирования и реверса серво.

Смотрим на формулы

if (adc[1]>=0) adc[1]= adc[1]*epa1[1]/19*rev[1];
else adc[1]= adc[1]*epa2[1]/21*rev[1];

if (adc[2]>=0) adc[2]= adc[2]*epa1[2]/19*rev[2];
else adc[2]= adc[2]*epa2[2]/21*rev[2];

if (mix[2]==-1) {
ch[2]=2250+(adc[1]+adc[2])/2+trim[2]*10;
ch[1]=2250+(adc[1]-adc[2])/2+trim[1]*10;}

и видим, что триммеры прибавляются после ЕРА.

Число 2250 в этих формулах – желательно в описании указать: перемещение ручки канала NN от упора до упора при ЕРА=100% соответствует изменению длительности канального импульса от и до. То же для триммера.
Максимальная и минимальная длительности канального импульса не ограничиваются программно. Это опасно. Можно дойти до упора. (Футаба открытым текстом рекомендует настройку "от упора’, но это не образец для повторения. )
Обязательно нужна блок-схема последовательности вычислений.
Триммер масштабируется вместе с ручкой. Последствия и возможные решения проблемы стоит отметить в описании.

Смесители.
Для канала с триммером диапазон исходных чисел – это сумма диапазонов для ручки, триммера и нуля триммера (если нули триммера сохраняются). Для канала без триммера все проще. Если эти два канала смешиваются, возникает проблема несовпадения диапазонов исходных чисел. Пока нет сложных смесителей с пересчетными таблицами, эта проблема малозаметна, но она никуда не исчезнет. Тут есть над чем подумать.
Переписка по индикатору только упрочила мое мнение: для самодельного передатчика нужен вариант схемы и программы для стандартного индикатора, например 128х64 с контроллером ks0108. Да, это дороже. Но всем будет понятно и не нужно ходить по барыгам.

Зачем все это нужно? Чтобы пилот был пользователем передатчика, а не исследователем черного ящика. А если не сделать того, что написано выше? Тогда возможно дежа вю. И, через некоторое время, на вопрос “ Почему пищит?” последует ответ: “Нажмите две кнопки, не помню какие”. Увы, память не совершенна. Удачи!