PPM библиотека для Arduino


Как известно, большая часть радиоуправляемой техники использует для передачи данных, так называемые PPM-сигналы (с PCM я пока не работал, к сожалению).

В двух словах этот способ передачи можно описать так. Приёмник считывает сигналы от пульта фреймами (~ по 20мс). В каждом фрейме может находиться около восьми импульсов (~ по 2мс). Каждый из этих импульсов соответствует одному каналу. RC-приёмник просто распределяет все эти импульсы из фрейма по разным выводам (каналам).

Таким образом, на выходе из пульта мы получаем сигнал с частотой около 50Гц (раз в 20мс) с управляющим импульсом длиной от 700-800 до 2000-2200 мкс . Длина этого импульса и кодирует информацию, переданную с пульта.

Иногда у любителей Ардуино может возникнуть желание взять игрушечную машинку своего сына на пульте управления, воткнуть в неё Ардуино и заставить машинку ездить самостоятельно, объезжая препятствия, или, скажем, просто сделать управление игрушкой с компьютера. Собственно здесь-то часто и возникает проблема.

Как подать нужный сигнал двигателю (с сервомашинками ситуация проще), чтобы он начал крутиться с нужной нам скоростью, если этот двигатель (ESC) работает «от пульта»?

Я попробовал поискать в Arduino-библиотеках, есть ли написанная уже библиотека эмуляции сигналов приёмника, и не обнаружил таковой. Поэтому пришлось написать самому.

Саму библиотеку для Arduino Uno можно найти здесь: http://mishmash.googlecode.com/svn/trunk/arduino/libs/PPM/

Пока написана генерация RC-сигналов только для 9-го и 10-го пинов Ардуино (т.к. там 16-битный таймер). Для нулевого таймера я писать не стал, так как на нём крутятся delay() и millis() . Ну и написана она пока только под Uno . Если кто-то захочет дописать для других Ардуин, буду очень рад )

Библиотеку протестил, отлично работает на упавляемой машинке и на серво-двигателях.


Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение