PIC32 – Дистанционное управление на ИК (простая реализация)


Дистанционное управление для устройств на микроконтроллерах.

Самый простой вариант это приобрести понравившийся пульт ДУ на ИК и сделать дистанционное управление.

Для этого необходим приемник ИК, желательно выбирать с чтобы совпадала частота несущей, но если даже у вас есть в наличии на 38, а руль с несущей на 38 кГц, все равно работать будет, просто уменьшиться дальность, например при всех идеальных условиях можно управлять с расстоянии более 60 метров, а при всех неблагоприятных не более 10-15.

Для декодирования сигналов мы подключаем приемник на прямую на вход INT1 микроконтроллера

Catcatcat_IK_01

И как только это сделано, надо в программу добавить функции обработки. Для обработки мы будем использовать коды типа NEC

Cat_IK_01

это стандартные коды несущие 32 бита данных.

Принцип работы будет следующий мы используем свойство микроконтроллера для обработки внешних прерываний по входам. Используем вход INT1 и настраиваем, чтобы он формировал прерывания по срезу импульсов. Т.е. в приемниках всегда есть подтяжка (30-50 кОм) и пассивный уровень высокий, при получении модулированного импульса на выходе же формируется низкий уровень. Нам необходимо в момент получения от входа прерывания сосчитать данные с таймера (затем таймер обнулить для подготовки изменения следующего импульса) проверить длительность и по параметрам этой длительности определить это преамбула (начала передачи) или это передача бита ноль, единицы или это код автоповтора (удержание клавиши).

Принцип описан, теперь настройка:

Далее необходимо настроить таймер, он же измеряет время, хочу уточнить, все параметры приведены для тактовой 80 МГц, она же и поступает на периферийные устройства микроконтроллера, и от нее и тактируется таймер.

Настройка таймера

Самое главное по приоритету, прерывания по входу INT1 должны иметь наивысший приоритет!

Далее программе мы должны включить прерывания и включить мультивекторный режим

Теперь вернемся в начало и опишем переменные и флаги управления, это необходимо понимать как функции прерывания будут возвращать в основную программу полученные коды (команды).

надеюсь с комментов все понятно.

И сами функции прерываний, обработка построена самой возможной простотой и вариантом некоторой степени помехозащищенности, от ИК помех.

Обработка и получение данных

Вкратце, “получаем” прерывание, считываем значение из таймера и обнуляем его, пусть меряет следующий импульс. Полученную длительность сравниваем с 4-мя вариантами допусков и в зависимости от того куда эта длительность просочилась, делаем соответствующие тело движения.

Обработка прерывания от таймер, тут необходимая функция это помехозащищенность, он дает разрешение на по таймАУТУ на прием следующей команды и также сбрасывает прием если при приеме не поступило 32 бита.

Теперь, что делать в основной программе? В основной программе надо ждать установки флага flagIK.PRIEM=1, если флаг установлен произвести обработка данных помещенных в переменную data_IK. И не забыть сбросить флаг, для приема следующей команды. Также можно использовать флаг flagIK.AUPOV=1, для контроля удержания клавиши ил функции автопостора, например

в этом примере выводим на дисплей код полученной команды.


Информация по ИК – кодам некоторых производителей 

Значок

CCP модуль для декодирования ИК-кодов пультов ДУ - сводная таблица по кодам. 1.95 MB 45 downloads

CCP модуль для декодирования ИК-кодов пультов...


Это может быть интересно


  • CCP – модуль в режиме Compare на примере PIC18CCP – модуль в режиме Compare на примере PIC18
    CCP – модуль можно использовать в трех режимах: Capture – позволяет захватывать входной сигнал и определять его параметры (длительность или частоту). Дополнительно управлять внутренними модулями. Compare –  позволяет формировать импульсы …
  • Тестирование модуля генератораТестирование модуля генератора
      Тестирование модуля генератора Настройка, запуск и проверка рабочей частоты на примере PIC18F26K40. PIC18F26K40 Чтобы понять из-за чего зависит производительность микроконтроллера просто надо понять как работает его задающий тактовый генератор. …
  • ESP8266 применение в проектахESP8266 применение в проектах
    (Актуально только для версий прошивки 1.хх) ESP8266 показала себя как надежное и безотказное устройство для обмена данными с применением WIFI. Я использую ESP8266 исключительно через UART, с применением AT команд. Все …
  • MPLAB® Harmony – или как это просто! Часть 3.MPLAB® Harmony – или как это просто! Часть 3.
    Часть третья – копнём немного глубже. Вы наверное заметили, что во второй главе, вроде сначала все шло как по маслу, а потом, что бы заморгали светики, я вставил в код …
  • Униполярный шаговый двигательУниполярный шаговый двигатель
        В приводах различных устройств часто применяются шаговые двигатели, Шаговый двигатели различают двух типов униполярные – когда обмотки коммутируются током текущим только в одну сторону, например при помощи обычных …
  • NS108-5050-16bit от NewstarNS108-5050-16bit от Newstar
    Кто уже использует в своих проектах адресуемые светодиоды хорошо знакомы с такими как WS2812 и им подобные. Эти светодиоды для управления используют однопроводную шину. Из-за этого пропускная способность такой шины  …
  • Проект с использованием MCC часть 14Проект с использованием MCC часть 14
    С выводом данных на дисплей мы справились (но могу сразу сказать библиотеку графики к этой статьи пришлось доработать, поэтому в этом проекте она обновлена). У нас на текущем этапе имеется …
  • NeoPixel LED и PIC18NeoPixel LED и PIC18
      Еще раз об управлении светодиодами на драйвере WS2812 и ему подобных. Как известно эти светики управляются по однопроводной шине. Основная особенность, что программно можно описать передачу данных, но это …
  • Стабилизатор тока на SN3350, часть 2Стабилизатор тока на SN3350, часть 2
    Если вам необходимо разработать устройство с применением мощных светодиодов, то никак не обойтись без применения стабилизатора тока. На настоящий момент стабилизаторы тока являются самым эффективным механизмом, для питания светодиода в течение всего его цикла …
  • Проект с использованием MCC часть 12-2Проект с использованием MCC часть 12-2
    Настало время для изучения шины I2C. Изучать будем на примере работы с индикатором RET012864E. Что изменили со старой схемы: В прошлой теме я затупил и не добавил подтягивающие резисторы которые необходимы …


В записи нет меток.

Поделись этим!