PWM, PPM, частоты

ultrablox

Итого из 3х ответов первый наполовину неправильный, второй поправляет первый, третий вообще не по теме.

Оставшиеся вопросы:

Синхропауза - это всё-таки синхросигнал, т.е. при ней в канале единица?
Почему на диаграмме из статьи Glider новый такт начинается с низкого состояния? Оно должно завершать предыдущий такт или его не должно быть вообще?

TaxMen

Да, синхропауза это синхросигнал. По этому сигналу дешифратор приемника определяет начало первого канального импульса. Полярность этого сигнала может быть различной - ИМХО (положительный или отрицательный PPM). Сам канальный импульс (каждый из них) это ни что иное как широтно модулированный импульс. Его ширина определяется положением ручки передатчика. Почитайте тут: www.rcdesign.ru/articles/radio/tx_intro#eztoc9044_… и тут: www.rcdesign.ru/articles/radio/ppm_pcm . С уважением.

ВитГо

гм… сколько всего понаписали!! аж жуть !! 😃 дайте и мне пофлудить! 😃)))

по картинке из первого сообщения:
на ней изображен принцип формирования сигнала PPM, 8 каналов + пауза.
по сигналам:
ТГ - сигнал с периодом в 20 (22,5) мс (общая длинна пакета ppm)
ОВ1 - ОВ8 - импульсы длительностями от 1 до 2 мс соответствующие каналам для передачи
СФ - результирующий сигнал (это и есть PPM выдаваемый кодером на передатчик)
насколько я помню эту картинку - в статье описывалось аналоговое формирование сигнала ppm! такого уже нет, сигнал ppm формирует процессор аппаратуры - поэтому сигналов ТГ, ОВ1 - ОВ8 в современных аппах нет…

длительность канала в пачке PPM складывается из длинны импульса (0,3 мс) и длинны паузы после него до начала следующего импульса… (смотрите на картинке “канальный импульс 3” -> импульс + пауза=длительность канала)

по “стандарту” (его “де-юре” нет ! просто есть фактически используемые) длительность канала в ppm пачке (то есть сумарная длина импульса (0,3 мс) и паузы после него) лежат в пределах от 1 до 2 мс…, середина соответственно 1,5 мс…

канальные импульсы идут подряд…

после передачи всех канальных импульсов идет пауза которая дополняет пакет до 20 мс… по этой же паузе синхронизируется приемник (8 каналов с максимальными 2 мс = 16 мс, и 4мс пауза (до общего времени пакета в 20 мс))

вроде бы некоторые производители доводили количество каналов в ppm пакете до 9 при этом длинна пакета увеличивалась до 22,5 мс (это сделано для того чтобы пауза всегда была длинее любого из каналов - 9 *2=18 мс + 4,5 мс пауза), сразу после паузы начинается передача первого канала…

пакет ppm может быть позитивным и негативным, негативный это когда 0,3 мс низкий уровень сигнала, далее высокий… (кстати по ходу на картинке изображен именно негативный сигнал ppm)

делать импульс менее 0,3 мс - не рекомендую - не все приемники его нормально обрабатывают… кстати особенно это касается шнурков для симуляторов !
соответственно увеличивать длину канала более чем в половину паузы - тоже рисковано (хотя у меня работало до значений в 2,3 мс)

чтобы представить полную картину (непрерывную передачу сигнала ppm) смотрите от первого вертикального штриха (с него начинается “пауза”) и до последнего (им заканчивается “синхропауза”) - далее опять идет “пауза” 😃

длинна пакета ppm 20 мс - поскольку пакеты передаем друг за другом - получаем заветные 50 гц сигнала ppm (при длине пакета в 22,5 мс - чуть меньше)

про PWM это другая песня:
приемник дешифрует ppm сигнал, и выдает на сервы (регули и так далее) уже pwm сигнал только их канала!
я с этим не разбирался (но скоро буду 😃 поэтому достоверно сказать ничего не смогу… (соображения есть, но пока не проверил - вряд ли стоит своими мыслями забивать вашу голову 😃, хотя… ОВ1-ОВ8 - это и есть сигналы для серв (регулей и так далее))

p.s. если что не понятно - спрашивайте 😃

полазил по своему блогу и нарыл для вас картинку

сигнал негативный
1-4 каналы имеют длительность 2000 мкс. (максимум)
5-8 каналы стоят в нейтральном положении, 1500 мкс.

это с реальной аппы осцилографом брали (на значения амплитуды импульсов не смотрите, делали делитель, да и осцилограф это прога для звучки…)

9 days later
supermegakote

либо я че не так понял но разве есть аппа которая работает на кгц?

PigTail

Это сигнал которым модулируется ВЧ… потому и частоты ниже.

r1000

Все как-то сложненько расписано. Попробую объяснить попроще, на примере простой системы передатчик/приемник с 4-мя аналоговыми и двумя цифровыми каналами.
В передатчике стоит микроконтроллер с аналоговыми и цифровыми входами и одним цифровым выходом - PPM
При включении передатчика, контроллер начинает отрабатывать примерно следующую программу, раз в 20000мкС (50Гц)
Полезная картинка

  1. Tframe=Замеряем время

  2. Поднимаем выход в единичку

  3. Ждем 300мкС

  4. Опускаем в ноль.

  5. Берем относительное напряжение с аналогового входа 1 и делим его на максимальное значение (к примеру у атмег это 10 бит - 1024),
    т.е. Vchanell1=VfromAnalogInput1/1024

  6. Вычисляем задержку: Tchanell1=1700*Vchanell1

  7. Ждем Tchanell1 микросекунд

  8. Поднимаем выход в единичку

  9. Ждем 300мкС

  10. Опускаем в ноль.

  11. Берем относительное напряжение с аналогового входа 2 и делим его на максимальное значение (к примеру у атмег это 10 бит - 1024),
    т.е. Vchanell2=VfromAnalogInput2/1024

  12. Вычисляем задержку: Tchanell2=1700*Vchanell2

  13. Ждем Tchanell2 микросекунд

Тоже самое для третьего и четвертого каналов.

С цифровыми - тоже, но там Tchanell5 и Tchanell6 будут либо 0, либо 1700

  1. Поднимаем выход в единичку

  2. Ждем 300мкС

  3. Опускаем в ноль.

  4. Вычисляем синхросигнал: TSync=Tframe+2000000-Tnow(текущее)

  5. Ждем TSync микросекунд

  6. Начинаем все со строки 0.

Ремарка - контроллеры бывают с аппаратным и програмным PWM (ШИМ). Если ШИМ аппаратный - достаточно назначить выход контроллера с этим функционалом на эту функцию и передавать туда текущее значение (обычно от 0 до 255). А контроллер сам будет генерировать ШИМ, параллельно декодируя ППМ. Если аппаратного ШИМ нет, или выходов не достаточно - приходится генерировать програмно. Но тут есть беда - параллельно не получится декодировать ППМ, либо программа будет ОЧЕНЬ геморная. Лучше взять с аппаратным. Под цифровые (например тумблеры) - можно использовать цифровые выходы.

Генерируемый PPM сигнал подаем на радиомодуль передатчика, передатчик передает его на приемник, радиомодуль приемника подает его на свой микроконтроллер и тут начинается следующее:

  1. Ждем подачи на вход сигнала Low.
  2. Измеряем его время. Если более 5000мкс - приступаем. Иначе возвращаемся на 1.
  3. Приступили. Ждем сигнала Low. Фиксируем время Tchannel1start
    . Ждем сигнала Hi. Фиксируем время Tchanell1stop
  4. Вычисляем значение PWM1 = 255*(Tchanell1stop-Tchannel1start)/1700
  5. Записываем значение PWM1 на выход 1 (PWM)
  6. Повторяем это для каналов 2,3,4
  7. Делаем тоже для цифрового канала 5, но здесь вместа пункта 6 будет:
    Если PWM5>10 - выход5(цифровой) - переводим в Hi, иначе - в Low
  8. Делаем тоже для цифрового канала 6, но здесь вместа пункта 6 будет:
    Если PWM6>10 - выход6(цифровой) - переводим в Hi, иначе - в Low
  9. Начинаем все с пункта 1.

Таким образом при передаче каждого канала мы записываем его значение от 0 до 255 в соответствующей генератор PWM, который его и генерирует.
Частота PWM. Тут все просто. Если щелкать выключателем - мигание лампочки будет заметно. Если щелкать быстро - лампочка будет казаться тускло горящей, но будет заметно мерцание. Если очень-очень быстро - будет гореть в полсилы. По этому чем выше частота генерации - тем меньше мерцание и это полезней для контроллеров двигателей и серв. Соответственно степень яркости можно регулировать соотношением времени во включенном и выключенном состоянии (это параметр PWMx), а вот сколько раз можно включить и выключить - за секунду - это зависит от контроллера и называется частота PWM.

Собствено просто не получилось, зато должно быть понятно как расчитывать 😃 Удачи.