Как выглядит lpt порт на компьютере
Главная > Кому интересно.
Как управлять домашними электроприборами с компьютера
Данная статья ориентированна в первую очередь для тех,
кто плотно занимается компьютерами и имеет хоть какой-то
навык работы с паяльником, хотя это не обязательно, т.к. эту
систему сможет сделать любой человек.
Начну с постановки задачи .
Итак, мы хотим сделать устройство, которое бы управляло домашними электроприборами посредствам команд,
посылаемых с компьютера.
Под управлением домашними электроприборами понимается в первую очередь то, что вы сможете их включать и
выключать с компьютера. Например, можно включать и выключать свет в комнате, нажав кнопку, в написанной вами
программе, или также включать и выключать свет через определённый промежуток времени. Вариантов множество,
главное проявить немного фантазии.
Для реализации этой задачи нам потребуется разобраться с устройством LPT порта (место куда подключаются
относительно старые принтеры, сейчас обычно они подключаются на USB ). Помимо этого нужно будет написать
программу, управляющую LPT портом и спаять простую схему через которую к компьютеру подключались бы устройства
работающие с напряжением 220 В.
Устройство LPT порта
— Так выглядит разъем на компьютере . Вам нужно будет купить штекер на этот разъём. Т.е. ту
штуку у которой такое же количество (25) штырьков. Каждый штырёк, как и отверстие во входе, имеет своё назначение.
Нас интересуют штырьки с номерами 2-9 и 18-25.
Штырьки со 2-го по 9-й — это штырьки, на которые посылаются команды с компьютера. Штырьки 18-25 — это земля. В
последствии их нужно будет соединить вмести.
Физически LPT порт организован так что, когда мы посылаем команду на порт, на определённых штырьках, в зависимости
от того какое число было послано, возникает логическая единица, т.е. возникает потенциал между штырьком и » землёй » .
Если на порт послано число 1 потенциал возникнет между 2-м штырьком и землёй и т.д.
Т.е. мы имеем возможность управлять восьмью разными приборами.
Схема для подключения к LPT порту компьютера
Итак как же подключить к LPT порту бытовое устройство?
Всё просто. Для этого нужно спаять простенькую схему.
Принцип действия тоже прост: когда на штырьке порта появляется лог1 (напряжение 2.6В) светодиод внутри опт-пары
( DD1 ) загорается и фото-транзистор начинает пропускать ток из эмиттера в коллектор, с коллектора опт-пары ток 12В
проходя через сопротивление (4.7K) уменьшается до нормального тока требуемого базой транзистора КТ815Г. Транзистор
открывается и пропускает ток из эмиттера, к которому с реле текут электроны, в коллектор, к которому
непосредственно подключена земля (-). Реле срабатывает. А в свою очередь к коммутируемым контактам реле вы
можете подключить любой электроприбор, используя реле как выключатель.
Таким образом, если собрать 8 таких схем (схему из 8 одинаковых блоков) мы получаем 8 управляемых с компьютера
Всё. Дело сделано. Осталось написать простенькую программу, которая посылала бы команды (числа 1, 2, 4, 8, 16, 32,
64, 128), устанавливая логическую единицу на соответствующих штырьках, тем самым замыкая реле, на
соответствующ е м блоке.
Программа для управления LPT портом
Пример программы я приведу на языке Visual Basic , т.к. только этот язык знаю хорошо.
Для работы программы, написанной на vb потребуются некоторые драйвера, т.к. напрямую из vb работать с LPT портом
нельзя. Драйвер можно скачать здесь. (Установив этот драйвер вы можете также посмотреть пример
написания программы на C++ )
Итак. Создаём стандартный проект. Подключаем стандартный модуль. В котором пишем :
Public Declare Function DlPortReadPortUchar Lib «dlportio.dll» (ByVal Port As Long) As Byte
Public Declare Sub DlPortWritePortUchar Lib «dlportio.dll» (ByVal Port As Long, ByVal Value As Byte)
В разделе формы (General) (Declarations) пишем :
Const IN_PORT As Integer = &H379
Const OUT_PORT As Integer = &H378
На форме создаём кнопку и текстовое окно. И пишем код :
Private Sub Command1_Click()
DlPortWritePortUchar OUT_PORT, Val(Text1.Text)
End Sub
На этом написание программы окончено. Теперь написав в текстовом окне число 1, 2 , 4, 8, 16, 32, 64, 128 и нажав
кнопку, мы пошлём команду на LPT порт, на соответствующий штырёк, сработает определённое реле и подключенное
устройство заработает. Послав 0 прибор выключится.
P.S. Для работы программы необходимо установить LPT порт в EPP положение. Сделать это можно в BIOS .
P. P. S. Ни в коем случае не подключайте напрямую к штырькам порта нагрузку больше, чем светодиод. Это может
повлечь за собой выгорание LPT-порта!
P.P.P.S Всё что вы будите творить со своим компьютером, в частности с LPT портом вы делаете на свой страх и риск.
Автор статьи ни какой ответственности за принесённый ущерб не несёт.
Если у вас возникли какие-либо вопросы присылайте их на адресс — rau@bk.ru
Разъем DB 25 (LPT)
штекер DB 25 (LPT)
гнездо DB 25 (LPT)
Параллельный порт — тип интерфейса, разработанный для компьютеров (персональных и других) для подключения различных периферийных устройств. В вычислительной технике параллельный порт является физической реализацией принципа параллельного соединения. Он также известен как принтерный порт или порт Centronics. Стандарт IEEE 1284 определяет двунаправленный вариант порта, который позволяет одновременно передавать и принимать биты данных.
До появления USB параллельный интерфейс был адаптирован помимо принтеров к большому числу периферийных устройств. Вероятно, одним из первых таких устройств были электронные ключи для защиты программного обеспечения от копирования. Вскоре параллельный интерфейс нашёл применение в накопителях на гибких магнитных дисках Iomega Zip и сканерах, за которыми последовали и другие устройства: модемы, звуковые карты, веб-камеры, геймпады, джойстики, внешние жёсткие диски и CD-диски. Появились адаптеры для подключения SCSI-устройств через параллельный интерфейс. Могли подключаться параллельно и другие устройства, такие как EPROM и аппаратные контроллеры.
Для потребителей интерфейс USB, а в некоторых случаях Ethernet, эффективно заменили параллельный порт принтера. Многие производители персональных компьютеров и ноутбуков рассматривают параллельный порт как устаревшее наследие прошлого и больше не поддерживают параллельный интерфейс. Руководящие принципы для программы Windows Logo фирмы Microsoft «настоятельно рекомендуют» разработчикам систем воздерживаться от применения параллельных портов. Разработаны и доступны адаптеры «USB-параллельный интерфейс», которые позволяют подключать принтеры с параллельным интерфейсом к USB портам.
Порт ECP
Дальнейшим развитием параллельного порта явился порт ECP (Extended Capability Port). Скорость передачи данных по сравнению с EPP немного возрасла, в ECP, также как и в EPP, используется метод DMА. Он позволяет создавать цепочку из 128 устройств.
Одной из самых важных функций, рализованных в ECP, является сжатие данных. Это позволяет еще больше повысить реальную скорость передачи. Сжатие возмодно как программно, путем применения драйвера, так и аппаратно самой схемой порта. Для сжатия используется метод RLE (Run Length Encoding), при которм последовательность из повторяющихся символов передается двумя байтами: первый определяет повторяющийся байт, а второй — число повторений. Данная функция, однако, не является обязательной. Она работает только в том случае, когда и устройство поддерживает ее. Если таковой поддержки нет, то порт обменивается данными с устройством без сжатия.
Режимы параллельного порта (AT, EPP, ECP) можно выставить в CMOS Setup. Если вс работает нормально, то в любом случае ставьте EPP/ECP. Если порт поддерживает эти режимы (а это любой современный параллельный порт), то эта опция, как правило, уже установлена как оптимальное значение.
LPT (mode EPP, 0,5- 1,7 Mбайт/с)
LРТ порт один из самых простых и доступных, для использования портов параллельного интерфейса входящий в состав любого персонального компьютера. Но по сегодняшним реалиям, он уходит в прошлое, уступая более компактным, быстрым и современным внешним интерфейсам типа USB, EATA, Ethernet, и другим. Однако для новичков и даже тем, кто с ним сталкивался, потрепал не мало нервов. Однако с него проще всего начать изучать взаимодействие аппаратно-программной части персонального компьютера с любым внешним устройством, с которым оно должно общаться.
Проект LPT, который мне удалось сделать, выполнен на микросхеме типа CPLD XC95144XL фирмы Xilinx, программное обеспечение написано для ОС — Windows 98/ME/XP. Режим работы данного параллельного порта выбран не случайно – EPP. Реально максимально возможная скорость передачи данных лежала в пределах 0,5 -1,7 Мбайт/с, что для некоторых задач вполне хватало.
Чтобы Вам не терять время, которое мне пришлось потратить на изучение всех режимов работы данного LPT порта, его программирование, особенностей программирование портов для операционных систем Windows 98/ME/XP, выбор элементной базы для проекта, создание принципиальной схемы, печатной платы и других тонкостей, включая проектирование и создание битового потока для ПЛИС типа CPLD XC95144XL. Есть два пути: коммерческий и некоммерческий. При коммерческом способе (с соблюдением конфендициальности секретов Ноу-хау) — Вы получаете самую полную информацию по данному проекту, экономя свое драгоценное время и финансы. При некоммерческом способе — Вы можете получить только незначительную часть того, что необходимо или использовать в качестве справочной информации.
Ну, пожалуй начнем….
Сам адаптер параллельного LPT порта представляет собой часть контроллера размещенного на материнской плате любого персонального компьютера и состоит из набора регистров, расположенных в пространстве ввода/вывода. Регистры порта адресуются относительно базового адреса порта (378h или 278h). LPT порт может использовать линию запроса аппаратного прерывания, обычно IRQ7 или IRQ5. Наличие LPT порта указывает на присутствие в задней стенке или в другом месте – разъема с 25 контактами типа DB-25 (мама). Параллельный LРТ порт имеет внешнюю 8-битную шину данных, 5-битную шину сигналов состояния и 4-битную шину управляющих сигналов.
Для настройки режима LPT порта нужно войти в ВIOS материнской платы. BIOS разных производителей не сильно отличаются друг от друга, но и бывает так, что не все режимы можно установить из-за урезанных дешевых контроллеров, которые эти режимы не поддерживает. Нас будет интересовать установка “чистого” режима — EPP. Отсутствие такового говорит об урезанном контроллере и для дальнейших манипуляций нет гарантий стабильной работы даже в режиме ECP+EPP. Бывают еще дополнительные настройки данного режима — EPP 1.7 или EPP 1.9, но это другая история.
Подробно описывать режим EPP не буду, так как литературы достаточно. А основные преимущества отмечу:
Во-первых, все информационные и управляющие сигналы для каждого из 4-х режимов (цикл записи данных, цикл чтения данных, цикл записи адреса, цикл чтения адреса) формируются аппаратно.
Во-вторых, в этом режиме достигаются высокие скорости обмена для данного интерфейса, за счет выполнения внешней передачи во время одного процессорного цикла ввода/вывода.
В третьих, гибкость и автоматическая подстройка под длительность всех фаз обмена и длину кабеля, позволяет иметь простую отладку и программирование устройства сопряжения с персональным компьютером.
Данный проект представляет собой устройство сопряжения между LPT портом персонального компьютера и внешним устройством, которым нужно управлять. Это может быть и память типа FLASH, различные микропроцессорные контроллеры, датчики и т. д.
Реальная скорость передачи данных лежит в пределах от 0,5 Мбайт/с до 1,7 Мбайт/с. Не много, но достаточно, для большинства задач, которые могут быть выполнены на данном интерфейсе. Поскольку слишком много факторов влияют на данную скорость, рекомендую для достижения максимально возможной и стабильной скорости придерживаться следующих некоторых из правил:
— не увеличивать длину кабеля более 1,5 метров, для избежания удлинения циклов записи и чтения из-за вносимых кабелем задержек;
— не пользоваться прямым обращением к портам ввода/вывода с помощью ассемблерных инструкций в среде Windows XP, из-за особенностей программирования для данной операционной системы. В других более ранних версий намного проще;
— не забывать про согласование приемных и передающих цепей интерфейса;
— использовать правила конструирования печатных плат и некоторые особенности схемотехники, позволяющие достигать высокие скорости возможные для данного LPT порта.;
— по мере возможности, использовать в персональном компьютере процессор с максимальной частотой и большей оперативной памяти, особенно если это необходимо для работы на ОС Windows XP.
— ну и еще чего много надо, но это ноу-хау!
Теперь поговорим о ПЛИС…
На сегодняшний день существуют два основных типа ПЛИС (Программируемые Логические Интегральные Схемы)отличающихся друг от друга архитектурой построения внутренних программируемых комбинационных схем, способом загрузки, емкостью логических элементов, числом эквивалентных вентилей и т. д.:
— FPGA (Field Programmable Gate Array);
— CPLD (Complex Programmable Logic Devices).
В данном проекте в виду небольшого числа требуемых для реализации логических элементов и триггеров, подойдет ПЛИС типа CPLD XC95144XL фирмы Xilinx. Подробное описание на русском языке по данной микросхеме, Вы можете свободно скачать по адресу: http://www.plis.ru/pic/pict/File/9500xl_rus.pdf. Здесь достаточно понятно описывается внутренняя структура ПЛИС типа CPLD.
Отмечу только некоторые особенности и принципы программирования ПЛИС типа CPLD.
— для того чтобы запрограммировать данный тип ПЛИС необходимо иметь загрузочный JTAG-кабель. Принципиальную схему данного кабеля для подключения через LPT порт можно скачать по адресу: http://www.plis.ru/pic/pict/File/jtag_cable.pdf. Если позволяют финансы, то лучше купить готовый кабель, стоимость которого не велика (25$). Есть загрузочный JTAG-кабель для USB-порта, но стоит намного дороже, в зависимости от того с отладочной платой его брать или без нее. Для удобства отладки в дальнейшем, лучше брать именно загрузочный JTAG-кабель для USB-порта, поскольку отпадет проблема отключать и снова подключать его в варианте для LPT порта, устройство которое реализовано в данном проекте тоже подключается к LPT порту! Можно и обойтись и двумя компьютерами, можно одним компьютером и коммутатором для LPT порта. Кому как нравится, выбор за Вами.
— загрузка битового потока осуществляется через специально выделенные выводы JTAG-порта (TCK, TDI, TDO, TMS). Сам битовый поток создается с помощью специальной системы проектирования, предоставляемый производителем (в нашем случае — Xilinx) на платной или бесплатной основе. Для простых и не больших проектов подойдет бесплатная и свободно скачиваемая версия – ISE WebPACK 9.2i. Для того, чтобы ее получить необходимо зарегистрироваться на сайте производителя для получения доступа к файлам на странице: http://www.xilinx.com/support/download/index.htm. Для сложных и больших проектов потребуются полнофункциональные, новые версии — ISE 9.2i, ISE 10.1i или более поздние. Производитель предоставляет 60-ти дневные версии для ознакомления, а потом все равно требуется иметь лицензию. Как работать и какую использовать систему проектирования рассмотрим позже.
— во время загрузки, в виду особенностей технологии и реализации внутренних схем, используемых в ПЛИС, не рекомендую подавать тактовые сигналы на выводы, а особенно на управляющие выводы глобальных сигналов тактирования (GCK) для нормального завершения процесса загрузки.
— для избежания выхода из строя выводов микросхем ПЛИС, используете рекомендации по согласованию выходных уровней сигнала, описанных в документации на микросхему CPLD XC95144XL фирмы Xilinx.
— еще чего много надо, но это опять ноу-хау!
Дальше немного о системе проектирования, которое необходимо использовать для создания битового потока ПЛИС…
В настоящее время, системы проектирования имеют направленность к тому, чтобы разработчик использовал языки программирования для описания схем — VHDL или Verilog. Мотивируя это тем, что это удобно и быстро. На самом же деле смысл заключается в том, что созданный ранее проект можно перенести на другую платформу или другой проект. Один написал, а другие этим пользуются. К сожалению, я бы не пошел таким путем, и не посоветовал бы и Вам идти на начальном этапе. Использовать эти языки можно, но схемотехника всегда останется главным языком разработчика, что все же пока сохраняется в системах проектирования, как один из способов создания принципиальной схемы.
Я пытался работать во многих системах проектирования выпускаемых фирмой Xilinx. Начиная от XACT 6.0 и кончая, последней версией, на сегодняшний день — ISE 10.1. Более понятной, простой, удобной и удачной версией считаю – ISE Foundation 4.1i. Единственными минусами будут не возможность использовать самых современных кристаллов и новых средств отладки схем, что возможно в более новых версиях. Однако частое смена версий (каждый год), большое число ошибок, неграмотное программирование отдельных модулей под ОС Windows XP или Windows Vista, не оптимизированный компилятор упаковки в кристалл, и еще много чего вызывает отвращение с одной стороны, и появление новых инструментов отладки с другой стороны вызывает восторг. Ну, это уже так производитель сам выбрал путь, оставляя нам лишь выбирать то, что душе угодно. Можно воспользоваться сторонними производителями систем проектирования, выбрать другого производителя ПЛИС (Altera), но поверьте там тоже, есть свои достоинства и недостатки, c которыми мне то же приходилось сталкиваться. Свой выбор я сделал в пользу фирмы Xilinx, как самый крупный лидер на мировом рынке микросхем программируемой логики.
Общим для всех версий систем проектирования, выпускаемых фирмой XIlinx, все равно остается – битовый поток, который можно загружать из любой версии. Однако перенести проект из старой версии в новую, или наоборот – это проблема, которую исправлять никто не хочет, да и зачем, всем нужно сорвать деньги. Но это другая история…
Системы проектирования всегда стоили не мало, и где их взять каждый решает сам. В нормальном обществе за все надо платить, к этому рано или поздно даже в нашей стране это будет. Но есть и другая сторона вопроса сколько платить? Ни для кого не секрет, что в Интернете есть полно пиратов, которые продадут Вам за гроши данные системы проектирования, или много keygen-ов с помощью которых можно взломать даже 60-дневные версии. Но Я сторонник – легального или свободного распространяемого программного обеспечения. Платили бы нормальную зарплату и даже домой можно купить – если надо.
Так что для начала и для не больших проектов подойдет бесплатная и свободно скачиваемая версия – ISE WebPACK 9.2i.. Ну если позволяют финансы, то лучше обратиться к одному из дилеров фирмы Xilinx в России – Инлайн Групп.
Вот и добрались до самого проекта…
Данный проект выполнен в виде устройства сопряжения между компьютером и внешним устройством, в моем случае для управления накопителем на FLASH памяти. В принципе устройство сопряжения получилось универсальным и может использоваться для управления любым устройством имеющий скорость передачи данных не более 1,7 Мбайт (13,6 Мбит). Основой проекта служит ПЛИС типа CPLD XC95144XL фирмы Xilinx. Данная микросхема программируемой логики содержит 144 макроячейки, что эквивалентно 3200 вентилям. В каждой макроячейке содержится по одному триггеру, таким образом, всего в нашем распоряжении — 144 триггера. Для того, чтобы согласовать внешнее устройство с LPT портом персонального компьютера по протоколу EPP, вполне хватит данных ресурсов ПЛИС. Поскольку протокол EPP позволяет формировать все сигналы аппаратно, это сильно упрощает задачу и экономит ресурсы ПЛИС.
Само устройство сопряжение выполнено на двух сторонней печатной плате:
Размеры и габариты значения не имеют, каждый может изменять их по своему усмотрению. Одно остается неизменным – принципиальная схема данного устройства, в которую мало кто будет изменять или дополнять. Так как мною уже пройден длинный путь и учитывая замечательное свойство выводов ПЛИС – быть программируемым на любую функцию внешнего вывода, то это сильно упрощает саму разводку печатной платы и компоновку элементов печатной платы. Грамотная разводка печатной платы – является одним из главных факторов влияющих на работоспособность любого электронного устройства. Приводить здесь принципиальную электрическую схему и монтажную схему печатной платы мне бы не хотелось бы (ноу-хау), но структурную схему представляю для пояснения данного проекта.
Сама структурная схема выглядит так:
Самая сложная и интересная часть данного проекта — отладка и стыковка программной и аппаратных частей между собой. Тут надо четко понимать, что главным элементом управления является персональный компьютер (PC), а не подключенное к нему периферия, которая тоже может содержать собственные микропроцессоры, контролеры и т. д. Поэтому в данном проекте протокол связи и обмена информации между персональным компьютером и периферией, через устройство сопряжения продуман так, чтобы добиться максимальной возможной скорости передачи данных, надежной и простой системы обмена информации, минимальных требований к написанию программной части проекта.
Программное обеспечение для данного проекта работает и написано для операционных систем семейства Windows 98/ME/XP. Здесь тоже полно подводных камней и хитростей, которые нужно будет учитывать при написании и использовании драйвера устройства сопряжения, для каждой из операционных систем семейства Windows в отдельности. При написании программы всегда нужно играть по правилам самой Microsoft, а именно использовать функции WinAPI и знать как обойти защиту ядра системы. Нужно учитывать уровень приоритета на прерывания от периферии и грамотно программировать, и по мере необходимости использовать готовые решения других производителей.
Для отладки данного проекта необходимо использовать предусмотренные контрольные точки, которые можно проконтролировать с помощью цифрового логического анализатора или осциллографа.
В целом проект получился удачным и может быть легко перестроен под другую задачу. Не смотря на то, что LPT порт устаревает, скорость считывания данных (до 13,6 Мбит/с) выше, чем у Usb-порта работающего в режиме Full speed, где теоретически возможна скорость передачи до 12 Мбит/c, реально намного ниже 5 — 11 Мбит/с, но это другая история.