041-UART to USB – простой преобразователь на ATtiny2313.

Автор: | 27.05.2010

ТитлЧестно признаться, поначалу я не планировал повторять на микроконтроллере ATtiny2313 схему преобразователя UART to USB из прошлого поста, так как функциональность варианта на ATmega8/48/88/168 лучше, больше возможностей, небольшой размер. Но в виду большей доступности и меньшей стоимости микроконтроллера ATtiny2313 решил, все-таки, сделать еще один преобразователь. Начав делать новый преобразователь понял, что принял правильное решение. Разводка печатной платы для СМД компонентов получилась очень удачной (самому нравиться !) – односторонняя, компактная, без перемычек. Кроме того, неожиданно, для данного преобразователя нашлось необычное применение (об этом будет отдельный пост). Как и в предыдущей схеме для преобразователя будут варианты прошивок для SPI to USB, IN-OUT то USB, а попозже, когда разберусь с более срочными проектами, будут еще варианты применений. Короче – продолжение следует …

Внимание! Появилась новая версия печатной платы преобразователя. 055-UART to USB – простой преобразователь на ATtiny2313 (Версия 2). Внесены изменения делающее преобразователь еще удобнее, прошивка и драйвер остались прежними.

Итак, для начала схема преобразователя

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

Схема взята с сайта источника (там же можно найти описание).

Поразмыслив над вариантами применения схемы, решил немного модифицировать схему (на схеме красными показаны изменения).

Схема преобразователя UART to USB на ATtiny2313 мод


Зачем мне понадобилось менять схему?
USB порт имеет выход питания 5v, в то же время уровни сигнальных линий 3.3v. При питании микроконтроллера напрямую от USB порта уровни сигнала на ножках будут 5v. Для сигнальных линий USB порта это много.
В оригинальной схеме для приведения уровней сигналов микроконтроллера к нужным 3.3v микроконтроллер запитывается через светодиод. В результате падения напряжения на светодиоде напряжение питания на микроконтроллере выходит в пределах 3-с-чем-то вольт (зависит от потребления микроконтроллера и типа светодиода). Соответственно и уровень на сигнальных линиях будет те самые 3-с-чем-то вольт.
Достоинство такого решения – простота. Недостатки – заниженное питание микроконтроллера (хотя можно опускать и до 2.8v, но с уменьшением питания возможны проблемы при такой частоте задающего генератора). Еще один недостаток несоответствие уровней преобразователя и устройства, к которому он должен будет подключаться (в большинстве случаев в устройствах питание 5v). При соединении линий с разными уровнями напряжений в них появляются уравнивающие токи. Их можно уменьшить, поставив в разрыв ограничительный резистор (схема становится более восприимчива к помехам) или собрав схемку согласования.

Я выбрал другой вариант — запитать микроконтроллер напрямую от USB порта (5v) и поставить на сигнальные линии стабилитроны. Стабилитроны уменьшают напряжение на линиях до необходимого уровня. Но нужно поставить стабилитроны немного большего напряжения (достаточно 3.6v), иначе через стабилитрон будет замыкаться на «землю» выходной сигнал USB порта.
Достоинства схемы – микроконтроллер работает от штатных 5v и при этом не требуется согласования с подключаемым устройством. Вот исходя из этих соображений я и поменял схему.

Собираем преобразователь.
Как и в предыдущем посте не плате предусмотрен стандартный разъем USB-папа. С таким разъемом не будут возникать проблемы с подключением. Можно воткнуть прямо в комп, а если нужно преобразователь приблизить к устройству – используем USB-удлинитель.
041-T2313-SMD.lay v1.0 [25.03 KB] - Печатная плата в формате Sprint-Layout для SMD компонентов
Печатная плата получилась компактная, односторонняя и без перемычек. Есть, правда, одна перемычка – резистор с нулевым сопротивлением, но он нужен как защита от перегрузок порта. При возникновении короткого замыкания питающих линий USB порта резистор с нулевым сопротивлением перегорит и разомкнет цепь.

Плата преобразователя UART to USB для ATtiny2313

В печатную плату я ввел область для макетирования (правая сторона платы). В этой области можно будет собрать несложные устройства, которые смогут взаимодействовать с компьютером через USB порт. Если эта область не нужна ее можно отрезать, сделав плату еще компактней.

Плата в сборе:

Плата преобразователя UART to USB в сборе

Как видно на плате не установлены все резисторы – они не нужны для преобразователя UART – USB, но могут понадобится для других целей. Позже под конкретные цели мы их припаяем.

Разъемы я припаял угловые, чтобы меньше торчали. Сзади платка тоже выглядит довольно аккуратно.

Задняя сторона платы преобразователя UATR to USB

На плате есть разъемы для программатора. Программировать можно прямо в USB порте, но лучше запитать плату от внешнего источника.
041-T2313.hex v1.0 [2.54 KB] - Прошивка преобразователя UART to USB для ATtiny2313

041-T2313-FuseBit [3.55 KB] - Фьюзы для микроконтроллера ATtiny2313 (преобразователь UART to USB)
После прошивки нужно установить драйвер для виртуального COM порта. Драйвер берем здесь или с предыдущего поста (он один и тот-же), там-же описано как его установить.
040-avrcdc_inf.zip (18640)
После установки драйвера преобразователь будет видеться компьютером как COM порт, и соответственно работать с ним будут все программы работающее с COM портом.

Для проверки работоспособности собранного устройства замыкаем вход с выходом и посылаем сообщения в COM порт с программы терминала. Отправленные сообщения должны вернуться как принятые. В предыдущем посте смотрим как это сделать.
Terminal (16920)

Есть печатная плата для варианта микроконтроллера в DIP корпусе и TH-компонентами:

Плата преобразователя UART to USB для ATtiny2313 в TH

041-T2313-TH.lay [16.63 KB] - Печатная плата UART to USB в формате Sprint-Layout для TH компонентов
Собранная плата выглядит вот так:

Собранная плата

Устройство готово!

P.S. Немного тормозю с постами — отпуск.

 

(Visited 7 119 times, 20 visits today)

041-UART to USB – простой преобразователь на ATtiny2313.: 309 комментариев

  1. ec

    аха. сигнальный уровень усб должен быть 3,3 в. Пошел курить спецификацию усб 🙂 Щас посмотрел проект IgorPlug2 — там при питании от усб напрямую поставили предохранитель и в описании предупреждение — что можно убить материнскую плату, если допустите ошибку при сборке и поленитесь поставить предохранитель 🙂

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

    Да защищать USB порт нужно обязательно, хотя его спалить и трудно, но при хорошем КЗ и «удачных» китайских комплектующих компа последствия могут быть впечатляющими.
    У меня был случай КЗ в устройстве воткнутом в USB, так от тока КЗ расплавилось и потекло олово на устройстве (защита компа никак не сработала, хотя и порт остался цел. Вооот…

  3. alexandershahbazov

    Спасибо за статью , за переход на ATtiny2313 .
    Жаль что пока по техническим причинам не могу проверить .

  4. AV783166

    Собрал на макетной плате. Винда говорит «Устройство УСБ не опознано». При попытке установить драйвер получаю сообщение, что мастеру не удалось найти подходящего драйвера. В чем может быть проблема?

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

    Причины могут быть такие:
    — неправильно собрал схему — перепроверить все соединения;
    — частота кварца не 12МГц (при другой частоте не будет работать);
    — неправильно прошиты фьюзы — (микроконтроллер повторно перепрограмируется ?);
    — стабилитроны те, что нужно?

    Попробуй воткнуть в другой USB порт, в другой комп.

    У меня нормально работает как на ноуте так и на башне — проблем нет. (С первого разу не заработало — расстроился — оказалось фьюзы неправильно установил. Прошил фьюзы правильно — все заработало)

  6. AV783166

    Спасибо! Получилось!
    Выпаял стабилитроны и поставил светодиод, как было в первоначальной схем е.
    Есть подозрение, что стабилитроны не те продали…
    Кстати, как проверять стабилитроны и определить выводы?

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

    Стабилитрон проверяется как диод — «плюс» на анод,»минус» на катод — есть ток — «звонится», если наоборот — сопротивление будет бесконечным. Проверяется (напряжение стабилизации) просто — анод садишь на «минус», «плюс» через резистор 5-10кОм садишь на катод, подаешь напряжение с запасом (7-12В) и меряешь напряжение на самом стабилитроне. Это и будет напряжение стабилизации.
    Походу у тебя стабилитроны с меньшим напряжением стабилизации — проверь.

  8. AV783166

    Проверил как диод: в прямом 750 Ом, в обратном бесконечность.
    Провел опыт: подключил ч\з 1 кОм к блоку питания и сделал измерения при разном напряжении. Результат: Напряжение питания = Напряжение на стабилитроне. Привожу табличку:
    4В = 2.5В
    5В = 2.7В
    6В = 2.8В
    8В = 3В
    10В = 3.6В
    Стабилизации нет, хотя стабилитрон вроде исправен. Что за фигня…
    Стабилитроны в схему впаяны были новые, из магазина.
    Завтра куплю другой модели. Есть рекомендации — какие взять?

  9. AV783166

    Наверно криво написал….
    В табличке первая колонка напряжение питания, вторая на стабилитроне.

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

    Особых рекомендаций нет, так как требуемые характеристики (рабочее напряжение и ток) малы — подойдет любой. Я сам их покупаю так — «Дайте мне стабилитроны на 3.6 вольт» :). Если это обычный (ТН) стабилитрон, то это стекляшечка с выводами и надписью «3V6».

  11. AV783166

    Верхний стабилитрон на схеме включен неверно — это прямое включение. Я перевернул его и все заработало.

  12. ec

    стекляшечка с выводами и надписью «3V6?.

    Эххх, вот за это спасибо огромное, крутил вертел сегодня в руках стекляшку С5V6, так и не понял. А тут — как раз вовремя 🙂 У вас там стабилитроны в SOD c желтой полоской вроде, сегодня для шим взял 18-вольтовые — один в один. Как их отличать друг от друга — хз….

  13. ec

    AV783166 :Проверил как диод: в прямом 750 Ом, в обратном бесконечность.Провел опыт: подключил ч\з 1 кОм к блоку питания и сделал измерения при разном напряжении. Результат: Напряжение питания = Напряжение на стабилитроне. Привожу табличку:4В = 2.5В5В = 2.7В6В = 2.8В8В = 3В10В = 3.6ВСтабилизации нет, хотя стабилитрон вроде исправен. Что за фигня…Стабилитроны в схему впаяны были новые, из магазина.Завтра куплю другой модели. Есть рекомендации – какие взять?

    ДА есть там все. Просто чтобы увидеть стабилизацию, нужно изменять ток в пределах линейного участка ВАХ для этого стабилитрона (подбором резисторов между катодом и анодом, соответственно ограничив ток и подав напряжение, равное Uстаб+Uпадения на переходе). Кстати, данное схемотехническое решение со стабилитронами можно использовать в качестве стабилизатора питания микроконтроллера (вместо светодиода)

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

    AV783166 :

    Верхний стабилитрон на схеме включен неверно – это прямое включение. Я перевернул его и все заработало.

    Ух ты, точно в схеме ошибка! Чего-то мне вздумалось повесить стабилитрон на «питание» заместо «массы» — все исправил. Спасибо!
    В печатных платах ошибки нет — там все правильно!

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

    ec :

    У вас там стабилитроны в SOD c желтой полоской вроде, сегодня для шим взял 18-вольтовые – один в один. Как их отличать друг от друга – хз….

    Чтобы отличать их друг от дружки я кладу с ними в коробочку листик с надписью типа :). Только так.

  16. AV783166

    Собрал и запустил схему, провери ч\з терминал соединив TxD c RxD. Все Ок. Хочу ее подключить к уже существующей схеме на ATmega8-16PU. В ней сейчас реализован RS-232 ч\з MAX232. Кварц 4МГц. Интерфейс работает в двух направлениях. Как все правильно соединить не переделывая имеющейся схемы, чтоб стало работать ч\з USB?

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

    Да все просто — отсоединяешь линии TxD и RxD от MAX232, присоединяешь их к преобразователю, соединяешь «земли» преобразователя и схемы.
    Если преобразователь работает через светодиод, как в оригинальной схеме — линии TxD и RxD лучше соединять через резисторы порядка полукилоома.
    Если схема со стабилитронами — соединяем напрямую.

  18. AV783166

    Спасибо! Пока чё-то не работает… разбираюсь…
    А можно использовать для обеих МК один кварц (12МГц)? Как?

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

    Линии соединил перекрестно (TxD-RxD, RxD-TxD)?

    Один кварц использовать можно. У того контроллера на котором весит кварц устанавливаеш фьюз CKOUT — ножка CKOUT (у ATtiny2313 это ножка 6) начнет выдавать меандр с частотой задающего генератора, далее в микроконтроллере без внешнего генератора нужно установить фьюзы на External clock (внешний задающий генератор), к ножке XLAT1 (у ATmega8 это ножка 9)присоединяем линию CKOUT — теперь оба контроллера будут работать синхронно от одного кварцевого генератора.

  20. AV783166

    Ага. Спасибо. Попробую.
    Оказалось кварц далеко от МК утащил, на 4 см и стоко времени потерял…
    Теперь попробую один кварц использовать!
    Слышал, что корпус кварца надо к земле припаять, правда?
    Как правильно посмотреть осциллографом тактовую на кварце?

  21. AV783166

    Если я изменю тактовую с 4 до 12МГц (под кварц USB), прошивка потребует изменений?

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

    AV783166 :

    Слышал, что корпус кварца надо к земле припаять, правда?
    Как правильно посмотреть осциллографом тактовую на кварце?

    Можно припаять — это увеличит точность (будет меньше помех).
    Посмотреть осциллографом можно, но сигнал на кварце очень «нежный». Определить работает он правильно или нет трудно.

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

    AV783166 :

    Если я изменю тактовую с 4 до 12МГц (под кварц USB), прошивка потребует изменений?

    Процентов на 98 да 🙂

  24. geovas

    Добрый день! Собрал сей девайс на TH компонентах, залил прошивку, попытался выставить фьюзы (PonyProg-ом) и тут на тебе: они не прошиваются, а контроллер больше не читается! что это может быть?

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

    Боюсь, что Вы не верно прошили фьюзы. Если я не ошибаюсь, то у понипрога фьюзы выставляются инверсно и если Вы это не учли то микроконтроллер заблокировался для последовательного программирования.
    Если фьюзы выставлены правильно, то возможно не работает кварцевый генератор, попробуйте поменять кварц.
    А до программирования фьюзов микроконтроллер в плате читался?

  26. geovas

    @GetChiper
    Контроллер ранее уже использовался, однако фьюзы до этого я не трогал, инверсию я учел, но как я писал, при попытке прошить именно фьюзы — контроллер перестал подавать признаки жизни. И еще: я попробовал подать внешний тактирующий сигнал (0,5МГц, меандр — проверенный), однако я не извлек ни кварц и конденсаторы. Схема пока не ожила.

    p.s. я так понял, что от дефолтных настроек меняется младший бит + SKDIV8 и WDTON, я прав?

  27. geovas

    Извиняюсь, опечатался — конечно не бит, а байт!

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

    Еще СKSEL поменяны, так как в дефолтных настройках микроконтроллер работает от внутреннего задающего генератора.

    Как вариант решения проблемы (при условии, что фьюзы прошиты верно):
    — Можно попробовать убрать (закоротить) резисторы в линиях SCK, MOSI, MISO (возможно уровень программирующего сигнала низок);
    — При программировании микроконтроллера питание от USB? Можно (и нужно)попробовать запитать от внешнего источника 5v;
    — Прямо на ножки питания попробовать прилепить керамический конденсатор 0.1мкФ;
    — попробовать прочитать микроконтроллер в другой программе.

  29. geovas

    Думаю все же я неверно прошил фьюзы, уже занимаюсь параллельным программатором… Надеюсь в течении ближайший дней все сделаю, очень уж хочется мне это устройство собрать!

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

    Устройство полезное. В хозяйстве пригодится 🙂

  31. geovas

    Уважаемый GetChiper, подскажите, какой программой выставлены фьюзы в приведенном в данном посте скриншоте?

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

    Скриншот фьюзов сделан с АлгоритмБилдера. В нем фьюзы выставляются как по даташиту на микроконтроллер (если галочка не стоит «0» — то данная опция «запрограммирована», т.е. активна).
    Если Вы не уверены как ставить фьюзы в своей программе, просто прочитайте их со своего микроконтроллера и посмотрите как установлен бит SPIEN (он всегда активен). Если SPIEN без галочки, значит фьюзы выставляем как у меня. Если SPIEN с галочкой — значит фьюзы нужно ставить инверсно.
    Еще посмотрите статью по фьзам http://www.getchip.net/posts/024-chto-takoe-fuse-bits-avr-mikrokontrollerov/

  33. geovas

    Хмм, главное все делаю, как у вас, а контроллер все равно не работает:) я даже параллельный программатор спаял (правда он пока косой/кривой, но контроллер лечит)! Может контроллер дохлый какой… Попробую завтра в магазин за кварцами сходить (вдруг у них там каждый второй кривой). А нет ли возможности без внешнего кварца обойтись?

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

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

  35. geovas

    Контроллер не работает именно так 🙂 шью фьюзы и он подыхает
    я собрал не в чистом виде параллельный программатор, а устройство использующее режим высоковольтного программирования фьюзов, вот ссылка: http://diy.elektroda.eu/atmega-fusebit-doctor-hvpp/ Я думаю мне более ни для чего этот режим программирования не нужен и так уж получилось, что у нас в городе в наличии имелся только полный список деталей именно для этого девайса (ну очень простая конструкция).

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

    Если не шить фьюзы сама прошивка прошивается нормально?
    Если да, то я подозреваю, что не работает кварцевый генератор. Попробуй его поменять (и конденсаторы тоже). Поставь 1МГц или чуть больше и попробуй прошить фьюзы.

  37. geovas

    Невезение какое-то, поставил совершенно новый ATtiny2313 и он прошился и заработал! но радость была недолгой, устройство не распознается 🙁 что могло пойти не так? собрал все по схеме, сейчас прозвонил, не вижу недочетов… И по-моему у вас на схеме TH SPI не туда воткнут (его линии находятся с другой стороны, т.е. справа) или это я что путаю???

  38. geovas

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

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

    geovas :

    И по-моему у вас на схеме TH SPI не туда воткнут (его линии находятся с другой стороны, т.е. справа) или это я что путаю???

    Ну конечно-же SPI не там нарисовал! В этом вся и проблема!
    Рисунок подправил. Теперь все должно заработать.

  40. geovas

    Контроллер то я уже давно прошил… Сейчас лично у меня две мысли:
    1) Я не подключил корпус USB штекера на «минус»;
    2) Возможно один из компонентов — бракованный.
    Буду разбираться…

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

    к Выше перечисленному:
    — Есть возможность проверить на другом компе? проверь.
    — Проверь/замени стабилитроны.
    — Частота кварца очень критична. Он нормальный?
    — По питанию стоит керамический конденсатор? Можно временно привесить прямо на ножки питания контроллера.

  42. geovas

    Уважаемый GetChiper! Дико извиняюсь за мою некомпетентность, но мое устройство пока не работает… Хочу показать вам фото того, что я напаял + описания изменений в схеме: http://rghost.ru/2823654 на момент закачки, вирусов в архиве не имелось 🙂 Буду очень рад, если вы посмотрите!

    p.s. Я пока не менял: стабилитроны (но перед запайкой, я их проверил — работали корректно), конденсаторы, резистор на 1,5КОм (если верить моему мультиметру, то резистор в порядке).

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

    Наверное я соберу девайс на своей ТН плате и посмотрю как он работает. Все равно собирался собирать — вот и повод подвернулся. Соберу отпишусь.
    По присланной плате вроде все нормально. А попробуй отпаять стабилитроны и заместо предохранителя поставь светодиод (выйдет оригинальная схема).

  44. geovas

    Сделал, как вы сказали. И опять: «устройство не опознано», причем и на башне (phenom II) и на ноуте (celeron m). Из аппаратного, варианты такие: мертвы кондеры, либо схема сильно запачкана (я почему-то до недавнего времени считал, что лучший припой — кислота, теперь использую ЛТИ-120). На сегодняшний день испробованы: 2МК, 2кварца, обе схемы, 2разных USB штекера, результат пока никакой… Но я упорный, тем более это уже дело чести 🙂

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

    Собрал плату — все сразу заработало. Резисторов не нашел нужных номиналов поставил какие были, но все работает и так. Было подозрение, что кварц не будет работать из-за длинных дорожек к нему, но подозрения не оправдались.
    Желательно еще подтянуть сброс к +питания через резистор в 10кОм.
    По поводу твоей не заработавшей платы даже не знаю что думать.
    Еще раз просмотрю плату — может что и найду.

  46. geovas

    Моя реплика вашего прибора все еще не работает…
    Провел простой тест: сделал «мигающими» все линии портов PB и PD
    результат:
    — atmega8-16PU — полет нормальный, все работает
    — attiny2313-20PU #1 — на всех линиях постоянно лог.1
    — attiny2313-20PU #2 — все линии в состоянии высокого импеданса
    Фьюзы стоят по дефолту (на всех контроллерах) сбрасывал HVdoctor-ом,
    на второй тиньке, HVdoctor мигает светодиодом (зеленым), однако прошивается и кварц точно работает (проверял осциллографом), а вот первая тинька при включении внешнего кварца — уходит в летаргический сон…

    В общем наверное разорюсь еще на 100р и куплю 3-ю тиньку 🙂

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

    Дааа… Чего-то у тебя с тиньками как-то незаладилось 🙁
    Если HVdoctor мигает зеленым, значит микроконтроллер залочен. Нужно установить перемычку для полного стирания.
    С новым микроконтроллером нада будет быть как-то поаккуратней.

  48. geovas

    Если сжег, то либо перепутав + и -, либо не той стороной вставил в HVdoctor (всеж 12вольт, а может и все 14, мультиметр врет). Еще грешу на продавца… вторая тинька с первого дня дурила… возможно ее такой продали, а вот на первую, случайно подал 40 вольт (точнее даже не я, но это меня не оправдывает). Надеюсь 3-я принесет мне радость, ведь 3-хорошее число 🙂

  49. geovas

    Сходил сегодня, купил новый контроллер, и что вы думаете? Оно заработало!!! Наконец то! начал собирать еще в августе, и вот оно, долгожданное рождение USB2UART преобразователя! Спасибо за статью и за помощь! Попробую еще напаять резистор и пару пинов, дабы получить программатор, а потом залачу и в корпус. Кстати, вы пробовали лачить платы? не знаю, что в магазине спросить…

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