18.02.2010

USB-TTL v.3

На днях разбирался с неким устройством на ATmega128, с целью превращения в Arduino-совместимую платформу.

Но поскольку на нем нет ни COM, ни, тем более, USB-портов, решил использовать свой же собственный USB-TTL конвертер. И все бы хорошо, если бы не пару но:

1. Автосброс - очень удобная вещь, а я не вывел наружу сигнал DTR и тем самым обрек себя на ручной сброс при загрузке каждого нового скетча;

2. Нет резисторов 1К, которые включены последовательно в линии Rx и Tx. Так надежнее, особенно если в скетче есть вероятность манипулирования этими пинами.

Родилась идея создать новую версию переходника с исправлением этих мелких недостатков:



По-прежнему получилось обойтись лишь одной SMD-перемычкой 1206, удлиннив корпус на несколько миллиметров:







Part     Value          Device     Package   

C1       100n           C-EUC0805  C0805    
C2       100n           C-EUC0805  C0805    
C3       100n           C-EUC0805  C0805    
FUSE     500mA          L-EUL1812  L1812    
IC1      FT232RL        FT232RL    SSOP28   
JP1      PWR            JP1E       JP1      
JP2                     PINHD-1X5  1X05     
LED1     TX             LED3MM     LED3MM   
LED2     RX             LED3MM     LED3MM   
R1       330            R-EU_R0805 R0805    
R2       330            R-EU_R0805 R0805    
R3       0              R-EU_M1206 M1206    
R4       1K             R-EU_M0805 M0805    
R5       1K             R-EU_M1206 M1206   
X1       USB            PN61729-S  PN61729-S

Попутно поправил размер контактных площадок - если кто-то уже пробовал изготавливать эту плату, наверняка заклеймил меня нехорошим словом при сверлении отверстий под светодиоды и разъем USB. Хочу принести им свои заочные извинения ;)



Испытания нового экземпляра прошли успешно.

Скачать файл проекта USB-TTL v.3 (лицензия CC-SA).

Внутри вы найдете файлы:
  • со схемой и печатной платой в формате CAD Eagle;
  • для изготовления одной платы по ЛУТ-технологии, в формате EPS;
  • для печати сразу нескольких заготовок на одном листе (для экономии бумаги) - в формате GIMP.
(не хватает gerber274X, разве что ;)

UPD: по поводу "моей любви к огромному USB-разъему"

16 комментариев:

  1. Интересно, откуда такая любовь к этому огромному USB-B разъему? Почему бы не mini-USB? А в идеале я как разберусь хоть с каким-нибудь CAD софтом (пока что всё на макетках колхозю) сделаю плату под толстый текстолит, чтобы USB контакты были прямо на ней (чтобы саму плату в USB разъем можно было бы вставлять)

    ОтветитьУдалить
  2. Действительно. А почему вообще не micro-USB? Классный разъем, и главное - очень компактный!

    ОтветитьУдалить
  3. В СтикДуино - http://spiffie.org/kits/stickduino/start.shtml USB-вилка тип "А", "прорисована" прямо на плате. Единственное неудобство - ограничение на длину линий TTL от микросхемы FTDI, к тому же, желательно поставить на эти линии фербиды - http://www.murata.com/emc/example/d_4/dvd_2.html - для защиты от помех.

    ОтветитьУдалить
  4. здравствуйте!подскажите пожалуйста,как сделать на выходах 0,1,2,3 такой сигнал как на обведенной картинке ?
    http://s59.radikal.ru/i166/1002/c3/5aa5af1ce690.png

    это для вот такого творения :)
    http://www.cncmasterkit.ru/modules.php?name=Forums&file=viewtopic&p=7710#7710

    ОтветитьУдалить
  5. прошу прощения за глупый вопрос - выходы 0,1,2,3 - это выходы ЧЕГО?

    ОтветитьУдалить
  6. простите!так сейчас выглядит,я не знаю как сделать перекрывающиеся импульсы

    void setup() {
    pinMode(0, OUTPUT);
    pinMode(1, OUTPUT);
    pinMode(2, OUTPUT);
    pinMode(3, OUTPUT);
    }
    void loop()
    {
    digitalWrite(0, HIGH);
    delay(50);
    digitalWrite(0, LOW);
    digitalWrite(1, HIGH);
    delay(50);
    digitalWrite(1, LOW);
    digitalWrite(2, HIGH);
    delay(50);
    digitalWrite(2, LOW);
    digitalWrite(3, HIGH);
    delay(50);
    digitalWrite(3, LOW);
    }

    ОтветитьУдалить
  7. Если я ничего не перепутал, то должно быть так:

    void setup() {
    pinMode(0, OUTPUT);
    pinMode(1, OUTPUT);
    pinMode(2, OUTPUT);
    pinMode(3, OUTPUT);

    digitalWrite(0,HIGH);
    digitalWrite(1,LOW);
    digitalWrite(2,LOW);
    digitalWrite(3,HIGH);
    }
    void loop()
    {
    delay(50);

    digitalWrite(1, HIGH);
    digitalWrite(3, LOW);

    delay(50);

    digitalWrite(0, LOW);
    digitalWrite(2, HIGH);

    delay(50);

    digitalWrite(1, LOW);
    digitalWrite(3, HIGH);

    delay(50);

    digitalWrite(0, HIGH);
    digitalWrite(2, LOW);
    }

    ОтветитьУдалить
  8. а ведь и правда перепутал,спасибо! :)сейчас все ок :)

    ОтветитьУдалить
  9. а если подвинуть разъем питания и сигнальный на те места как они расположены на бредбоард, использовать мини usb и smd светики - то Фтыкать сей девайс можно будет прямо в макетку а не колхозить на проводах.

    ОтветитьУдалить
  10. Да, полностью согласен! Я с удовольствием размещу здесь ссылку на производные от моей работы, содержащие любые усовершенствования.

    ОтветитьУдалить
  11. будем ждать плату с usb-mini ;)

    ОтветитьУдалить
  12. А как работает автосброс, а то у меня он отказывается...

    ОтветитьУдалить
  13. Перед заливкой скетча в Arduino IDE дергается DTR. Только он должен быть подключен к RESET-у, разумеется ;)

    ОтветитьУдалить
  14. Работает только первый раз, дальше постоянно низкий уровень DTR (не возвращается на высокий), как у вас то это работет? Я где-то читал, что Arduino IDE для такого не пропатчен и используется RTS вместо DTR. Это так?

    ОтветитьУдалить
  15. Первый раз про такое слышу - у меня все нормально работает.

    По сути, схема переходника ничем не отличается от схемы моста на Arduino.

    А вот про RTS - на схеме Duemilanova есть ненапаянный резюк 10К R2, между RTS и reset. Но что они этим хотели сказать - ума не приложу...

    ОтветитьУдалить
  16. А какая у вас версия Arduino IDE и avrdude в ней?
    Потому что мой баг описан вот здесь:
    http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1251415313
    А решение якобы здесь:
    http://code.google.com/p/arduino/issues/detail?id=106

    ОтветитьУдалить