Адаптер rs 485 своими руками

Переходник USB — RS-485 своими руками

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

Итак, перед нами стоит задача:

Задача Спаять переходник для преобразования протоколов USB RS-485. Протокол RS-485 пригодится, если вам нужен помехоустойчивый канал передачи данных (к примеру, устройство находится далеко от компьютера, а вокруг злые строители создают наводки своими перфораторами).

Для этих целей используются микросхемы FT232 и MAX485 (или аналог SP481). Первая микросхема используется для подключения устройств к компьютеру через USB, на выходе у неё ТТЛ-сигнал, вторая — для преобразования уровней (из ТТЛ в RS-485), этот сигнал и нужен устройствам, с которыми будет работать компьютер.

Схема подключения этих микросхем есть на официальном сайте производителя FT232: здесь. Вот, как выглядит схема подключения:

Не кисло, а? На самом деле, всё очень просто, прочитайте документацию, там есть объяснение, каким образом FT232 знает, что нужно конфигурировать MAX485 на вход или выход. Микросхемка умная. Размещаю все компоненты в Протеусе:

Там же в Протеусе можно сразу посмотреть в 3d, как будет выглядеть платка:

Все это дело я быстренько вытравил в хлорном железе и напаял нужные компоненты.

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

Переходник USB — MAX485 не работает!Оказывается, схема, приведенная в даташите микросхемы FT232 не работает. Исправляем баги.

Подключил осциллограф — оказывается на пине управления приёмом MAX’а (пин RE) не тот сигнал, что нужно (он постоянно в нуле, что значит постоянный прием). Пришлось разрезать дорожку, идущую от FT232 ко входу RE, и закоротить RE с DE (это классическая схема подключения микросхемы MAX485). Теперь при отправке и приеме данных на ножках управления приёмом/передачей правильные сигналы, а именно: при отправке сообщений и на DE и на RE — лог. единица, при приеме на них — логический ноль. Проблема решена: в компьютере при передаче данных эхо отсутствует.

Начали тестировать полученный переходник USB-RS485 с нашей микроконтроллерной системой и. снова не работает. Посмотрел осциллографом на линии A и B — а там шум. А это ведь и понятно — обе микросхемы MAX485 (на нашем переходнике и с другой стороны провода, на устройстве) сконфигурированы на вход. Вот всё и шумит. При отправке с компьютера данных получается, что FT232 сама конфигурирует микросхему MAX485 на передачу, мгновенно отправляет данные и снова переводит её в режим приема. Видимо, из-за шума приёмник кроме необходимых данных принимает и мусор. Подумал, что неплохо бы линии A и B через резисторы повесить к земле и питанию. Загуглил и действительно народ так и делает, при чем удивляется, почему в даташите об этом ничего не сказано.

Итак, повесил линию A через резистор номиналом в 3,9 кОм на питание, а линию B через такой же резистор на землю (резисторы можно взять и поменьше). Шум на линии значительно уменьшился, но при передаче периодически выскакивали неправильные байты. Уменьшили скорость передачи данных до 1200 бод, всё работает прекрасно, никакого мусора, только валидные данные.

Еще нюанс — если провод очень длинный, могут появляться сбои в работе, поэтому с обоих концов линии передачи (между проводами A и B) вешают так называемые резисторы-терминаторы. Они погашают стоячую волну в линии и это здорово.

Итого, после недолгих мытарств получена рабочая схема переходника USB-RS485:

Переходник USB MAX485 спаян готов к использованию! Если у вас есть вопросы по работе данного переходника — пишите в комментарии!

Источник

Адаптер rs 485 своими руками

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

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

Читайте также:  Выпечка любимому своими руками

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Гамак для грызунов своими руками схема

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Создать новую ветку комментариев

Вы должны войти или зарегистрироваться чтобы оставить комментарий.

Источник

Преобразователь интерфейсов (переходник) 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.

Источник

Оцените статью