Специальные цены   новые товары
Закрытая тема
Показано с 1 по 14 из 14

8 канальный кодеры

Тема раздела Самодельная электроника, компьютерные программы в категории Общие вопросы; Приветствую Всех - и с наступающим Годом Предлагается два варианта кодера для RC пультов Все 8 каналов - пропорциональные Возможно ...

  1. #1

    Регистрация
    28.12.2008
    Адрес
    odessa
    Возраст
    68
    Сообщений
    3

    8 канальный кодеры

    Приветствую Всех - и с наступающим Годом
    Предлагается два варианта кодера для RC пультов
    Все 8 каналов - пропорциональные
    Возможно применение в моделях где необходимо большое количество функций( авто- судомодели)
    так сказать копийных
    Кодер на 16F676 - опробован в работе ( переделал свой 5 канальный Футаба)
    Предусмотрена инверсия выходного сигнала
    Напряжение управления - 0-1в\ 2-3в\ 0-5в
    В предлагаемой прошивке установленно 2-3в
    Схема на 16F877 - тоже проверена , но в конструкции не реализованно( напряжение 0-5 в)
    Используя 4switch на 12F675 ( выложена на RCdesign) - можно создавать пульт к примеру 4 проп + 16 дискретных
    либо 6 проп + 8 дискр( 1 проп = 4 дискр)
    Пользуйтесь!
    Вложения

  2.  
  3. #2
    ubd
    ubd вне форума

    Регистрация
    17.03.2003
    Адрес
    г.Осинники, Кемеровская обл
    Возраст
    40
    Сообщений
    4,270
    Напряжение управления - 0-1в\ 2-3в\ 0-5в
    Калибровку бы ещё туда. Т.к. не у всех джойстиков крайние положения соответствуют 2 - 3 В. Плюс минус -0,3 - 0,5 В. Соответсвенно из-за этого разброса, канальный импульс не будет от 1-2 мс, а будут расхождения. В некоторых случаях это важно.

    И потом, первые четыре канала могут быть на джойстиках, а остальные просто потанциометры выносные на корпусе. Я так понял, что диапазон напряжения настраивается только на все каналы. А как быть если у меня на первых четырёх каналах, которые на джойстиках нужно 2-3в, а для остальных каналов которые просто на выносных потанциометрах, нужно 0-5в, так как у них полный ход ручки, от края до края.

    Как быть в этом случае?

  4. #3

    Регистрация
    28.12.2008
    Адрес
    odessa
    Возраст
    68
    Сообщений
    3
    У меня Футаба - крайнее положения ручек + триммеры получается даже больше чем 1в ( 0,8-1,2мс) а Футаба отличается узкой регулировкой (0,8мс вместо 1)
    Так что думаю на других аппаратах пройдет нормально
    По поводу разные напруги на разных каналах - проблематично
    Но при желании можно сделать аппаратно - так я и поступил
    Задача была сделать много каналов - и она есть
    Можно конечно повторить и кодер с сайта - но там всего 5 проп + много наворотов которые зачастую редко используются( как для меня) + дисплей на который нет времени смотреть в режиме управления
    И потом в предлагаемом нет претензии на суперность - просто не видел нигде разработки на МНОГО каналов - а мне было надо

  5. #4

    Регистрация
    04.10.2004
    Адрес
    Балашиха
    Возраст
    41
    Сообщений
    2,892
    Цитата Сообщение от bodyn Посмотреть сообщение
    Можно конечно повторить и кодер с сайта - но там всего 5 проп + много наворотов
    Кол-во пропорциональных каналов там ограничивается количеством входов ацп, а их восемь. Надо лишь чуть-чуть код поправить, и то, почти не думая, по аналогии

    Хотя свое - оно приятней ...

  6.  
  7. #5
    Забанен
    Регистрация
    13.11.2005
    Адрес
    ukraine Odessa
    Возраст
    67
    Сообщений
    648
    мысль интересная - сделать калибровку каждого канала в отдельности
    к примеру на 16F877 - там обьема памяти должно хватить
    и на счет не думая - подскажите как ! ( аналогия только с пивом
    А я уж в железе попробую

  8. #6
    ubd
    ubd вне форума

    Регистрация
    17.03.2003
    Адрес
    г.Осинники, Кемеровская обл
    Возраст
    40
    Сообщений
    4,270
    к примеру на 16F877 - там обьема памяти должно хватить
    и на счет не думая - подскажите как !
    Не думая, это если язык знать. Так что изучайте ассемблер и делайте не думая... А в железе, готовое, каждый попробовать сможет...

  9. #7

    Регистрация
    04.10.2004
    Адрес
    Балашиха
    Возраст
    41
    Сообщений
    2,892
    Цитата Сообщение от radioham Посмотреть сообщение
    и на счет не думая - подскажите как ! ( аналогия только с пивом
    Кусок из мач.с того проекта:


    read_adc(Ailerons);
    AD[0]=ADCW-ADmid[0];
    read_adc(Throttle);
    AD[2]=ADCW-ADmid[2];
    read_adc(Rudder);
    AD[3]=ADCW-ADmid[3];
    read_adc(Elevator);
    AD[1]=ADCW-ADmid[1];
    read_adc(Rpop_contr);
    AD[4]=ADCW-ADmid[4];

    read_adc(Prop_contr_2); - добавили не думая, по аналогии с
    AD[5]=ADCW-ADmid[4]; - с предъидущей строкой

    Конечно надо по аналогии продублировать все переменные и константы для нового канала. Делается элементарно, компилишь, где ошибка выскакивает - добавляешь, или увеличиваешь размерность массива. Собсвтенно, если резисторы одинаковые и установлены одинаково - можно забить на нормализацию для доп. каналов и использовать значения средней точки и коэфициентов от "проп_контрол". Для простоты так и поступим. Константу проп_контр_2 - опредеили в деф.с файле, аналогично проп_контр. Как не трудно догадаться, ее значение определяет вход аналого-цифрового преобразователя, с которого мы будем считывать напряжение с переменного резистора-крутилки.

    read_adc(Batt); - если надо именно 8 проп. крутилок - то батарейку мерять останется нечем.... что касается нее тогда - удалить.
    U_bat=ADCW;
    U_bat=U_bat*2;

    if(!SW1)input[4]=-750; (*) - вот тут дискретные каналы. типа:если выключен
    else input[4]=750; св1, то инпут(4) в минимальное положение, в противном случае - в максимальное. Выбираем канал, который из дискрета переводим в пропорциональный, и для этого канала удаляем такую строчку.
    я выбрал для примера инпут(6) и удалил то, что касалось его.
    ....................................................................


    for (i=0; i<4; i++)
    {
    if (AD[i]>0) input[i]=AD[i]*Kmax[i]/10;
    else input[i]=AD[i]*Kmin[i]/10;
    }





    input[8]=input[contr[8].from[FLY_MODE]];
    input[9]=input[contr[9].from[FLY_MODE]];






    if (AD[5]>0) input[6]=AD[5]*Kmax[4]/10; - ну и тут вставили по аналогии, с
    else input[6]=AD[5]*Kmin[4]/10; - тем что было ниже...
    Т.е. переменную инпут() мы меняем не как было выше (*) - в зависимости от переключателя - дискретно в -750 или в +750, а пропорционально от напряжения, считанного при помощи ацп с "крутилки". Кмин и Кмах - угловые коэфициенты пропорциональности, расчитываются при калибровке, их можно взять такие же как и в канале проп_конрол, если конструктив одинаков, что я и сделал в примере.

    if (AD[4]>0) input[7]=AD[4]*Kmax[4]/10;
    else input[7]=AD[4]*Kmin[4]/10;



    Ну вот, вроде и получилось, не думая практически, как и обещал. Только копи-паст, и вроде бы все. Компилим, видим огибки - увеличиваем размерность массива ад(), ну может еще где в цыклах "до скольки шагать"... вроде бы тривиально.

  10.  
  11. #8

    Регистрация
    07.06.2008
    Адрес
    Москва
    Возраст
    51
    Сообщений
    9,157
    Цитата Сообщение от Aleksey_Gorelikov Посмотреть сообщение
    Кусок из мач.с того проекта:


    Ну вот, вроде и получилось, не думая практически, как и обещал.
    Насчёт "не думая"- это идея богатая
    А если всё таки подумать: сигнал с этого кодера- куда приходит?
    Правильно, на декодер!
    А ему, проклятому- нужна определённая длительность пачки да ещё, как не прискорбно- определённая пауза (для сброса в "0" )
    Так вот, если одно из условий не будет соблюдено- декодер ничего не поймёт
    И если посчитать времена: 8 импульсов по 2,1 мСек (мах), семь пауз- по 0,3мСек= 16,8+2,1=18,9мСек
    При ширине пачки (желательной) 20 мСек, синхропауза- где?
    Или я чего то не понимаю?

  12. #9
    ubd
    ubd вне форума

    Регистрация
    17.03.2003
    Адрес
    г.Осинники, Кемеровская обл
    Возраст
    40
    Сообщений
    4,270
    Ширина пачки может должна быть 25 мс. Можно и больше, скажем 27мс. Так что хватает.

  13. #10

    Регистрация
    07.06.2008
    Адрес
    Москва
    Возраст
    51
    Сообщений
    9,157
    Цитата Сообщение от ubd Посмотреть сообщение
    Ширина пачки может должна быть 25 мс. Можно и больше, скажем 27мс. Так что хватает.
    Дело в том, что в обычных (с декодером на CD 4015) приёмниках цепь формирования импульса сброса настроена на 20 мС.
    И в принципе, сделать в РРМ 8 команд с расчётом на любой приёмник- нельзя. Максимум что получается (для надёжной работы декодера)-7 команд.
    Просто длины пачки не хватает для импульса сброса.
    Так что, 27 мС можно сделать, но декодер придётся подстраивать под данное время
    Теорию вопроса можно почитать , набрав в Яндексе "школа дядьки глайдера"
    Последний раз редактировалось blade; 10.01.2009 в 10:31.

  14. #11

    Регистрация
    04.10.2004
    Адрес
    Балашиха
    Возраст
    41
    Сообщений
    2,892
    Цитата Сообщение от blade Посмотреть сообщение
    Насчёт "не думая"- это идея богатая
    А если всё таки подумать: сигнал с этого кодера- куда приходит?
    Очевидно тудаже, куда и с тех двух кодеров, которые топикстартер выложил выше. И то, что он выложил - мотивировал тем, что ему надо именно 8, а в том, что есть "от фокуса"- всего 5. Причем он проявил интерес, как почти не думая можно поменять дискретные каналы на пропорциональные. Заметьте, функционал кодера не менялся, кодер от фокуса подразумевает 8 каналов, и не вижу разницы, чем заполняется регистр таймера - константами в зависимости от положения переключателя или переменной, зависимой от напряжения на входе АЦП.

    Правильно, на декодер!
    А ему, проклятому- нужна определённая длительность пачки да ещё, как не прискорбно- определённая пауза (для сброса в "0" )
    Ну сохраните длительность синхропаузы то, чтоб конденцатор в цепи сброса 4017 зарядиться успел! Длительность пачки классическому ппм декодеру на 4017 вобще не важна! Важно условие, чтоб в паузе между канальными импульсами конденцатор в цепи сброса не успевал заряжаться до напряжения логической "1". От того, сколько каналов в пачке - 3 или 8 - счетчику абсолютно пофигу, хоть разрядность увеличивайте и 16, 24,32 и тд делайте! Паузу только увеличьте, чтоб его сбрасывать, и радуйтесь!

    И вобще, тут восьмиканальные кодеры обсуждают, а не проблемы сброса счетчика 4017!

  15. #12
    Забанен
    Регистрация
    13.11.2005
    Адрес
    ukraine Odessa
    Возраст
    67
    Сообщений
    648
    Все правильно !
    Я указанные кодеры пробовал на двух приемниках - E Fly и Euro - на обоих никакой подстройки не требовалось только вывел из регистра еще два канала ( было на 6 )
    Все 8 четко определяются
    Кстати есть кодер и на 10 каналов на 16Ф88 - и к удивлению тоже работает

  16. #13
    ubd
    ubd вне форума

    Регистрация
    17.03.2003
    Адрес
    г.Осинники, Кемеровская обл
    Возраст
    40
    Сообщений
    4,270
    Так что, 27 мС можно сделать, но декодер придётся подстраивать под данное время
    Ничего подстраивать не нужно. Проверенно.

    Теорию вопроса можно почитать , набрав в Яндексе "школа дядьки глайдера"
    Знаю я твоего дядьку Глайдера. Пробовал повторять его схемы. Работают, но криво. На проце получается намного стабильнее.
    Если честно его схемы уже давно морально устарели...

  17. #14
    Забанен
    Регистрация
    13.11.2005
    Адрес
    ukraine Odessa
    Возраст
    67
    Сообщений
    648
    Это точно !

Закрытая тема

Похожие темы

  1. Продам Приемник 8-канальный Hitec HFD-08RO 40mhz
    от Home-Sky в разделе Барахолка. Аппаратура
    Ответов: 5
    Последнее сообщение: 05.10.2011, 01:20
  2. Длина антены Приемника 8 канальный "Pilotage" 40Mhz
    от Blitzkrieg в разделе Аппаратура радиоуправления
    Ответов: 0
    Последнее сообщение: 21.03.2008, 00:41

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения