Переходник USB->RS485

Опубликовано в рубрике "Инструменты", 11.03.2011.
Тэги: , , автор:

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

usb_485

Сначала я думал просто взять готовый переходник USB->RS232 и прицепить к нему платку с преобразователем уровней в RS485. Не тут то было – посмотрите, с какой задержкой компьютер переключает сигнал RTS (а именно он обычно используется для переключения прием-передача):

голубой – данные, желтый – RTS.

image

Естественно, это никуда не годиться – почти 100мс, в то время как задержка между приемом и передачей Modbus – 2мс.

Покопавшись в интернете, нашел очень интересный способ автопереключения приема и передачи для RS485:

image

Используется 555 таймер в режиме ждущего мультивибратора. Когда сигнал на входе становится низким (стартовый бит), таймер запускается и переключает драйвер RS485 на передачу. Если в течении 40мкс не появится нового низкого уровня, таймер переключит драйвер на прием. А как быть с длинной передачей единиц? Все очень просто – на выходе драйвера RS485 стоят подтягивающие резисторы, которые по умолчанию держат линию в единичном состоянии.

 

Так к чему это я… Ах, да – в итоге я нашел оочень простое включение всеми любимой, но вечно дорогой FT232. Оказывается, у нее есть ножка которая переключается в момент фактической передачи. Работает это на отлично:

голубой – сигнал с ножки передачи, желтый – данные.

image

 

Вот – итоговая схема, перемычками P2 подключается терминатор:

image

Если кто захочет повторить – вот схема и плата, плата делается двусторонней, вторая сторона полностью играет роль земли:

 




Комментарии
  1. ACE написал(а) 12th Март, 2011 в 16:09

    В варианте с таймером думаю вполне можно держать передачу в течении времени передачи всего байта, на случай байта из одних единиц. Тогда в худшем случае, если последний бит передачи будет 0, драйвер 485й шины просто продержит её ещё чуть-чуть в режиме передачи, что никак не скажется на работе. Мне кажется такой вариант надежнее, чем полагаться на подтяжку.

    Был у меня один раз такой глюк, программил софт, опрос промышленного модуля по rs-485. Адаптер к компу тоже был готовый, купленный. Долго пытался понять, почему у меня ответы от устройства приходят с запоротым последним байтом. Как потом выяснил, модуль ввода отпускал линию в конце передачи, если там шли единичные биты, рассчитывая на подтяжку линии, которой не было ни в нём, ни в usb-адаптере. Добавил подтяжку, всё стало хорошо, но как-то это не аккуратненько.

  2. BSVi написал(а) 12th Март, 2011 в 16:16

    А помоему — аккуратно. Вообще, без подтяжки шина работать не обязана.
    По спецификации драйверов rs485, поведение в диапазоне диф. сигнала +-200мВ не определено. Тоесть, шина без подтяжки шиной называться не может. Конечно я понимаю, что сейчас появились драйвреа со «смещенным центром тяжести», но ровняться всеравно приходится на старые спецификации.

  3. ACE написал(а) 12th Март, 2011 в 16:38

    Да, про 200мВ вполне верно. Также из спецификации берём: до 32 устройств, каждое по 12 кОм, параллельно. Итого 375 Ом в худшем случае. Ещё два раза по 120 Ом терминальных резисторов с каждой стороны. И подтягивающие резисторы по 560 Ом отклоняют линию уже и не так сильно, не намного то больше этих самых 200мВ. А ещё бывает и подтягивающие резисторы поменьше ставят.

  4. BSVi написал(а) 12th Март, 2011 в 17:25

    Дак, отклонение на 200мВ уже хватает чтобы зафиксировать лог 1. Так-что, если стоит по 560ом, то все нормально даже при 32 устройствах.

    Друге дело, как это монтажникам объяснить ))

  5. callous написал(а) 13th Март, 2011 в 14:17

    У меня вопрос, какой софт юзается?

  6. BSVi написал(а) 13th Март, 2011 в 17:06

    Для чего?

  7. callous написал(а) 13th Март, 2011 в 21:21

    для работы с модбас, просто гипертерминал?

  8. BSVi написал(а) 13th Март, 2011 в 21:35

    Не, хаченный modbus poll, ну, и терминал.

  9. dessel написал(а) 10th Июнь, 2011 в 19:50

    Ни как не получаешься подобрать масштаб для распечатки пдф, тот что в файле не соответствует размеру элементов. (((

  10. BSVi написал(а) 10th Июнь, 2011 в 22:22

    да, это известный глюк альтиума. Добавил плату в нормальном масштабе к статье.

  11. dessel написал(а) 10th Июнь, 2011 в 22:43

    Огромное спасибо, то что надо))

  12. DimanVIP написал(а) 26th Июнь, 2011 в 22:32

    А как насчет гальваноразвязки?
    На длинных линиях думаю будет просто необходима.

  13. BSVi написал(а) 26th Июнь, 2011 в 23:24

    У меня нет длинной линии. Для моих целей такого переходника более, чем достаточно.

  14. juvf написал(а) 13th Апрель, 2012 в 14:00

    Вместо Max485 поставить ADM2582E/ADM2587E — вот вам гальваноразвязка

  15. elisey написал(а) 6th Февраль, 2012 в 12:30

    Спаял переходник по этой схеме. Тока микруха max485 в дип корпусе, и линию RX притянул к питанию. В териминале на компе посылаю символ — возвращается эхо 0x00. Терминирующие джампера надеты. Это нормально? Другого утройства на rs-485 пока нету, проверить неначем.

  16. BSVi написал(а) 6th Февраль, 2012 в 12:40

    Это нормально.

  17. elisey написал(а) 6th Февраль, 2012 в 12:43

    Эхо исчезнет, когда я подключу другие устройства к линии 485? или эхо отсекать програмно?

  18. BSVi написал(а) 6th Февраль, 2012 в 12:51

    Пожди, какую именно линию RX ты притянул?

  19. elisey написал(а) 6th Февраль, 2012 в 12:55

    https://clip2net.com/s/1yTWg вот тут резистор R3. Подтянул RX линию микрухи ft232rl. И еще в своей схеме не использовал напругу 3.3 вольт для питанию I/O пинов этой микрухи. У вас с какой целью это было сделано?

  20. BSVi написал(а) 6th Февраль, 2012 в 13:01

    >Подтянул RX линию микрухи ft232r
    Похоже, макс при переключении в режим передатчика, выдает ноль на Rx.

    >У вас с какой целью это было сделано?
    Да просто скопировал кусок схемы из другого проекта.

  21. elisey написал(а) 6th Февраль, 2012 в 13:06

    у вас тоже ноль приходит при передаче? воткнул для интереса max481, аналогично приходит ноль.

    спасибо за ответы.

  22. BSVi написал(а) 6th Февраль, 2012 в 13:26

    У меня сейчас нет этого переходника, проверить не могу.

  23. Aneg написал(а) 16th Апрель, 2012 в 12:27

    Для чего TxD подтянут к питанию, а CBUS2 к земле?

  24. BSVi написал(а) 16th Апрель, 2012 в 12:40

    Для того, чтобы после включения питания и до инициализации микросхемы, выходы вели себя как вход, выдающий логическую 1 — это состояние покоя UART’а

  25. MTh написал(а) 27th Май, 2012 в 17:15

    Доброго времени суток.

    Есть вопрос практического плана. Собрал преобразователь на FT232 — UART TTL. При подключении комп пишет — устройство неизвестное… Но! Если отключить и тут же воткнуть — все пашет нормально. Я так понимаю проблема с питанием, но схема передрана с даташита 1 к 1. Да и собирал уже подобное устройство. Навеса который бы потреблял что-нибудь еще кроме FT232 нет… Не сталкивался с подобным явлением? Электролит на 22 мкФ и керамика по питанию стоят.

  26. MTh написал(а) 27th Май, 2012 в 17:20

    Электролит пробовал отпаивать, ставить и больше и меньше — результаты не изменились… грешу на паленую микру…

  27. BSVi написал(а) 3rd Июнь, 2012 в 20:57

    Нет, с таким не встречался. FTDI всегда отлично работали.

  28. Detruanto написал(а) 10th Июнь, 2012 в 22:00

    Вечер добрый))
    Давно тут не появлялся. Рад, что ресурс живёт и развивается))))

    Как-то делал переходник из USB в RS485/RS422 на FT232RL и ADM2483. Если интересно, могу выложить схему.

  29. Detruanto написал(а) 10th Июнь, 2012 в 22:39

    Схема с гальванической развязкой.

  30. BSVi написал(а) 11th Июнь, 2012 в 14:40

    Привет, конечно интересует. Можешь даже статью написать по этому поводу 🙂 Мои контакты тут: https://bsvi.me/about/

  31. Detruanto написал(а) 11th Июнь, 2012 в 19:28

    Попробую)

  32. Detruanto написал(а) 16th Июнь, 2012 в 17:35

    Написал «статью» (даже 2). Отправил на мыло. Не знаю как получилось, но я старался)))))

  33. Tmak написал(а) 30th Август, 2013 в 6:20

    L1 — какова величина индуктивности?

  34. ilyagood написал(а) 9th Март, 2014 в 19:58

    Всем доброго времени. Недавно начал делать этот переходник, столкнулся с проблемой.
    Подскажите пожалуйста что такое на схеме L1, и его номинал.
    И еще вопросик, нужно ли в данном переходнике, что то прошивать ?
    Заранее спасибо!

  35. ilyagood написал(а) 11th Март, 2014 в 19:19

    Спасибо нашел

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

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


Срок проверки reCAPTCHA истек. Перезагрузите страницу.