Компьютерный век короток: не прошло и полгода, а уже требуется апгрейд. А если упустить время и не провести модернизацию вовремя, может случиться так, что и апгрейд не поможет. Тогда придется покупать новый компьютер, а старый или продавать по бросовым ценам, или оставить для игр. Но рано или поздно наступает момент, когда старые игры надоедают, а новые "старичок" не тянет. Тогда ему прямая дорога в далекий темный угол - обрастать пылью. Причем вышесказанное относиться не только к системным блокам, которые олицетворяют собственно компьютер, но и к мониторам, принтерам, мышам и тараканам. Сколько такой устаревшей оргтехники валяется по подвалам, гаражам и подсобкам! И выбросить жалко, и пользы никакой. Можно попробовать сдать ее начинку на драгметаллы, но выручка от этой операции будет столь ничтожна, что занятие становится бессмысленным. Но ведь в большинстве случаев 286-й (к примеру) компьютер, хоть и безнадежно устарел, но работоспособен. Надо только задуматься: чем кроме вычислительной и печатной машины может быть компьютер? Если машина 486-я, ее можно, конечно, использовать как проигрыватель компакт-дисков или установить ТВ-тюнер и приспособить на кухне под просмотр сериалов. Но согласитесь, загромождать и так небольшую (как правило) кухню монитором, колонками, системником, плюс кучей кабелей - это слишком. Проще купить небольшой телевизор (а если он уже есть, то зачем вам их два?). А что делать с "двушкой" или ХТ? И тут надо вспомнить, что компьютер обладает одной особенностью, которой лишены почти все бытовые приборы - он может быть машиной управляющей. Управляющие возможности компьютеров используются в настоящее время весьма широко. У всех на слуху выражение: "автомобиль с бортовым компьютером", однако ни в салоне, ни под капотом, ни в багажнике автомобиля мы не найдем ни монитора, ни клавиатуры, ни мышки - бортовой компьютер автомобиля представляет собой спрятанный под приборной панелью блок с кучей проводов. Более правильно его надо было бы назвать: "управляющий микропроцессорный контроллер". Но если микропроцессорный контроллер может быть "компьютером", почему бы компьютеру не выполнять функции управляющего контроллера? Управляющий контроллер (компьютер) сам в реальном времени управляет оборудованием или процессом, он "знает", когда и какое воздействие необходимо оказать, отслеживает параметры процесса и выдает необходимую информацию оператору. Достигается это при помощи специально написанных программ и механизма обратной связи. В промышленности для таких целей широко используют программируемые микропроцессорные контроллеры, при необходимости работу которых координирует центральный компьютер. Для выполнения функций центрального управляющего компьютера быстродействия и АТ и ХТ для большинства процессов более чем достаточно. Попробуем приспособить их для нужд управления. Для связи с внешним миром компьютер использует порты асинхронного последовательного адаптера (порт RS-232) и параллельный адаптер (порт принтера). Большинство управляющих компьютеров для связи с нестандартным оборудованием (а контроллеры производственных процессов - для компьютера оборудование нестандартное) используют асинхронный последовательный порт. Последовательная передача данных предполагает, что данные передаются с использованием одной линии. При этом биты байта данных передаются по очереди с использованием одного провода. Для синхронизации используется специальный бит. Существуют специальные микросхемы, предназначенные для организации связи по последовательному порту. На их основе строятся специальные процессоры связи, не уступающие по сложности материнской плате компьютера. Для этих же целей пишется специальное, программное обеспечение для управления любым процессом. В силу всего этого задача осуществления управления через последовательный порт довольно сложна. Поэтому далее будем рассматривать построение управляющего компьютера на основе связи через параллельный "принтерный" адаптер. Но вначале немного теории (которую изучить желательно, но не обязательно).
Разъем и порты параллельного адаптера.Описание разъема параллельного адаптера обычно есть в документации на принтер. Приведем таблицу назначения контактов разъема адаптера, а также соответствующих контактов разъема принтера. Нагрузка на выходную линию параллельного адаптера не должна превышать одного входа ТТЛ.
Контакты разъема адаптера | Контакты разъема принтера | Назначение | Вход/выход |
1 | 1 | Строб | Выход, инверсия |
2 | 2 | Данные бит 0 | Выход |
3 | 3 | Данные бит 1 | Выход |
4 | 4 | Данные бит 2 | Выход |
5 | 5 | Данные бит 3 | Выход |
6 | 6 | Данные бит 4 | Выход |
7 | 7 | Данные бит 5 | Выход |
8 | 8 | Данные бит 6 | Выход |
9 | 9 | Данные бит 7 | Выход |
10 | 10 | ACK Подтверждение |
Вход инверсия |
11 | 11 | BUSY Занято |
Вход |
12 | 12 | PE Конец бумаги |
Вход |
13 | 13 | SLCT Выбор |
Вход |
14 | 14 | Автомат. перевод строки | Выход инверсия |
15 | 32 | ERROR Ошибка |
Вход инверсия |
16 | 31 | INIT Сброс |
Выход инверсия |
17 | 36 | SLCTIN Принтер выбран |
Выход инверсия |
18-25 | 15-30, 33 | Земля | - |
Каждый параллельный адаптер обслуживается несколькими портами ввода/вывода.
Порт 378Н
Доступен для чтения и записи. Предназначен для вывода данных.
Порт 37АН
Доступен для чтения и записи. Предназначен для управления принтером
Таблица значений разрядов порта 37АН | |
Разряд | Описание |
0 | Строб данных; принимает значение 1 при выводе байта Выход |
1 | AUTO Автоматический перевод строки Выход |
2 | INIT Сброс; активный уровень - 0 Выход |
3 | SLCT IN Принтер выбран Выход |
4 | IRQ Разрешение прерывания Вход |
5-7 | Не используются, соединены с нулем |
Порт 379Н
Доступен для чтения.
Таблица значений разрядов порта 379Н | |
Разряд | Описание |
0-2 | Не используются, соединены с нулем |
3 | ERROR Ошибка Вход |
4 | SLCT Выбор Вход |
5 | PE Конец бумаги Вход |
6 | ACK Подтверждение Вход |
7 | BUSY Занято Вход |
Байты данных для вывода устанавливаются в порт 378Н. Затем через 0,5 мс линия СТРОБ переводится с высокого в низкий уровень, после чего происходит запись информации во внешнее устройство. Входные сигналы удобно считывать с порта 379Н.
Доработка компьютера до возможностей управляющего контроллера.Исходя из низкой нагрузочной способности параллельного адаптера, логично построить некий Модуль Согласования (МС), который будет принимать, хранить, усиливать управляющий сигнал и осуществлять управление. Одновременно МС может принимать внешние входные сигналы, их преобразовывать и передавать в компьютер. Очевидно, что простейшая схема МС будет иметь конфигурацию 8 выходных сигналов (каналов управления), 6 - входных, как показано на структурной схеме МС.
Рис.1. Структурная схемаНа основании схемы структурной строим схему электрическую принципиальную.
Рис.2. Электрическая принципиальная схемаМС подключается к параллельному порту ПК стандартным "принтерным" кабелем Cetronix, обозначен на схеме - А1, с указанием контактов разъема адаптера. Датчики К1-К5 работают на замыкание. Микросхема К155ЛН4 служит для некоторой защиты адаптера от неблагоприятных внешних воздействий (в случае чего, проще заменить одну микросхему, чем весь адаптер). Можно использовать и другие элементы типа ЛН той же серии, например 155ЛН1, 155ЛН2, но в таком случае при обработке сигнала надо будет учитывать инверсию. При замыкании одного из ключей К1 на соответствующем входе логического повторителя высокий уровень сменяется низким, и на вход адаптера поступает сигнал изменения внешнего воздействия и заносится в порт 379Н, либо в 37АН (сигнал "разрешение прерывания") и затем обрабатывается программой. В ответ на внешние воздействия компьютер в соответствии с алгоритмом вырабатывает управляющие сигналы. Управляющая информация записывается по шине данных в регистр RG после прохождения стробирующего сигнала на вход С микросхемы КР1533ИР23. ТТЛ выход регистра защищен диодами КД522Б и резистором номиналом 130 Ом. Затем сигнал усиливается блоком усиления БУ0-БУ7, собранным в виде транзисторного ключа на элементах Т1,Т2. Напряжение питания на транзисторный ключ подается в зависимости от применяемого реле от +5 до +24В. Реле РП21 или аналогичные. Напряжение питания микросхем +5В. Вот и вся аппаратная часть. Можно приступать к программному обеспечению.
При программировании управляющего сигнала нужно иметь в виду, что управление осуществляется сразу по всей шине данных. Например, если вначале был включен бит DАТА 0 (десятичный код 1, двоичный- 000000001), а затем возникла необходимость включить бит DАТА 1, не выключая DАТА 0, то надо подавать управляющий сигнал = 3 (00000011 двоичный). При управляющем сигнале=2 (00000010) произойдет отключение бита DАТА 0. Нужно также иметь в виду, что некоторые языки на прямую не поддерживают двоичный формат, поэтому, например в BASIC, все необходимые управляющие сигналы надо привести к десятичному формату. Входной сигнал считывается из МС в порт 379Н. Значимыми являются 4,5,6,7,8 биты порта. Опять же при необходимости надо привести входной сигнал к двоичному формату.
Управление портами осуществляется по алгоритму:
Загрузить в 378H управляющий сигнал
Загрузить в 37АH 1 (единицу- 00000001)
Очистить 37АH - 00000000
Загрузить в 37АH 1 (единицу- 00000001)
Чтение пришедших сигналов:
Прочесть 379H
Проанализировать биты 3,4,5,6,7
Вот как реализован этот алгоритм на языке BASIC:
10 REM ************* Обнуление констант и портов**************
g = 0 'выходной (управляющий) сигнал'
b = 0 'входной сигнал'
OUT &H378, 0: OUT &H379, 0: OUT &H37A, 0 'обнуление портов'
GO TO 100
20 REM ******** Выдача управляющего сигнала *************
OUT &H378, g
OUT &H37A, 1: OUT &H37A, 0: OUT &H37A, 1
RETURN
30 REM ********* Чтение входных сигналов ****************
b = INP(&H379)
REM *** b число десятичное его необходимо перевести в двоичное***
FOR n = 0 TO 7
IF b = 1 THEN c(n) = 1
b(n) = CINT(b / 2 - .4)
IF b(n) = b / 2 THEN c(n) = 0 ELSE c(n) = 1
REM интересуют сигналы : c(3), c(4), c(5), c(6), c(7)
b = b(n)
NEXT n
RETURN
Связь компьютера с МС происходит при выполнении подпрограмм, начинающихся строками 20 и 30. В общем случае при написании программ на BASIC достаточно в текст программы поместить фрагмент, выделенный красным цветом и в последующем к нему обращаться как к подпрограмме ввода/вывода. Алгоритм управления конкретным процессом строится с учетом этих замечаний и написание программ больше не имеет никаких особенностей.
Таким образом мы получили вполне работоспособный управляющий микроконтроллер, совмещающий в себе собственно контроллер и компьютер верхнего уровня. Кстати почувствуйте разницу: старое "железо" уже почти ничего не стоит, а новый самый простенький микроконтроллер "потянет" не менее 200$, плюс еще специальное ПО.
Несколько замечаний по теме.Превращение компьютера в универсальный контроллер не исчерпывается одним системным блоком. Все периферийные устроиства связываются с компьютером через соответствующие порты и программировние их заключается в программировании обращения к портам. Потому исходя из рассмотренного выше, можно сделать вывод о том, что:
Принтер есть ни что иное, как специализированный печатающий контроллер. Не составляет почти никакого труда превратить его в контроллер многофункциональный.
На самом деле, возьмем, например, матричный шестнадцати игольчатый принтер. Что мы имеем?
16 выходов- иголок
1 выход - звонок
1 выход - управление кареткой
1 выход - прогон листа
1 вход - наличия бумаги
1 вход - положения каретки
Итак, у нас почти готовый универсальный контроллер 2 х 19
Это только то, что видно невооруженным взглядом. А если еще почитать инструкцию?! :)
И если на все девятнадцать выходов принтера подключить, например, елочные гирлянды и запустить печать какого нибудь текста, например, этой статьи, то гирлянды добросовестно текст отмигают, а окружающие будут любоваться неповторяющимся хаотическим переключением гирлянд.
Клавиатура - может служить прекрасным (>100 разрядов) модулем входов. Нужно только клавиши - датчики на замыкание - установить в необходимых местах. А программу настроить на считывание скан - кода клавиш.
Звуковая карта - модуль ввода - вывода аналоговых звуковых сигналов, где микрофоны могут быть датчиками шума.
Мышь - датчик перемещения.
И так далее и тому подобное. В любом случае, компьютер настолько универсальная техника, что найти ему нетрадиционное применение можно всегда.
Примеры "нестандартного" использования компьютера.Самый простой пример - управление переключением елочных гирлянд. О применении для этих целей принтера уже говорилось. Но можно обойтись и без него - достаточно к "принтерному" разъему системного блока подсоединить Модуль Согласования и к контактам реле подключить гирлянды. Задача сводится к написанию управляющей программы. В том же BASIC для восьми гирлянд это может выглядеть так (с учетом ранее веденного кода стандартного обращения к портам):
50 REM ****************Таймер*************************************
i = TIMER
55 IF TIMER >= i + 1 THEN RETURN ELSE GOTO 55
100 REM *************** Задание констант*****************************
K11= 85 '01010101'
K12=170 '10101010'
K21=102 '01100110'
K22=153 '10011001'
K31=119 '01110111'
K32=136 '10001000'
K41=240 '11110000'
K42=15 '00001111'
K51=0 '00000000'
K52=255 '11111111'
110 REM ****************Чтение порта********************************
GOSUB 30
IF C(3)=1 THEN GOSUB 120
IF C(4)=1 THEN GOSUB 130
IF C(5)=1 THEN GOSUB 140
IF C(6)=1 THEN GOSUB 150
IF C(7)=1 THEN GOSUB 160
RETURN
REM *** Вклвыкл выходов согласно заданных констант***************
120 g=K11:GOSUB 20:GOSUB 50
g=K12:GOSUB 20:GOSUB 50
GOSUB 110
GO TO 120
130 g=K21:GOSUB 20:GOSUB 50
g=K22:GOSUB 20:GOSUB 50
GOSUB 110
GO TO 130
140 g=K31:GOSUB 20:GOSUB 50
g=K32:GOSUB 20:GOSUB 50
GOSUB 110
GO TO 140
150 g=K41:GOSUB 20:GOSUB 50
g=K42:GOSUB 20:GOSUB 50
GOSUB 110
GO TO 150
160 g=K51:GOSUB 20:GOSUB 50
g=K52:GOSUB 20:GOSUB 50
GOSUB 110
GO TO 160
END.
В начале бежит один огонь, затем, два, три, четыре, затем все гаснет и снова зажигается, после чего цикл повторяется. Очередность включения может быть и другой, в зависимости от предпочтений пользователя. Описанный метод можно применить и для более серьезного использования, например, для организации световых табло. Но в этом случае программа будет сложнее, должна работать в динамике, и МС придется немного доработать. Для этих целей надо использовать выходные сигналы порта 37АН: AUTO, INIT, SLCT, организовать через них 3-х разрядный счетчик, и через дешифратор управлять выбором индикаторов. Таким образом, можно получить световое табло " бегущая строка" из восьми символов. Используя сегментацию, длину "строки" можно наращивать. В общем случае возможности нестандартного применения компьютера ограничены только фантазией.
Страница статьи: http://www.radioland.net.ua/sxemaid-41.html
URL сайта: http://www.radioland.net.ua
© Radioland