Converter model 485a схема
Последнее время я делаю по большей части промышленные устройства и все чаще там используется именно RS-485. Потому как он используется как физический для множества протоколов, принятых в проме, таких, например, как MODBUS или ProfiBUS.
▌Принцип работы
Интерфейс RS485 хорош тем, что он, по сути дела, является дифференциальным вариантом RS-232 и его можно вешать на банальный USART любого микроконтроллера.
Физически он состоит из двух линий связи. А и B. Наличие земли желательно, но вовсе не обязательно. Отсутствие земли чаще всего чревато тем, что входящие данные будут иногда начинаться с нуля. Т.е. шлешь строку 0xBA 0xDF 0xF0 0x0D, а приходит 0х00 0xBA 0xDF 0xF0 0x0D, а дальше все нормально.
Исходный входной сигнал разделяется на два сигнала и они улетают вдаль по двум свитым проводам, витой паре.
По линии А идет прямой UART, как он есть, а по линии В его зеркальная копия. А в приемнике, на дифференциальном операционном усилителе, одно вычитается из другого и получается исходный сигнал.
Зачем это сделано? Зачем вообще такие сложности? Линия может длиться километры, да, для RS485 длина сегмента допускается до 1200 метров. На таком расстоянии сигнал, если его послать по одному проводу и земле, упадет на сопротивлении линии и до приемника дойдут считанные доли вольта. Тут же, у нас компаратор на входе усилит разность сигнала даже крошечной величины, восстановив исходный сигнал. Нет нужды четко соглассовывать уровень земли приемника и передатчика, на большом расстоянии это может быть тяжело решаемой задачей.
Это первое, но куда более важным является то, что таким образом намного увеличивается помехозащищенность самой линии. Ведь если рядом будет какая-то электромагнитная помеха, которая наведет на наш длиннющий провод колебание напряжения, то, так как оба провода идут рядом, во втором проводе наведется ТОЧНО такая же помеха. А поскольку у нас на входе сигнал разностный А-B, из помехи в проводе А будет вычтена такая же помеха в проводе В и она обнулится.
По такому же принципу, дифференциальной линии, делают очень многие критичные к помехам цепи. USB, Ethernet, LVDS да много где… где то линия одна, как в USB, где то их несколько, как в Ethernet или LVDS. Но суть остается той же.
Естественно по данной линии связи передача может идти только в одну сторону. Т.е. RS485 у нас полудуплексный. Мы вначале в него орем, а потом слушаем что нам ответили с другой стороны. Общаться в обе стороны, как в UART по Rx и Tx не выйдет. Ну или придется пускать уже четыре провода, одна для передачи, другая для приема.
В обычно в трансивере 485 интерфейса передатчик и приемник в одном корпусе, на одной линии, а направление выбирается ногой, уровень на которой определяет в каком режиме микросхема в приеме или в передаче.
На одной линии может висеть несколько приемников и передатчиков. Они подключаются просто параллельно.
Разумеется общаться они могут строго по одному и общий галдеж в линии приведет к полной неработоспособности всей сети. Никакого аппаратного арбитража на основе «приоритета нуля», как в I2C тут нет.
▌Железо
Классической микросхемой такого интерфейса служит MAX485 или ST485, или ADM485… В общем, если видите на плате восьминожку с надписью что-то там 485 — скорей всего это оно :)
Она подключается к USART микроконтроллера и еще нужна одна нога, чтобы указывать направление обмена. Прием у нас или передача.
Кроме микросхемы конвертера, содержащей в себе два компаратора-усилителя, нужные еще два резистора подтяжки и один терминатор, они задают первоначальное смещение линии и подавляют отражение.
Разберемся сначала с резистором-терминатором.
Сигнал идет по проводу быстро, но не мгновенно, более того, он дойдя до конца линии может отразиться и пойти обратно. Как вода в желобе, пускаешь по желобу волну, волна дошла до стенки и пошла обратно. И эта волна может столкнуться с волной следующего импульса, смешаться и получить полную кашу на выходе. Разумеется эти эффекты возникают только при длинных линиях (В ТОЭ прям есть раздел такой — длинные линии, разбирающий все эти волновые эффекты), либо на высоких частотах. Так как с ростом частоты «длинной» может стать линия даже в 5см, например, когда речь идет о гигагерцах.
Поскольку у нас RS485 может работать до скорости вплоть до 10Мбит, а дальность свыше километра, то такие эффекты могут возникнуть. Чтобы подавить отраженную волну и нужен резистор-терминатор. Он стоит у приемника между линиями А и В. Его сопротивление обычно 120ом. Это не спроста так, все дело в том, что волновое сопротивление витой пары, как правило, 120 ом и чтобы погасить волну резистор должен быть с ней согласован.
Но если у вас скорость 9600, а дальность десяток метров, то на это можно смело забить. В этом случае терминатор может даже мешать, излишне нагружая линию низкоомным сопротивлением. Но я все равно всегда развожу его и если не нужно, то просто не впаиваю.
Линию А подтягиваем вверх, а линию В вниз. Через резисторы в 1.2кОм с обеих концов.
Единственно, что у такого решения есть минус — через эти резисторы будет всегда течь ток и увеличивать потребление. Что может быть критичным для систем с батарейным питанием, но использующем RS485. Странная экзотика, но чего в жизни не бывает?
В этом случае можно использовать микросхемы с системой true failsafe, например MAX3080. Она позволяет отказаться от резисторов смещения, т.к. они мало того, что встроены в микросхему, так еще и пороги срабатывания там другие. И при обрыве или КЗ линии будут гарантировано давать 1 на выходе.
▌Защита
Так как линия у нас длинная, то на нее наводится всякая фигня. И естественно она прилетает нам в схему, учиняя беспредел. Первое с чем стоить бороться — перенапряжения. Для защиты от этого применяют супрессоры. Это такие мощные стабилитроны, часто собранные в одном корпусе встречно друг другу. И при превышении напряжения они открываются и стравливают перенапряжение в землю или питание, смотря как включено. А там с этой энергией разберутся конденсаторы и блок питания.
Разумеется поможет это только от кратких перенапряжений, от помех. От длительных перенапряжений нужны уже предохранители. Плавкие или самовосстанавливающиеся. Т.е. если что-то начало нам гнать в линию высокое напряжение, то вначале сработает супрессор, высадив его на землю, а потом выжгется предохранитель. Я использую SMBJ-5.0 супрессоры.
Также я ставлю варистор между А и В. Можно и двунаправленный супрессор поставить, но варистор компактней. Это резистор который пробивается на высоком напряжении. Резко уменьшая свое сопротивление с мегаомов до десяток ом. А потом вновь становится обрывом. У меня под это дело чтото вроде JMV0805S5R6T661 который открывается от 5.6 вольт и способен пережить 40А в пике.
Последнее время я не экономлю и делаю полноценную развязку интерфейсной части. Ставя туда питание на AM1D-0505SZ и изолируя интерфейс через ADM2483. Это RS485 трансивер со встроенной опторазвязкой.
Работает просто песня :)
▌Кабель, земля и экран
Вообще, на короткие расстояния, десятки метров, и при небольшой скорости, по 485 интерфейсу можно гнать сигнал через любое говно. Даже через старую, советскую плоскую телефонную лапшу. На практике же, для физического уровня приходится использовать все что под руку попадается и уже проложено на объекте. Например, кабель видеонаблюдения, с волновым сопротивлением в 75 Ом, но ему требуются низкоомные же терминаторы в 75 Ом, что снижает количество девайсов на одном сегменте — трансивер просто не вытащит по току. Второй популярный пример — комповая витуха, у ней волновое сопротивление 100Ом, что уже лучше. И сами кабели дешевые, но у них тонкая жила и по этому высокое сопротивление. Есть и специализированный кабель для RS485 с волновым сопротивлением в 120Ом, как по стандарту. Правда он дорогой, не всегда доступен и зачастую не нужен :)
Для улучшения качества передачи данных хорошо бы использовать экранированный провод. При этом оплетка кабеля подключается к заземлению, а к GND через резистор ом в сто (в случае опторазвязки — к изолированной GND) с одной стороны (. ) только с одной стороны! Чтобы не было протекания разных токов по ней.
Если же у нас есть земляной провод, то можно задействовать и его. В данном случае его называют дренажным. Его задача уравнивать потенциалы земель. И он подключается к земле устройства (при опторазвязке к изолированной земле) через сопротивление в сотню ом. Резистор тут надо выбирать хотя бы на пол ватта.
▌Борьба с граблями
Ну и напоследок еще парочка мелких граблей на которые можно наступить, так что лучше их сразу убрать. В момент передачи, микросхема MAX485 держит выход DO в HiZ, и вам туда может нателепать разного мусора. Поэтому линию RxD микроконтроллера подтягиваем к питанию. Либо включаем подтяжку внутри контроллера. Но я всегда это делаю внешним резистором. Надежней.
А линию DE/RE следует подтягивать к нулю. Зачем? А чтобы пока контроллер не стартанул, не проинициализировался и не привел свои ноги в нужный режим этот вывод не телепался без дела и не слал в линию разный мусор.
При перед передачей никогда не помешает сделать синхронизацию кадров. Т.е. передачи нет, все участники сети сидят и слушают. И вдруг какая-то помеха пробилась и сделал старт бит в линию. Естественно все «слушатели» начнут принимать данные и получат мусор. Да хоть тот самый ноль, о котором я выше говорил. Чтобы им и ограничилось крайне желательно сделать следующее. Переводим линию прием/передача в режим передачи, при этом у нас на TxD единичка, т.к. мы еще ничего не шлем. Но драйвер RS485 при этом выдаст уже уровни в линию. Ждем паузу, равную времени передачи двух трех байтов, чтобы весь мусор прошел и не затесался в нашу передачу и только после этого засылаем первый байт нашей передачи в UART. Это повышает надежность и качество передачи на порядок.
А еще не помешает контроль четности, и прочие методы анализа качества принятых данных. Расскажу об этом вследующий раз, когда буду разбирать MODBUS.
Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!
А я встрял на три года, как минимум, ежемесячной пахоты над статьями :)))))))))))) Спасибо вам за такой мощный пинок.
Для того, чтобы обеспечить обмен данными между различными стандартами серийных портов компьютеров, внешним оборудованием или "умными" устройствами, сначала требуется преобразовать данные сигналы. Данный конвертер полностью совместим со стандартами RS-232C и RS-485. Он может преобразовывать сигнал RS-232 в уравновешенный дифференциальный сигнал RS-485 и увеличить максимальное расстояние передачи сигнала до 1,2 километров. Данное устройство является пассивным и не требует подключения дополнительного источника питания. В нем используется специальный генератор, увеличивающий мощность сигналов от RS-232 (RTS, DTE, TXD) без инициализации последовательного интерфейса RS-232. Внутренний приёмо-передатчик (трансивер) и контур осуществляют автоматизированный контроль направления потока данных, вместо обмена сигналами об установлении связи (таких, как RTS, DTR и т.д.).
При работе в режиме half-duplex RS232, программное обеспечение обеспечивает тот же функционал под RS-485 без каких-либо изменений. Скорость передачи данных 300 - 115200 bps может применяться между хост - компьютерами или хост - компьютером и внешним оборудованием, и образует сеть типа "точка - точка" (point to point) или "точка - мультиточки" (point to multipoints). Такие сети широко применяются в промышленной автоматизации, дверных запорах, картах "all-in-one", паркоматах, ATM, автобусных турникетах, автоматах по продаже еды, системах контроля за персоналом и пропускных шлагбаумах на автомагистралях.
Данная инструкция применима к моделям:
STM485-S (Standart, стандартный)
STM485-C (Commercial version, коммерческая версия)
STM485-I (Industrial, промышленная)
II. Особенности устройства
1. Интерфейс: Совместимый со стандартами EIA/TIA RS-232C и RS-485.
2. Сопряжение электронного оборудования. Со стороны RS -232 расположен разъём DB9 (мама). Со стороны RS-485 расположен разъём DB9 (папа), с платой подключения.
3. Режим работы: асинхронный, полудуплексный, дифференциальная передача.
4. Среда передачи данных: витая пара или витая пара с попарным экранированием (STP).
5. Скорость передачи данных: 300-115200 bps.
6. Габаритные размеры: 95x33x17 мм
7. Рабочие температуры: 0..70 С (STM485-C), -20..+85 С (STM485-I), относительная влажность от 5% до 95%.
8. Расстояние передачи данных: 1200 метров (RS-485), 5 метров (RS232).
III. Подключение и определение сигналов.
1. Подключение RS232C:
DB9
(мама)
RS-232C
(сигнал)
2. Подключение RS-485
Номер Pin
DB9 (папа)
RS-485 (клеммная колодка)
1
В-/B
D+/A
2
D+/A
D-/B
3
GND
4
+5V..+12V
5
GND
6
+5V..+12V
7
8
9
IV. Установка аппаратных средств и программного обеспечения.
Данный конвертер использует традиционные разъёмы DB9 (мама) и DB9 (папа). Соединительная плата с клеммной колодкой имеет четыре контакта. Вы можете использовать витую пару (TP) или витую пару с попарным экранированием (STP) для легкой установки или демонтажа. D+/A - это положительный сигнал, D-/B - отрицательный сигнал, +5V/+6V - это внешнее питание, которое подключается при необходимости, GND - это провод заземления. Для передачи данных необходимо подключить, как минимум, 2 провода (D+/A и D-/B). Сигналы одинаковой полярности подключаются вместе. Если Вы используете STP (витую пару с попарным экранированием), то GND также должен быть присоединен. Данный конвертер поддерживает две модели передачи данных:
1. Point-to-point (т.н. "точка-точка"), 2 кабеля, half-duplex.
2. Point-to-multipoints (т.н. "точка-мультиточки", 2 кабеля, half-duplex.
Когда конвертер работает в самом конце цепи, необходимо устанавливать т.н. "терминатор", т.е. резистор (рекомендуется 120 Ом, 1/4W). Терминатор не позволяет сигналу отражаться и накладываться.
V. Пример сети.
1. Point-to-point (т.н. "точка-точка"), 2 кабеля, half-duplex.
2. Point-to-multipoints (т.н. "точка-мультиточки", 2 кабеля, half-duplex.
VI. Часто задаваемые вопросы (FAQ)
1. Ошибка передачи данных
a. Проверьте, правильно ли подключен интерфейс RS-232
b. Проверьте корректность выходного сигнала RS-232
c. Проверьте качество подключения проводов
2. Данные теряются или приходят с ошибками
a. Проверьте на обоих устройствах правильность установки формата и скорости передачи данных.
Преобразователь интерфейса RS232 - RS485 (STM485S) с разъёмами db9 (как у COM - порта) и переходником на клеммную колодку предназначен для конвертирования сигнала из RS232 в RS485.
Данный переходник часто используется для того, чтобы увеличить дальность передачи сигнала. У RS232 он составляет не более 5 метров, в то время, как RS485 позволяет передавать сигнал на расстояние до 1200 метров (1.2 км).
В качестве среды передачи данных (т.е. провода) рекомендуется использовать кабель типа "витая пара".
Конвертер не требует дополнительного источника питания, что облегчает его монтаж в труднодоступных местах.
Преобразователь интерфейса RS232 - RS485 часто используется в шлагбаумах и системах контроля за проходом сотрудников (турникеты и автоматические ворота), в автоматах по продаже напитков и еды, в различных запорных устройствах и т.д.
В комплекте с устройством идет т.н. "плата подключения", или, как её ещё называют, клеммная колодка, которая позволяет всего за несколько минут подключить витую пару к преобразователю интерфейса. Клеммная колодка имеет четыре контакта - D+/A, D-/B, GND и питание. Обязательны к подключению только D+/A и D-/B, но при использовании витой пары с попарным экранированием необходимо также подключать GND.
Технические характеристики:
- интерфейс: Совместимый со стандартами EIA/TIA RS-232C и RS-485.
- сопряжение: RS-232 DB9 (мама), RS-485 DB9 (папа). В комплекте с устройством идет клеммная колодка с винтовыми зажимами.
- режим работы: асинхронный, полудуплексный, дифференциальная передача.
- кабель: витая пара или витая пара с попарным экранированием (STP).
- возможная скорость передачи данных: 300-115200 bps.
- габаритные размеры: 95x33x17 мм
- расстояние передачи данных: 1200 метров (RS-485), 5 метров (RS232).
На нашем сайте есть перевод на русский язык инструкции ("User's Manual" или "User's Guide") к данному устройству. Мануал доступен по ссылке или в разделе "Статьи".
Для обмена данными между компьютером и различной профессиональной аппаратурой часто применяется интерфейс RS-232. В некоторых случаях применяется RS-485. Отличие заключается в том, что RS-485 работает в полудуплексном режиме, когда входящие и исходящие данные передаются по очереди. При этом применяется соединение симметричной линией.
Для того, чтобы подключить компьютер с COM-портом (RS-232) к устройству с интерфейсом RS-485, нужен соответствующий переходник. Цена на переходники промышленного уровня не очень приемлема. Конечно, полноценные переходники содержат оптические развязки между интерфейсами, что увеличивает надёжность и безопасность. А вот простейший работающий переходник можно собрать своими руками из доступных и дешёвых компонентов.
В интернете на одном из сайтов я нашёл схему такого переходника.
В её состав входят две распространённые микросхемы: MAX232 и MAX485. Первая микросхема является конвертером уровней напряжения в стандарт TTL, а вторая – трансивером RS485. Кстати, микросхема MAX232 применяется радиолюбителями для изготовления CAT-интерфейса импортного трансивера. Переходник на основе MAX232 у меня уже имелся, и я к нему навесным монтажом допаял остальную часть схемы, чтобы испытать её в действии. Схема заработала успешно. Проверял на промышленном контроллере «SIMATIC TP 177 micro», а также на камере видеонаблюдения с интерфейсом PTZ.
Основная фишка данной схемы – выбор способа коммутации TX/RX трансивера MAX485. Именно этот момент мне был не понятен в работе подобных переходников. Раньше я считал, что для управления MAX485 используется отдельный вывод COM-порта компьютера. Однако такие переходники успешно работали, что называется, по трём проводам (TX, RX, GND) без каких-либо дополнительных контактов. Как видно из схемы, коммутация MAX485 происходит самим же TX-трафиком. Сигнал для коммутации берётся непосредственно от входного разъёма RS-232 ещё до MAX232 и через цепочку R1-D5-DZ1 поступает на 2 и 3 выводы MAX485. Данная цепочка из резистора и стабилитрона с диодом служит преобразователем уровня в TTL без инверсии, тем самым, обеспечивая правильную полярность для управления MAX485.
Спустя время я решил сделать данный переходник на отдельной печатной плате. Плата получилась размером 50 на 50 мм.
Для желающих повторить конструкцию прилагаю ссылку на lay-файл с рисунком монтажной платы в программе «Sprint Layout».
Решил поделиться с общественностью одной из возможных реализаций преобразователя USBRS485 на базе микросхемы FT232RL:
Понадобился тут по работе преобразователь USBRS485. Чтобы как можно скорее (что неудивительно), да размерами поменьше. Плюс гальваноразвязка не требуется. На местный радиорынок немедленно был заслан знающий человек – оценить обстановку и узнать что почем. Каково же было мое удивление, когда тот вернулся ни с чем. Нету, говорит, таких. Вот мобильников, говорит – гора. А преобразователей – нет.
Данная новость меня безумно обрадовала, т.к. на локальном диске Д давно (еще, наверное, с начала осени) валяется незаконченный проект именно такого преобразователя. И даже кой-какая документация собрана была. Ну а тут – такое совпадение!
Надо сказать, я даже не стал лазать по Интернету в поисках готового девайса. Ибо за два дня (в которые требовалось уложиться) все равно, наверное, ничего не успели бы привезти. Поэтому я сразу открыл свой незаконченный проект и сделал «Выделить всё => Удалить». Потому что плата там закладывалась односторонняя, да плюс одна из микросхем была в корпусе DIP-8, что, согласитесь, целям миниатюризации преобразователя ну никак не соответствует. Благополучно удалив результаты прошлых трудов, я начал проектировать преобразователь заново.
Поскольку девайс надо было сделать побыстрее, то вполне логичное решение – использовать давно любимую мной микросхему FT232RL. Тем более, что в документации на нее есть страница 27 (в другой редакции – 28), на которой приведена практически готовая схема проектируемого преобразователя:
И я эту страницу из даташита даже перевел ранее (вернее, пересказал своими словами). Чтобы не раздувать объем заметки о таком проекте-малыше, здесь я решил только вкратце описать принцип действия данной схемы.
Итак, с учетом всего вышеперечисленного итоговая схема разрабатываемого преобразователя стала выглядеть следующим образом:
Перемычка «TERM» (Terminator) служит для подключения/отключения согласующих резисторов (терминаторов) с номинальным значением сопротивления равным 120 Ом. Терминатор должен быть подключен, если преобразователь физически находится на одном из концов шины RS485 (см. пересказ). В противном случае согласующий резистор необходимо отключить.
Можно заметить, что под терминатор на схеме заложено аж два резистора в параллель. Сделал так потому, что внезапно обнаружил исчезновение в моей кассе резисторов номиналом 120 Ом. Зато номинал 240 Ом присутствует в достаточном количестве. Ну и вот – поэтому на схеме два резистора вместо одного:).
Резисторы R3 и R4 я обычно в схемы на SP481 (вернее, ее аналогах) не закладываю. Честно говоря, это вообще первый проект, где предусмотрена их установка. Однако, люди бывалые говорят, что при достаточно протяженной линии RS485 часто бывает необходима установка данных резисторов, ибо в противном случае с шины в USB-порт начинает валиться всевозможная абракадабра.
Естественно, под вышеприведенную схему незамедлительно была разведена
печатная плата. Корпуса элементов для поверхностного монтажа, под которые разрабатывалась плата:
— резисторы: 1206;
— конденсаторы: 1206 либо 0805;
— светодиод: 1206 либо 0805;
— микросхема преобразователя TTL/RS485: SOIC-8.
Габаритные размеры печатной платы и собранного преобразователя:
После изготовления печатной платы можно приступать к установке и монтажу деталей. Собранный преобразователь не нуждается в настройке. Необходимо лишь установить драйвера для микросхемы FT232 после того, как девайс будет воткнут в разъем USB компьютера. Ну и снять или надеть перемычку «TERM» в зависимости от расположения преобразователя на шине RS485.
На сегодня всё. Желаю удачи при работе с шиной RS485!
Содержание архивов (также прилеплены к заметке):
PI-5_Hardware.zip:
ПИ-5.pdf – схема преобразователя;
ПИ-5_ЛУТ.lay – печатная плата преобразователя (вариант для «утюжников»);
ПИ-5_ФР.lay – печатная плата преобразователя (вариант для «шаблонщиков»).
Платы нарисованы в «САПР» «Sprint Layout 5.0» (бесплатная гляделка).
Читайте также: