Главная » Delphi » Преобразователи уровня UART/RS-232

0

Вопрос о том, как преобразовать уровни UART в уровни RS-232, имеет более важное значение, чем кажется. Так как UART и RS-232 оперируют с логикой противоположной полярности, то и для приема и передачи при этом удобно использовать простые транзисторные ключи, которые инвертируют сигнал (ах, как разработчики стандарта были предусмотрительны!). Такая схема преобразователя уровня показана на рис. П4.3. В ней мы использовали отмеченный ранее факт, что линия TxD со стороны компьютера большую часть времени пребывает в состоянии низкого уровня, и мы запасаем это напряжение на конденсаторе через диод, а потом используем его при передаче. Это несколько снижает входное сопротивление линии RxD устройства (и повышает аыходное TxD), но в принципе прекрасно работает, даже если байты идут туда-сюда сплошным потоком.

"Официальный" путь состоит в том, чтобы применять специальные микросхемы приемопередатчиков RS-232 (правильнее их было бы называть преобразователями уровня), это, например, МАХ202, МАХ232, ADM202 и подобные, которые содержат внутри преобразователь-инвертор напряжения. Вариант построения такой схемы показан на рис. П4.4. Выходные уровни вывода TxD здесь при интенсивном обмене не менее ±7 В.

Применение таких приемопередатчиков не решает одной проблемы — гальванической развязки устройства с СОМ-портом. А такая развязка очень даже может понадобиться— на корпусе компьютера "висит" обычно вполне при-

Рис. П4.3. Простейший вариант самодельного преобразователя уровней RS-232 — UART при соединении контроллера с компьютером

Рис. П4.4. Вариант одноканального преобразователя уровней RS-232 — UART на микросхеме МАХ202

личный потенциал6. Автор этих строк однажды чуть не убил одно несчастное животное (до сих пор в кошмарах вспоминается), когда проектировал

прибор для целей измерения внутричерепного давления у обезьян. Главная причина всей этой катавасии — в отсутствии, разумеется, нормального заземления в наших постройках, но даже в редчайшем случае его наличия все равно развязка не помешает. Один из вариантов такой развязки с использованием относительно быстродействующего оптрона типа 6N139 показан на рис. П4.5.

Верхняя часть схемы (оптрон D1) служит для передачи сигналов от контроллера к компьютеру. Сигнал TxD с контроллера должен иметь положительный уровень не ниже 4,5 В под нагрузкой, в противном случае следует увеличить номинал резистора RI.

Рис. П4.5. Вариант одноканального преобразователя уровней RS-232 — UART с гальванической развязкой и питанием от линии RTS

Положительный уровень сигнала, поступающего на вход RxD СОМ-порта. обеспечивается от линии RTS, заранее установленной в положительный уровень напряжения описанным ранее образом. Когда линия TxD СОМ-порта простаивает, то отрицательное напряжение с нее накапливается через диод VD2 на конденсаторе С2 и тем самым обеспечивается отрицательный уровень этого сигнала.

Приемная часть построена на оптроне D2. Ток через входной светодиод оптрона идет во время положительного уровня напряжения на линии TxD СОМ-порта, а диод VD3 защищает этот светодиод от обратного напряжения.

Со стороны контроллера питание выходного каскада оптрона D2 обеспечивается способом, аналогичным питанию выхода D1. Так как сигнал TxD контроллера почти все время находится в состоянии +5 В, это напряжение через диод VD1 накапливается на конденсаторе С1 и поступает на питание выходного транзистора оптрона.

Оптоизолятор выполнен в форме удлинительного кабеля для СОМ-порта. Разъем Х2 типа DRB и остальные детали, кроме разъема XI, монтируют на макетной плате размерами 30×60 мм. С противоположной от разъема стороны распаивают трехжильный плоский кабель примерно 0,5 м длиной, закрепляют его на плате и соединяют с разъемом XI. Разъем X1 может быть любого удобного типа, например, ЮС. После проверки плату затягивают в отрезок термоусадочного кембрика подходящего диаметра. Разъем Х2 вместе с платой втыкается прямо в СОМ-порт.

Источник: Ревнч Ю. В.  Нестандартные приемы программирования на Delphi. — СПб.: БХВ-Петербург, 2005. — 560 е.: ил.

По теме:

  • Комментарии