Управление HD44780 по линии питания

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.


Вообще-то, способы уменьшения количества проводов там и так предусмотрены. Вот, например, четырёхбитный режим. Всё равно много? Есть дисплейные модули с I2C. Но нет предела совершенству, и если у вас есть лишнее Arduino, дисплей можно отнести от источника данных на некоторое расстояние и подключить двухпроводным кабелем.

Один из способов передачи питания и данных по одной и той же паре проводов состоит в следующем. Сигнал с данными модулируют высокой частотой и объединяют, а на противоположном конце линии разделяют для подачи в демодулятор при помощи дросселей и конденсаторов. Но при питании постоянным током можно воспользоваться более простым способом, похожим на применяемый в домофонных ключах. Модулятор и демодулятор в этом случае не требуются, на передающей стороне достаточно ключа, коммутирующего цепь питания:



Транзисторы — AO3400A и AO3401A. Второй из них выдерживает 5 А (по другим данным — 4), а здесь коммутировать ему приходится всего 200 мА. Поток последовательных данных на ключ может быть подан с какого-либо микроконтроллера, но поскольку конструкция экспериментальная, автор воспользовался ПК, на котором запущен Python-скрипт, и конвертером USB-UART.

Прерыватель питания у автора получился неказистым, но очень крепким:



На противоположном конце линии пульсирующее напряжение подано на однополупериодный выпрямитель с фильтром (хотя выпрямление в данном случае не требуется, просто нужно, чтобы напряжение до диода оставалось пульсирующим, а после — нет), от которого питаются Arduino и дисплейный модуль. Arduino преобразует последовательные данные в параллельные, необходимые модулю. Пульсирующее напряжение до диода поступает на один из цифровых входов Arduino.



Так это выглядит в реале:



Прошивка максимально упрощена, она самостоятельно не вырабатывает даже команды инициализации контроллера дисплея (и все остальные команды), поэтому подавать их должна передающая сторона. Но при этом она распознаёт простейшие однобайтные команды, адресованные непосредственно ей. Здесь х — младший полубайт, команда — старший полубайт:

0xA[x] — подать полубайт x на выводы 4 — 7 модуля
0xB[x] — подать младший бит полубайта x на вход RS модуля
0xC[x] — подать младший бит полубайта x на вход EN модуля
0xD[x] — выставить яркость подсветки (регулируется ШИМом) пропорционально полубайту x

Всё необходимое ПО находится здесь. Чтобы показать, как всё работает, автор составил такой сценарий:



И запустил:

Источник: https://habr.com/ru/post/449830/


Интересные статьи

Интересные статьи

Один из ключевых сценариев работы в CRM это общение с клиентом в удобном для него канале. По почте, по телефону, по SMS или в мессенджере. Особенно выделяется WhatsApp — интеграцию с ...
Приветствую читателей в нашем цикле статей, который посвящен SMB Check Point, а именно модельному ряду 1500 серии. В первой части упоминалось о возможности управления вашими NGFW...
Долгожданный туториал по управлению сторонними WEB приложениями с помощью pyOpenRPA. Во 2-й части мы разберем принципы роботизированного воздействия на HTML/JS. А также своими руками ...
Agile подходы набирают популярность из-за хорошей реализации работы с неопределенностью за счет постоянной поставки результата. Однако, почти любой Agile-процесс требует выделенной команды на про...
Согласно многочисленным исследованиям поведения пользователей на сайте, порядка 25% посетителей покидают ресурс, если страница грузится более 4 секунд.