Глава 12. Применение микроконтроллеров для ввода данных
Если разъединить выводы TD и RD не будет данных для ввода в COM порт. Необходимо внешние устройство способное передавать данные в формате, который сможет обработать микросхема UART. Лучше всего если это устройство само будет обладать встроенным UART - универсальным асинхронным приемопередатчиком. Наиболее популярным и дешевым устройством этого класса является восьмиразрядный микроконтроллер на базе архитектуры MCS-51 фирмы Intel. Всем известно, что пионером в разработке микропроцессоров является фирма Intel. В 1976 году появился шестнадцатиразрядный процессор 8086, в 1982 году появился 80286, а в 1985 тридцатидвухразрядный 80386 и так далее до 80586 (Pentium). Одновременно с этим фирма Intel разработала архитектуру MCS-51 семейство микропроцессоров этой архитектуры обозначают 8051. Этот процессор является младшим братом больших процессоров и устройства на его базе (называются микроконтроллеры) выпускают такие известные фирмы, как Intel, Siemens, Atmel итп. Данные устройства обладают памятью, процессором, регистрами итп. Вы можете запрограммировать микроконтроллер на языке ассемблер или С. К выводам микроконтроллера можно припаять выводы АЦП(аналого-цифровой преобразователь), в результате, чего аналоговые данные попадут в регистры микроконтроллера. Когда данные попали в микроконтроллер, процессор микроконтроллера может обработать их по программе (часто говорят, что память микроконтроллера прошита программой). В связи с тем, что в микроконтроллере встроен UART он может отправить их в COM, где их примет UART персонального компьютера. Если соединить выводы RD–TR и TR-RD персонального компьютера и микроконтроллера данные будут поступать в компьютер от внешнего источника. Если не использовать COM порт и микроконтроллер, пришлось бы выходить непосредственно на шину компьютера. Для этого необходимо самостоятельно разработать плату и подключить ее через разъемом PCI (или другой) к системной шине, а так же написать драйверы для этой аппаратуры (использовать DDK). Такие устройства как правило выпускают высокотехнологические компании такие как Siemens, Schneider Automation, ABB, Omron итп.
Вы можете самостоятельно спаять подобное устройство (в сети интернет можно найти схему), но не забудьте, что для него еще надо написать программу (мало кто выкладывает прошивки для микроконтроллеров) и ввести ее (прошить) в память микроконтроллера с помощью специального программатора. Кроме того если у вас нет специального оборудования для пайки и контроля, вам вряд ли разрешат применение этого устройства в промышленности (особенно там где требуется сертификация и лицензирование). Проще воспользоваться готовым к применению, дешевым, прошедшим сертификацию устройством (как правило китайским). На сегодняшний день розничная цена данной продукции составит около шести тысяч рублей за устройство для ввода восьми аналоговых параметров. Доступную по цене линейку устройств предоставляет тайваньская фирма ICP DAS (I-7000), похожие устройства выпускают Advantech (ADAM-4000) и AdLink (NuDAM-6000), а так же другие производители. Если вы живете в Москве или Санкт-Петербурге можете быть уверены, что несколько продавцов данной продукции в вашем городе имеются. Если вы живете в других городах заказ подобного устройства можно сделать по интернету.
Для демонстрации ввода аналоговых данных в персональный компьютер я выбрал устройство I–7017RC (фирма ICP DAS), подключенное к персональному компьютеру через конвертор RS-485/RS-232 I-7520AR так же фирмы ICP DAS, который позволяет удалить контроллер ввода аналоговых данных до 1,2 километра (обычный RS-232 устойчиво работает на расстоянии около 10 метров, RS-232 требует трех проводов и не может работать с большим числом устройств). В память котроллера уже внесена программа, реагирующая на подачу несложных команд (в формате ASCII) с персонального компьютера. Устройство I–7017RC размещается в пластиковом корпусе снабженным разъемами для проводов. Если отвернуть два болта и открыть крышку вы обнаружите микроконтроллер фирмы ATMEL, обладающий архитектуру MCS-51(8051), а так же “на борту” устройства находится АЦП фирмы ANALOG DEVICE .(Рис.
1).
Рис. 1
Микропроцессор устройства “прошит” программой способной реагировать на команды в формате ASCII. В ответ на команды контроллер передает значения с входов АЦП (контроллер физически соединен с АЦП) с помощью UART на вводы RD-TR COM порта. Диапазон значений на каждом из восьми входах устройства должен находится в пределах от 0 до +/-20мА (знак зависит от направления тока). Вы можете интерпретировать эту величину в вашей программе по собственному усмотрению. Для начала работы вы должны собрать схему, показанную на рисунке
2.
Рис. 2
В схеме на каждый канал используются регулируемые сопротивления СП4-1 2К2 (примерно 2200 Ом) мощностью 0,5 Вт и ограничивающие резисторы, которые вы сами можете подобрать по закону Ома. Источником тока для входов АЦП может служить батарейка на 9 вольт. Для питания контроллера и конвертора RS-485/RS-232 используется отечественный блок питания на 24 вольта. Изменяя сопротивление мы меняем значение тока на входах АЦП. Если вместо сопротивления будет датчик воспринимающий механическое воздействие, то можно представить на экране компьютера в графической форме различные технические процессы. В сборе вся конструкция умещается на журнальном столе (см. рисунок
3).
Рис. 3
В данном случае задействованы четыре аналоговых входа. В папке COMPort/DCON находится программа демонстрирующая, как с помощью команд в формате ASCII извлекать данные из регистров микроконтроллера. Сами команды и их описания прилагаются к устройству I-7017RC и названы производителем протоколом DCON. Для начала необходимо выполнить калибровку для этого запустите программу из папки COMPort/DCON и в поле “Пишем” введите строку - %00000D0600. Если все сделано правильно при нажатии кнопки “Читаем” в поле появится строка – “!00” с символом перевода строки. Это говорит о том, что вы получили ответ на запрос %00000D0600. В запросе два нуля после процентов означают адрес модуля (в нашем случае одно устройство поэтому и его адрес 00). Диапазон адресов от 0 до FF (0 255). Всего можно подключить 256 устройств каждое по восемь каналов, то есть можно ввести 2048 параметров. Следующие два нуля нужны если вы хотите изменить адрес. Значение 0D подтверждает, что используется диапазон 0-+/-20мА. Значение 06 определяет скорость 9600 бит/сек. Два нуля в конце определяют формат передачи данных. Он будет представлен в значениях от нуля до двадцати. Если ответом будет “!00” то микроконтроллер соглашается работать на этих условиях. Введите в поле “Пишем” строку ~00E1. Это запрос на разрешение калибровки, ответом должно быть !00. После этого вы должны установить ток соответствующий нулю (не обязательно ноль можно выбрать диапазон в пределах 0-20ма). После этого введите в поле “Пишем” значение $001. Теперь значение тока зафиксированное в этот момент будет соответствовать нулю. Установите значение тока соответствующие 20. Это значение не должно превышать 20мА. Проделайте данную операцию для всех аналоговых входов, которые собираетесь использовать. Выполните команду #00, в ответ на которую в поле “Читаем” (после нажатия кнопки) появятся значения всех входов (Рис.
4).
Рис. 4
Если нужно узнать значение на конкретном входе надо задать команду #00N, где N значение одного из восьми вводов. Серия модулей I-7000 включает большое количество устройств аналогового и дискретного ввода/вывода построенных на связке микроконтроллер АЦП. Другие производители так же предлагают широкий выбор устройств. Теперь когда мы смогли ввести данные в персональный компьютер, можно создавать приложения, использующие графический интерфейс для отображения внешних данных.