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.zip (7188 Загрузок)

Вот вариант для изготовления по технологии описанной в посте №32.
040-M48-UARTtoUSB-2L.zip (7413 Загрузок)

Прошивки для различных микроконтроллеров:
040-cdcmega.zip (9308 Загрузок)
Фьюзы для ATmega8
Фьюзы для ATmega48/88/168
Фьюзы для CodeVisionAVR, PonyProg ставятся инверсно

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

После того как устройство собрано,
необходимо установить драйвер виртуального COM порта.
040-avrcdc_inf.zip (22962 Загрузки)
В архиве есть папки для разных 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.zip (20422 Загрузки)

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

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

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

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

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

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

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

(Visited 42 066 times, 3 visits today)

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

  1. xorkrus

    И тут я по пристаю 😉
    А у вас нет ли варианта сего CDC-232 но без уарта? Просто чтоб из программы слать в усб…
    Ну или хотя бы подскажите пожалуйста, как из программы слать в усб (в ком)…

  2. dmitrye25

    AVR получиться программировать?

  3. dmitrye25

    AVR получиться програмьировать?

  4. ilya221133

    Ура!Заработало!Спазибо за схему афтору.
    А вместо кондёров я использовал советские подстроечники))

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

    SS — это не сброс. Это линия — «выбор ведомого» (англ. Slave Select) в SPI интерфейсе.

    c1 и c2 можно поменять на 22пф

    Пики программировать не получится.

  6. dmitrye25

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

  7. ilya221133

    Можно заменить конденсаторы c1,c2 на 22пф

  8. dmitrye25

    Вывод SS это reset?

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

    Больше бы сделал выводов. Попробуй на макетке, потом сам решишь, как тебе удобней.

  10. ilya221133

    Делал все на макетке.

  11. ilya221133

    Почему у меня не определяется устройство?
    Только светодиод очень часто моргает.(

  12. dmitrye25

    сейчас я-бы сделал ее совсем по другому…
    Поделитесь если можно как бы сейчас решили?
    Не хочется лишнее делать
    Но хочется универсальности

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

    На этой платке можно сделать как минимум три преобразователя отсюда http://www.recursion.jp/avrcdc/
    Плюс программатор http://learn.adafruit.com/usbtinyisp

    С другой стороны, плата делалась давненько и сейчас я-бы сделал ее совсем по другому… так что решайте.

  14. dmitrye25

    Не догоняю универсальность этого устройства .если есть лучше надо выложить или этот проект до качать!!!!
    не понимаю- этот проект делать или другой ,что посоветуете
    При программировании isp- ss -это reset правильно понял?

  15. Kernel

    И ещё стоит сказать, что фьюзы в ручную придется ставить, без использования дополнительной прошивки фьюзов

  16. Kernel

    По идее можно, т.к. в Makefile’е есть закомментированный пункт CLK = 16000000UL. Только придется прошивку заново компилировать, изменив перед этим в ресурсном и заголовочном файлах проекта (oddebug.h и usbdrvasm.S) значения с 12000000 на 16000000. В своем проекте я поставил 20 MHz.

  17. ilya221133

    А на 16 МгЦ можно сделать?
    Ато у меня в городе нет на 12. (

  18. Kernel

    Спасибо!))) Не заметил ссылки в статье на исходный код http://www.recursion.jp/avrcdc/ там есть не только схема, но Source Code в разделе Download CDC-232

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

    В самом низу страницы (той что по ссылке) даны все необходимые ссылки.

    »
    Documentation Resources
    Download the V-USB package containing a short description and several simple code examples.
    V-USB’s git repository is on github.com.
    V-USB Wiki is a public Wiki with lots of additional information.
    There is also an excellent step by step tutorial by Code and Life.
    Another third party tutorial can be found at workinprogress.ca.
    «

  20. Kernel

    @GetChiper
    А можно по конкретней ссылочку дать?.. Копаться не лень, но ничего не понятно!

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

    Вот здесь http://www.obdev.at/products/vusb/index.html есть исходники и документация по созданию программного моста USB-UART с возможностью использования своего имени для определяемого устройства.

  22. Kernel

    Доброго времени суток! Я очень благодарен админу за эту статью, она невероятно полезна для меня! Я работаю с Atmega88, и в архиве есть прошивка для этого мк! Собрираю устройство не для своего пользования, и в связи с этим возможно ли поменять с помощью какого либо ПО название наденного com-порта на ПК? На скрине «USB-232», а мне необходимо название моего устройства.

  23. Mars17

    Подскажите а есть ли продолжение этой темы UARTto USB?
    Хотел бы собрать универсальное устройство для программирования ATxmega32A4 и STM32F100C. Или посоветуйте что собрать для программирования этих МК.

  24. pino24

    в USB 3 девять выводов!! афигеть

  25. pino24

    pino24 :
    Ок)) мне всеж не нравится что приходится отключать проверку подленности((, но придется так и сделать ;(

  26. pino24

    Ок)) мне всеж не нравится что приходится отключать проверку подавленности((, но придется так и сделать ;(

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

    Проблемы с драйверами — это для 7 х64 обычная проблема.
    Где то в комментах уже это обсуждалось. Вроде как и решали эту проблему. Просмотри комменты.

  28. pino24

    виноват в USB3 больше ампераж, а не вольтаж. на стандарте USB2 работает, специально попробовал, а на USB3 почему то нет((

  29. pino24

    и USB3 стандарта тоже нет на ноуте

  30. pino24

    @GetChiper Прикол заключается скорей всего в том что:
    1) у меня на материнке USB2 и USB3
    2) у меня win7 x64
    3) на старом ноуте все работает.
    Там обычный WinXp sp2, и нет USB2, нормально запустился. я думаю виноваты новые стандарты usb. надо будет напряжения померить на USB2,USB3, веть говорят что на юсб3 напряжение завышено

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

    Возможно гдето ошибка на плате и замыкание Rx и TX вырубает девайс.

  32. pino24

    Салют всем, собрал я девайс. столкнулся с фегней, при подключении к юсб все определяется норм при закачивание Rx и TX система оповещает звуковым сигналом что типа устройство отключилось, и терминал показывает что ком порт отключен. и еще я не ставил светодиод, на линии D+ и D- поставил стабилитроны на 3.3в может быть поставить на 3,6в??? за ранние спасибо. если можете то напишите в ВК https://vk.com/pino24 , эта мая страница или на почту pino24@yandex.ru

  33. kurt116

    спасибо, буду разбираться… походу мертв мой мк((( reset и spien не выключал, но все равно больше не отзывается.

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

    Нет ресет не отключается — МК можно будет прошивать и дальше.

    Вот фьюз байты:
    Low F6
    High CE
    Ext F9

  35. kurt116

    насколько я понял reset отключаем? т.е. микроконтроллер шьется один раз?

  36. kurt116

    Подскажите пожалуйста фьюзы для AVRDUDE а то запутался совсем.

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

    А в чем Вы устанавливали фьюзы? Возможно Вы их выставили инверсно.

  38. Mitrandir

    А фьюзы указаные для микроконтроллера Atmega88 правильные ?
    Я такие прошил и микрик отвалился (больше не откликается) и вероятно это связано с RSTDISABLE

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

    Боюсь USB очень чувствителен к частоте и такой фокус не пройдет.

  40. egyptian3000

    У меня такой вопрос, а если заменить кварц 12МГц на 14,7456 МГц повлияет ли это на стабильность работы USB? И будет ли схема вообще работать?

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

    Должно.

  42. qwe...

    а если собрать на атини2313 и задействовать rxd txd каторые нужны только для к-линии,ти будет он работать .

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

    Теоретически должен, но лучше для таких целей заюзать аппаратный преобразователь.

  44. qwe...

    добрый день!
    имею адаптер кл-линии для диагностики авто в нём задействованы RTS.DTR.TXD.RXD, ти будет он работать с этим преобразователем.

  45. alvikagal

    Собрал, прошил — заработало сразу как uart.
    Хотел попробовать как программатор, но не нашёл страничку с прошивкой и описанием.
    На скорости 57600 не успевает обрабатывать. Так, что 38400 — это наверно действительно потолок или есть задержка? Пробовал через бут заливать прошивку и через этот переходник не получилось, а cp2102 справляется. Это как то можно исправить или нет?

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

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

  47. dimon2

    У меня такой вопрос, может пробовали.
    Не обходим адаптер I2C шины, к примеру вот такой: http://www.texnotron.com/uploads/postsnew/2010-10-19/44-72.jpg
    Для формирования необходимо 4 сигнала DSR, RTS, CTS, и DTR.
    У вас есть CTS, RTS, и DTR. Нету DSR.
    Вообще такой вариант ни кто не прорабатывал?

  48. Glaz

    Я на Win7-64 поставил утилиту,которая при каждом включении компа отключает проверку подписи драйверов.Зато теперь и USBasp проггер заработал.

  49. 6pblcuk

    Спасибо за ответ, на буке настроил, на компе почему то не идет, но там надо винду переставлять, накосячил в свое время с ней. Теперь другая проблема. Собрал я 12-канальный генератор эффектов, при включение через данный преобразователь соединения нет(делал со светодиодом), переделал по быстрому на стабилитроны и на рабочем буке все запустилось. Приношу домой, пробую запустить на 7 и… щищ с маслом, говорит, что подключено неизвестное устройство. Ни в какую определять не хочет.

  50. hiryrg

    При загрузке копмпьютера нажмите F8 там найдёте надпись :отключить обязательную проверку подписи:

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