040-UART(RS-232) to USB-простой преобразователь.

Автор: | 11.05.2010

Преобразователь УАРТНаконец-то закончились праздники, и пришло время чего-нибудь сделать.

Начнем, пожалуй, с необходимого устройства, облегчающего жизнь рядового электронщика – устройства связи с компьютером. Это нужно для того, чтобы передать данные в компьютер (температура с датчиков, положение дверей, частота вращения двигателя, таблица значений с регистратора …) или принять данные из компьютера (таблицы значений для вычислений, настоечные данные для устройств, новая прошивка для загрузчика…). Для отладки нового устройства (посмотреть что там, в мозгах микроконтроллера, происходит) вообще незаменимая вещь.
Как Вы знаете, существует множество интерфейсов, посредством которых микроконтроллер может общаться с внешним миром. Но если речь идет о связи с компьютером – вне конкуренции интерфейс RS-232 (COM порт). Причина — простота работы с портом со стороны компьютера и наличие большого количества программ для этого предназначенных. Кроме того, почти в каждом микроконтроллере есть аппаратно поддерживаемый интерфейс USART (это тот-же RS-232, только с напряжениями 0 — 5v), что делает процесс связи легко реализуемым.
Для того, чтобы привести уровни сигнала микроконтроллерного USART к уровням COM порта компьютера нужно собрать несложный преобразователь (например, на МАХ232), но можно пойти по более интересному пути
Более интересный путь  — собрать преобразователь UART to USB. При этом USB порт воспринимается компьютером как виртуальный COM порт. В этом случае мы убиваем сразу несколько зайцев:
– USB порт есть в любом компьютере (хотя COM порт встречается еще довольно часто, но на ноутбуках его уже нет);
– как оказалось преобразователь UART to COM(RS-232) сделать гораздо сложнее, чем UART to USB (два раза делал программатор для СОМ порта с преобразователем МАХ232 – оба раза неудачно);
– если подключать преобразователь через USB хаб, то мы получаем сразу несколько виртуальных COM портов на одном USB, плюс безопасность для компьютера, так как хаб выступает в роли буфера.

Вот схема преобразователя UART to USB.

Схема преобразователя UART - USB


Сразу честно признаюсь – это не мое устройство. Взята данная схема с сайта  www.recursion.jp/avrcdc/ . Причина, по которой я ее здесь привожу – это простота схемы и дешевизна изготовления. Собрать схему довольно просто (можно даже на макете).

Внешний вид преобразователя UART to USB

Плата целяком

Готовое устройство я выполнил в форме «флешки» для того, чтобы удобней было пользоваться в «полевых» условиях. Для большего комфорта можно взять USB удлинитель, одним разъемом прицепить к компьютеру, во второй вставить нашу «флешку-преобразователь» и получим мобильное устройство, которое можно без проблем подключить к любой схеме.

Удлинитель для преобразователя

Печатная плата двухсторонняя, подходит для микроконтроллеров ATmega8/48/88/168 
040-M48-UARTtoUSB.lay v1.0 [30.02 KB] - рисунок макетной платы в формате Sprint-Layout

Вот вариант для изготовления по технологии описанной в посте №32.
040-M48-UARTtoUSB-2L.lay v1.0 [59.75 KB] - рисунок макетной платы в формате Sprint-Layout на одном слое

Прошивки для различных микроконтроллеров:
040-cdcmega.zip v1.0 [13.25 KB] - прошивка UART to USB для ATmega8/48/88/168
Фьюзы для ATmega8
Фьюзы для ATmega48/88/168
Фьюзы для CodeVisionAVR, PonyProg ставятся инверсно

SPI интерфейс для программатора выведен вместе со всеми интерфейсами сзади «флешки» – подключаем программатор прямо там. Штырек сброса паяем возле ножки сброса (чтоб не мешал). При программировании преобразователь нужно запитать напряжением 5v со стороны интерфейсов. Через USB нежелательно, так как напряжение питания через светодиод уменьшится. Если возникают проблемы по причине больших шумов – вешаем подтягивающий к питанию резистор на ножку сброса (5-10кОм). Наличие светодиода обязательно – он используется в качестве регулятора напряжения. Прошивка предусматривает работу управляющих линий (CTS, RTS, DTR), но для UART  они не нужны и я их не выводил на разъем интерфейсов. Если они Вам нужны — просто нужно «кинуть» перемычки с ножек микроконтроллера на ножки разъема интерфейсов.

После того как устройство собрано,
необходимо установить драйвер виртуального COM порта.
040-avrcdc_inf.zip v1.0 [39.51 KB] - Драйвер «Virtual Communications Port» для Win
В архиве есть папки для разных Win:
/raw — для (Windows 2000/XP)
/w2k — для Windows 2000 (bulk mode only)
/xpvista7 — для Windows XP/Vista/7 x32
/vista64 — для Windows Vista x64

Делается это очень просто:

Вставляем преобразователь
1 Вставляем «флешку-преобразователь» в USB порт;

Найдено новое устройство
2 Получаем в трее сообщение о том, что найдено новое устройство;

Мастер 1
3 Запустится «Мастер нового оборудования», выбираем «Установка из указанного места», жмем «Далее»;

Мастер 2
4 Выбираем «Включить следующее место для поиска» и в окошке указываем нужный путь к драйверу;
5 Жмем «Далее», драйвер установится, жмем «Готово»

Теперь в «Свойствах» «моего компьютера» в закладке «Оборудование» нажимаем кнопку «Диспетчер устройств». В окошке диспетчера устройств в разделе «Порты (COM и LPT)» увидим новое устройство — «Virtual Communications Port (COM5)».

Новое устройство
Для каждого USB порта будет назначен свой виртуальный COM порт (COM5, COM6, COM7 и т.д.).

Готово! Теперь можно пользоваться преобразователем.

Проверим работоспособность преобразователя, для этого нужно закоротить вход с выходом (RxD, TxD) и посылать с компьютера сообщения по виртуальному порту. Посланные сообщения должны возвращаться как принятые.

ПеремычкаНа нужные штырьки цепляем «джампер»-перемычку. Запускаем программу для работы с COM портом. Можно использовать стандартный виндовский гипертерминал, но мне больше нравиться другая программка — маленькая, портативная и функциональная.
Terminal v1.0 [320.94 KB] - Программа для работы с COM портом

Запускаем программу, устанавливаем нужный порт (смотрим номер порта в диспетчере устройств), скорость и другие параметры оставляем как есть, нажимаем «Connect», в окошке возле кнопки «->Send», пишем сообщение, нажимаем «->Send» и сморим результат. Нижнее окно — отправленное сообщение, большое окно — принятое сообщения. Если все работает — сообщения будут одинаковыми.

Проверка работоспособности COM порта

Данная «флешка — преобразователь интерфейсов» позже превратится в I2C toUSB, SPI to USB, SPI to UART и т.д. необходимо лишь перепрошивать ее необходимой прошивкой. (Что-то я у себя начинаю замечать тягу к универсализации :)).

Универсальный конвертер

P.S. Сайт-источник рекомендует для согласования уровней напряжения преобразователя(3.3v) и устройства(5v) соединять их через схему согласования. Но я думаю резисторов в пределах полукилоома в линиях RxD, TxD должно хватить для согласования — нужно попробовать.

Согласование уровней

P.P.S. Это первая практическая схема в блоге – дальше их будет больше, так как с основами мы, вроде-бы, разобрались (еще остались кой-какие вопросы – потихоньку буду писать).

(Visited 15 120 times, 11 visits today)

040-UART(RS-232) to USB-простой преобразователь.: 287 комментариев

  1. blogger

    Собрал я значит это чудоустройство, правда схему брал немного не с этого сайта
    кому надо пишите ссылку дам

    что могу сказать

    весь день возился программировал микроконтролер (не на этом устройстве)
    суть — через это устройство связь с микроконтролером

    на пк обычный терминал,
    код писал в кодевизаре

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

  2. vladimir161

    GetChiper я уже задавал вопрос , можно-ли преобразователь на ATtiny2313 использовать для прошивки 24cxx и чипов от принтера,если можно то как?Собирался делать на FT232,но её у нас не-так просто достать.Подскажите можно-ли соеденить преобразователь на Atmega8 и MAX232 для получения COM порта?Скорость прошивки не важна,главное чтобы от USB.

  3. vladimir161

    GetChiper подскажите разницу Atmega48 и Atmega48PA-PU ? Заранее спасибо!!!

  4. GetChiper Автор записи

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

    Atmega48PА — более экономичный и работает при более низком напряжении, а в остальном один в один.

  5. vladimir161

    GetChipeспасибо за ответы!!! Подскажите может вместо преобразователя сделать «студентский вариант Pickit2 «и использовать его для прошивки 24Cxx и чипов от принтера через USB?
    Просто надо прошивать чипы от ноутбука,вот и искал варианты.

  6. vladimir161

    P.S.чипы не от ноутбука а от катриджей принтера,и память TV.

  7. GetChiper Автор записи

    По поводу Pickit2 ничего не посоветую — никогда не делал.

  8. Kernel

    А что это чудо-устройство не работает на Windows 7?

  9. Kernel

    на ХР сразу определяет, что найдено новое устройство USB-232, в диспетчере устройств его можно увидеть, и прекрасно устанавливается драйвер, а на Windows 7 x64 определяется как Unknown Device, т.к., что самое интересное, VIP/PID по нулям.

  10. GetChiper Автор записи

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

  11. blogger

    работает если отключить проверку цифровой подписи при установке драйвера

  12. Kernel

    Но в начале перед установкой драйвера, устройство должно же как то себя определять, например оно появилось бы в разделе «Другие устройства», да и VID/PID не равнялись бы нулю. И не думаю, что на плате есть обрыв, т.к. разъемы USB даже располагал рядом в пяти сантиметрах друг от друга. и разъёмы Usb рабочие. Как на семёрке оно определяется?

  13. xorkrus

    На своей вин7х64 включил тестовый режим и поставил драйвера с папочки рав. До этих действий вид/пид тоже были по нулям.
    А можно как-то отправить свои данные изнутри мк в компьютер? Т.е. не через рх/тх.

  14. GetChiper Автор записи

    С этим устройством только так, но вообще можно и другими способами.
    Автор этого устройства разработал еще два устройства одно работает с SPI, а второе вообще гибко конфигурируемые порта ввода-вывода http://www.recursion.jp/avrcdc/

  15. exgen

    Собирал это устройство, чтобы подключиться к Attiny2313. Но устройстэто не заработало 🙁 Прошил прошивку, потом выставил фюзы WDTON и CKOPT (SPIEN итак стоит) в PonyProg, микро потерялась понипрогом (что понятно), но не заработало само отдельно с кварцевым резонатором 12МГц 🙁 Теперь и вернуть в программируемое состояние не могу, ни с 12МГц, ни с 25МГц (пока только эти два из выше 10МГц есть). На какую частоту расчитаны фюзы? Atmega8-16PU.

  16. ruslan

    Добрый день.Ответственно заявляю что линия RTS не работает не на преобразователе собранном на мега8 ни на тини2313 (есть и такой, находится на японском сайте первоисточника, но не на главной странице, а в архиве) Я не понимаю почему об этом никто не написал!!! На выходе RTS держится высокий уровень и всё.В то время как DTR замечательно отзывается на команды с терминала. Проверить можно светодиодом без осцилографа. Причём ситуация повторяется и на разных кварцах и на разных прошивках и на разных контроллерах. Ребята, может у кого то заработал RTS ?

  17. chipgetter

    подскажите, кто знает, это устройство будет работать в режиме 9600n2 или оно только для 9600n1 заточено?

  18. awas5

    Хорошо, толково выложено,перечичитаю все.Молодцы

  19. Mars17

    Подскажите, а как реализовать USB — RS232 COM. Нужен полноценный RS232 для прошивки ресивера.

  20. GetChiper Автор записи

    Для прошивки лучше купить готовый преобразователь — меньше проблем будет.

  21. Mars17

    Купить всегда проще, хотел на Atmege 8 попробовать.

  22. asdfgh

    Можна ли таким преобразователем шить Esp8266 c DTR(ресет), а то напряжно каждый раз дергать перемычку. Есть у кого опыт?

  23. seriogaa

    Цитата из статьи «Данная «флешка — преобразователь интерфейсов» позже превратится в I2C toUSB, SPI to USB, SPI to UART и т.д. необходимо лишь перепрошивать ее необходимой прошивкой. (Что-то я у себя начинаю замечать тягу к универсализации :)).»
    Где найти эти прошивки ? . Спасибо

  24. Михаил-Зайцев

    Собрал схему без красного светодиода на atmega8-16PU. В документации на этот контроллер Power Supply 4.5 — 5.5V. Контроллер запитал напрямую с USB (5V). В такой схеме не получилось установить драйвер на Windows 7 x32. Устройство определяется как Unknown Device . Как только добавляю красный светодиод, контроллер питается 3.3V, и все сразу работает! Но осталось несколько вопросов: Удивительно, почему этот контроллер вообще работает при питании такого низкого напряжения?
    Почему устройство не определяется при питании от 5V, может быть дело в кварцевом резонаторе? Почему светодиод и даже его цвет (пробовал с зеленым — работает, с оранжевым — нет) так влияет на работу устройства?

  25. admin Автор записи

    Светодиодом понижается напряжение питания. Соответственно, понижаются и логические уровни на линиях данных идущих к USB, что приводит их к требуемых для USB 3.3в. На светодиодах другого цвета другое падение напряжение.

  26. begun

    здравствуйте,
    да, прекрасное устройство ,но проблема стала установка драйвера .
    у меня видоус 7 с 64 битным режимом.
    будет ли это помеха при установке драйвера?
    заранее благодарен

  27. Сергей-Бойко

    Собирал пару раз этот переходник на mega8, работал с ним под winXP и win7. Перешёл на win10 и не получается теперь запустить конвертер. Система устанавливает для него свои какие-то драйвера, определяет как com порт, присваивает номер, но «Запуск этого устройства невозможен. Код 10».
    Поинтересуюсь, получилось ли у кого-нибудь запустить этот конвертер под win10? хоть и не надеюсь на положительный ответ.
    Я бы не заморачивался, но на этом переходнике у меня собран отладчик для avrstudio4, не особо хочется переделывать/перепаивать. на другой конвертер.
    Подскажите, если у кого работает на win10.

  28. begun

    здравствуйте,
    не знаю что делать.
    преобразователь работал исправно на XP, но вот пару раз вырубили напряжение 220в и с тех пор ни один усб порт его не обнаруживает.
    перепрограммировал атмегу 8 несколько раз,
    установил указанные фузы, но толку нет.
    на другом компьютере тоже самое.
    не могу справится.
    помогите пожалуйсто.
    укажите предпологаемую причину.

  29. GetChiper Автор записи

    Нужно убедится что порта МК все целы. Может попробовать взять новый МК?

  30. begun

    здравствуйте дорогой GetChiper,
    по вашему совету пробовал 2 атмега 8, но результатов не было.
    взял четвертый и чудо … все заработала.
    не знаю в чем дело, но вы оказались правы.
    одна из микроконтроллеров заработала.
    «‘забраковаееые»,- xотя здесь не работали, но в других приложениях вели себя нормально.
    в общем все нормально .большое спасибо за помощь.

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