Переходник USB - RS-485 своими руками
-
26 Февраль 2014
|
Информационные технологии
|
Сегодня поговорим о преобразовании уровней в микроэлектронике. Думаю, большинству читателей это неинтересно, поэтому советую сразу перейти на интересную статью о том, как можно сделать классный дизайн в рабочем кабинете: Создание уютного интерьера в офисе.
Итак, перед нами стоит задача:
Задача Спаять переходник для преобразования протоколов 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 спаян готов к использованию! Если у вас есть вопросы по работе данного переходника - пишите в комментарии!

Нажмите сюда, чтобы попробовать ChatGPT самому!