Стандарт RS485. Переходник RS485-UART.

Довольно-таки часто при разработке электронных устройств, а особенно, в тех случаях, когда необходима реализация длинной линии связи между несколькими устройствами, встает задача включения микроконтроллера в эту самую линию связи. В большинстве таких случаев в качестве интерфейса я выбираю стандарт RS485. Итак, пара слов об RS485 😉

Витая пара

По большому счету, интерфейс RS485 является одним из наиболее распространенных стандартов физического уровня связи.

Физически сеть RS485 представляет собой два провода. Фишка RS485 заключается в том, что один и тот же сигнал передается сразу по двум проводам, за тем лишь исключением, что сигнал в одном из проводов инвертирован относительно сигнала в другом проводе. Вот как это выглядит:
Стандарт RS485
Казалось бы – зачем это нужно? А вот зачем… Сигнал в стандарте RS485 передается разностью потенциалов(!) в этих проводах. И в этом то и состоит его фишка =) Смотрите сами – пусть у нас есть помеха, которая оказывает влияние на передачу данных. При использовании RS485 эта помеха окажет одинаковое влияние на оба провода (особенно, если они “скручены” в витую пару). А поскольку полезный сигнал передается через разность потенциалов, то при вычитании потенциала одного провода из потенциала другого влияния помехи устранится. Вот так вот 😉

Поскольку для приема и передачи используются всего два провода, то, естественно, прием и передача должны быть разделены во времени.

Возможное количество приемников/передатчиков в одной сети для RS485 составляет 32 устройства. Возможная длина линии составляет примерно километр, даже чуть больше ) Это одна из причин, по которой меня особенно привлекает этот стандарт.

Итак, сигнал передается разностью потенциалов. Соответственно, существуют определенные диапазоны значений, в пределах которых передаваемый цифровой сигнал считается равным нулю, либо единице. Для RS485 диапазон напряжений для 1 – (U > 0.2В), для 0 – (U < -0.2 В). При значениях разности потенциалов, лежащих в пределах – от (-200) мВ до 200 мВ сигнал в линии считается неопределенным.

С основной теорией разобрались, теперь обсудим как все это реализовать на практике. А вопрос тут заключается в том, что необходимо каким-то образом включить микроконтроллер в сеть RS485. И тут нам нужен переходник с UART’a на RS485. Возможны разные реализации этого устройства, но я сегодня остановлюсь на одном, а именно на использовании микросхемы SP3485. Эта микросхема представляет собой практически законченное устройство – трансивер RS485. Причем она может легко питаться всего от +3.3 В.

Микросхема имеет 8 ножек:

Микросхема SP3485

  • Vcc – питание, тут нечего комментировать )
  • GND
  • A и B – те самые два провода для RS485
  • DI – подключаем к Tx нашего контроллера
  • RORx
  • RE и DE – туда подаем сигнал разрешения передачи, то есть RTSReady To Send – на практике подключается к любому незанятому выводу микроконтроллера, а затем в программе во время передачи выставляем на выводе 1, во время приема 0

Как видите, все несложно, практически никакой внешней обвязки эта микросхема не требует, а поставленную задачу решает на ура 😉 Таким образом, мы разобрались сегодня с очень популярным стандартом RS485 и рассмотрели один из вариантов его реализации на практике. Думаю в ближайшее время можно будет развести небольшую печатную платку для переходника RS485-UART )

И вот кстати еще полезная ссылка на полезный ресурс:
Элементы, повышающие ВЧ устойчивость. Итоговая схема

Понравилась статья? Поделись с друзьями!

Стандарт RS485. Переходник RS485-UART.: 10 комментариев
  1. а можно RS-485 использовать для соединения “Звездой”, – один мастер, и от него “лучи” к слейвам.?

      • Для RS-485 нельзя соединять устройства “звездой”! В этом случае в сети будет много паразитных отражений сигнала, и с большой вероятностью, сеть работать не будет, либо будут частые ошибки связи (ошибки контрольной суммы, например).

        Устройства в RS-485 надо соединять “гирляндой”! И во многих случаях, на концах этой линии надо ставить резисторы для согласования с волновым сопротивлением линии.

        • Есть система – 4 устройства и центр управления. Соединено звездой – циклы отправки/приема данных каждые 10мс. Никаких ошибок не наблюдается в течение нескольких лет, контрольные суммы совпадают. Видимо вероятность ошибок не так уж и велика.

          • Это хорошо, но, видимо, тут просто удачное стечение обстоятельств, длины линий и их сопротивления оказались такими, что паразитные отражения несильно искажают сигнал. Но вообще, топология “звезда” – неправильна для RS-485.

        • Да, забыл – в этой “гирлянде” мастер сети рекомендуется ставить с краю.

  2. Комплект: SP3485 Transceiver+ STM32VLDiscovery
    Я правильно понимаю: формируем отправку через UART_1; Transceiver_1 делает свое дело, на другом конце принимаем сигнал через Transceiver_2, UART_2? И никаких библиотек не нужно на SP3485 Transceiver ?

    • С одной стороны UART – Rx, Tx, с другой – RS485 – инвертированный, неинвертированный сигнал. Библиотек не надо, это законченная микросхема.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *