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

Як відомо, більшість радіокерованої техніки використовує передачі даних, звані PPM -сигнали (з PCM поки що не працював, на жаль).

Двома словами цей спосіб передачі можна описати так. Приймач зчитує сигнали від пульта кадрами (

по 20мс). У кожному кадрі може бути близько восьми імпульсів (

по 2мс). Кожен із цих імпульсів відповідає одному каналу. RC-приймач просто розподіляє всі ці імпульси з кадру з різних висновків (каналів).

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

Іноді у любителів Ардуїно може виникнути бажання взяти іграшкову машинку свого сина на пульті управління, встромити в неї Ардуїно і змусити машинку їздити самостійно, об'їжджаючи перешкоди, або, скажімо, просто зробити керування іграшкою з комп'ютера. Власне тут часто й виникає проблема.

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

Я спробував пошукати в Arduino-бібліотеках, чи є вже написана бібліотека емуляції сигналів приймача, і не виявив такої. Тож довелося написати самому.

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

Бібліотеку протестував, чудово працює на машинці, що впав, і на серво-двигунах.