При разработке промышленных контроллеров и
других устройств часто требуется реализовать некоторое количество линий
цифрового ввода-вывода. Таких линий может потребоваться довольно много,
поэтому задействовать для каждой линии отдельный порт микроконтроллера не
всегда возможно. В такой ситуации может помочь рассматриваемый ниже расширитель
ввода-вывода.
Подсистема
цифрового ввода-вывода
Порты ввода-вывода
должны отвечать ряду требований. Выходные линии должны обеспечивать достаточный
выходной ток, иметь защиту от перегрузок по току и напряжению. Входные линии
должны иметь защиту от перенапряжений и обладать достаточной помехозащищенностью.
В то же время должна обеспечиваться совместимость с различными логическими
уровнями. Для экономии количества контактов разъемов удобно совмещать входные
и выходные линии, а направление обмена задавать программно. Для реализации
двунаправленых линий цифрового ввода-вывода хорошо подходят сдвиговые
регистры. Принципиальная схема подсистемы цифрового ввода-вывода показана на
рис. 1.
Выходные линии с
открытыми стоками удобно реализовывать на микросхемах TPIC6C595D. Эти
микросхемы имеют выходной каскад, который допускает ток до 100 мА и напряжение
до 30 В. Выходное напряжение ограничивается на уровне 33 В специальной внутренней
схемой, что защищает выходной транзистор от выбросов напряжения при коммутации
индуктивной нагрузки. Каждый выход имеет встроенную защиту от перегрузок по
току с уровнем ограничения 250 мА.
Цифровые входы
можно реализовать на обычном сдвиговом регистре с параллельным входом и последовательным
выходом, например, 74HC597D. Для того, чтобы защитить
его от высокого входного напряжения, в схеме применены диодные сборки VD1 ...VD8.
Эти сборки включены
таким образом, что внешние сигналы могут обеспечить на входах регистра только
уровень логического нуля, а уровень логической единицы обеспечивается
подтягивающими резисторами R1 .R8 Диоды также защищают входы от выбросов отрицательной полярности.
Для управления
регистрами требуется несколько цифровых сигналов. В первую очередь, это линии
стандартного последовательного интерфейса SPI: MOSI, MISO и SCK. Линия LOAD по фронту осуществляет
защелкивание данных в выходном регистре и может быть использована как выборка
устройства, если на шине SPI находится много
устройств. Линия ОЕ позволяет выключать все цифровые выходы одновременно. Она
используется, в частности, для предотвращения появления на выходах случайной
информации в промежутке между включением питания и загрузкой выходного
регистра. Захват входных данных происходит по фронту SCK при НИЗКОМ уровне сигнала SRLOAD регистра DD2. Для
экономии линий управления этот сигнал объединен с линией данных MOSI, в результате для загрузки данных в регистр DD2 можно передать по SPI нулевой байт.
Сдвиговые регистры
хороши еще и тем, что их можно каскадировать, включая в последовательную
цепочку. Таким способом можно наращивать количество линий цифрового
ввода-вывода, не расходуя порты микроконтроллера. Для каскадирования выходных
регистров нужно выход SER OUT предыдущего
регистра подключить ко входу SER IN последующего. Для каскадирования
входных регистров нужно выход ОН предыдущего регистра подключить ко входу SER последующего. Остальные
сигналы регистров подключаются параллельно.
Эквивалентная схема
линии цифрового ввода вывода показана на рис. 2.
Выходы шунтируют собой
входные линии, поэтому для работы на ввод нужно вывести в соответствующие
разряды высокий уровень. Из-за диодов, логический порог линий цифрового ввода
оказывается примерно на 0,7 В ниже, чем у регистра DD2 и составляет примерно 1,7 В. Такой порог хорошо согласуется как с ТТЛ,
так и с КМОП уровнями. Кроме того, линии цифрового ввода можно использовать
для приема сигналов с уровнем 24 В с релейной логики.
Леонид
Ридико
г. Минск
E-mail: wubblick@yahoo.com