Преобразователь интерфейсов (переходник) USB<=>RS485 (ПИ-5)

Смотри также: Преобразователь интерфейсов (переходник) USB-RS485 с гальванической развязкой (ПИ-5б)

Продолжаю цикл заметок «Проекты-малыши»

Решил поделиться с общественностью одной из возможных реализаций преобразователя USB<=>RS485 на базе микросхемы FT232RL:



Понадобился тут по работе преобразователь USB<=>RS485. Чтобы как можно скорее (что неудивительно), да размерами поменьше. Плюс гальваноразвязка не требуется. На местный радиорынок немедленно был заслан знающий человек – оценить обстановку и узнать что почем. Каково же было мое удивление, когда тот вернулся ни с чем. Нету, говорит, таких. Вот мобильников, говорит – гора. А преобразователей – нет.

Данная новость меня безумно обрадовала, т.к. на локальном диске Д давно (еще, наверное, с начала осени) валяется незаконченный проект именно такого преобразователя. И даже кой-какая документация собрана была. Ну а тут – такое совпадение!

Надо сказать, я даже не стал лазать по Интернету в поисках готового девайса. Ибо за два дня (в которые требовалось уложиться) все равно, наверное, ничего не успели бы привезти. Поэтому я сразу открыл свой незаконченный проект и сделал «Выделить всё => Удалить». Потому что плата там закладывалась односторонняя, да плюс одна из микросхем была в корпусе DIP-8, что, согласитесь, целям миниатюризации преобразователя ну никак не соответствует. Благополучно удалив результаты прошлых трудов, я начал проектировать преобразователь заново.

Поскольку девайс надо было сделать побыстрее, то вполне логичное решение – использовать давно любимую мной микросхему FT232RL. Тем более, что в документации на нее есть страница 27 (в другой редакции – 28), на которой приведена практически готовая схема проектируемого преобразователя:



И я эту страницу из даташита даже перевел ранее (вернее, пересказал своими словами). Чтобы не раздувать объем заметки о таком проекте-малыше, здесь я решил только вкратце описать принцип действия данной схемы.

Выход передатчика микросхемы FT232 соединяется со входом передатчика преобразователя TTL/RS485 SP481 (понятно, есть целый мешок аналогов, в частности, MAX485). Вход приемника FT232 – с выходом приемника SP481. Это, надеюсь, вещи очевидные, и пояснять их не надо. А вот управление приемником и передатчиком микросхемы SP481 стоит рассмотреть подробней.

Использование шины RS485 при обмене данными предполагает активность передатчика SP481 только в момент передачи какой-либо информации. В остальные моменты времени активен приемник (устройство «слушает» шину). Вывод CBUS2 микросхемы FT232R, сконфигурированный как TXDEN# (см. Datasheet на FT232Rx), служит именно для этой цели, т.е. для активизации передатчика микросхемы SP481 в момент передачи информации по линии TXD порта USART. Для управления же приемником в рассматриваемой схеме используется вывод CBUS3, сконфигурированный как PWREN#. После определения устройства USB-портом он принимает состояние логического нуля. В спящем режиме («Suspend Mode») PWREN# принимает состояние логической единицы. Приемник микросхемы SP481 включается при наличии НИЗКОГО уровня сигнала на входе разрешения его работы (т.е., на выводе 2), поэтому подключение данного входа к линии PWREN# микросхемы FT232R позволяет автоматически отключать приемник в спящем режиме («Suspend Mode»).

Надо заметить, что подобное решение (когда приемник и передатчик SP481 управляются резными сигналами PWREN# и TXDEN#) чревато возникновением эффекта «эха». Данный эффект проявляется в приеме передаваемых по шине RS485 данных портом USB. Более подробно этот момент рассмотрен в пересказе. Здесь же лишь отмечу, что эффект «эха» приходится забарывать программными или аппаратными способами. При этом в аппаратные решения данной проблемы добавляются дополнительные (так сказать, «лишние») детали.

Однако, если нет необходимости отключать приемник преобразователя в спящем режиме, что справедливо для подавляющего большинства «радиолюбительских» случаев, можно использовать «классический» метод управления передатчиком и приемником SP481. В таком варианте подключения управляющие входы DE и RE# объединяются, что дает автоматическое отключение приемника SP481 во время работы (активности) передатчика:



Итак, с учетом всего вышеперечисленного итоговая схема разрабатываемого преобразователя стала выглядеть следующим образом:



Перемычка «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!

Примечание: все вопросы лучше валить в камменты после заметки, так как не факт, что я смогу на них на все ответить. А вот шансы на то, что в сообществе найдется более прошаренный человек по твоей теме — довольно хорошие. Но уж если зарегистрироваться на сайте совсем никак — можно воспользоваться возможностями электрической почты: podkassetnik@yandex.ru

Содержание архивов (также прилеплены к заметке):

PI-5_Hardware.zip:
ПИ-5.pdf – схема преобразователя;
ПИ-5_ЛУТ.lay – печатная плата преобразователя (вариант для «утюжников»);
ПИ-5_ФР.lay – печатная плата преобразователя (вариант для «шаблонщиков»).

Платы нарисованы в «САПР» «Sprint Layout 5.0» (бесплатная гляделка).

FT232_USB-RS485_v1.1.zip:
FT232_USB-RS485_v1.1.pdf – вольный пересказ стр. 27 документа Document No.: FT_000053 FT232R USB UART IC Datasheet Version 2.01 Clearance No.: FTDI# 38.
Файлы в топике: PI-5_Hardware.zip, FT232_USB-RS485_v1.1.zip

Комментарии (80)

RSS свернуть / развернуть
Какие же у вас отличные печатные платы получются!
+2
это смотря с чем сравнивать:) например, для данного девайса отлично видно, какой охеренный стеклотестолит используется для изготовления плат (правое фото, где печатные платы изображены)
0
вот evsi платы делает и впрямь — мое почтение
0
Такое в Спринте вырисовывать — это ж художником надо быть. Почерк уже узнаваемый :).
0
когда рисовал первую плату полигонами (пришлось из-за тухлого фоторезиста) — думал, расшибу монитор на хер:) а теперь ничо — привык:)
0
+1 опередили =) только что хотел сказать, что налицо собственный узнаваемый стиль
0
тут и компоновка, и пропорции и общая продуманность и лаконичновсть — всё на месте
+2
До боли знакомая схемка :).
Подкину парочку подобных проектов
Этот делал, а этот нет.
Этот преобразователь можно использовать для управления световыми приборами по протоколу DMX. Устанавливаем FreeStyler или PC Dimmer, в настройках интерфейса указываем OpenDMX и в путь.
0
До боли знакомая схемка :)

ну в схеме там как бы особо не нафантазируешь:) только есть/нет гальваноразвязка. я ж так и говорю — одна из возможных реализаций (в смысле платы):)
+1
А платка усб-уартика не найдётся?
0
есть только мега-переходник:) огромный, блин, с глупым разъемом USB-B:) но зато все линии выведены:)

0
[запоздало осенённый] так ведь его (усб-уарт) можно из этого переходника сделать:) мах485 не впаивать, резисторы R1-R4 не впаивать, впаять перемычки с 1-й ноги мах485 на 7-ю ногу, а с 4-й — на 6-ю. вуаля, усб-уарт готов:)
0
Всё-таки изделия без корпуса куцевато смотрятся. В термоусадку предполагается запрятать плату?
0
ну, будет нужда — укутать-то всегда можно:)
0
А мини-usb не лучше было бы использовать? Ещё компактнее получился бы вариант. Или по разводке сложнее?
0
мне больше нравится, когда мелкие свистки прямо в УСБ-порт втыкаются:) чтоб без лишних проводов
0
Тоже верно )
0
Такие маленькие архивы лучше прицепить прямо к статье. Медиафайр — для многометровых.
+1
  • avatar
  • Vga
  • 11 ноября 2012, 04:24
а разница?:)
0
MF конечно хорош по сравнению с прочими обменниками, но здесь все же куда удобней. Да и лучше держать необходимое для статьи вместе со статьей.
0
оно у меня и так лежит вместе со статьей — на локальном диске Д в секретной папке «Заметки на сайт»:) но буду иметь ввиду.

собственно, MF для таких мелких архивов решил пользовать только для оценки количества скачавших — чтобы хоть примерно знать, заметки на какие темы действительно интересны сообществу, а на какие — не очень. все-таки, количество камментов к заметке и количество реально скачавших — далеко не одно и то же.
0
или я чего не знаю, и статистику по своим файлам на easyelectronics можно где-то посмотреть?
0
Статистики нет, но приоритетна все же доступность файлов, а не статистика.
Как статью приняли лучше ИМХО все же смотреть по комментариям и рейтингу.
0
Как статью приняли лучше ИМХО все же смотреть по комментариям

ну вот, к примеру, заметка про плату переходник TQPF-DIP для 16-й меги. 147 камментов (я аж охерел от такого количества поначалу:). но про сам девайс-то почти ничего и нет. вот как это расценивать — нужная статья или не очень?

ну и это — я ж не к тому, что «идите на хер, буду лить на MF»:) если для сообщества удобней, чтобы файлы были прибиты к заметке — не вопрос, для меня так даже проще. просто не совсем понятно, чем скачка с MF отличается от скачки с we.ee:)
0
А я и не про количество комментов говорил :) Скорее про их содержание.
если для сообщества удобней, чтобы файлы были прибиты к заметке — не вопрос, для меня так даже проще. просто не совсем понятно, чем скачка с MF отличается от скачки с we.ee:)
Я считаю, что удобней. В плане загрузки — с ее оно сливается в один клик и без рекламы, а с MF — в два и через тяжелую страничку (она даже на нынешнем интере на так уж быстро открывается) с изобилием рекламы. Ну и опять же, тут файл протухнет только вместо со статьей, а на MF может и раньше.
0
че-та я туплю жесточайше сегодня:) ведь сам дал ссылку на заметку, где сделано и то и другое — и на we.ee файлы залиты, и на файлообменник:) и сам же поначалу такого решения не заметил (и ведь даже не вспомнил, что сделал так:) так и буду делать — лить архивы и в сообщество и на MF, а там уж люди сами разберутся, откуда скачивать. если же опять протуплю — просьба указать мне на это обстоятельство:)
0
и да, к данной заметке архивы таки прилепил
0
… В упор не вижу заявленного 485-го интерфейса. Хде?
Афтару предложение самостоятельно ознакомиться с сабжем.
0
Хде?

в разъеме XP2 «RS485». 2-й контакт — линия А (прямой дифференциальный вход/выход), 3-й контакт — линия В (инверсный дифференциальный вход/выход).
0
Согласен. Только для использования в небытовых целях — обязательной гальванической развязки нехватает.

ps: платка красиво получилась, и пайка на высоте.
0
Только для использования в небытовых целях — обязательной гальванической развязки нехватает

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

ну а для серийных устройств — спору нет, развязывать надо обязательно.
0
Стандарт RS-485 не оговаривает: гальваническую развязку линии связи.
Видимо товарищ, valio, путает с протоколом DMX-512.
0
безусловно, в самОм стандарте (по-моему) нет вообще ни слова про гальваноразвязку. там только про проводА:) однако, для серийных устройств в настоящее время развязка — это ужЕ нечто само собой разумеющееся (сколько ни видел ТЗ на такого рода дывайсы — везде она присутствует).
0
ну, ТЗ на девайсы и стандарт — все-таки вещи разные. и, более того, не пересекающиеся.
0
дык никто ж и не спорит:)
0
А зачем было разводить место под катушку, если всё равно вместо неё будет стоять пофигистор?
0
ну у меня перемычка, а кому-то может понадобиться и дроссель.
0
Пофигистор, как ни странно, тоже какая-никакая фильтрация, у них довольно большое (для перемычки) сопротивление. Да и бусинка в таком корпусе вовсе не редкость.
0
спасибо podkassetnik за полезную заметку, но 4 месяца назад я сделал подобное на FT232BM и ADM2486 (изолированный RS-485 от Analog Device) и полдня убил на отладку с пином TXDEN )) пока не сделал как у Вас по схеме, объединил выводы RE + DE и управление по TXDEN. тогда все заработало.до сих пор помогает отлаживать общение по Модбас Satec PM-130 и LPC1766. А вот кто бы помог подобное сделать для TUSB3410 (конвертер USB-RS232 от TI) очень благодарен был бы! на данный момент я ее использую либо тока на паередачу или на прием, больше никак не хочет… зараза… чем мне и нравится FTDI chips тем, что EEPROM прошивалка есть и там все выводы назначаются в этой софтинке. чудно. и платка у Вас действительно красиво выщла… респект!..
0
ем мне и нравится FTDI chips тем, что EEPROM прошивалка есть

CBUS2 и CBUS4 сконфигурированы в FT232 как TXDEN и PWREN по умолчанию. так что и еепром прошивать даже не требуется:)

а зачем использовать именно TUSB3410? это обязательное требование? навскидку — можно же сделать USB/RS232 на FT232+MAX213 (или на крайняк — двух MAX232, если RI не нужен). наверное, децл дороже получится, плюс габариты поболе, но зато не надо с прошивками TUSB3410 разбираться:) хотя, опять же, тут все от конкретного случая зависеть будет
0
это возможно для FT232RL? или для старых тожж такое было?))) вполне согласен что можно FT232, но валяются без дела 5 штук TUSB3410 ))) именно хотел их приспособить по делу… у меня 3 канала УАРТА на LPC1766 и приходится лдя каждого канала перецеплять конвертер чтобы отладить. а так подцепил 3 конвертера и вперед! гоняй что туда что обратно )))
0
это возможно для FT232RL?

переходник USB/COM? конечно:) даже в даташите есть страница с такой схемой:)



про BM стопроцентно не скажу, но она вроде просто более убогая, чем RL (кварц нада, обвязки больше). а по сути — то же самое.
0
да я в курсе этого, мне нужно не просто УАРТ, а именно RS485.а еще точнее 3 конвертера USB-RS485. один я сделал на FT232BM-ADM2486 а другой на FT232RL-ADM2486, а потом вспомнил что есть у меня 5 штук TUSB3410, сваял на ней и… оппс работает только на передачу или прием… ну времени разбираться не было (на сайте TI скачал исходники к TUSB3410 — рядовой 8051 мк оказывается этот зверь, в аппноуте прочел как сделать из нее сразу RS485 осталось тока скомпилить в кейле и залить в ЕЕПРОМку которая стоит рядом и общается по I2С… оставил на потом… как приспичит), ибо FT232 отлично работает… железно!
0
а:) не понял сразу, что надо usb/rs485 на TUSB3410:)
0
а для красотищи на плату светодиодики TXLED и RXLED не стали лепить? я в свой влепил ))) теперь мигает как светофор )) зеленый -питание, красный — передача и желтый — прием )))) красиво смотрится))))
0
да мне для работы, не для красоты:) ну и чтобы сделать побыстрее.
0
Отлично сделано!
0
Красота да и только, пусть повторюсь, но хочу высказать. Отличное исполнение, автор молодец!
0
  • avatar
  • Ozze
  • 12 ноября 2012, 14:50
У автора выработан свой стиль. Смотришь на картинку и сразу видно авторство. Спасибо.
0
А какой формат (или форматы) фрейма понимает FT-шка?
Т.е. какое кол-во бит, вклю служебные в байтовой посылке?
0
не интересовался. надо было чтоб из терминальной программы можно было общаться с датчиками. общение получилось.
0
если
общаться с датчиками
— т.е. подразумевается что на 485й шине висит не один датчик и нужна адресация. Тогда автоматически встает и не может быть не решен вопрос по формату фрейма и кадру посылки.

Или наверное опять не так понял?
0
на шине висит несколько датчиков. у каждого есть свой номер (уникальный, от 1 до 252, по-моему). тип протокола — ASCII-код. соответственно, есть символы начала и конца посылки (собака и перевод строки). как именно передаются символы посылки (т.е., побитовую структуру каждого символа пачки) — не смотрел, ибо пока не возникало необходимости. с точки зрения шины RS485 — вообще же до фонаря, чего там от передатчиков к приемникам сыпется:) ей главное — корректно доставить информацию от посылателя к получателю. а уж чего там FT232 мутит с преобразованием USB/USART(TTL) — хрен его знает:)
0
USB тут совсем — ни при чем.

Чтобы датчик принял и ответил на пакет в 485 сети, в хедере пакета должен быть адресный фрейм с его ID. Без него вызываемое устройство соттвественно — не откликнется ))… А корректная доставка зависит от согласованности шины и ее допустимой длины и ничего более) если железо ок

Но судя по тому что у Вас «общение получилось» это не могло быь не сделано )… Окаком датчике идет хоть речь? Любопытно стало
0
в хедере пакета должен быть адресный фрейм с его ID

ну так я ж и говорю — уникальный номер от 1 до 252. входит в состав посылки сразу после стартового символа. после номера — код команды, затем параметры команды и т.д. всё как обычно:) протокол только в аски-символах.

датчики — какие-то вакуумные, давление мерить, хер его знает какой фирмы:) цилиндрические такие, с разъемом db-15m сзади. если интересует — могу завтра посмотреть фирму и марку
0
Я ошибаюсь, или там маска просматривается прозрачная?
0
И если да, то как делали?
0
сделано вот так. там ближе к концу заметки про «маску» написано.
0
там не маска, а «маска»:) из фоторезиста.
0
меня смущает резистор на 560 Ом к питанию USB. Если какой нибудь перец кинет на rs485 12В что будет с USB портом? Не нравится мне какая либо связть внешней шины с портами компьютеров.
0
ну а если какой-нибудь перец уронит на преобразователь шкаф?:) или случайно вобьет в него гвоздь?:) это ж не МегаПроект/рецепт на все случаи жизни:) более того — изначально оговорено, что преобразователь делался для внутренних нужд (плюс побыстрее надо было).

естественно, если дывайс делается на продажу или если им будет пользоваться хер знает кто — никакой прямой связи выхода с портом компа быть не должно (вообще, в таком случае весьма и весьма приветствуется опторазвязка). ну а по поводу схемы из топика — можно же этот резистор на 560 Ом не впаивать, плюс использовать разъем не на 4 пина, а на три (чтоб питание с порта на него не подавалось). тогда связь шины с портом ЮСБ будет минимальна.
0
у нас уже были печальные случаи когда кто-то подрубал на rs485 12В
0
Драйвер при этом обязан выжить (допускается воздействие от -7 до +12 В).
Всё, что свыше, должно быть ограничено, например, мощными трансилами.
Плюс гальваническая развязка.
Но здесь, так понимаю, другой случай — устройство для лабораторного применения (т.е. всё под контролем, и защитами можно не заморачиваться). Касательно 12 В через 560 Ом — 12,5 мА обратного тока вряд ли повредит источник питания USB порта. Для верности можно диодом Шоттки «отгородиться».
0
Касательно 12 В через 560 Ом — 12,5 мА обратного тока вряд ли повредит источник питания USB порта.
Если все эти 12мА будут стекать в самом девайсе (т.е. если он от питания столько жрет) — то в USB просто прикроется стабилизатор.
0
Навскидку ток, потребляемый в режиме приёма, близок к этой цифре (насчитал 16 мА). Ну а в передаче — от нагрузки зависит.
0
Isolated USB-RS485 adapter #1
Isolated USB-RS485 adapter #2

Вот настоящиеизолированные по питанию и по входам USB-свистки на CP2102. Какой-то сумрачный профи сваял опенсорсно. По питанию там стоят 1kV изолированные(с трансформатором) DC-DC конверторы 5V->5V фашистские фирмы PEAK. Хочу сделать пару/тройку таких, но не знаю, где продают в РФ такие конверторы.

И еще нужна готовая схемка/лэйаут UART->RS-485 аналогично изолированной breakout board, желательно универсальной на 3.3/5V со стороны UART от Arduino/LanchPad. Буду, однако, промавтоматизировать Digital избу с подворьем на Android планшете.
0
Я бы ADM2483 поставил или что-то подобное. Места меньше займёт, а цена 6 баксов в данном случае пофиг («брендовые» MOXA 1130 стоят свыше полста $, при этом развязки или даже толковой ESD защиты не имеют).
0
По питанию там стоят 1kV изолированные(с трансформатором) DC-DC конверторы 5V->5V фашистские фирмы PEAK

в чип-нн есть (это которые DC/DC)
0
изолированный uart/rs485 можно сделать, например, на связке ISO7231 (изолятор) + MAX485 (преобразователь TTL/RS485)
0
podkassetnik, thnks. Даже как-то не подумал поискать такую штуку, как P6AU-0505ELF, в чип-нн
0
на здоровье:) ассортимент там, канечна, небогат, НО! один из охеренных плюсов — нормальное краткое описание практически каждой позиции из всего списка наименований. что позволяет быстро сориентироваться, в каком направлении копать вообще
0
Столкнулся с такой проблемой: со стороны компа у меня преобразователь USB<=>RS485 http://www.ufatech.ru/rs485-usb-preobrazovateli-interfeisa на основе ADM485, у меня в устройстве — на основе MAX3485. Работает всё это дело нестабильно: включил — работает; выключил/включил питание — не работает, вытащил и вставил разъём RS-485 при выключенном питании, запитал и всё заработало. Т. е. получается, чтобы устройство вновь заработало, если у него пропало питание в процессе работы, небходимо его выключить, переподключить разъём RS-485 и затем снова подать питание. Без драйверов всё работает отлично. Кто- нибудь знает, в чём может быть проблема?
0
а мах3485 от скольки вольт питается?
0
MAX3485 от 3,3В, а ADM485 от 5В
0
Может, в этом проблема? +3,3В для пятивольтовой логики, строго говоря, недостаточно же. Я понимаю, что реальность отличается от «ГОСТов»:)
0
Может быть, пойду посмотрю, спасибо.
0
Проблема, похоже не в разнице уровней, а в контроллере: после подачи питания (питается от USB программатора), если он не отвечает на запрос от компа, делаю ему ресет принудительно и всё сразу начинает работать.
0
Всё оказалось проще некуда. По RS-485 происходило паразитное питание. При выключенном основном питании на шине 3,3В было 1,3В -> не было нормального ресета. Включил монитор питания в контроллере на 1,8В и всё стабильно заработало.
0
Есть схема простого преобразователя TTL -> 485 с опторазвязкой?
0
Преобразователь usb-rs485 на эфтидиайке?? Невероятно!
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.