Самодельный передатчик (часть 1)
молдетз!
полетные режимы я переключаю тумблером с тремя положениями. ну короче их три у меня всего 😊
а мне больше и не надо ))
интересно конечно узнать как это сделано в фирменных передатчиках. но уж больно не хочется выслушивать некоторых особо умных хоббистов с их репликами "аааа он не может даже придумать как переключать режимы ааа пошел бы работать и купил футабу, недоумок!!! " 😲
или еще идея по существу: есть две кнопки вврех и вниз. На экране высвечивается текущий режим, кнопками скролим режимы как список и останавливаемся на нужном. плюсы: любое колличество режимов. Минусы: пока проскролим включится куча ненужных режимов. Решение-сделать задержку применения выбранного режима на 1…1,5 сек, чтобы успевать
или еще идея по существу: есть две кнопки вврех и вниз. На экране высвечивается текущий режим, кнопками скролим режимы как список и останавливаемся на нужном. плюсы: любое колличество режимов. Минусы: пока проскролим включится куча ненужных режимов. Решение-сделать задержку применения выбранного режима на 1…1,5 сек, чтобы успевать
такой вариант сейчас и рассматриваетсятолько вместо задержки 1-1,5 сек ещё кнопочка вроде подтверждение…
либо переключатель трёхпозиционный пока оставил это на сладкое 😃
честно говоря мне почти никогда не приходилось переключать режимы в полете =) поэтому судить не могу удобно это или нет. но мое ИМХО все же, что лучше бы исключить необходимость пялится на экран. допустим я лечу и смотрю в небо, и задумал переключить-получается я должен взор опустить на экран, покликать там =) попытатся разобрать название режима… короче не знаю. я наверное тумбер оставлю
настроение у меня фичакатное 😵
лучше бы исключить необходимость пялится на экран. допустим я лечу и смотрю в небо, и задумал переключить-получается я должен взор опустить на экран, покликать там =) попытатся разобрать название режима… короче не знаю. я наверное тумбер оставлю
здесь ты полностью прав… тумблер форева!
интересно конечно узнать как это сделано в фирменных передатчиках. но уж больно не хочется выслушивать некоторых особо умных хоббистов с их репликами "аааа он не может даже придумать как переключать режимы ааа пошел бы работать и купил футабу, недоумок!!! " 😲
Если интересно, могу расказать как сделаны переключатели на “Фирменном” чисто вертолетном пульте от валкеры. Думаю, что они там все слили с jr или еще откуда-то.
Там есть 3 шт. переключателя dual rate.
Для чувствительности гироскопа задается два значения, одно из которых в дальнейшем выбирается для каждого полетного режима.
1 шт. 3х-позиционный переключатель режимов+1 режим Throttle hold, который перекрывает 3х позиционный переключатель, если throttle hold включен. Для всех 4х режимов задаются кривые шага и номер чувствительности гироскопа. Для всех, кроме throttle hold задается газ. Для throttle hold задается уровень газа в процентых при всех положениях стика.
Есть крутилки для регулировки газа и шага в среднем положении стика газа (думаю чисто вертолетная фича)+крутилка, сдвигающая кривую шага на всем протяжении вверх-вниз.
Переключатель gear.
Есесно выбирается тип тарелки перекоса.
В кривых есть прикольная феня - при движении стика на кривой рисуется вертикальная линия, показывающая текущее положение стика и пишутся положение стика и результирующее значение.
Есть монитор, показывающий положение всех каналов.
Есть настраиваемая пищалка по уровню напряжения аккумукляторов и запускаемый вручную таймер. Напряжение аккумуляторов показывается на экране.
Чего нет и что считаю удобством:
- Показа текущего режима
- цифрового триммера стика газа. (Почему-то аналоговый)
- Когда крутишь ручку pit trim (сдвигающую кривую шага целиком), то на экране не появляется график. Но двигается ползунок.
- Отсутствует таймер по газу больше определенного.
Да, экран неизвестного разрешения размером 5.7 на 3 см. Его площади и пиуселей достаточно для вывода практически всего необходимого. К примеру, обычные менюшки там высвечиваются в два столбца и под скроллер никогда не попадают.
Если надо, могу сделать фотки экрана и выложить. К сожалению, футабы не имею и ее показать и рассказать о ней так просто не могу.
Да, проц - то ли 32-я, то ли 64-я мега.
спасибо вам большое! очень интересно!
несколько раз перечитывал-вроде понял =) Теперь обмозговываю.
Мне кажется что для универсального пульта будет оптимально иметь два ползунка, две крутилки, 4-6 трехпозиционных тумблеров и 2 двухпозиционных. Ну и ручки само собой. Кто нить прокомментирует?! 😉
Кстати в JR вроде бы тоже аналоговый триммер газа.
Если надо, могу сделать фотки экрана и выложить
если вас не затруднит, сделайте парочку пожалуйста!
Да, проц - то ли 32-я, то ли 64-я мега.
а вот это неожиданно! наверное на асме написана прошивка
2focus:
Сделал таки Ваш кодер.
Переписал исходник на GCC под Mega128
Меню работает изумительно. Таймер полётного времени ведёт себя странно - хочет - стартует сразу при сбросе контроллера, хочет - через 2-3 минуты (то есть через время, никак не связанное со значением таймера), а иногда и вовсе не стартует.
В чём может быть засада?
Кстати, что и где надо поменять чтобы таймер работал правильно при тактовой 16МГц вместо 12МГц ?
(у меня отладочная плата на базе Mega128 с кварцем на 16МГц
ERE EMB128C16 + ERE MEGAEX )
2focus:
Кстати, что и где надо поменять чтобы таймер работал правильно при тактовой 16МГц вместо 12МГц ?
проблеммка немного шире нежели кажется…
часы у вас торопятся так? так!
а считаются они у фокуса в прерывании от таймера!
тобиш тут:
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
если под GCC то тут:
SIGNAL(SIG_OUTPUT_COMPARE1A)
и параметры PPM у вас тожа уплыли !!!
у вас сейчас получается таймер щёлкает на 2 мегагерца а в оригинале было 1,5!!
а чтобы врё правильно заработало нужно ввести поправки в длительности каналов а часики сами наместо станут !!!
и параметры PPM у вас тожа уплыли !!!
у вас сейчас получается таймер щёлкает на 2 мегагерца а в оригинале было 1,5!!
а чтобы врё правильно заработало нужно ввести поправки в длительности каналов а часики сами наместо станут !!!
Ага
я увеличил значения регистров чтобы считало “дольше”. Но часики как бежали - так и бегут. как раз на 25 прОцентов быстрее 😦
у Евгения значения канальных импульсов 2250, я выставил 3000 … Но ничего не изменилось … ВООБЩЕ НИЧЕГО !!! Может я не туда тыкаюсь? Ткните плиз куда мне надо, я с Таймерами в АВР ещё ни разу не работал - посему для меня это “тёмный лес”.
Прикол то ещё и в том, что эти часики то сами с места срываются - а то никакими усилиями не заставишь их тикать , и где ковырять - я тоже пока не понимаю.
Привет всем!
Переписал кодер Фокуса ( для мега16) под под схему Фокуса на мега128.
Хекс внизу.
#define up PIND.4
#define down PIND.5 // навигация по меню
#define ok PIND.6
#define esc PIND.7
#define ch7_1 PINE.2
#define ch7_2 PINE.3
#define ch5 PINE.4 // пятый канал
#define rate PINE.5 //расходы первые/вторые
#define cut PINE.6 // выключение двигателя
#define beeper PORTE.7
у Евгения значения канальных импульсов 2250, я выставил 3000 … Но ничего не изменилось …
Прикол то ещё и в том, что эти часики то сами с места срываются - а то никакими усилиями не заставишь их тикать , и где ковырять - я тоже пока не понимаю.
del=ch[1]+ch[2]+ch[3]+ch[4]+ch[5]+ch[6]+ch[7];// вычисляем общую длину импульсов
del=30000-del; // вычилляем длительность синхропаузы
здесь 30000 исправить на 40000
нуи считать каналы от 3000 и поправочка нужна к тому что прибавляеш к 3000
иначе получиш слишком шерокий диапазон длительностей и можеш выжеч машинки
выглядеть будет примерно так:
ch[1]=3000+adc[1]+trim[1]*9;
по поводу почему “срываются” часы надо в твой код глядеть… 😉
del=ch[1]+ch[2]+ch[3]+ch[4]+ch[5]+ch[6]+ch[7];// вычисляем общую длину импульсов del=30000-del; // вычилляем длительность синхропаузы
здесь 30000 исправить на 40000
У Евгения есть ещё значение задержки 14000 - его тоже надо менять?
ну и считать каналы от 3000 и поправочка нужна к тому что прибавляеш к 3000
иначе получиш слишком шерокий диапазон длительностей и можеш выжеч машинки
выглядеть будет примерно так:ch[1]=3000+adc[1]+trim[1]*9;
по поводу почему “срываются” часы надо в твой код глядеть… 😉
вот мой код - фактически это просто переделанный под Мегу128 и под GCC кодер Евгения. Да, и define вынесены в отдельный файл config.h, но логику работы я не менял.
Я так и не понял по коду - в какой момент _должен_ запускаться таймер и как его можно (и можно ли) принудительно остановить, чтобы не тикало.
Я так и не понял по коду - в какой момент _должен_ запускаться таймер и как его можно (и можно ли) принудительно остановить, чтобы не тикало.
по евгению
таймер запускается принажатии esc и up
останавливатся по esc и down
if ((m[1][0]==0)&&(!esc)&&(!up)&&(tm1!=0)){b_tm=1;} //включение таймера
if ((esc==0)&&(down==0)&&(b_tm==1)){tm2=0;b_tm=0; beeper=0; tm1=time;} //выключение таймера
щас гляну ваш код ,далеко не уходите 😉
про 14000 это инециализационное значение если его не поменять то первая посылка после включения будет не правильная!короткая…
в принчепе ничего страшного но для полядка поставте туда 19000
по евгению
таймер запускается принажатии esc и up
останавливатся по esc и downif ((m[1][0]==0)&&(!esc)&&(!up)&&(tm1!=0)){b_tm=1;} //включение таймера if ((esc==0)&&(down==0)&&(b_tm==1)){tm2=0;b_tm=0; beeper=0; tm1=time;} //выключение таймера
Если верить этому коду, ТО (!esc)&&(!up) означает что кнопки НЕ нажаты, а вот (esc==0)&&(down==0) - как раз нажаты, и вроде как мне пару раз этой комбинацией удалось остановить таймер. но только пару раз 😦
щас гляну ваш код ,далеко не уходите 😉
про 14000 это инециализационное значение если его не поменять то первая посылка после включения будет не правильная!короткая…
в принчепе ничего страшного но для полядка поставте туда 19000
Ок, это поменял , я сейчас параллельно это в VMLAB кручу. У меня длительность канального импульса получается 104.6us , а пауза между импульсами - 406.7us , это правильно?
Если верить этому коду, ТО (!esc)&&(!up) означает что кнопки НЕ нажаты, а вот (esc==0)&&(down==0) - как раз нажаты, и вроде как мне пару раз этой комбинацией удалось остановить таймер. но только пару раз 😦
одно но focus кнопачками на землю ножки коротит!!!
значит эти ножки подтянуты внутренними резисторами к плюсу и пока я не нажму на ноге будет “1”, а когда нажму то “0” а записи типа
(!esc)&&(!up)
и
(esc==0)&&(down==0)
равнозначны и обе говорят если 0 то отдать истину
Ок, это поменял , я сейчас параллельно это в VMLAB кручу. У меня длительность канального импульса получается 104.6us , а пауза между импульсами - 406.7us , это правильно?
там всё есть 😋
www.rcmaster.ru/club/glider/…/index.shtml
а записи типа
(!esc)&&(!up) и (esc==0)&&(down==0)
равнозначны и обе говорят если 0 то отдать истину
Значит мне в моём случае надо поправить это под GCC, спасибо, щас сделаю.
Voprosik, a shemka Focus’a na atmega128 takajazhe ilji 4toto drugoje? Kakto njenashol v etoi vetke na 128, jestj toljko na Atmega 64.
Voprosik, a shemka Focus’a na atmega128 takajazhe ilji 4toto drugoje? Kakto njenashol v etoi vetke na 128, jestj toljko na Atmega 64.
по евгению
таймер запускается принажатии esc и up
останавливатся по esc и downif ((m[1][0]==0)&&(!esc)&&(!up)&&(tm1!=0)){b_tm=1;} //включение таймера if ((esc==0)&&(down==0)&&(b_tm==1)){tm2=0;b_tm=0; beeper=0; tm1=time;} //выключение таймера
щас гляну ваш код ,далеко не уходите 😉
Проверил - по esc + down таймер останавливается, но ненадолго, проходит какое-то небольшое время и таймер САМ стартует с последним значением, стартовать таймер по esc+up у меня так и не вышло.
С того момента как поменял все переменные в сторону увеличения у меня таймер вообще никак не стартует. Без JTAG отладить никак не получается, буду ждать когда посылка приедет с JTAG для AVR.
Большое спасибо за консультации и вообще за участие.
Персональное спасибо Евгению за его работу.