Схемы расширения каналов управления через lpt порт. LPT-port: особенности и принципы работы. Желаем успеха при подключении ЖК индикаторов

Недавняя реализация простой на FreeBSD, дала почву для развития этой темы. По сути это ее продолжение но немного отделенное по смыслу.
В статье описан способ мониторинга наличия напряжения 220 вольт в электросети через LPT порт.

Статья будет полезна тем, у кого есть ПК с LPT портом, UPS без возможности управления с ПК, желающим корректного завершения работы ОС, вырубания соседних машин и уведомления при отсутствии электричества.

Дано:

UPS без возможности подключения к ПК.
Сервер FreeBSD с LPT портом
Простейшая безопасная схема для подключения 220 к LPT =).
Программа lptmon

Пример работы:

Гдето работает сервер, внезапно пропадает электричество. Cервер и его друзья: конвертер, маршрутизатор, серверы и пр. продолжают работать от UPS.
Cервер, почуяв неладное отправляет об этом смс админу, пишет лог, ждет минуту (вдруг это 5ти секундный сбой) и вырубает другие серверы. Все корректно завершено, данные не утеряны, админ в курсе.
Если электричество появилось, но минута не прошла и сервер не успел вырубиться, он отправляет смс админу что все впорядке и продолжает работать.
Если сервер успел вырубиться, и электричество появилось например через час, то при появлении 220 сервер врубается (через опцию в биосе), загружается, врубает другие сервера через Wake on LAN (прим: настройка Wake on LAN в статье не описывается) и отправляет смс админу о том что все ок.

Инструменты:

FreeBSD + mysql (второе не обязательно, только для лога)
LPT порт
Паяльник, припой, канифоль, провода
Cхема мониторинга 220 (блок питания и оптрон)
программа lptmon

Суть:

У LPT порта есть 5 ног чтения (они же пины) 10,11,12,13 и 15, заметьте 14й тут нет!. Они являются входами и используются принтерами как тумблеры, при событиях например:
кончилась бумага,
принтер занят,
ошибка печати, итд итп.

Они то нам и нужны, к ним можно подключить 5 разных устройств.

Распиновка LPT порта

Под FreeBSD работает программа lptmon которая мониторит эти пины.
Если взять кусок проволоки и замкнуть любой из вышеперечисленных
пинов на землю. (земля - любой с 18 по 25 пин этого же LPT порта) то программа
будет считать что пин включился. Каждый пин, через программу lptmon, может вызывать 3 события при которых можно выполнять комманды или запускать скрипты:
1. Пин включился
2. Пин работает (срабатывает каждую секунду пока пин замкнут)
3. Пин выключился

Собстно lptmon выполняя комманды при событиях от пинов запускает скрипты которые пишут в базу лог срабатывания, текущее состояние устройств подключенных к lpt порту, сохраняет скриншоты с камеры на винт, отправляют смс если нада итд.

План действий

1. Собрать схему, подключить ее к LPT
2. Настроить lptmon
3. Настроить скрипты.

1. Сборка и подключение схемы

Т.к мы будем подключать 220 к порту, необходимо позаботиться о его безопасности. Для этого нужно использовтаь небольшое напряжение, для чего берем блок питания (я нашел на 5в, 2.5А от конвертера) подключаем его к оптрону через резистор и потом уже к LPT.
Оптрон, грубо говоря, работает по принципу: если есть достаточное напряжение и сила тока на 1 и 2 ногах то он замыкает 5 и 4 ноги. Если силы и напряжения не достаточно (когда БП выключен) то он не замыкает 4 и 5 ноги. А если более чем достаточные (например бп переглючил и он стал давать 120вольт) то оптрон сгарает и это не влияет на 4 и 5 ноги (т.е на вторую цепь).
Поскольку оптрон (4n35) штука защитная, имеющая две цепи не связанные между собой, он еще и призван умирать при силе тока большей чем 60мА (это 0.06А, а у моего БП аж 2.5А). То есть, силы тока 2.5А более чем достаточно для того чтоб он испугался и умер. По этому, для того чтобы ограничить силу тока используем резистор. В моем случае это 500ом. Резистор подбирается индивидуально под блок питания. Вычислить резистор можно формулой R=U/I где U - напряжение дающее БП (вольты), I - нужная оптрону сила тока (Амперы) для работы. Сила тока нужная оптрону для замыкания второй цепи лежит в пределах от 0 до 60 мА, Допустим решили подавать ему 1мА для чего расчитаем резистор: R=5в/0.01А, R = 500 следовательно нам нужен резистор 500ом. Можно взять и меньше, 400, 300 ом главное чтоб сила тока не получилась больше 60мА.

Для подключения к LPT был разобран старый шнур от принтера. В корпусе от шнура собраны гнездо для подключения БП и оптрон.
Вот что получилось:

Готовый lpt разьем и черный кабель от БП.


Оптрон с резистором, они внутри разъема


2. Настройка lptmon

Создаем директорию /usr/local/etc/lptmon
качаем архив lptmon.tar.gz с программой lptmon и примерами скриптов и распаковываем:

#mkdir /usr/local/etc/lptmon #cd /usr/local/etc/lptmon #fetch http://zgbox.ru/files/notes/lptmon.tar.gz #tar -xzvf lptmon.tar.gz

Зеркало:

313 26.3kb 2011-06-29 lptmon, скрипты, исходники

В архиве лежит lptmon.c - это исходники программы, писал я ее сам, это моя первая программа на С++ под FreeBSD как и в прочем первая на C =) так что если есть примечения, дополнения - в студию.
Также там лежит сам уже откомпелированный файл lptmon, можно юзать его, установив chmod 777 lptmon если необходимо, а можно откомпелировать исходники коммандой

Теперь программа lptmon будет стартовать с системой, также ее можно стартовать вручную как просто запустив./lptmon так и выполнив rc.d скрипт /usr/local/etc/rc.d/lptmon start или stop
В запуске нет ничего особенного, просто запускается /usr/local/etc/lptmoon/lptmon а при stop убивается коммандой killall lptmon
Но пока не нужно ничего запускать, сначала нужно настроить конфиг, об этом чуть пожже.
Директория testlpt, в ней лежит программа pr22 и ее исходник для тестирования lpt порта. Работает просто: запускается, получает состояния с 10 по 15 пинов и если какойто пин замкнут на землю то выдает pin10 on
у меня в данный момент 10й пин замкнут на что программа отвечает

#./pr22 pin10 on

Можно смело использовать в своих скриптах
Итак собсно пробуем замнкть один или несколько из 10,11,12,13,15 пинов на землю (на любой с 18 по 25 пин) и запустить./pr22
Если программа показывает что замкнутые пин(ы) on значит все ок, если нет - то я хз почему не видит ваш lpt порт, ковыряйте исходники %)

Переходим к настройке самого lptmon.
Итак, исходя из того, что у нас будет подключена схема к 12 пину то сконфигурим так чтоб при событиях 12 пина при старте и запуске выполнялись скрипты 12_start, 12_end.

Ложим конфиг lptmon.config из расспакованного архива в /usr/local/etc/lptmon.config и редактируем любимым редактором, у меня это mcedit от mc.

#cp lptmon.config /usr/local/etc/lptmon.config #mcedit /usr/local/etc/lptmon.config

Это сокращенный, необходимый только для этой статьи конфиг, подробный в архиве.

#конфиг файл lptmon.config программы lptmon #должн лежать в /usr/local/etc/ #в параметрах допускаются табы и пробелы #ковычки не допустимы! #каждый пин может вызывать 3 события (выполнять комманды) при смене состояния: #1. при переходе из пассивного состояния в активное #2. при работе в цикле (срабатыват каждый раз при опросе если пин # в активном состоянии) #3. при переходе из активного состояния в пассивное pin12enable = yes pin12onstart = /usr/local/etc/lptmon/220v/12_start pin12oncycle = /usr/local/etc/lptmon/220v/12_cycle pin12onend = /usr/local/etc/lptmon/220v/12_end

3. Настройка скриптов

Листинг 12_start

#!/bin/sh #скрипт срабатывает когда дали электричество #или загрузился комп #двумя запросами пишем лог в базу и устанавливаем статус on для устройства 220v sql="use $db_name ; insert into objects_hist (obname,status ,dt) values \ ("$obname ","on",now());" #echo $sql /bin/echo $sql | /usr/local/bin/mysql -h$db_host -u$db_user -p$db_pass sql="use $db_name ; update objects set status ="on", dtstart=now() \ where obname="$obname ";" /bin/echo $sql | /usr/local/bin/mysql -h$db_host -u$db_user -p$db_pass #отправляем смс админу о том что 220 дали или серв включился /usr/local/etc/lptmon/sms "220v ON "`date +%m.%d-%H:%M:%S`

листинг 12_end

#!/bin/sh #срабатывает когда отключилось 220 db_host=localhost db_pass= db_user=root db_name=security obname=220v #пишем в базу логи и состояние off устройства 220v sql="use $db_name ; insert into objects_hist (obname,status ,dt) values \ ("$obname ","off",now());" #echo $sql sql="use $db_name ; update objects set status ="off", dtend=now() \ where obname="$obname ";" #/bin/echo $sql | /usr/local/bin/mysql -h$db_host -u$db_user -p$db_pass #отправляем смс о том что нет электричества и ставим таймер на 60 сек #по завершению которого скрипт 12_cycle вырубит компы /usr/local/etc/lptmon/sms "220v OFF "`date +%m.%d-%H:%M:%S` echo 60 > /usr/local/etc/lptmon/220v/timer

Эти скрипты выполняют по два Sql запроса к mysql. Запросы обновляют текущее состояие устройства с именем 220v в таблице objects и пишут лог в таблицу objects_hist. Дамп структуры таблиц dump_security.sql также лежит в архиве.
Помимо этого скрипты отправляют смс.
Скрипт 12_end записывает цифру 60 в файл /usr/local/etc/lptmon/220v/timer для того чтобы потом скрипт 12_cycle который будет срабатывай каждую секунду пока нет электричества, брал эту цифру и отнимал по единице. Когда станет 0 он запустит программу wudown которая вырубит по сети комп с windows (ip 192.168.97.52) и вырубит сервак коммандой shutdown -p now.
листинг 12_cycle

#!/bin/sh path=/usr/local/etc/lptmon/220v/timer timer=`cat $path ` timer=`expr $timer - 1`; if [ $timer -gt 0 ]; then echo $timer > $path echo $timer else echo "shuttdowning..." /usr/local/bin/wudown 192 .168 .97 .52 1209 shutdown shutdown -p now fi

размещено: 2011-06-29,
последнее обновление: 2011-08-21,

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

Порты персонального компьютера

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

  • Внутренние - для подключения устройств внутри ПК (жесткие диски, видеокарты, платы расширения).
  • Внешние - для подключения внешней периферии (сканера, монитора, клавиатуры, фотоаппарата, флешки).

В данной статье мы рассмотрим один из видов внешнего порта, а именно LPT-port, его принцип работы, подключаемые устройства и современное применение.

Появление LPT-порта

Изначально LPT-port (его еще называют разрабатывался только для подключения к ПК принтеров, это отражено даже в его названии - Line Printer Terminal, построчный принтерный терминал. Но в дальнейшем этот интерфейс стал применяться и для подключения других устройств: сканеров, дисководов и даже компьютеров между собой.

LPT-port был разработан компанией Centronics, занимавшейся в 70-х годах прошлого века производством матричных принтеров. Но уже через 10 лет его стала использовать фирма IBM для подключения своих скоростных устройств. Дело дошло до того, что было несколько вариантов данного интерфейса от разных производителей периферии.

В первоначальной версии этот порт был однонаправленным, то есть мог передавать данные только в одном направлении: от компьютера к периферийному устройству. Но это ограничение вскоре перестало устраивать пользователей, так как на рынок массово начали выходить устройства с возможностью передачи данных в обоих направлениях. Для этого различные производители предлагали свои усовершенствования - двунаправленный, ECP, EPP и другие. Пока в 1994 году не был принят международный стандарт IEEE 1284.

Схема LPT-порта

LPT-порт называется параллельным потому, что передача данных с помощью него осуществляется по нескольким проводникам одновременно, то есть параллельно. Этот интерфейс имеет 8-битную шину для передачи данных, 5-битную шину передачи сигналов и 4-битную шину передачи состояния.

Ниже представлена схема контактов LPT-порта.

Принцип работы LPT-порта

В простейшей конфигурации, чтобы реализовать принцип работы параллельного интерфейса, хватило бы только одиннадцати проводов, а именно: 1 провод на корпус (масса), 2 провода подтверждения и 8 проводов передачи данных. Но, по общепринятому стандарту IEEE 1284, каждый из восьми проводов передачи (2-9) данных имеет отдельное заземление.

Во время передачи данных оба устройства должны сообщать друг другу сведения о своем состоянии. Это реализуется с помощью контактов 18 и 35, на которые подается напряжение 0 В либо 5 В.

По проводнику 1 передается особый сигнал STROBE, сообщающий, что компьютер установил байт данных на линии и принтер может начинать печать.

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

По контактам 12-14 передаются сигналы, сообщающие контрольные сигналы о состоянии принтера и конфликтах в его оборудовании.

По проводнику 12 на ПК передается информация о том, что в принтере нет бумаги. Компьютер реагирует на это передачей сигналов по линиям SELECT и ERROR и останавливает печать.

По проводнику 13 на компьютер передается информация о состоянии принтера - включен и готов или выключен и не готов.

По контакту 14 принтеру передается сигнал об автоматическом переводе строки.

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

По контакту 32 (15) передаются все сигналы об ошибках во время передачи данных. Сигналы, передаваемые по этой линии, влияют на все остальные контакты и могут остановить печать. Например, часто возникающая ошибка принтера - Time Out, возникающая, когда принтер занят однотипной работой с данными и не может передать на ПК через сигнал BUSY, что он не готов к получению новых данных. Через некоторое время по линии ERROR на компьютер передается ошибка Time Out и новые данные не передаются. Иначе, при отсутствии сигнала ERROR, происходила бы дальнейшая передача данных, что привело бы к зависанию всей системы.

По контакту 36 (17) передается информация о готовности принтера к работе, например после устранения ошибки.

Режимы работы LPT-порта

Существует несколько режимов работы LPT-порта, которые позволяет использовать стандарт IEEE 1284:

  • SPP (Standard Parallel Port) — представляет собой однонаправленный порт, который отлично совмещается в работе с интерфейсом Centronics.
  • NibbleMode — использование этого порта является возможностью организации двунаправленного обмена данными в режиме SPP, при помощи использования управляющих линий (4 бит) для передачи данных от периферийного устройства к контроллеру.
  • Byte Mode— режим для двустороннего обмена данными, который используется довольно редко. Его применяли в некоторых старых контроллерах до принятия стандарта IEEE 1284.
  • EPP (Enhanced Parallel Port) — над разработкой этого порта работали сразу несколько известных компаний: Intel, Xircom и Zenith Data Systems. По своей работе это двунаправленный порт, который передает данные со скоростью до 2 Мбайт/сек.
  • ЕСР (Extended Capabilities Port) — этот вариант порта появился в результате работы двух компаний: HP и Microsoft. У него появились уже дополнительные возможности, например, возможность аппаратного сжатия данных, присутствие буфера и способность работать в режиме DMA. Также поддерживает работу двунаправленного обмена данными (симметричного), скорость которого может быть до 2,5 Мбайт/с.

Настройка LPT-порта

Настройка LPT-порта происходит в два этапа: предварительная настройка аппаратных средств порта и текущее переключение режимов порта прикладным ПО.

Способ и возможности настройки LPT-порта зависят от его местоположения и вида исполнения. Порты, расположенные на картах расширения, обычно конфигурируются через перемычки на самих платах, а порты, размещенные напрямую на материнской плате компьютера, - через настройки BIOS.

Выборы режимов напрямую или через BIOS сами по себе не приводят к повышению скорости обмена данными между ПК и периферией, а служат для возможности выбора драйвером оптимального режима работы. Но драйверы современных устройств сами автоматически выставляют наиболее эффективные режимы работы параллельного порта, поэтому ручная настройка в большинстве случаев уже не требуется.

Виды реализаций LPT-порта

Раньше большинство производителей материнских плат размещали контроллеры LPT-port на своей продукции либо на задней панели платы. Был еще один вариант расположения. В некоторых случаях было удобно помещать контроллер на самой плате - коннекторе для подключения внешней LPT-port планки. Но с момента появления более скоростных интерфейсов для передачи данных материнских плат с распаянными LPT-портами становилось все меньше и меньше. Сейчас даже не у каждого производителя в ассортименте выпускаемой продукции имеются такие платы. И тогда на помощь приходят карты расширения, подключаемые к более современным интерфейсам:

  • PCI - LPT-port. Переходник между LPT-портом и более современным разъемом PCI.
  • PCI2 - LPT-port (PCI-Ex. 2.0). Переходник между LPT-портом и разъемом PCI-Ex.2.0
  • USB - LPT-port. Переходник между LTP-портом и современной версией широко используемого USB-разъема.

Современное применение LPT-порта

Из-за способности параллельной передачи данных такого порта, в 70-х - 80-х годах он зарекомендовал себя одним из самых быстроработающих интерфейсов компьютера. Поэтому он использовался даже для соединения 2-х компьютеров между собой. Но эта же особенность накладывает и ограничение на максимальную длину кабеля из-за возникающих помех в соседних проводниках. Длина не может превышать 5 м, иначе искажения сигналов превышают допустимые для корректного распознавания данных.

C появлением более скоростных интерфейсов актуальность LPT-порта сошла на нет. Второе дыхание ему придали радиолюбители, которые используют его для управления собранными схемами (освещение в доме, светомузыка и другие устройства).

Подключение LCD дисплея к компьютеру, не представляет не какой сложности. Этот процесс не дорогой и эффективный способ повысить функциональность вашего ПК.

Будем использовать наиболее распространенный тип LCD индикаторов с микро контроллером HD44780 или на его аналоге KS0076 или KS0066 и т.д.., я использовал wh2004A-YYB-GT стоимость около 240 рублей.

Существует несколько способов подключение LCD к компьютеру, в данной статье рассмотрен наиболее простой из них: подключение к LPT по 7ми линиям управления. Это 4 линии данных, 3 линии управления, также у индикатора есть 5 выводов для подключения питания и настройки. Почему я не задействовал все 8 линии данных – потому что при написании программы я использовал стандартные 8 линий данных LPT порта (4 из которых на данные и 3 на управление), с регистрами данных я связываться не захотел.

Нам понадобится:

  • LCD дисплей
  • 2 переменных резистора
  • провод Bitronics (применяется для подключения принтера через LPT).
  • Провод для подключения питания. Тут несколько вариантов откуда можно запитать девайс не прибегая к посторонним источникам питания, а используя питание от компьютера: от Molex (внутренние разъёмы питания в компьютере, используются для подачи питания на дисководы и винчестеры), от USB порта.

Выбор дисплея

Начнём с выбора дисплея, т.к. это самая важная часть нашего устройства. Он должен быть на микроконтроллере HD44780, возможны и аналоги KS0076 или KS0066…, но я с ними не проверял. Они бывают с подсветкой и без подсветки, различного цвета символов и подсветки, отличаются количеством строк и символов в строке, размером символа и корпуса…

Вот распространенные размеры дисплеев

1х10 1х16 1х20 1х24

1х40 2х16 2х20 2х24

2х40 4х16 4х20 4х40

Маркировка дисплеев фирмы МЭЛТ:

Подбор деталей

Переменные резисторы

Понадобится 2 любых переменных резистора, но лучше и целесообразнее использовать подстрочные т.к. они более компактные и после настройки дисплея вряд ли понадобятся.

Один для регулировки контрастности (примерно 10 кОм (10-36кОм), я использовал 22 кОм) и яркости подсветки дисплея (примерно 100 Ом)

Bitronics

Нам понадобится не весь кабель, а только его часть.

Провод для подключения питания.

Если конструкция располагается вне корпуса компьютера то удобнее запитаться от USB разъёма, их в компьютерах обычно много и большинство из них обычно простаивают. Приобретём USB провод формата A->B или USB удлинитель

Если конструкция будет установлена внутри компьютера (например: в отсеке 5 дюймового дисковода) то её удобнее запитать будет от MOLEX разъема

Также можно приметь любой другой источник питания выходным напряжением 5 вольт.

Приступим к сборке

Выводы на LCD дисплее могут, располагается несколькими вариантами:

Схема подключения:

1 Земля (черный провод на Molex) Земля

2 +5V (красный провод на Molex) Power

3 Земля (черный провод на Molex) Регулятор контраста дисплея. Заземление дает максимальный контраст. Для плавной регулировки используйте 10кОм подстроечный резистор.

4 Контакт 16 на LPT (Зеленый/белый провод) Выбор регистра

5 И снова земля… Селектор Read/Write. Так как мы не собираемся ничего считывать с LCD, можем смело его заземлять - это будет держать LCD постоянно в режиме Write.

6 Контакт 1 на LPT (розовый провод) Enable - Strobe

7 Контакт 2 на LPT (красный провод) Бит 0

8 Контакт 3 на LPT (желтый провод) Бит 1

9 Контакт 4 на LPT (зеленый провод) Бит 2

10 Контакт 5 на LPT (белый провод) Бит 3

11 Контакт 6 на LPT (голубой провод) Бит 4

12 Контакт 7 на LPT (пурпурный провод) Бит 5

13 Контакт 8 на LPT (розовый провод) Бит 6

14 Контакт 9 на LPT (серый провод) Бит 7

Можно воспользоваться приведённой выше таблицей, но не все провода могут быть сделаны по стандарту, поэтому лучше прозвонить.

Питание конструкции

Распиновка MOLEX

При питание от MOLEX разъема потребуются один чёрный и красный провод (подключаться к разъёму или откусывать его и напрямую использовать провода – ваше дело).

Распиновка USB

При питании от USB потребуются два крайних вывода.

Проверка

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

Резистор на 10 кОм будет менять контрастность дисплея: в крайнем положении на индикаторе потемнею сегменты, в противоположном положении индикатор нечего не будет отображать;

Резистор за 100 Ом должен менять яркость подсветки дисплея.

Резисторы не должны нагреваться – если это происходит то при сборки были допущены ошибки и их следует устранить.

Программа

Существует множество программ для подключения LCD дисплея к компьютеру, но они у меня либо отказались работать, либо не понравились – поэтому была написана своя программа — AL LPT to LCD .

Один мой друг, увидев статью http://habrahabr.ru/blogs/DIY/92655/ захотел себе устройство для управления нагрузкой по LPT порту. Но управлять он хотел не одним устройством, а аш 8-мью!
По образу и подобию устройства в статье и была изготовлена данная железка, с небольшими отличиями, во-первых я подключил реле к каждому выходу LPT порта (8 шт.) , а во-вторых сделал человеческую печатную плату. Обо всём по порядку.
Описанное устройство позволяет управлять с компьютера через lpt порт любыми устройствами, такими как лампы освещения, вентилятор и многими другими, мощность которых при питании от сети 220В не должна превышать 1кВт. При написании соответствующего софта, и наличии интернет соединения можно управлять своими устройствами с любой точки земли.

Схема устройства для управления нагрузкой через LPT порту наипростейшая.


Программой с ПК можно управлять логическими уровнями на выходах D0..D7 LPT порта. Уровень логической единицы в LPT порте составляет 5В, что очень удобно для дальнейшего оперирования исполнительными устройствами. Так как тока с выхода LPT недостаточно для управления реле, используем усилитель на транзисторе VT1. Резистор R1 ограничивает ток в цепи базы транзистора. Транзистор коммутирует питание на обмотку реле, и та включает мощную нагрузку, которой вы хотите управлять, к примеру, лампочку, двигатель и другие. Плата разведена под реле HJR-3FF-S-Z (обмотка на 12В, коммутируемый контактами ток 5А при 230В переменного напряжения). Диод VD1 защищает транзистор VT1 от выброса обратного напряжения в момент выключения реле. На схеме показан один узел, для линии D0 LPT порта, но управление для остальных линий идентично.
Это наипростейшее устройство, собрать его сможет любой, даже начинающий радиолюбитель. Но если вы собираетесь с его помощью управлять устройствами с номинальным напряжением питания 220В, то перед включением особое внимание обратите на монтаж, особенно монтаж цепей 220В, чтобы не было связи данных цепей с низковольтными цепями, например из-за сопли или недотрава. Рекомендую перед включением всё тщательно прозвонить Омметром для обнаружения нежелательных связей. При неудачном монтаже вы рискуете не только угробить компьютер, но и подвергаете свою жизнь опасности!
Под данное устройство я разработал в программе Sprint Layout одностороннюю печатную плату.

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

Практически собранное устройство показано на следующей фотографии. Видно, что диоды я подпаял к плате со стороны дорожек прямо на выводы реле идущих к обмотке.

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

За последние годы, аппетитные рецепты в картинках , информативные . Раздел обновляется ежедневно. Всегда свежие версии самых лучших бесплатных программ для повседневного использования в разделе Необходимые программы . Там практически все, что требуется для повседневной работы. Начните постепенно отказываться от пиратских версий в пользу более удобных и функциональных бесплатных аналогов. Если Вы все еще не пользуетесь нашим чатом , весьма советуем с ним познакомиться. Там Вы найдете много новых друзей. Кроме того, это наиболее быстрый и действенный способ связаться с администраторами проекта. Продолжает работать раздел Обновления антивирусов - всегда актуальные бесплатные обновления для Dr Web и NOD. Не успели что-то прочитать? Полное содержание бегущей строки можно найти по этой ссылке .

Графический ЖК индикатор - подключение через LPT порт

Графический ЖК индикатор 128x64 пикселя Fordata FDCG12864B (KS0108B)- подключение к компьютеру через LPT порт. Мы его подключили.

- Как подключить ЖК панель?
- В розетку!
- Вы не поняли, имеется ввиду ЖК монитор!
- В розетку и к компьютеру!


Жидкокристаллический индикатор в компьютере смотрится модно и стильно, но полезнее всего он будет смотреться, скорее в медиацентре. Особенно когда он графический. Тут уж есть где поупражняться в искусстве информационной эргономики и монохромного пиксельного арта. Будем заниматься?
Решили единогласно:- "Да, будем!".
Что мы приобрели: пару ЖК индикаторов 128x64 пикселя Fordata FDCG12864B (KS0108B), а остальное у нас было.
А вот что было: LPT кабели Centronics, подстроечные резисторы на 10 КОм, обычные резисторы на 10 Ом (0,25 Вт), разьемы молекс - "папа".
Логичный вопрос: Зачем два ЖК индикатора?
Ответ: Количество индикаторов равно числу соавторов.



После приобретения индикатора первым делом мы решили узнать, что это зверь такой? Оказалось, что он чистокровный "китаец", его "отцы" обитают на сайте fordata.cn , оттуда мы извлекли его скромное описание в количестве 1 страницы в формате.pdf.
Однако, "отцы"-создатели на одной странице умудрились разместить массу полезной информации: размеры девайса, блок схему, фичи, распиновку, механические спецификации, диапазоны питания и электронные характеристики.
Схема соединения ЖК индикатора с LPT портом довольно простая, но требует внимательности, усидчивости и конечно-же умения паять (провода к контактам).
Важно заметить, что контакты на LPT разьеме пронумерованы, следует только внимательно посмотреть, и они станут заметны, то же относится и ЖК индикатору, на противоположной от экрана стороне можно заметить маркировку, подобную той, что указана на схеме:


Схема подключения ЖК индикатора к LPT порту.

LPT порт

ЖК индикатор

GND 1 (Vcc) Общий вывод
+5V 2 (Vdd) Напряжение питания
контрастность 3 (V0) Контрастность
17 4 (RS) Выбор: команда/данные
GND 5 (R/W) Выбор: чтение/запись
1 6 (E) Стробирование данных
2 7 (DB0) Шина данных
3 8 (DB1) Шина данных
4 9 (DB2) Шина данных
5 10 (DB3) Шина данных
6 11 (DB4) Шина данных
7 12 (DB5) Шина данных
8 13 (DB6) Шина данных
9 14 (DB7) Шина данных
14 15 (CS1) Выбор кристалла 1
16 16 (CS2) Выбор кристалла 2
+5V 17 (RST) Начальная установка
контрастность 18 (Vee) Выход DC-DC преобразователя
+5V+10Ohm 19 (A) + питания подсветки
GND 20 (K) - питания подсветки

Поясняем наличие резистора в узле подсветки. Согласно электронным характеристикам прибора (т.е. ЖК индикатора), его номинальное напряжение питания подсветки составляет 4,2V, максимальное 4,5V и этим самым резистором мы немного успокаиваем "нрав блокам питания". На фотографии задней стороны индикатора можно увидеть контактные площадки от CD-ROM-а, заботливо припаянные Альбертом.



Передняя сторона индикатора.


Задняя сторона индикатора.

Спаяли? Прежде, чем подключать, еще раз проверяем соответствие спаянного и схемы. Если всё верно, терпим! Не подключаем! Мы предполагаем, что вы уже подключили, но там ничего не видно кроме подсветки. :-).
Для того, чтобы вывести на индикатор какую-либо информацию, необходима программа обслуживающая индикатор, поэтому..

Вторая часть софтверная-программная.

Для начала необходимо разрешить программам, взаимодействующим с ЖК индикаторами работать напрямую с LPT портом. Для этого потребуется установить драйвер прямого доступа к портам (Port I/O Driver), который лежит тут - port95nt . Затем потребуется перезапустить компьютер.
После этого, можно устанавливать программу, которая будет обслуживать наш ЖК индикатор. Их много было, остались самые стойкие. Одна скрипто-ориентированная (поддерживает огромное количество индикаторов), другая мышко-кликательная (напоминает, чем-то интерфейсы сред ООП). Название первой LCDHype , а второй LCDStudio (требует наличия в системе компонентов.NET). Каждый выбирает ту, что больше по душе.
Ниже представлены результаты запуска индикатора на стенде с программой LCDStudio. Экраны сделаны авторами в процессе освоения данной программы:



Часы и дата.


Немного системной информации.


Логотип.


Еще один логотип.

Резюме: Как мы видим, ЖК индикаторы производства Fordata прекрасно подключаются к LPT порту компьютера. Выбрав удобный софт - можно рисовать на этом индикаторе что угодно и даже выводить какую-нибудь полезную информацию.

Наблюдения: Замечено, что их изображение в LCDHype не "глючит" от runtime 1, как некоторые индикаторы отечественной фирмы МЭЛТ , который мы так и не смогли найти в наличии у местных дилеров. К недостаткам индикаторов этот факт ни коим образом не относим и даже стоит отметить, что сопровождение и информативность документации самого сайта фирмы МЭЛТ на момент написания статьи -находится на довольно высоком уровне.

Если вдруг, в результате манипуляций с оборудованием вы получите от драйвера сообщение такого плана: dlportio.sys device driver not loaded. Port I/O will have no effect. Не нужно паниковать! Исправляется эта проблема так: Запускаем regedit. Заходим в реестре в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\. В папке dlportio изменяем значение параметра Start на 1. Перезагружаем компьютер.

Желаем успеха при подключении ЖК индикаторов!

Вверх