PPM

Материал из virt2real wiki
Перейти к: навигация, поиск

Содержание

Общий принцип PPM кодирования

В радиоуправляемых девайсах самым распространённой модуляцией управляющих сигналов является PPM - Pulse-position modulation. Это частный случай широтно-импульской модуляции (ШИМ/PWM).

Каждый канал задается импульсом, длительностью от 700 до 2200 мкс, но у различных производителей границы могут быть немного другими, надо подбирать экспериментально или читать документацию. Среднее положение обычно соответствует длительности 1500 мкс. После сигнала следует пауза. Общая длительность сигнала вместе с паузой - 20000 мкс.

Принцип PPM


иллюстрация позаимствована с отличного сайта easyelectronics.ru. Привет DiHalt'у :-)


PPM сигналы используются для управления сервомоторами и регуляторами бесколлекторных моторов (ESC).

Формированием PPM сигналов, как и в случае с PWM, занимается драйвер v2r_pins. Необходимо лишь рассчитать длительность сигнала (duty) и общую длительность команды (period).

duty рассчитывается по следующему принципу:

1. Частота генератора импульсов - 24МГц. Значит один импульс (тик) занимает tic = 1000000 / 24000000 = 0,042 мкс.

2. Сигнал максимального положения сервы примем за 2200 мкс. Следовательно, duty высчитываем duty = 2200 / tic = 52380

3. Сигнал минимального положения сервы примем за 700 мкс. Следовательно, duty высчитываем duty = 700 / tic = 16666

4. Центральное положение 1500 / tic = 35714

5. Общая длительность сигнала 20000 мкс, или period = 20000 / tic = 20000 / 0,042 = 476190

Подключение сервомотора

Стабилизатор питания виртурилки может выдавать максимум 2А, их которых около 400мА уходит на саму виртурилку и модуль Wi-Fi. Так что напрямую к виртурилке можно подключить только слабенькие сервомоторы. А обычные сервомоторы надо подключать отдельно, напрямую от блока питания на 5 или 6 Вольт (в зависимости от сервомтора) или через преобразователь напряжения (BEC). В RC-технике обычно используются именно BEC.

Сервомотор обычно имеет три провода - красный, чёрный и белый (или жёлтый, или оранжевый). Красный провод всегда +Vcc, чёрный всегда земля (минус), а белый провод - сигнальный. Красный и чёрный провод сервомотора надо подключить к источнику питания соответствующей мощности, а сигнальный провод - к нужному пину виртурилки.

На борту виртурилки имеется четыре канала PWM, вот к пинам, соответствующим этим каналам, и надо подключить сигнальный провод (см. схему ).


Управление обычным сервомотором

Например, мы хотим управлять сервомотором. Подключаем его, допустим, к каналу PWM1 (CON44).

Чуть ранее мы уже посчитали нужные параметры импульса, теперь осталось лишь отдать команду драйверу

 echo "set con 44 pwm1" > /dev/v2r_pins #эту команду надо выполнить лишь один раз, в самом начале работы с этим каналом PWM
 echo "set pwm 1 52380 476190" > /dev/v2r_pins 

Где 52380 это duty, 476190 это period.

Теперь повернём в крайнее минимальное положение

 echo "set pwm 1 16666 476190" > /dev/v2r_pins

Ну и в центральное

 echo "set pwm 1 35714 476190" > /dev/v2r_pins

Для промежуточных положений значения сигналов высчитываются аналогично.

Управление сервомотором постоянного вращения

Всё то же самое, нюанс лишь в том что центральное положение - мотор неподвижен.

Максимальное значение - мотор с максимальной скоростью движется в одном направлении.

Минимальное значение - мотор максимально быстро крутится в обратном направлении.

Видеоприложение


Драйвер ppmsum

Для удобной работы с несколькими PPM одновременно мы разрабатываем драйвер Ppmsum.