Не спешите выбрасывать устаревший компьютер, продолжение
Доработка компьютера до возможностей управляющего контроллера.
Исходя из низкой нагрузочной способности параллельного адаптера, логично построить некий Модуль Согласования (МС), который будет принимать, хранить, усиливать управляющий сигнал и осуществлять управление. Одновременно МС может принимать внешние входные сигналы, их преобразовывать и передавать в компьютер. Очевидно, что простейшая схема МС будет иметь конфигурацию 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 биты порта. Опять же при необходимости надо привести входной сигнал к двоичному формату.
Управление портами осуществляется по алгоритму:
1. Загрузить в 378H управляющий сигнал
2. Загрузить в 37АH 1 (единицу- 00000001)
3. Очистить 37АH - 00000000
4. Загрузить в 37АH 1 (единицу- 00000001)
Чтение пришедших сигналов:
1. Прочесть 379H
2. Проанализировать биты 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-х разрядный счетчик, и через дешифратор управлять выбором индикаторов. Таким образом, можно получить световое табло " бегущая строка" из восьми символов. Используя сегментацию, длину "строки" можно наращивать. В общем случае возможности нестандартного применения компьютера ограничены только фантазией.
Услуги по установке осветительного оборудования (люстры, бра...), установке, замене, переносе розеток, выключателей; монтажу, замене скрытой/открытой электропроводки; разводке телефонных, ТВ, компьютерных линий; подключению стиральных машин с выводом отдельной линии в эл.щит; замене автоматов и многое другое...
Диагностика и ремонт электроники (компьютеры, сотовые телефоны, плееры, наушники, мультемидийные установки и другое).
Качественно, быстро, недорого...