В прошлой статье я рассказал о схеме ИК пульта дистанционного управления, выполненном на микросхемах стандартной логики. В этот раз мне хочется продолжить эту тему и предложить вашему вниманию схему декодера RC-5, которая также выполнена только на логических микросхемах и таймерах.
Данная схема позволяет принимать команды от стандартного ИК пульта управления и выводит принятый код команды на семисегментный индикатор, и все это без единого микроконтроллера. Вы будете удивлены, на сколько простой получилась схема.
Я уже писал, что взялся помочь с разработкой задания для конкурса по электронике. Схему пульта на жесткой логике в конечном итоге мы забраковали, т.к. нужно было снабдить каждого конкурсанта дополнительным устройством, которое принимало бы команды от пульта для проверки его работоспособности. Поэтому было решено купить недорогие пульты, а вот декодер выдать в качестве задания для конкурсантов. Решено, и я снова принялся за проектирование.
Если вы не читали прошлую статью, предлагаю предварительно ознакомиться с ней по этой ссылке.
❯ Структурная схема
Для меня процесс разработки структурной схемы это как решение головоломки. На этом этапе я определяю необходимое количество функциональных блоков и связи между ними. Также примерно прикидываю, какие схемотехнические решения могут подойти для каждого функционального блока. А уже после этого начинаю отрабатывать каждый кусок схемы по отдельности и складывать из них общую электрическую схему.
Не будем пропускать этот важный шаг и в этот раз. На рисунке ниже показана структурная схема декодера RC-5, которая у меня получилась. Дальше вы увидите, что не все элементы структурной схемы понадобятся при реализации электрической.
Давайте постепенно разбираться, как работает моя схема.
❯ Прием ИК сигнала
ИК пульты дистанционного управления обычно используют светодиоды с длинной волны 940нм, и модулируют сигнал на частоте 36кГц для исключения влияния фоновой засветки. Самым рациональным и простым способом принять такой сигнал было бы применить специализированный приемник типа TSOP. Он сразу имеет в своем составе все необходимое: фототранзистор, демодулятор на 36кГц, схему автоматического регулирования усиления, удобный диапазон питания и выход с открытым коллектором.
Но это же задание для конкурса, поэтому мы пошли другим путем, использовали фототранзистор и фильтры на операционных усилителях, ни каких АРУ и прочих наворотов. В рамках статьи опустим этот нюанс, и будем считать, что прием и демодуляция ИК сигнала производится специализированным ИК датчиком.
❯ Самосинхронизация декодера по сигналу пульта
Итак, в основе кода RC-5 используется манчестерское кодирование, основным преимуществом которого является самосинхронизация. Посылка от пульта к декодеру передается последовательно по одному каналу. И для приема данных декодер с пультом должен синхронизироваться. Для этого из посылки необходимо извлечь сигнал синхронизации.
Чтобы разобраться, как получить сигнал синхронизации, посмотрим на произвольную посылку, которую можно принять от пульта дистанционного управления.
Такую посылку будет отправлять пульт управления телевизором при нажатии на цифру 9. Обратите внимание, что не зависимо от состояния бита данных, в середине каждого периода обязательно происходит смена уровней. При передаче единицы происходит переход из низкого уровня в высокий, а при передаче нуля наоборот.
Именно благодаря такому способу кодирования, по переходу в середине периода можно синхронизировать приемник под битовую скорость пульта дистанционного управления.
Давайте рассмотрим принцип работы схемы детектирования сигнала синхронизации.
Я уже говорил, что ИК приемник имеет выход с открытым коллектором, при наличии ИК импульсов он открывает встроенный транзистор и «переворачивает» сигнал пульта управления. Чтобы вернуть сигнал в исходное положение используется логический вентиль XOR U1:A, включенный как инвертор. Фильтр нижней частоты на R1-C1 необходим для того, чтобы снизить влияние внешних помех.
«Выуживать» синхронизацию из посылки будем схемой детектора переходов на основе одного логического вентиля XOR U1:B.
Из-за интегрирующей цепочки R2-C2 импульсы на второй вход XOR приходят с небольшой задержкой, ее хорошо видно на общем графике по середине рисунка. За счет этого при смене уровня сигнала manchester входы элемента XOR на короткий период принимают разные значения. Логический элемент XOR детектирует эту неравнозначность и выдает короткий импульс на своем выходе. Длительность импульса определяется порогами переключения входов и номиналами интегрирующей цепочки.
Из сигнала синхронизации необходимо сделать тактовые импульсы «правильной» формы. Для этого воспользуемся таймером U2 NE555 по стандартной схеме одновибратора.
Импульс запуска одновибратора должен иметь обратную полярность, чтобы перевернуть сигнал синхронизации используем логический вентиль XOR U1:C по схеме инвертора.
Не удивляйтесь, что вместо инверторов я использовал XOR в обоих случаях. Микросхема 74НС86 имеет четыре вентиля. Один я использовал для детектора переходов, осталось еще три. Их можно либо не использовать, и они будут просто занимать место на плате и жрать питание, а можно использовать как инверторы и сократить количество микросхем в схеме.
На графике видно, что тактовый импульс на выходе одновибратора имеет длину в полтора периода сигнала синхронизации. Это сделано не просто так. Нас не интересуют импульсы синхронизации, возникающие между битами, их нужно отсеять. Тем более, что они появляются только при передачи подряд нескольких одинаковых битов. Схема должна срабатывать лишь по середине бита. К тому же, не всегда схемы пультов управления синхронизируются кварцем, их собственная частота может гулять в широком пределе, и запас в половину периода сигнала синхронизации позволяет нивелировать эту проблему.
В итоге тактовый сигнал перекрывает «нежелательные» импульсы и имеет частоту, равную битовой скорости пульта управления. Ловко, не правда ли? А дальше вы увидите, что смещение тактового сигнала на половину периода нам только на руку.
Давайте еще раз посмотрим, как происходит манчестерское кодирование одного бита. По сути, получается, что наш бит целехонький помещается во второй половине периода. А впервой находится его инверсная копия для обеспечения синхронизации. И нам только остается записать принятый бит в сдвиговый регистр. Очень удобно, не правда ли?
❯ Защита от потери данных и определение конца сообщения
При передаче данных по средствам эфира нет никакой гарантии, что наш декодер получит все сообщение целиком. Да и мало ли еще помех летает в воздухе? Поэтому схема должна обрабатывать предельное время приема одной единицы данных. Если схема не получит следующий бит данных вовремя, она должна перейти к исходному состоянию и ждать следующую посылку.
Схема построена на счетчике 74НС393. На счетный вход подаются импульсы на частоте примерно 3кГц, это значение подобранно примерно таким образом, чтобы схема срабатывала при потере одного тактового импульса. При регулярном наличии тактового сигнала clk, счетчик практически не успевает вести счет. Но, если тактовый импульс пропадет, счетчик U4:B считает до переполнения, и формирует сигнал timeout, который в свою очередь сбрасывает всю схему в исходное состояние и удерживает его.
Дополнительные логические вентили U3:A, U3:B, U3:C необходимы, чтобы остановить счетчик при отсутствии тактового сигнала. Если убрать их из схемы, то счетчик продолжит счет после переполнения. Сигнал timeout при этом будет пульсировать, а вся схема станет работать не корректно. Посмотрите, как изменятся графики сигналов при их отсутствии.
Второй вентиль этого же счетчика отмеряет длину принятой посылки. Чтобы не добавлять еще одну микросхему и просто для схемотехнического разнообразия, в схеме используется монтажное И на диодах. Немного двоичной магии, и счетчик отсчитывает ровно 14 тактовых импульсов. А выходной сигнал endPack может защелкнуть выходной буфер сдвигового регистра.
❯ Запись кода команды
Запись кода команды производится в две микросхемы сдвиговых регистров 74HC595, включенных последовательно друг за другом. Код команды записывается в младшие биты выходов. Если не обрабатывать биты адреса в посылке, можно было бы обойтись и одним регистром.
К выводам Q0-Q3 регистра U5 можно подключить семисегментный дешифратор, за ним светодиодный индикатор и наблюдать коды принятых команд.
На следующем графике вы можете увидеть, как происходит переключение выходов сдвигового регистра при последовательной передаче кодов 9, 6 и 0.
❯ Электрическая схема
Давайте посмотрим, что получилось в итоге. Электрическая схема построена всего на 5 микросхемах стандартной логики и двух 555 таймерах. Один генератор на 3 кГц я не нарисовал, он тоже реализован на NE555. Не так уж и плохо для технологии из прошлого века?
И, я просто обязан вам показать, за что так люблю ISIS Proteus. Не нужно пытаться убеждать меня в том, что виртуальное моделирование электрических схем это просто игрушка. Вы же можете позволить себе вечерком запустить доту или каэску? А кто-то до сих пор шпилит в героев! Тогда, почему я не могу вечерком побаловаться в симуляторе электронных схем?
❯ Сборка макета
Доработка эскиза схемы до схемы прототипа, разработка печатной платы и сборка прототипов производилась в Ярославле. Мой товарищ решил выполнить эту часть работы самостоятельно. Плата разрабатывалась в альтиуме, картинки он, конечно, генерирует великолепно.
Ну и конечно же демонстрация устройства в работе. Для этого нашли первый попавшийся ИК-пульт от телека.
Конкурс по электронике прошел успешно… в 2018 году. Дети остались довольны. Даже страшно подумать, что эти мальчишки на фотке уже взрослые мужики!
Если вам понравилась эта статья, то вы можете посмотреть другие мои проекты. Ссылки на них вы можете найти под спойлером.
- 1. Простая схема динамических указателей поворотов, и никаких микроконтроллеров
- 2. Светодиодная шкала для переменного резистора на «рассыпухе»
- 3. Светофор на логике со схемотехникой в стиле Beatles. Как электроника вновь стала моим хобби
- 4. Профессиональные методы прототипирования печатных плат. Распечатать на принтере или фрезеровать, ни слова про утюг
- 5. Бирдекель или арифметический детектив на операционных усилителях
- 6. Электронная игра «лабиринт» на сервоприводах. Никаких arduino, только жесткая логика
- 7. Велосипедный фонарь с динамическими поворотами. Зачем покупать на AliExpress, если можно сделать самому?
- 8. LPKF ProtoMat S63. Мыши плакали, кололись, но… продолжали фрезеровать печатные платы
- 9. Звуковой усилитель на драйвере шагового двигателя L298 и таймере 555. Да, 555-й может и спеть
- 10. Графический спектроанализатор с динамической индикацией на жесткой логике
- 11. Цифровой термометр на жесткой логике
Комментарии (10)
Vitaliy_dzen
15.01.2024 08:20У Вас в начале ссылка на "предыдущюю статью" ведет сама на себя, поправьте пожалуйста. Большое спасибо за материал, было приятно читать.
OldFashionedEngineer Автор
15.01.2024 08:20Спасибо за комментарий! Поправлю, видимо увлекся в процессе
KotovladeletsGT
Приятно видеть, как с каждой версией у Альтиума улучшается графический интерфейс и отрисовка плат в 3D. Кто-то конечно скажет, что эти графические рюшечки не нужны настоящему инженеру, но мне, после вынужденного знакомства с Спринт-Лайаут и Пикадом 2006, Альтиум видится манной небесной
P.S. Диоды у вас конечно жирноваты для такой функции, но что ж, понимаю, иногда проще воткнуть какие есть под рукой, чем искать 1N4148
OldFashionedEngineer Автор
Визуализация это очень важный момент. Я сейчас сам платы не проектирую, это делает тополог. И проверять его работу по 3D модели значительно проще.
Далее, еще один важный момент это визуализация проекта. Допустим, для презентации проекта заказчику. Ну и в конструкторской работе тоже удобно иметь хорошую модель. Как минимум, чтоб высоту компонентов учитывал и их геометрию. Ну и чтоб платы вверх ногами не ставили в корпус.
KotovladeletsGT
Всё так
SAeMon_DS
Протеус тоже выдаёт шикарные 3d визуализации) давно прижился у меня как любимая САПР)
OldFashionedEngineer Автор
Не, я как-то не смог себя заставить в протеусе трассировать платы. Альтиум все же лучше, хоть и сложнее
steadyI
KiCad 6
OldFashionedEngineer Автор
В кикад сейчас встроенными средствами 3D моделирование поддерживается, или с помощью внешнего приложения?
acc0unt
Компоненты моделятся во внешнем приложении. В стандарной либе довольно много моделей - но если не хватает, то можно делать в SolidWorks или в FreeCAD - кому как удобнее. Ну или попросту скачивать готовое.
Модель платы рисуется самим KiCad.