Пульт ду на микроконтроллере своими руками

Добавил пользователь Валентин П.
Обновлено: 19.09.2024


2. Мне столь простое устройство не нужно. Поэтому корпусом и подбором компонентов не заморачиваюсь. Делаем в виде прототипа.

3. Платформа Arduino. Ее уровень абстракции является наиболее подходящим для изучения школьниками (класса с 6-го). Собственно из моего учебного курса и взята большая часть описываемых примеров.

4. Статья скорее как затравка к изучению этой темы. Я не буду сильно углубляться и рассказывать все с азов. Это будет слишком объемно и не влезет в рамки статьи. В конце дам список ресурсов для самостоятельного изучения.

Постановка задачи

Хотим получить электронную начинку 4-х канального пульта пропорционального радиоуправления для… каждый сам решает для чего.

Выход – PPM сигнал для подключения к вч-модулю (или к компьютеру для симулятора).

Введение

Джойстик. В его конструкции за прошедшие ндцать лет кардинально ничего не изменилось. Два потенциометра с перпендикулярными осями – вот и весь джойстик. Перемещение ручки по некоторой оси приводит к перемещению скользящего контакта соответствующего переменного резистора. Подключим их по следующей схеме(левый рисунок). Получится ни что иное как обыкновенный делитель напряжения(схема справа). Так для каждого положения ручки управления R1 и R2 будут свои. При этом R1 + R2 = const (номинал резистора). Т.е. для каждого положения ручки на оси на входе микроконтроллера будет свое напряжение в интервале от 0 до VCC(напряжения питания).


В джойстиках используются обычно резисторы номиналом в 5Ком. Но точность номинала при таком подключении не особо важна. Это может быть и 4, и 6 и 10Ком.

Где взять джойстики? Ну как-то так сложилось, что все самое интересное и нужное можно найти в пультах Nintendo Wii. Нет, можно конечно сделать самому. Но на сегодня, как мне кажется, самый простой и дешевый вариант – купить джойстики управления для Turnigy 9XR прямо тут на Паркфлаере. Лично я закупил их с десяток для различных поделок и экспериментов.

Где взять Arduino и какую выбрать для данной задачи? Поскольку задача крайне проста, плату можно брать любую. Самая маленькая и дешевая – Arduino Mini с atmega168 на борту. Правда к ней надо еще взять USB-to-TTL для программирования или Kingduino USB to serial UART interface Я взял Arduino Nano c atmega328 (потому что под руку подвернулась именно она) и шилд типа такого для удобства подключения периферии.

Получение положения джойстиков

Подключаем каждый из четырех резисторов джойстиков по выше указанной схеме. При этом у Arduino задействуем контакты A0-A3. Эти контакты подключены к АЦП микроконтроллера и могут быть запрограммированы как аналоговые входы. Более менее подробно о программировании аналоговых входов я писал тут. Повторяться не буду.

Пишем прошивку. Я предумышленно разбил код на три файла:

TX.ino – основной файл. Он содержит главные точки входа – функции setup() и loop().

Config.h – в этом файле в дефайнсах определяется подключение периферии

Analog.ino - собственно код работы с АЦП.

Принцип простой. Настраиваем регистры микроконтроллера так, чтобы АЦП непрерывно выполнял преобразования. По завершении каждого преобразования срабатывает прерывание ISR(ADC_vect) и выполняется соответствующий код. Нам остается только переключать входы к АЦП и запоминать результат в массиве. Время на одно преобразование порядка 26мкс. Если Вы внимательно посмотрите на мой код, то заметите, что я беру результат каждого второго преобразования. Все дело в том, что АЦП работает независимо от центрального ядра. Пока выполняется код в прерывании и переключаются входы АЦП уже делает следующее преобразование. Как следствие – недостоверный результат. Поэтому я и беру каждое второе… В итоге получим массив из четырех элементов, значения которых должны изменяться пропорционально движению джойстиков в интервале от 0 до 1023. Вот архив (TX1.rar) с кодом примера.

Формируем выходной сигнал

Теперь нам надо сформировать массив канальных импульсов. Сделаем для этого такую функцию:


Особенности схемы включения освещения с пульта дистанционного управления:

  • схема построена на микроконтроллере PIC12F629 / PIC12F675
  • включение двух независимых источников света с помощью ПДУ;
  • есть возможность включать свет настенным выключателем;
  • возможность включать и выключать свет отдельными кнопками или же одной;
  • двух минутный таймер отключения освещения.

Обучение пульта дистанционного управления ИК-коды (процедура программирования)

После подключения устройства необходимо запрограммировать все 5 кнопок на пульте дистанционного управления. Вот как это сделать:

  1. Нажимаете и удерживайте настенный выключатель SW1 в течение 11 сек, для того чтобы устройство могло перейти в режим программирования. После 11 секунд, индикатор LD1 начнет быстро мигать и оба канала отключатся. Поэтому у вас есть 11 секунд, чтобы завершить последовательность программирования.
  2. Нажмите на первую кнопку на пульте дистанционного управления, которая будет включать первый канал (ON — A).
  3. Нажмите вторую кнопку на пульте дистанционного управления, которая будет использоваться для выключения первого канала (OFF — A).
  4. Нажмите на третью кнопку на пульте дистанционного управления, которая будет включать второй канал (ON — B).
  5. Нажмите четвертую кнопку на пульте дистанционного управления, которая будет использоваться для выключения второго канала (OFF — B).
  6. Наконец нажмите пятую кнопку, которая будет использоваться для активации / деактивации режима сна (SLEEP)

Во время программирования пульта, после каждого нажатия кнопки, светодиод будет мигать, подтверждая что ИК-команда принята.

Если пульт дистанционного управления не имеет все 5 кнопок, вы можете использовать те же кнопки повторно, но это отключит некоторые функции.

Вариант 1

Если ваш пульт имеет только две кнопки [X и Y], и если во время программирования вы нажмете: XXYYY, то это означает, что кнопка X будет использоваться для первого канала (включение и выключение света будет происходит от одной кнопки X), и кнопка Y будет использоваться для второго канала (включение и выключение света будет происходит от одной кнопки Y). Для данного режима работы необходимо установить перемычку JP1.

Вариант 2

Если вы выберете комбинацию XXXXY, это означает, что кнопка X будет использоваться для функции включения и выключения первого канала, и кнопка Y будет использоваться для включения / выключения режима сна, при этом второй канал не используется.

Примечание. Если во время программирования вы заметили, что светодиод мигает, даже если вы не нажимали никаких кнопок на ПДУ, то вероятно, это потому, что вы используете модуль приемника TSOP11xx вместо TSOP17xx. В таком случае вы не сможет запрограммировать устройство должным образом.


Если вы захотите изменить назначение кнопок, то вы можете повторить процедуру обучения столько раз, сколько вы хотите.

Управление устройствами

Подключенными устройствами (или только одним) можно управлять с помощью пульта дистанционного управления или настенной кнопки.

Пульт дистанционного управления может работать в двух режимах: Toggle и ON/OFF (настраивается перемычкой Jp1).

Режим Toggle используется для управления устройством с помощью только одной кнопки ПДУ: первое нажатие кнопки включает канал, а второе нажатие кнопки выключает.

Для режима ON/OFF требуется как минимум две кнопки ПДУ: одна для включения канала, а другая для выключения.

Настенная кнопка может управлять обоими каналами (приборами).

Один щелчок выключает все каналы, а другой один щелчок включает те каналы, которые были включены до их выключения.

Двойной щелчок включит все каналы, если оба канала были ВЫКЛЮЧЕНЫ, и если хотя бы один канал был включен, он переключит второй канал. Это может показаться сложным, но уверяю вас, что это не так.

Таймер сна

Таймер сна может быть активирован нажатием настенного выключателя более 2 сек или соответствующей кнопкой на пульте дистанционного правления. Сброс таймера сна осуществляется так же, как и активация. Обратите внимание, что таймер сна также будут сброшен, если включить один из каналов освещения.

И один моностабильный выход PB.4 – “1” на выходе присутствует пока держишь нажатой кнопку пульта.

Принципиальная схема декодера RC-5

Принципиальная схема декодера RC-5

Работа схемы

Включаете питание, при этом сразу загорается светодиод на выходе PB.4. Нажимаете кнопку S1, направив пульт в сторону TSOP. Нажимаете кнопки пульта (например, номера каналов) и как только декодер отреагирует на принятый сигнал, (не на все кнопки способен реагировать) кнопку S1 отпускаете, декодер запомнил эту команду и будет реагировать теперь только на неё, записав её код в свой EEPROM. Если пожелаете сменить команду пульта и управлять с другой кнопки, следует повторить ту же самую процедуру с запоминанием команды.
Микроконтроллер работает на тактовой частоте 4.8 МГц от внутреннего генератора, выбор тактовой частоты определяется при программировании выставлением фьюзов, как показано на рисунке:

Как собрать схему для управления любой нагрузкой при помощи любого пульта ДУ


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

Как собрать схему для управления любой нагрузкой при помощи любого пульта ДУ

Схема:


В качестве ИК приемника служит датчик LMS5360 это трех контактный ИК приемник который работает на частоте 38Кгц Когда датчик обнаружит ИК сигнал, то на выходе датчика будет присутствовать логический 0, этот сигнал очень слабый, далее он поступает и усиливает транзистором VT1. Затем этот сигнал поступает на ждущий мультивибратор микросхемы NE555 и запускает его.

Как собрать схему для управления любой нагрузкой при помощи любого пульта ДУ


С выхода микросхемы (вывод 3) сигнал поступает на вывод 3 микросхемы К561ТВ1А и переключает триггер, далее с выхода (вывод 1) сигнал поступает на базу транзистора VT2 который в свою очередь управляет реле. С каждым сигналом от таймера 555 триггер будет меняться соответственно реле будет срабатывать тем самым включать или отключать нагрузку.
Также в схеме предусмотрен светодиод HL1 который предусмотрен в качестве индикации, чтобы следить включено устройство или нет. При питании 5вольт резистор R5 можно исключить из схемы, учитывая то что если светодиод рассчитан на напряжения питания 2.5-3 вольта. Для того чтобы предотвратить таймер от ложного срабатывания в схеме предусмотрен резистор R4 и конденсатор С2.
Диод VD1 подключен параллельно катушке реле обратным включением для предотвращения скачков, всплесков ЭДС в противном случае без него в схему могут идти помехи которые пагубно влияют на маломощные транзисторы и чувствительные элементы.

Как собрать схему для управления любой нагрузкой при помощи любого пульта ДУ

О деталях:

  • В качестве ИК датчика можно использовать любой аналогичный работающий на частоте 38Кгц с тремя выводами как в моем случае от старого телевизора, важно учитывать распиновку этих датчиков.
  • Резисторы с R1-R6 мощностью 0,25 Ватт.
  • Конденсаторы С1,С3 электролитические напряжением не менее 16 вольт С2 керамический либо пленочный на 100 нано фарад С4 керамический или пленочный на 10 нано фарад.
  • Транзисторы VT1 VT2 кт3102 или аналоги BC184 BC182 2N4123 BC547.
  • Светодиод любой рассчитанный на напряжение 2.5-3 вольта.
  • Микросхема DD2 таймер NE555 или отечественный аналог КР1006ВИ1А.
  • Микросхема DD2 CD4027 или отечественный аналог К561ТВ1А.
  • Диод VD1 выпрямительный Кд522 или импортный 1N4004 14007.
  • Реле с напряжением катушки на 5 вольт и способностью коммутировать ток как в моем случае 3 ампера если потребности вырастают то ставить реле с большим током коммутации 5-10 ампер и т д.

Как собрать схему для управления любой нагрузкой при помощи любого пульта ДУ

Как собрать схему для управления любой нагрузкой при помощи любого пульта ДУ

Плюсы:


На холостом ходу устройство потребляет 3 Ма, что позволяет питать устройство от 3 пальчиковых батареек. При работающем режиме ток потребления устройства составляет около 36-37 Ма.

Как собрать схему для управления любой нагрузкой при помощи любого пульта ДУ

Как собрать схему для управления любой нагрузкой при помощи любого пульта ДУ


Способность коммутировать мощную нагрузку как от постоянного или переменного тока 220 вольт. Габариты устройства печатная плата с размерами 9,5 на 3 см. Дальность действия составляет 10 метров.

Как собрать схему для управления любой нагрузкой при помощи любого пульта ДУ

Как собрать схему для управления любой нагрузкой при помощи любого пульта ДУ

Смотрите видео


Читайте также: