Специальные цены   новые товары
Закрытая тема
Страница 3 из 6 ПерваяПервая 1 2 3 4 5 ... ПоследняяПоследняя
Показано с 81 по 120 из 204

Как принять сигнал с приемника в AVR (PWM|Digital)

Тема раздела Бортовая электроника в категории Cамолёты - Общий; Сообщение от Tester500 Ну вроде примеров для оцифровки PPM хватает. Есть проекты PPM-> USB (для симуляторов), вот простой: https://github.com/thomaspfeifer/PPM...rchives/master Мне ...

  1. #81

    Регистрация
    17.02.2008
    Адрес
    Москва
    Возраст
    38
    Сообщений
    293
    Цитата Сообщение от Tester500 Посмотреть сообщение
    Ну вроде примеров для оцифровки PPM хватает. Есть проекты PPM-> USB (для симуляторов), вот простой:
    https://github.com/thomaspfeifer/PPM...rchives/master
    Мне как раз PPM и не надо, мне надо считать 3 канала с конечных выходов приемника(куда подключаются сервы). И желательно используя только одно прерывание.

  2.  
  3. #82

    Регистрация
    02.03.2011
    Адрес
    Санкт-Петербург, Оренбург,
    Возраст
    50
    Сообщений
    3,024
    Цитата Сообщение от Bare Посмотреть сообщение
    мне надо считать 3 канала с конечных выходов приемника(куда подключаются сервы). И желательно используя только одно прерывание.
    не вопрос, заводите их, каждую на свою ногу и одновременно через диод типа кд521/522 на одно, общее прерывание... (получится этакая схема 3ИЛИ), при вызове прерывания читайте состояние всех трех ног, по какой из них произошел вызов легко сами определитесь
    Но есть подозрение что не очень красиво это будет работать... ибо там, на каналах, PWM. а значит практически одновременно может быть сигнал. Надеюсь что каналы ШИМят все же по очереди, и в том же порядке как это было принято из входящего PPM...

  4. #83
    msv
    msv вне форума

    Регистрация
    05.03.2008
    Адрес
    Новокузнецк
    Возраст
    55
    Сообщений
    2,367
    Не надейтесь.. Последовательно шимы появляются пожалуй только в простейших декодерах на сдвиговом регистре..

  5. #84

    Регистрация
    02.03.2011
    Адрес
    Санкт-Петербург, Оренбург,
    Возраст
    50
    Сообщений
    3,024
    Я не надеюсь на столько уж тупо, но что то мне подсказывает что периодичность поступления PWM должна быть синхронна с прилетевшим PPM для серв и спидконтроллеров это вполне приемлемо, какой смысл молотить туда импульсы чаще?.
    Сознайтесь плиз кто нибудь из тех, кто туда наступал осциллером ... а то будет как в прошлый раз ...

  6.  
  7. #85

    Регистрация
    17.02.2008
    Адрес
    Москва
    Возраст
    38
    Сообщений
    293
    Цитата Сообщение от Probelzaelo Посмотреть сообщение
    Я не надеюсь на столько уж тупо, но что то мне подсказывает что периодичность поступления PWM должна быть синхронна с прилетевшим PPM для серв и спидконтроллеров это вполне приемлемо, какой смысл молотить туда импульсы чаще?.
    А если используется например FASST или DSM ? Там могут прилетать данные по каналам в одном пакете, соответственно и выставляться на приемнике могут почти одновременно.

  8. #86

    Регистрация
    02.03.2011
    Адрес
    Санкт-Петербург, Оренбург,
    Возраст
    50
    Сообщений
    3,024
    Цитата Сообщение от Bare Посмотреть сообщение
    А если используется например FASST или DSM ? Там могут прилетать данные по каналам в одном пакете, соответственно и выставляться на приемнике могут почти одновременно.
    Могут, и наверняка будут... в принципе для программера было бы даже проще загрузить нужное число (период повторения) в единственный таймер, одновременно запустить сразу все импульсы и потом по очереди ставить константы = длительности импульса и снимать их ровняясь на цифровой компаратор, по этому таймеру ... а потом точно так же повторять внутри основного цикла после каждого обнуления таймера...
    отдельно следить за входящим PPM и по мере получения "новостей" корректировать константы по каналам ...

  9. #87

    Регистрация
    26.01.2011
    Адрес
    Краснодар
    Возраст
    44
    Сообщений
    2,914
    Записей в дневнике
    13
    Я так думаю, что в контроллере приемника узел декодирования PPM и узел формирования ШИМ - разные, и синхронизация между ними совершенно необязательна и даже почти невозможна. Поэтому и вполне могут быть расхождения.
    ШИМ может быть с разной частотой - для аналоговых, для цифровых серв... Не подстраиваться же под это передатчику Ну и опять же - частоту ШИМ формирует приемник, а частоту PPM - передатчик, так что синхронизации здесь и не может быть.

  10.  
  11. #88

    Регистрация
    02.03.2011
    Адрес
    Санкт-Петербург, Оренбург,
    Возраст
    50
    Сообщений
    3,024
    Это зачем же им разные узлы делать в одном приемнике? если и одно и второе достаточно не сложные задачи для практически любого микроконтроллера, просто два программных блока очевидно работающих совершенно независимо друг от друга... и главное что у контроллера даже самого слабого и дешевенького при этом будет еще полным-полно времени на выполнение каких либо других, не менее полезных задач... а синхронизация действительно не очень то и нужна, но по логике вещей было бы очень даже полезно чтобы два устройства, приемник и передатчик были по максимуму согласованы и работали что называется в унисон, тем более что одна из задач по любому получается синхронизированной... а вторую, без разницы, я практически уверен что у разных производителей решения разные, у кого то синхронизированно у кого то нет, а у кого то МК ведет себя точно так же как
    Цитата Сообщение от msv Посмотреть сообщение
    в простейших декодерах на сдвиговом регистре
    просто МК делает сразу все что нужно и плюс еще немного но в одном корпусе, в отличии от просто сдв.регистра. а один корпус это снижение и массы и цены и сложности и увеличение надежности всего изделия.

  12. #89

    Регистрация
    18.10.2011
    Адрес
    Самара
    Возраст
    47
    Сообщений
    81
    Формализуем ТЗ, пока до Канта не дошло :-)
    1. нужно оцифровать сигналы PWM, которые поступают с канальных выводов приемника (PPM)
    2. Оцифрованный канал должен иметь ...-бит (указать битность)
    3. На выходе имеем переменные, содержащие пропорционально длительности сигнала число.
    4. Использовать не более одного таймера и одного прерывания (видимо проще от этого таймера)

    Такое ТЗ пойдет?

  13. #90
    msv
    msv вне форума

    Регистрация
    05.03.2008
    Адрес
    Новокузнецк
    Возраст
    55
    Сообщений
    2,367
    5. Точность определения длины импульса не хуже ... мкс.
    (Разрядность можно сделать хоть long, но это не обещает некоторую гарантированную точность..)

  14. #91

    Регистрация
    18.10.2011
    Адрес
    Самара
    Возраст
    47
    Сообщений
    81
    Длина импульса 2.1 мс, минимум 0.8 мс
    Кто что еще подскажет?

  15. #92

    Регистрация
    17.02.2008
    Адрес
    Москва
    Возраст
    38
    Сообщений
    293
    Нашел один пример, написан на Си, но не под ардуино, поэтому я до конца его понять не могу. Хочется сделать библиотеку под ардуино.
    приведу куски кода ( ниже приложу весь архив)
    #define RX_ROLL REGISTER_BIT(PIND,1)
    #define RX_PITCH REGISTER_BIT(PIND,2) // INT0
    #define RX_COLL REGISTER_BIT(PIND,3) // INT1
    #define RX_YAW REGISTER_BIT(PINB,7)
    #define RX_ROLL_DIR REGISTER_BIT(DDRD,1)
    #define RX_PITCH_DIR REGISTER_BIT(DDRD,2)
    #define RX_COLL_DIR REGISTER_BIT(DDRD,3)
    #define RX_YAW_DIR REGISTER_BIT(DDRB,7)

    // RX_ROLL
    ISR(PCINT2_vect)
    {
    if ( RX_ROLL ) // rising
    {
    RxChannel1Start = TCNT1;

    } else { // falling
    RxChannelsUpdatingFlag = 1;
    RxChannel1 = TCNT1 - RxChannel1Start;
    RxChannelsUpdatingFlag = 0;
    }
    }

    // RX_PITCH
    ISR(INT0_vect)
    {
    if (RX_PITCH)
    {
    RxChannel2Start = TCNT1;

    } else { // falling
    RxChannelsUpdatingFlag = 1;
    RxChannel2 = TCNT1 - RxChannel2Start;
    RxChannelsUpdatingFlag = 0;
    }
    }

    // RX_COLL
    ISR(INT1_vect)
    {
    if (RX_COLL)
    {
    RxChannel3Start = TCNT1;

    } else { // falling
    RxChannelsUpdatingFlag = 1;
    RxChannel3 = TCNT1 - RxChannel3Start;
    RxChannelsUpdatingFlag = 0;
    }
    }

    // RX_YAW
    ISR(PCINT0_vect)
    {
    if ( RX_YAW ) // rising
    {
    RxChannel4Start = TCNT1;

    } else { // falling
    RxChannelsUpdatingFlag = 1;
    RxChannel4 = TCNT1 - RxChannel4Start;
    RxChannelsUpdatingFlag = 0;
    }
    }


    ----------------------------


    // pin change interrupt enables
    PCICR |= (1 << PCIE0); // PCINT0..7
    PCICR |= (1 << PCIE2); // PCINT16..23

    // pin change masks
    PCMSK0 |= (1 << PCINT7); // PB7
    PCMSK2 |= (1 << PCINT17); // PD1
    // external interrupts
    EICRA = (1 << ISC00) | (1 << ISC10); // Any change INT0, INT1
    EIMSK = (1 << INT0) | (1 << INT1); // External Interrupt Mask Register
    EIFR |= (1 << INTF0) | (1 << INTF1);

    // timer0 (8bit) - run @ 8MHz
    // used to control ESC/servo pulse length
    TCCR0A = 0; // normal operation
    TCCR0B = (1 << CS00); // clk/0
    TIMSK0 = 0; // no interrupts

    // timer1 (16bit) - run @ 1Mhz
    // used to measure Rx Signals & control ESC/servo output rate
    TCCR1A = 0;
    TCCR1B = (1 << CS11);

    // timer2 8bit - run @ 8MHz / 1024 = 7812.5KHz
    // and Stick-Arming
    TCCR2A = 0;
    TCCR2B = (1 << CS22) | (1 << CS21) | (1 << CS20); // /1024
    TIMSK2 = 0;
    TIFR2 = 0;
    TCNT2 = 0; // reset counter

    В другом проекте, автор читает так:
    Вешает функцию на прерывание attachInterrupt(0, interruptHandler, RISING);
    А это основная часть из interruptHandler
    #define TIMEOUT 2500
    #define XMITFACTOR_ADR 12
    #define THROTTLEPIN 4
    #define ROLLPIN 2
    #define PITCHPIN 3
    #define YAWPIN 6
    #define GEARPIN 7
    #define AUXPIN 5

    roll = pulseIn(ROLLPIN, HIGH, TIMEOUT);
    aux = pulseIn(AUXPIN, HIGH, TIMEOUT);
    gear = pulseIn(GEARPIN, HIGH, TIMEOUT);
    pitch = pulseIn(PITCHPIN, HIGH, TIMEOUT);
    throttle = pulseIn(THROTTLEPIN, HIGH, TIMEOUT);
    yaw = pulseIn(YAWPIN, HIGH, TIMEOUT);


    Мне этот код не нравится по нескольким причинам:
    1. Слишком много времени тратится на таймауты в pulsein, если нет сигнала на большинстве каналов.
    2. Если нет сигнала на первом канале, то и остальные читаться не будут.
    Вложения
    Последний раз редактировалось Bare; 22.11.2011 в 21:07.

  16. #93

    Регистрация
    18.10.2011
    Адрес
    Самара
    Возраст
    47
    Сообщений
    81
    Моя мыслЯ такая:
    Допустим нужно оцифровать сигнал с 8-битной точностью. Настраиваем таймер так, чтобы он выдавал прерывания каждую (2мс-1мс)/256. 2мс общая длина импульса, 1мс длительность сигнала до начала отсчета. Далее по прерыванию опрашиваем нужные порты-каналы. По изменению уровней (асинхронно для каждого канала) производим математические вычисления длины. Код изображу позже, счас уже думать нечем.
    PS: оверхед будет не большим, думаю займется не более 4% общего процессорного времени.

  17. #94

    Регистрация
    26.01.2011
    Адрес
    Краснодар
    Возраст
    44
    Сообщений
    2,914
    Записей в дневнике
    13
    Цитата Сообщение от Probelzaelo Посмотреть сообщение
    Это зачем же им разные узлы делать в одном приемнике? если и одно и второе достаточно не сложные задачи для практически любого микроконтроллера, просто два программных блока очевидно работающих совершенно независимо друг от друга...
    Я об этом и говорил. Узлы - я имел в виду функциональные узлы (программные блоки, подпрограммы - называйте как больше нравится) в одном контроллере
    Цитата Сообщение от Probelzaelo Посмотреть сообщение
    было бы очень даже полезно чтобы два устройства, приемник и передатчик были по максимуму согласованы
    Для чего? Какой смысл в этом? Передатчик должен гнать пакеты с достаточной для плавного управления частотой, а приемник должен выдавать ШИМ с частотой, требуемой сервами. Нафига синхронизация между ними?

  18. #95

    Регистрация
    17.02.2008
    Адрес
    Москва
    Возраст
    38
    Сообщений
    293
    Цитата Сообщение от Tester500 Посмотреть сообщение
    Моя мыслЯ такая: Допустим нужно оцифровать сигнал с 8-битной точностью. Настраиваем таймер так, чтобы он выдавал прерывания каждую (2мс-1мс)/256. 2мс общая длина импульса, 1мс длительность сигнала до начала отсчета. Далее по прерыванию опрашиваем нужные порты-каналы. По изменению уровней (асинхронно для каждого канала) производим математические вычисления длины. Код изображу позже, счас уже думать нечем.
    Если еще одновременно использовать библиотеку servo, то timer1 и timer3 заняты. Остается только timer2.

  19. #96

    Регистрация
    17.02.2008
    Адрес
    Москва
    Возраст
    38
    Сообщений
    293
    В прошлом сообщение написал ерунду.
    Сейчас нашел в интернете
    Документация по таймеру на ардуино
    http://sites.google.com/site/vanyamb...etciki-arduino
    Документация по прерываниям на ардуино
    http://sites.google.com/site/vanyamb...yvanij-arduino

    Пытаюсь понять исходники библиотеки servo, немного не хватает знаний. Не пойму какие таймеры использует эта библиотека?

  20. #97

    Регистрация
    09.08.2003
    Адрес
    Москва
    Возраст
    54
    Сообщений
    8,119
    Цитата Сообщение от Tester500 Посмотреть сообщение
    Моя мыслЯ такая:
    Допустим нужно оцифровать сигнал с 8-битной точностью...
    Для работы с сервой 8 бит мало, тем более, что оцифровываться будет цифровой сигнал, но как аналоговый, джиттер гарантирован. Кроме того, нужно знать алгоритм прохождения сигналов на выходе приемника, пачкой одновременно с порта контроллера или последовательно со сдвигового регистра.
    Наличие синхронизации приемника и передатчика также желательны - это резко упрощает задачу.

  21. #98

    Регистрация
    28.07.2004
    Адрес
    Москва
    Возраст
    47
    Сообщений
    806
    Давайте рассуждать логически, с колокольни разработчика приёмника. Кристалл с 8-12-ю аппаратными ШИМ генераторами на борту будет слишком дорогой и громоздкий для данного применения. Для четырёхканального приёмника городить раздельный шим тоже не имеет смысла, мало кто будет втыкать в него дорогущие цифровые сервы. С точки зрения программера наиболее логичный вариант - крутить однобитовый шаблон в выходном порту по прерыванию таймера. По сути - тот же сдвиговый регистр, только программный. Во всех встречавшихся мне цифровых FM примниках так и было, так я делал сам, и так работают DSM2 оранжики. Могу проверить ещё турнигу ради интереса.


    Можно считать, что большинство примников не выдают одновременно сервосигналы на нескольких ногах, и лишь некоторые дорогие многоканальные модели способны на это. С принятием такого ограничения на полную совместимость задачка многоканального захвата значительно упрощается. Выходы примника подаются на порты ввода меги и на базы транзисторов. Их коллекторы совершенно в штатном режиме соединяются с ногой ICP1 по схеме "монтажного ИЛИ-НЕ", и включается аппаратный захват TCNT1 по ICR. В процедуре прерывания анализируется уровень на портах, и вычисляется длительность именно того сервоимпульса, завершение которого вызвало прерывание.

  22. #99

    Регистрация
    09.08.2003
    Адрес
    Москва
    Возраст
    54
    Сообщений
    8,119
    В варианте "программного сдвигового регистра" возникает ограничение на количество каналов приемника. В старых РРМ приемниках наличие синхропаузы ограничивало канальность 7-8 каналами для такта до 25 мс (40 Гц). Если сэкономленную синхропаузу задействовать под дополнительные каналы, можно добавить еще пару-тройку каналов. В такт 20 мс (50 Гц) можно воткнуть по-хорошему 10 "сдвиговых" каналов по 2 мс. В то-же время генерация пачкой, несколькими пачками или с наложением канальных импульсов такое ограничение снимает. Для сервы главное, чтобы генерируемый импульс был "съедобным".

  23. #100
    msv
    msv вне форума

    Регистрация
    05.03.2008
    Адрес
    Новокузнецк
    Возраст
    55
    Сообщений
    2,367
    Цитата Сообщение от Boroda Посмотреть сообщение
    Давайте рассуждать логически
    Если бы не было других реал-тайм задач (как минимум прием и анализ PPM посылки), c логикой и выводами может и можно согласиться.. А в реале в этом случае слишком велика вероятность оказаться в одном прерывании при срочной необходимости обрабатывать другое. Я бы, со своей колокольни, никогда бы так не делал (и не делаю..).
    Да и вообще о чем речь? Если делать для себя любимого, можно из приемника вытащить исходный PPM (если он там есть..). Если в глобальном масштабе- по любому надо быть готовым, что декодер приемника не обязан выдавать канальные PWM с определенным, нам удобным, фазовым сдвигом..
    Цитата Сообщение от V_Alex Посмотреть сообщение
    В такт 20 мс (50 Гц) можно воткнуть по-хорошему 10 "сдвиговых" каналов по 2 мс.
    А как тогда делать синхронизацию?..

  24. #101

    Регистрация
    09.08.2003
    Адрес
    Москва
    Возраст
    54
    Сообщений
    8,119
    Цитата Сообщение от msv Посмотреть сообщение
    Если в глобальном масштабе- по любому надо быть готовым, что декодер приемника не обязан выдавать канальные PWM с определенным, нам удобным, фазовым сдвигом...
    Именно так. Единого стандарта нет и, скорее всего, уже не будет никогда.
    Да и РРМа в приемнике скорее всего не обнаружится. Входит цифра, проверяется и сразу перегоняется в цифру.

  25. #102

    Регистрация
    18.10.2011
    Адрес
    Самара
    Возраст
    47
    Сообщений
    81
    Цитата Сообщение от V_Alex Посмотреть сообщение
    Для работы с сервой 8 бит мало, тем более, что оцифровываться будет цифровой сигнал, но как аналоговый, джиттер гарантирован.
    8бит для примера, оно хоть 16 можно. Вот далее каша, что значит "оцифровываться будет цифровой сигнал"? Когда PPM успел стать цифровым? Каналы приемника демультиплексированный PPM, оно так задумывалось задолго до первого микроконтроллера, и работало в полном аналоге. Джиттера не будет, откуда он там.
    И зачем знать алгоритм прохождение и прочее, если достаточно в ТЗ предусмотреть самый сложный асинхронный режим. Решение задачи от этого не пострадает.

    Цитата Сообщение от Bare Посмотреть сообщение
    Сейчас нашел в интернете
    Документация по таймеру на ардуино
    Блин, для winavr у меня все есть, пришлось качать для ардуины, счас сижу и разбираюсь в ихних стандартах. Оно там сишное, только свои обозначения переменных (ноги,таймеры, и т.д.).
    PS: вообще подобные вещи лучше затачивать сразу под некое подобие RTOS, легче будет добавлять функционал, при ограниченных аппаратных ресурсах.

    Цитата Сообщение от Bare Посмотреть сообщение
    Пытаюсь понять исходники библиотеки servo, немного не хватает знаний.
    Помогу, в этой библиотеке:
    Servo - Class for manipulating servo motors connected to Arduino pins.
    Это для управления сервоприводами, которые висят на ногах контроллера.
    Последний раз редактировалось Tester500; 25.11.2011 в 16:34.

  26. #103

    Регистрация
    26.01.2011
    Адрес
    Краснодар
    Возраст
    44
    Сообщений
    2,914
    Записей в дневнике
    13
    Цитата Сообщение от Tester500 Посмотреть сообщение
    Когда PPM успел стать цифровым? Каналы приемника демультиплексированный PPM, оно так задумывалось задолго до первого микроконтроллера, и работало в полном аналоге.
    Так то когда было. Вы посмотрите какие сейчас чипы стоят в передатчиках - они в принципе не умеют формировать PPM. У них на выходе пакеты цифры с различного типа модуляцией.
    Цитата Сообщение от V_Alex Посмотреть сообщение
    Да и РРМа в приемнике скорее всего не обнаружится. Входит цифра, проверяется и сразу перегоняется в цифру.
    Вот именно.

  27. #104

    Регистрация
    09.08.2003
    Адрес
    Москва
    Возраст
    54
    Сообщений
    8,119
    Цитата Сообщение от Tester500 Посмотреть сообщение
    8бит для примера, оно хоть 16 можно. Вот далее каша, что значит "оцифровываться будет цифровой сигнал"? Когда PPM успел стать цифровым? Каналы приемника демультиплексированный PPM, оно так задумывалось задолго до первого микроконтроллера, и работало в полном аналоге. Джиттера не будет, откуда он там.
    Так и было, пока в шифраторе передатчика стояла NE5044, а на выходе приемника 4015. А в контроллерных шифраторах передатчиков аналоговый сигнал оцифровывается в АЦП и в режиме РРМ уходит в эфир с соответствующей дискретностью. Войцеховский когда-то писал, что 16 бит - выше крыши, а нынче гурманам 4096 подавай. Если и в приемнике стоит контроллер, пришедший канальный импульс до подачи на серву оцифровывается еще раз. Если и серва используется дешевенькая цифровая (третья оцифровка), можно столкнуться с весьма занимательными спецэффектами. А вроде один и тот-же РРМ.

  28. #105

    Регистрация
    18.10.2011
    Адрес
    Самара
    Возраст
    47
    Сообщений
    81
    Цитата Сообщение от AndyBig Посмотреть сообщение
    Так то когда было. Вы посмотрите какие сейчас чипы стоят в передатчиках - они в принципе не умеют формировать PPM. У них на выходе пакеты цифры с различного типа модуляцией.
    Турнига, та самая - дешевая. Да, у нее внутри Atmega168, но между контроллером и передатчиком PPM (если не выбран PCM). Без разницы чем и как формируется PPM - ЛА3 в режиме генератора или 555 или на транзисторах или контроллер. Суть PPM не меняется - он аналоговый. Цифровой это PCM. Вот в нем не времянки гуляют, а вполне конкретное число.

    Цитата Сообщение от V_Alex Посмотреть сообщение
    А в контроллерных шифраторах передатчиков аналоговый сигнал оцифровывается в АЦП и в режиме РРМ уходит в эфир с соответствующей дискретностью.
    А если на входе оно будет не оцифровываться а сразу кодироваться энкодером, то PPM чем станет? В эфир оно уходит не дискретно, а промодулировано несущей частотой, или вообще кодировано. Большинство 2.4 Ггц приемников-передатчиков цифровые, они оцифровывают входящий сигнал и используя алгоритмы сжатия-кодирования-декодирования коррекции ошибок и т.д. Но в данном случае это к топику не относиться.

    Цитата Сообщение от V_Alex Посмотреть сообщение
    а нынче гурманам 4096 подавай
    не совсем понятно, если серва делает 360гр, то 360/4096=на один шаг ~0.088гр
    нашиша? палец на стике этого не поймет. :-)
    Другое дело если народ из одного канала делает кучу дискретных, но счас проще перейти на PCM.

  29. #106

    Регистрация
    26.01.2011
    Адрес
    Краснодар
    Возраст
    44
    Сообщений
    2,914
    Записей в дневнике
    13
    Цитата Сообщение от Tester500 Посмотреть сообщение
    Да, у нее внутри Atmega168, но между контроллером и передатчиком PPM (если не выбран PCM). Без разницы чем и как формируется PPM - ЛА3 в режиме генератора или 555 или на транзисторах или контроллер. Суть PPM не меняется - он аналоговый.
    Я говорил о передатчике. О ВЧ-модуле. Посмотрите какая микросхема там стоит в качестве передатчика, выдающего готовый к эфиру ВЧ-сигнал.
    Промежуточный PPM между аппой и передатчиком - дань универсальности, чтобы можно было поставить другой ВЧ-модуль и он работал. И это не только в дешевой турниге. Сам радиомодуль оцифровывает PPM и в эфир уходят пакеты байтов. Так что если в приемнике производитель специально не озадачился сформировать PPM из приходящих данных (так, на всякий случай, вдруг кому понадобится), то его там и не будет

  30. #107

    Регистрация
    09.08.2003
    Адрес
    Москва
    Возраст
    54
    Сообщений
    8,119
    В Турниговском РРМ длительность импульса меняется дискретно, у классики - плавно. Разница, как между винилом и МР3.
    То, что оставлен РРМ при передаче, дань старому стандарту совместимости аппаратур. На этапе между приемником и сервой это и сейчас основной стандарт. Не хотят фирмы терять покупателей, вот и диназаврят помаленьку, многократно перегоняя цифру в аналог и обратно, теряя в качестве сигнала на каждом преобразовании.
    А энкодер можно, но дорого. Даже хороший потенциометрический датчик стоит дороже турниги целиком.

  31. #108

    Регистрация
    28.07.2004
    Адрес
    Москва
    Возраст
    47
    Сообщений
    806
    Цитата Сообщение от msv Посмотреть сообщение
    А в реале в этом случае слишком велика вероятность оказаться в одном прерывании при срочной необходимости обрабатывать другое. Я бы, со своей колокольни, никогда бы так не делал (и не делаю..).
    Эту проблему не так уж и трудно разрулить продуманой организацией тайминга и блокирующими прерываниями. Про программный сдвиг - я не говорил, что это есть хорошо. Я лишь сказал, что пока почти все делают так. Если это не коммерческая тайна, расскажите о взгляде с вашей колокольни, как, а если точнее, то на чём бы вы сделали независимую раздачу сигнала на сервы? Коммерческий проект, восьмиканальный приёмник среднего ценового уровня, дискретность... скажем всего 10 бит?

    Цитата Сообщение от msv Посмотреть сообщение
    Если в глобальном масштабе- по любому надо быть готовым, что декодер приемника не обязан выдавать канальные PWM с определенным, нам удобным, фазовым сдвигом..
    Да, я высказал мысль, что в ближайшие 2-3 года в большинстве случаев как раз можно быть готовым к удобному для нас фазовому сдвигу. Готов свои слова подтвердить осциллограммами, правда с не очень широким охватом рынка. Буду искренне рад, если моё предположение с треском опровергнут таким же способом.

  32. #109
    msv
    msv вне форума

    Регистрация
    05.03.2008
    Адрес
    Новокузнецк
    Возраст
    55
    Сообщений
    2,367
    В моем проекте прием PPM и генерация канальных PWM далеко не основные задачи, решаются максимально простым способом- захват PPM через ICP, вывод- аппаратным ШИМ.
    Реализация декодера на проце дает большие возможности обработки входного сигнала чем простой сдвиговый регистр (как мин. простейшая проверка достоверности пакета, реализация failsave), поэтому кажется вполне логичным подобное решение (кстати когда-то повторял и был вполне доволен его работой).
    Цитата Сообщение от Boroda Посмотреть сообщение
    Да, я высказал мысль, что в ближайшие 2-3 года в большинстве случаев как раз можно быть готовым к удобному для нас фазовому сдвигу.
    Уже много лет периодически попадаются сообщения, что некоторые устройства, рассчитанные именно на последовательную генерацию канальных импульсов, работают далеко не со всеми приемниками именно из-за синхронной генерации этих импульсов. К сожалению не помню конкретные модели..

  33. #110

    Регистрация
    26.01.2011
    Адрес
    Краснодар
    Возраст
    44
    Сообщений
    2,914
    Записей в дневнике
    13
    Цитата Сообщение от V_Alex Посмотреть сообщение
    В Турниговском РРМ длительность импульса меняется дискретно, у классики - плавно.
    У всех он меняется дискретно. Просто дискретность может быть большей или меньшей
    Цитата Сообщение от Boroda Посмотреть сообщение
    Да, я высказал мысль, что в ближайшие 2-3 года в большинстве случаев как раз можно быть готовым к удобному для нас фазовому сдвигу.
    Насколько я понимаю, некоторые именитые производители используют и в приемниках и в передатчиках заказные микросхемы. А от них можно ждать чего угодно, и 10 аппаратных ШИМ на борту в том числе.
    Ну а попроще - да. В приложении осциллограмма 8-канальной Турниги. Синий - первый канал, остальные синхронизированы по нему.

    Заодно еще данные по Турниге:
    Минимальная ширина импульса - 1.014640 мсек
    Максимальная ширина импульса - 1.909740 мсек
    Дискретность изменения ширины: 0.0001 мсек
    В приложенной картинке - дрожание сигнала при стике в центре. Получается плюс-минус 1 дискрет.
    Миниатюры Миниатюры Нажмите на изображение для увеличения
Название: osc.gif‎
Просмотров: 52
Размер:	13.8 Кб
ID:	572483   Нажмите на изображение для увеличения
Название: NewFile0.gif‎
Просмотров: 29
Размер:	8.8 Кб
ID:	572490  
    Последний раз редактировалось AndyBig; 25.11.2011 в 20:24.

  34. #111

    Регистрация
    17.02.2008
    Адрес
    Москва
    Возраст
    38
    Сообщений
    293
    Цитата Сообщение от Tester500 Посмотреть сообщение
    Помогу, в этой библиотеке: Servo - Class for manipulating servo motors connected to Arduino pins. Это для управления сервоприводами, которые висят на ногах контроллера.
    Это я знаю. Про эту библиотеку я все прочитал. Не могу понять по ее исходникам - какие таймеры она использует на ATmega328.

  35. #112

    Регистрация
    18.10.2011
    Адрес
    Самара
    Возраст
    47
    Сообщений
    81
    Цитата Сообщение от AndyBig Посмотреть сообщение
    Промежуточный PPM между аппой и передатчиком - дань универсальности, чтобы можно было поставить другой ВЧ-модуль и он работал.
    Это PPM передается от апы к серве, а остальное все промежуточное. Если завтра прилетят далекие братья по разуму, и отдадут две коробочки - одна как влитая встанет в апу на место передатчика, а у второй будут стандартные 8 каналов-выходов, и скажут что теперь апа может работать мгновенно через всю галактику, это все равно будет старый добрый аналоговый PPM.

  36. #113

    Регистрация
    26.01.2011
    Адрес
    Краснодар
    Возраст
    44
    Сообщений
    2,914
    Записей в дневнике
    13
    Цитата Сообщение от Tester500 Посмотреть сообщение
    Это PPM передается от апы к серве
    С тем же успехом можно сказать, что это сопротивление стика передается от аппы к серве.

  37. #114

    Регистрация
    28.07.2004
    Адрес
    Москва
    Возраст
    47
    Сообщений
    806
    Цитата Сообщение от AndyBig Посмотреть сообщение
    С тем же успехом можно сказать, что это сопротивление стика передается от аппы к серве

    Формально так и есть. Пока все аналоговые сервотехнологии не распродадутся, PWM сервосигнал останется стандартом. Он по сути является конкретным маркетингово-технологическим тупиком. Сейчас никто не решится наводнить RC мир своей разработкой полностью цифрового канала кодер-модуль-приёмник-серва. Если "пофутуризировать", то ШИМ сервы умрут наверное только с интеграцией в корпус радиомодуля. Т.е. приёмник как отдельный девайс исчезнет, сервы сами будут и приёмниками, и сателитами друг для друга.

    Цитата Сообщение от msv Посмотреть сообщение
    поэтому кажется вполне логичным подобное решение (кстати когда-то повторял и был вполне доволен его работой).
    Открыл .asm по ссылке, начиная со строки 417 то, о чём я и говорил. Генерация последовательная, не убедили.

  38. #115

    Регистрация
    26.01.2011
    Адрес
    Краснодар
    Возраст
    44
    Сообщений
    2,914
    Записей в дневнике
    13
    Цитата Сообщение от Boroda Посмотреть сообщение
    Пока все аналоговые сервотехнологии не распродадутся, PWM сервосигнал останется стандартом.
    Ну так PWM, а не PPM. Человек же утверждает, что:
    Цитата Сообщение от Tester500 Посмотреть сообщение
    PPM передается от апы к серве, а остальное все промежуточное

  39. #116

    Регистрация
    18.10.2011
    Адрес
    Самара
    Возраст
    47
    Сообщений
    81
    Цитата Сообщение от Bare Посмотреть сообщение
    Это я знаю. Про эту библиотеку я все прочитал. Не могу понять по ее исходникам - какие таймеры она использует на ATmega328.
    Описания мег в serv.h:
    #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
    #elif defined(__AVR_ATmega32U4__)
    #elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
    #elif defined(__AVR_ATmega128__) ||defined(__AVR_ATmega1281__)||defined(__AVR_ATmega2561__)

    если ничего не подошло, то
    #else // everything else
    #define _useTimer1
    typedef enum { _timer1, _Nbr_16timers } timer16_Sequence_t ;
    #endif

    тем более что там есть фраза:
    Servo.h - Interrupt driven Servo library for Arduino using 16 bit timers- Version 2

    ну и до кучи:
    * If _useTimerX is defined then TimerX is a 16 bit timer on the curent board
    * timer16_Sequence_t enumerates the sequence that the timers should be allocated
    * _Nbr_16timers indicates how many 16 bit timers are available.

    Из pdf на Atmega328:

    Peripheral Features
    – Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode
    – One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode

    Вот этот 16-битный и используется (Timer3)

  40. #117

    Регистрация
    04.10.2004
    Адрес
    Балашиха
    Возраст
    38
    Сообщений
    2,871
    Цитата Сообщение от Boroda Посмотреть сообщение
    Сейчас никто не решится наводнить RC мир своей разработкой полностью цифрового канала кодер-модуль-приёмник-серва.
    Ну флагман то впереди. Футаба S-bus уже продается и переход на подобные стандарты (точнее отход от ппм-стандартов) - дело времени. Даже вшивый спектрум дх5 - уже на порядок приблизился к полностью цифровой аппаратуре. тракт модуль - сателит - практически прозрачный UART. Ацп измеряет напряжение на резюках стиков и контроллер приемника формирует шим для серв. Все остальное - сплошная цифра.

  41. #118

    Регистрация
    18.10.2011
    Адрес
    Самара
    Возраст
    47
    Сообщений
    81
    Цитата Сообщение от Aleksey_Gorelikov Посмотреть сообщение
    Ну флагман то впереди. Футаба S-bus уже продается и переход на подобные стандарты (точнее отход от ппм-стандартов) - дело времени
    Ктоб сомневался. Вон у турниги в стандартной прошивке тоже есть выбор: PPM, PCM. Если про PPM в принципе все понятно и проблем с приемником нет, то про PCM полный БКТ (большая китайская тайна)

    Цитата Сообщение от AndyBig Посмотреть сообщение
    Ну так PWM, а не PPM. Человек же утверждает, что:
    Человек утверждает, что на данный момент PWM каналы объеденены в кадры с использованием синхро и разделительных импульсов по спецификации PPM. Причем сам PPM жестко не стандартизован. Вот кстати повод для творчества - чего-бы не забубенить какой-нибудь опен-стандарт на это дело. Если самодельщики (кастом фирмварщики) начнут его придерживаться, то и производители начнут подтягиваться. Ардуино пошел-же в массы.
    PS: главное название красивое придумать

  42. #119

    Регистрация
    26.01.2011
    Адрес
    Краснодар
    Возраст
    44
    Сообщений
    2,914
    Записей в дневнике
    13
    Опять двадцать пять
    Цитата Сообщение от Tester500 Посмотреть сообщение
    на данный момент PWM каналы объеденены в кадры с использованием синхро и разделительных импульсов по спецификации PPM
    Где в приемнике PPM? На каком этапе и откуда он там появляется?

  43. #120

    Регистрация
    09.08.2003
    Адрес
    Москва
    Возраст
    54
    Сообщений
    8,119
    Цитата Сообщение от AndyBig Посмотреть сообщение
    У всех он меняется дискретно. Просто дискретность может быть большей или меньшей .
    Да, только в "аналоге" она определяется размером зерна графита на дорожке потенциометра.

    Цитата Сообщение от AndyBig Посмотреть сообщение
    В приложенной картинке - дрожание сигнала при стике в центре. Получается плюс-минус 1 дискрет.
    Радует, когда практика совпадает с теорией . А картинки красивые и наглядные.

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

Похожие темы

  1. Ответов: 423
    Последнее сообщение: 14.08.2014, 10:04
  2. Фиксированная скорость нарастания сигнала PPM
    от АДэшник в разделе Самодельная электроника, компьютерные программы
    Ответов: 3
    Последнее сообщение: 16.05.2011, 17:36
  3. Продам Приемник "Pilotage-6 Digital", 40MHz, FM, микро, 6 каналов
    от Bizon в разделе Барахолка. Аппаратура
    Ответов: 4
    Последнее сообщение: 15.02.2011, 11:03
  4. RSSI сигнал на приёмнике 1.2 ГГц
    от =FLY= в разделе Полеты по камере, телеметрия
    Ответов: 9
    Последнее сообщение: 13.02.2011, 17:10
  5. PWM, PPM, частоты
    от ultrablox в разделе Новичкам
    Ответов: 10
    Последнее сообщение: 22.10.2010, 16:35

Метки этой темы

Ваши права

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