Связь микроконтроллера с компьютером через RS232

Почти все микроконтроллеры имеют на борту последовательный порт — UART. Работает он по стандартному последовательному протоколу, а значит его можно без проблем подключить к компу на COM порт. Но есть тут одна проблема — дело в том, что комповый RS232 он за логические уровни принимает +/- 12 вольт, а UART работает на пятивольтовых уровнях. Как их совместить? Для этого существует несоколько вариантов схем преобразователей уровня, но самая популярная это все же на специальном преобразователе RS232-TTL. Это микросхема MAX232 и ее аналоги.
Практически каждая фирма делает свой преобразователь, так что тут сгодится и ST232, и ADM232, и HIN232. Схемка простая как три копейки — вход, выход, питание и обвязка из пяти конденсаторов. Конденсаторы обычно ставятся 1uF электролиты, но в некоторых модификациях ставится 0.1uF керамика. Я везде впаивал 0.1uF керамику и обычно этого хватало. :) Работает как часы. Если же на высоких скоростях будет глючить, то надо будет повышать емкость.
 

Схема
 

Кстати, существует еще и MAX3232 это то же самое, но на выходе у него не 5вольт TTL, а 3.3 вольта TTL. Её используют для низковольтных контроллеров.
 

Я себе сделал один такой универсальный шнурочек, чтобы к контроллерам цепляться было удобно по UART. Для общей компактности всю схему запихал прям в разъем, благо у меня были ST232 в soic корпусе. Получилась платка не больше рублевой монеты. Так как под рукой не было мелких SMD конденсаторов, то пришлось напаять кондеры сверху, кто во что горазд. Главное работает, хоть и не очень красиво вышло.
 

Плата снизу
 

Если сомневаешься, что у тебя получится столь мелкий монтаж, то я тебе развел плату на стандартный PDIP корпус. Размером она будет со спичечный коробок, зато мельчить не надо.
 

Плата сверху
 

После сборки проверяется просто:
Втыкается в разъем COM порта. Подается 5 вольт питания на схему, а затем замыкаешь Rx на Tx (у меня это зеленый и желтый провода).
 
Дальше открваешь любую терминалку, хоть Hyper Terminal, цепляешься к порту и начинаешь посылать байты, они должны тотчас возвращаться обратно. Если этого не произошло — проверяй схему, где то косяк.
 

Если работает, то дальше все просто. Тот провод который идет от ножки 9 микросхемы MAX232 это передающий вывод, его заводи на ногу RxD контроллера. А тот который с ножки 10 — принимающий, его смело сажай на вывод TxD контроллера.
 

В собранном виде
 

Плата сделана была методом ЛУТ, в одном месте по моему недосмотру толщина просвета оказалась 0.05мм, протравилась, но со спайками, пришлось процарапывать. А в целом с первого раза ать и никаких проблем. Аж сразу захотелось сделать что нибудь маленькое маленькое, нафаршированное нафаршированное :)
 

Печатная плата. Тонер не смыт.
 

Все, аппаратная часть для связи микроконтроллера с компом готова. Ждите следующего поста в котором я расскажу как конфигурировать и использовать UART в микроконтроллерах AVR. В будущем я буду через UART осуществлять отладочную связь с компом. Может быть даже ради этого соберу отдельный модуль с LCD экранчиком. Для отладки в железе. Посмотрим как попрет.
 

Печатная плата в формате Sprint Layout. Два варианта маленький и большой
 

Та же бодяга, но для работы через USB
 

163 thoughts on “Связь микроконтроллера с компьютером через RS232”

  1. Актуальнее уже про USB 2 serial рассказывать…

    Парадокс однако, последовательные порты в писюках пропадают. А потребители последовательных портов множатся =)

      1. USB — это только провод, и не более 2-3м… И 500 Мбит.сек -оно роботу надо? Видеосигнал гнать — проще камеру со встроенным радиоканалом поставить. (У нас в Алма-ате их в каждом магазине полно, от 10$). Зато с RS232 — хоть через ИК, хоть по простейшему радиоканалу — без проблем. Для управления и телеметрии даже 9600 за глаза, а ведь можно и более 100 кбод обеспечить. Так что у кого нет COM, проще купить переходник USB-RS232 и не морочить голову себе и роботу.
        Купить звонок с радиокнопкой за 3-5$, сейчас их полно, вот тебе и командная радиолиния на 430 МГц, если лень самому приемник с передатчиком делать, а подцепить их к USART и COM -не проблема.

          1. Нет, в камере радиоканал 1100-1200МГц, на одном транзисторе, а из камеры торчит проводок сантиметров 5-6. Приемник размером с пачку сигарет, видео выход — стандартный, на тюльпанчике. Питание 9-12в,
            камера с полспичечного коробка, что чб, что цветная. Цены в зависимости от сложности и качества от 1200 тенге до 6500 и выше.
            (Курс = 120 тенге за доллар). Типов — десятки. Например, есть в полусфере, на потолок, поворачивается дистанционно. Большинство имеют встроенную ИК подсветку разной мощности. Китайцы много всего наделали, а Китай от нас рядом, (180км), «Челноки» на автобусе ездят.

              1. У нас тоже много везут из Москвы, но чаще — с Китая, Тайваня, Турции или Эмиратов. У нас и копьютерное железо заметно дешевле, чем в Москве. И любая валюта свободно ходит, обменники на каждом углу. Полно всяких барахолок, оптовок, магазинчиков. В общем, все есть, были бы деньги…

        1. «Купить звонок с радиокнопкой за 3-5$, сейчас их полно, вот тебе и командная радиолиния на 430 МГц» — не все звонки одинаково полезны. Покупал недавно — так там тупая микрушка, с которой кроме как «подал питание на передатчик — активировался выход на приемнике» никак и не поработаешь.

    1. Мож сразу по блютусу будем контроллеры пошивать? ИМХО старый добрый ком ничего не заменит! Пропадают последовательные порты на писюках? Радиолюбители… Спаяй переходник USBtoCOM и никаких тебе проблем.

          1. Какой стандарт выберешь, так и будет общаться. ;) Я использую USB HID — и Windows на стандартный драйвер подхватывает, и утилита есть простейшая для отладки — SimpleHIDWrite.

            Можно и CDC (вирт. COM), но тут AVR’ке приходится притворяться Full-speed девайсом — уходит очень много процессорного времени:
            «Consumes ca. 90% or more of the AVR’s CPU time because bulk endpoints are polled aggressively by the host. Real-time applications on the AVR are close to impossible.»
            Чаще используют на 8 Кбайтовых восьминогих tiny, чтобы сэкономить на FT232.

            Можно напрямую, но тогда — пиши свой драйвер для NT. Под *nix можно и без драйвера. :) Ещё, как я понимаю, можно воспользоваться libusb-win32.

  2. Вопрос: какую набольшую длину кабеля можно сделать от платы с MAX232 до выводов контроллера ? и какая наибольшая длина может быть у кабеля от MAX232 до COM порта, если делать девайс на стороне контроллера ?

    1. У меня от МАХ232 до контроллера 1.5 метра, от MAX232 до порта тоже было 1.5 метра, работало без сбоев. ПОдозреваю, что можно и много больше, по крайней мере раза в два три точно. Но тут уже от скорости передачи зависит.

    2. У меня где-то было описание стандарта RS232. Помнится, при скорости 50 бод — до 1,5 км. Чем быстрее, тем меньше. Точно табличку не помню, но, думаю, что метров до 5 по витой паре и 115кбод — не проблема. А зачем роботу большая скорость? Я 20 лет проработал в лаборатории телеграфа. Основная скорость на сети была 50 бод, 1знак передавался за 150 мсек. 6 знаков в сек. При скорости 200 бод уже еле — еле успеваешь читать теуст, распечатываемый на телетейпе. Что толку выплюнуть знак в линию за микросекунду, а потом несколько секунд ждать следующего? Я думаю, роботу и 9600 — за глаза, а на такой скорости хоть через ИК или простейший радиоканал гони. Не будет же робот на проводке сидеть, ему надо хотя бы по комнате бегать. А режим отладки для него не главное, можно и по шнурку.

        1. Так ведь длина сообщений вряд ли будет больше одного — двух десятков байт за раз. Кинул в очередь на передачу, поставил флажок наличия данных для выдачи, а отдельная подпрограммка в главном цикле проверяет готовность передатчика, кидает ему очередной байт, сдвигая курсор на следующий знак, после последнего — сбрасывает флажок наличия данных для передачи, выставляя флаг, что передача окончена. Большинство стандартных сообщений заложено в ПЗУ с программой, буфер — только для переменной части сообщения, может быть всего байт на 8. Когда — то я таким образом еще на 1816ВЕ35 выдавал челез заданные интервалы времени или при обнаружении нарушений накопленную статистику на телетайп на 200 бод, не прекращая при этом отслеживать и обсчитывать несколько точек. Быстродействие же современных контроллеров куда выше, да и UART уже встроенный. А посимвольно все равно ждать придется, за время передачи одного байта даже на 128 Кбод примерно 78мкс пройдет, а это при тактовой даже 8 МГц ~ 625 команд! Зато быстрый канал потребует довольно жесткого кабеля, и по радио или ИК его передать будет куда сложнее.
          Да и от буфера все равно не избавитесь, надо же где-то сообщение формировать в любом случае. Если брать только из ПЗУ, то тогда и в моем варианте буфер не нужен. Достаточно знать адрес первого байта и длину. Если концом сообщения будет спецсимвол (например, ВК), то и длину знать не надо.

    1. А зачем роботу USB? Что по нему гнать? Где взять столько информации? Опять же, для USB — только кабель, и то короткий. Уж больно жесткие нормы на задержки. Как я понял, пока что изучение идет с привязкой к роботу. Да и по USB в интернете статей валом, как программному, начиная с 2313, так и аппаратному, встроенному. Кто уж вышел на такой уровень, найдет без труда. При таком подходе проще на робот ноутбук шпагатом привязать, там и USB уже есть, и много чего еще. Лучше больше места в программе уделить функциональности, «интеллекту» робота, чем тратить килобайты кода, чтобы передать сотню байтов в час.

        1. Да гораздо проще купить за несколько баксов переходник USB — COM, их везде полно, и не расходовать ресурсы контроллера на избыточный для него интерфейс. Все равно ведь чаще всего в компе ему приходится COMом прикидываться… А ставить дорогого монстра с кучей мелких ног ради USB туда, где и Меги 8 или PIC16F873 за глаза — вообще западло… А UART почти в каждом контроллере нахаляву уже есть. И программируется в десяток байт кода.

          1. Скажи это будущим пользователям твоих устройств, им возиться с переходниками не понравится. А COM’ом прикидываться смысла нет… Воткнул устройство в комп, винда увидела HID устройство, и софт сразу начинает с ним работать. Вообще красота.
            А монстров ставить и не обязательно, ATMEGA8 софтварно с USB отлично работает.

            1. Если, например, в «Умном доме» с компом будет общаться с десяток устройств, шнурков не напасешься… Да и как их разместить в доме, при ограничении на длину 2-3 метра? Робот на такой веревке тоже далеко не убежит. В радиоканал или ИК USB не засунешь (задержки!). А прицепи к COM порту передатчик на одном транзисторе, да приемник на одной микросхеме, и 50-150м на улице или 20-25м в бетонном доме тебе обеспечены.

  3. Еще вопросик. В печатной плате. номерация площадок для приклеивания разьема RS232 с лево на право 1,2,..5. Когда начал прикладывать разем к спаеной плате получилось, что цифры не на разьеме и на плате не совпадаю. 1(RS232) напротив 5 (плата), 2(RS232) напротив 4 (плата) и т.д. это так и задумывалось? или на печатной плате в электронном виде перепутан порядок цифр?

    1. Если рисунок получившейся платы точно повторяет фотку — то значит на чертеже перепутаны номера контактов. Т.к. я помню, что вначале плату сделал на DIP и лишь потом отзеркалил. Номера контактов перевернуть мог и забыть :))

      1. Нет, все нормально. Это я маму с папой перепутл. Когда взяд маму все цифры совпали :). Тока еще вопрос есть. если нумерация ног начинается от метки с возростанием номера ноги против часовой стрелко, то как Тх и Rx попали на 7 и 8 ногу Мах232. Должны наверно быть 15 и 16 (в тексте статьи)

  4. Хотел купить микруху MAX232, а её в прайсе нет, но есть другие, какую брать? Самую дешёвую? ;-) И чем они отличаются?

    MAX232AEJE 127.65руб.
    MAX232AEPE+ 71.63руб.
    MAX232AESE 63.86руб.
    MAX232AESE+ 58.64руб.
    MAX232AEWE 56.11руб.
    MAX232AMJE 223.67руб.
    MAX232CPE 22.12руб.
    MAX232DR PBF 9.83руб.
    MAX232ECDW PBF 21.07руб.
    MAX232EEPE 56.53руб.

    ST232ABDR PBF 22.42руб.
    ST232ACDR PBF 11.59руб.
    ST232BDR PBF 12.64руб.
    ST232BN PBF 16.22руб.
    ST232CDR PBF 11.24руб.
    ST232CN PBF 11.59руб.

    1. Разница только в производителе и в типе корпуса. Еще в температурном диапазоне.

      Бери любой в DIP корпуспе (продавцы знают) для большой версии или в SOIC для малой. SOIC правда бывает двух видов — широкий и узкий. Моя плата нарисована для узкого (широкий встречается реже). Так что это тоже надо учитывать.

      В любом случае, какую бы ты не купил — подойдет. В худшем случае перерисуешь плату по новой. Цоколевка выводов у них у всех одинаковая.

      1. Ага. Валяется у меня такая, я по-глупости отдал за неё 250 рублей, когда ещё совсем чайником был. До сих пор лежит… Единственный плюс — её размер. Заюзать бы её, да жалко как-то :)

  5. Купил MAX232. По моему в соике. В магазине было 2 разных варианта макса под смд пошире и поуже. Взял поуже, но на печатку не входит. в даташитах не нашел такого размера. Нечто среднее между самым широким и самым узким.
    Что за корпус?
    http://s50.radikal.ru/i128/0812/ef/a2b8d1355c6c.jpg
    http://s40.radikal.ru/i088/0812/4f/4f4743a2343e.jpg

  6. А я нашел тока в широком варианте соика, но , вроде , тоже влезла с горем пополам )))
    Хотел так же сделать в SMD-варианте но, как и всегда, нет кондёров нужной величины…. запихал керамику.
    Вот собственно как получилось: http://content.foto.mail.ru/mail/peper_chili/_guestbook/i-8.jpg

    1. Кстати, заметил интересный факт (могу ошибаться, но….)
      Пихаешь в коммент любую ссылку без пробела перед «http://» коментт появляется сразу , но без гипер-ссылки, а потом жму на редактирование и делаю пробел! ))
      По идее, так можно приаатачить любой линк без премодерации… =)

  7. Собрал переходник USB->COM на микросхеме FT232RL. При подключении к компьютеру устройство определилось нормально и я установил драйвера для виртуального COM порта скачаны с официального сайта. После этого в диспетчере устройств появился виртуальный COM порт. Проблема в том что когда я для проверки закоротил между собой выводы TXD и RXD и зашел в гипертерминал и там выбрал виртуальный порт и попытался что-то написать чтобы проверить работу в гипертерминале ничего печататься не хотело, т.е. вобще ничего напечатать не могу чтобы отправить на виртуальны порт для проверки. Может кто подскажет в чем может быть проблема?

    1. То что у тебя заработала USB сторона это еще мало что говорит :) это всего лишь половина микросхемы. =) Проверь еще раз монтаж и соответствие схемы даташиту.

      Попробуй просто подключить программку терминалку (гипертерминал говно, юзай Terminal v1.9) и потыкать в принимающий вывод отверткой или на землю его покоротить. На принимающей стороне должен быть мусор в это время.

  8. Я тоже грешил на монтаж и не раз перед тем как задать здесь вопросом его проверил, вроде все нормально. А вот через Terminal v1.9 проверил и все заработало, посылает и принимает данные. Спасибо DI HALT за совет и нужную программку, а гипертерминал идет в топку)))

  9. Ди, при повторении схемы под DIP 16 корпус вылезла трабла…
    Схема правильная, если микросхему ставить со стороны дорожек.
    Если ее ставить нормально — микросхема, естественно, встает неправильно.

    Изображение надписей на плате получилось прямое. Те рисунок перенес правильно.

    Пофиксь плз. Чтобы другие не нарвались на ту же траблу.

  10. Воспользовался схемой для востановления Dlink DWL-2100AP (это когда слетают прошивки), получилось, несмотря на то что конденсаторов подходящих небыло, использовал электролитические 2,2 мкФ.

  11. Нужна помощь. Собрал конвертер RS232-UART. Замыкаю на нем RX и TX, байты отправляются/возвращаются. Но когда соединяю с микроконтроллером ответа нет, даже мусора и в терминале не увеличивается счетчик отправленных байтов (?). RX и TX вроде не перепутал, пробовал по разному, не работает. Прошивка рабочая, проверял протеусом. Скорость выставлена правильно. При подключенном конвертере напряжение на Rx и TX ногах микроконтроллера 4.9 Вольт. Программа терминал с этого сайта. Подскажи в чем может быть проблема и что еще надо проверить?

      1. ATMega8, пробовал менять местами RX, TX.. Сейчас подключал аналоговый вольтметр к RX микроконтроллера, когда с компа приходит байт, видно небольшой скачек напряжения. Пробовал другой микроконтроллер, тож самое..

          1. Хм тактовую частоту считаю как в твоем примере

            1
            2
            3
            4
            5
            6
            7
            8
            9
            
            .equ XTAL 			= 8000000 
            .equ baudrate 		= 9600
            .equ bauddivider 	= XTAL/(16*baudrate)-1
             
            OUTI 	UBRRL,low(bauddivider)
            OUTI 	UBRRH,high(bauddivider)
            OUTI 	UCSRA, 0
            OUTI 	UCSRB,(1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE)
            OUTI 	UCSRC,(1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1)

            CKSEL3..0 == 0100 на 8 Мгц

            1. Добавил такой код в обработчик прерывания UART_RX
              OUTI DDRB, 0b11111111 ; порт B все контакты на выход
              OUTI PORTB, 0b11111111

              Работает, после отправки с компьютера байта, PORTB становится в +5.
              Значит не работает только TX с микроконтроллера.

              1. А не случайность? Есть вероятность что ты ТХ порт угробил.

                Могу дать тебе прошивку которая гарантированно шлет байты в порт. Мега8, внутренний тактовый на 8мгц. Надо?

                1. Перепробовал 3 микроконтроллера, на всех одинаково. Данные с компьютера принимает, обратно отправлять не хочет.
                  Прошивка моя должна работать, в обработчике прерывания на передачу стоит
                  OUTI UDR,’s’
                  в протеусе работает на ура, заваливает терминал кучей символов. В реальности хотя бы парочка должна упасть, а у меня тишина.. Да и TX на микроконтроллере стоит в +5, значит порт жив. Возможно косяки в линии TX между МК и конвертером, завтра попробую все перепаять. Хотя если просто соединять TX|RX с конвертера, то все работает, на терминал возвращается то что отправляю. За прошивку спасибо, завтра попробую :-)

  12. В тексте статьи:
    >> Тот провод который идет от ножки 7 микросхемы MAX232 это передающий вывод, его заводи на ногу RxD контроллера. А тот который с ножки 8 — принимающий, его смело сажай на вывод TxD контроллера

    А разве не наоборот: ножки 9 и 10 — к микроконтроллеру, а 7 и 8 — к разъему DB9 ?

      1. Это если юзать прямой кабель, т.е. 2-2 3-3. А с ноль-модемным такой вариант не катит.

        Сделал платку под ДИП-корпус МАХ232, долго не мог понять, почему не пашет конвертер-то… Пока в даташит на MAX232 не глянул и распиновку СОМ-порта не посмотрел. 8я нога МАХ’ины вход от ком-порта, а подключена к 3й ноге разъема, который на передачу работает… Ну и с 7й ногой — она ж выход на ком, а подключена к приемной ножке разъема… Поменял ноги как написано ниже — все работает.

        Рабочий вариант получился такой:

        MAX — COM
        7 — 3
        8 — 2.

        Повторюсь — это ежели юзать ноль-модемный кабель. И переходник спаял с ЮСБ на КОМ — в хозяйстве сгодится. Испытал — ресивер спутниковый работает через него только в путь, плюсы шарятся как через нативный ком-порт. А вот программатор Тритон-плюс работать не захотел. И не мудрено — разобрал разъем программаторного кабеля, а там 7 пинов задействовано… Буду городить адаптер с использованием двух корпусов МАХ232.

        1. Сделал полный переходник USB-COM, за основу взял этот http://easyelectronics.ru/preobrazovatel-usb-uart-na-ftdi-ft232rl.html#more-218, добавил пару корпусов ST232, доразвел остальные цепи (CTS, RTS, DTR, DCD). Программатор Тритон работает на ура. Кому нужен вариант печатки (конечно, далеко не идеал) — обращайтесь, поделюсь.

  13. что то не работает…. только греется как печка.. и это устройство я паяю 3ий раз!(До этого с точностью как у Ди Халта плата) Вот.. Посмотрите пожалуйста.. http://stream.ifolder.ru/13819343

    И вот фото
    http://pic.ipicture.ru/uploads/090902/58387/SmuI400V4R.jpg
    http://pic.ipicture.ru/uploads/090902/58387/rSdlHiV1q2.jpg

    1. а, я кажется с конденсаторами напутал. воткнул 0.1 мкФ вместо 0.1 мФ…

      но маркировка на моих конденсаторах «104» — так же как и на фотках! на фотках разве правильные?

    2. Естественно, всё собрано для подключения напрямую к ком-порту без cross-over кабелей с перехлёстом Rx-Tx?

      Работать не хочет, спаяно всё правильно и хорошо. На висячих в воздухе Rx-Tx напряжения 3.3V и 5V. Разве что микросхему перегрел, хотя паял не намного дольше, чем ты в статье «Паяем SSOP паяльником FT232RL». Обидно, неужели всё переделывать…

  14. Во время теста небольшой геморройчик с отладкой произошел, из-за него три дня потратил:

    Собираю плату, замыкаю вход на выход, тестирую через Terminal — все робит.
    Отключаю питание микросхемы, опять засылаю байт и происходит чудо. Байт приходит обратно.
    Проверяю на короткие замыкания. Все ровно.
    Трачу день на тест MAX232. Рабочая.
    Выпаиваю все компоненты. Подключаю к порту. Байт приходит обратно.

    Проверяю сопротивление между контактами 2 и 3 разъема. 150 кОм…

    Вывод: народ, перед тем как припаивать разъем, проверяйте его сопротивление.

  15. DI HALT, подскажи пожалуйста, а как МК подсоединить к CompactPCI? Если я правильно понимаю, то необходима микросхема-мост. Покопался в сети нашел PLX PCI9054, но не пойму как эта мс подсоединяется к МК, как происходит обмен информацией, и, если к ней подключ-я несколько МК, как происходит адресация. Пожалуйста, посоветуй что-нибудь?

  16. Всем доброго времени суток. Собрал вот на двух транзисторах адаптер: слева — хвост от СОМ-мыши, справа провода: +, -, Rx, Tx. Работает на любой скорости, в том числе и на 115200. Все детали со старой материнки. В планах приделать питание прямо от СОМ-порта и сделать компактнее, чтобы уместилось в корпус разъема.
    http://s51.radikal.ru/i133/1003/d5/5ac3039abdeb.jpg

  17. Люди добрые может я что-то не так делаю не заводиться сабж(((
    У меня вопрос глупый но все таки я его задам:печатная плата под ДИП корпус, микросхема МАХ232 ставиться ведь не состороны дорожек??(крепиться на ту сторону где нет дорожек, а ношки вылазят на другую ,где дорожки)

    1. Разводка на DIP неверная. RXD у COM порта на второй ноге, а в приведённой разводке почему-то на четвёртую попадает. Я сам так же попался, потом распиновку кома посмотрел, разрезал дорожку от 4 и кинул проводком на вторую — всё заработало.

          1. Просто отзеркалить не прокатит — разводка обвеса самой микросхемы правильная, только выводы кома в обратном порядке, так что нужно либо ком зеркалить и вести от него по-новой дорожки, или по-колхозному разрезать и кидать проводками землю и RXD на правильные ноги, как сделал я.

  18. Посмотрел на схему отладочной платы OLIMEX AVR-P8
    http://www.olimex.com/dev/images/avr-p8-sch.gif
    и удивился. Конвертер сделан на одном транзисторе. Как это возможно?
    И где можно почитать о том, как физически возможно из уровней +5 и 0 сделать +10 и -10 без всяких AC-DC DC-AC преобразователей и трансформаторов.

    Спасибо!

    1. Да он не корректный нихрена. Транз юзается как инвертор просто, а RX линия подается через резистор. Примерно то же самое в программаторе Громова сделано. Работает только за счет того, что в COM порту у материнок строго +10 -10 не соблюдается нихрена. Т.е. реально там вполне работают 5 вольтовые ТТЛ уровни. Т.к. многие материнки понимают эти уровни, хоть оно в стандарте и не так.

      У меня вон валяется модуль от Maxboics так у него вывод с PIC сразу же идет в COM порт. Безо всяких задрочек, а прикол в том, что у пика есть фишка позволяющая инвертировать сигнал COM порта на уровне МК, там даже транзистор не нужен.

          1. Точняк, не заметил. Обычно там транзы дергают 12ти вольтовые уровни. Ну оно будет работать в 95% материнок. ПРоблемы могут быть только с промкомпами, где стандарты выдерживаются более жестко.

  19. Стоит ли делать гальваническую развязку между выводами T2IN, R2OUT микросхемы ST232 и выходами RxD, TxD микроконтроллера, на случай «непредвиденной ситуации»? Или схема достаточно надежна и может проработать хотя бы пару месяцев без всякого ущерба для подключенного к ней микроконтроллера?

  20. Прошу прощения. Я не могу понять одну вещь.
    а всё дело во 2 ноге преобразователя. max232 от maxim заводиться через конденсатор на +5 Вольт, А max232n (от ti) 2 нога, по даташиту(http://focus.ti.com/lit/ds/symlink/max232.pdf), пихается в землю. Помогите разобраться, где правда. И ещё, если на эту схему в обвязку поставить 10 uF, ничего ведь страшного порту от увеличения не будет?
    Спасибо.

  21. У меня такой вопрос. А как бы мне для тестов отправить контроллеру с компа байт по UART?

    Какие средства для этого использовать, какую-то прогу?

    И потом, когда я буду писать свою прогу, взаимодействующую с контроллером по UART, как мне отсылать ему данные? Есть какие-то готовые библиотеки, драйверы? Или придется писать все ручками?

  22. Приветствую! У меня проблема.

    Юзаю для тестов terminal.exe и TestRxTx.exe.

    И вижу такую картину: назад возвращается не то, что я посылаю, а какой-то рандомный бред.

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

    В чем может быть причина? Кондеры ставил керамику 0,15мкф

      1. Окей, описываю.

        Тестируется только макс232, МК нет.

        Схема как тут у тебя в статье. Разводка твоя, для дип-корпуса, однако я немного ее изменил — Rx,Tx,Vcc и GND вывел на панельку-разъемчик, а COM разъем использовал с Г-образными контактами для монтажа на плату.
        Вот разводка: http://zalil.ru/33860804

        Плата втыкается непосредственно в КОМ порт компа без удлиннителей. Между V и G подается 5 вольт. R и T замыкаются джампером.

        Не знаю что еще сказать… Спрашивай какая еще нужна информация, я отвечу.

        Спасибо заранее за помощь и потраченное на меня время :)

      2. Вот, дополняю еще логами.

        Постоянно шлю буквы s, вот что получаю:
        ÿÿÿÿßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿßÿÿÿÿÿÿÿÿÿÿ

        Постоянно шлю буквы b, вот ответ:
        ±±þ±þþùì±±ù±þ±ì±±±±ù±±ù±ù±±ì±lì±±±±±±±ùù±ì±±ù±±ù±ù±±±±±±ì±ì±ù±±ù±±ì±±±±,ìì±ì±ù±±±±±ù±ù±±ù±lìù±±±ù±±±ì±ù±±ù±±±±ù¾ì±±ù±ù±±±±ì±±ì

      3. Чувствую в ошибках какую-то системность и логику, они не похожи на случайные.

        Например при отправке n (и это касается кода ТОЛЬКО этой буквы) назад приходит строго инверсный ее код. Это если нажимать Enter и смотреть результат. А если просто зажать энтер, то (о чудо) будет приходить буква n.

        Однако эффект не стабильный. Различные подобные вещи замечал также для других кодов.

        Причем в другой программе все по другому.

        Корреляцией со скоростью не заметил.

          1. Все заработало на 1мкф! Спасибо! Пойду новую разводку рисовать для электролитов… Хотя может они влезут и на мою плату.

            Я правда и сам думал поменять, но останавливал тот факт, что у тебя то работает и так.

            Интересно, кстати, почему? Разные партии и производители микрух? Или дело могло быть в том, что я поставил 0,15, а не 0,1. Но я тогда решительно не вижу связи. В общем, это надо получше разобраться как работает микруха и чем там занимаются эти кондеры.

            У меня кстати MAX232 CPE от MAXIM.
            Вторая строчка +0942, хотя не думаю что это важно.

            1. Можешь туда танталовые кондеры вмандить. Или микрофарадную кремику. Она тоже бывает. Они по посадке вместо твоей керамики сядут на отличненько.

              Разные производители. У меня ST и у них меньше емкость допускается. А емкость там нужна для накачки повышеного напряжения в плюс и минус. Там вроде бы схема преобразователя на переключаемых конденсаторах. Т.е. для получения высокого напряжения определенной полярности кондеры заряжаются от низкого, а потом включаются нужным образом на суммирование напряжений. На низкой скорости емкости твоих 0.1 хватало. А на высокой они не успевали заряжаться и получалась херня.

  23. Доброго времени суток!
    Возникла такая проблема. МК передает данные через микруху ADM232A в СОМ порт, но пока реального порта нет использую преобразователь USB-COM. Все данные передаются/принимаются с искажением, причем всегда одним и тем же (т.е. если я передаю в МК из терминала символ ‘0’ , то код приходит всегда один и тот же, но не верный). Если напрямую подключаю выводы МК к преобразователю USB-COM все шуршит на ура, без каких либо искажений. В чем может быть дело.

  24. Некоторые делают связь микроконтроллера через Com порт через резисторы и стабилитроны, тем самым занижая напряжение до 5 вольт и называют это программатором.

  25. Здравствуйте,задавал вопрос в соседней ветке,спрошу еще и здесь. Спаял усб-уарт переходник FT232BL для обмена данными с атмегой168,все определилось в системе,работал сним все ок. Через пару дней нужно было ввести другие данные,а связь не устанавливается. Померял напряжение на выходе переходника,а на Rx и Tx присутствует лог еденица,тоесть на Tx-5.0в, Rx-4.68в-скажите это нормально или нет .Первый раз когда подключал,тоже мерял-помню, что только на одном выводе была лог единица.Пожалуйста просветите дурака,как она работает,как к ней ,и скакими уровнями на выходах надо цеплять AVR проц.

  26. Кто разбирается в мах232 или st202 ? Почему на переключателях помпы я не вижу никакого напряжения осциллографом? Хотя на выходе есть сигнал +-5В. То есть удвоение напряжения есть.

    Вот схема эхолота:

  27. Здравствуйте, извините если вдруг что не по теме, хочу залить прошивку на модем вычитал про эти «232», на шел на китайском сайте уже готовые девайсы подскажите это аналоги что описаны в статье???
    http://ru.aliexpress.com/item/FT232RL-USB-To-Serial-Line-Download-Line-Downloader-USB-TO-232-Free-Shipping-Dropshipping/2030713315.html
    http://ru.aliexpress.com/item/Free-Shipping-FT232RL-FT232-USB-TO-TTL-5V-3-3V-Download-Cable-To-Serial-Adapter-Module/1927444755.html
    http://ru.aliexpress.com/item/CP2102-USB-2-0-to-TTL-UART-Module-6Pin-Serial-Converter-STC-Replace-FT232-Module/1859102520.html

  28. Планировал сделать сам, но испугался трудностей (беготни по магазинам в поисках деталей, работы утюгом и паяльником), и нашел готовые модули на aliexpress по цене $0.5 за штуку. Это значительно дешевле, чем если делать самому.
    Модули такие маленькие, что вроде бы должны поместиться внутрь ком-разъема, как сделал автор статьи.
    http://www.aliexpress.com/item/mini-RS232-MAX3232-Levels-to-TTL-level-converter-board-serial-converter-board-Dropshipping/32271585821.html
    http://www.aliexpress.com/item/1x-MAX3232-MAX3232CSE-Serial-Port-RS232-to-TTL-Converter-Adaptor-Board-Module/2055624080.html

    Есть с разъемом, по цене 1$, но разъем там немного другой
    http://www.aliexpress.com/item/Free-shipping-Serial-port-module-rs232-ttl-module-indicating-lamp-232-electric-module/1914480102.html

    Я привел ссылки на низковольтные 3-вольтовые модули. Для себя искал.
    Уверен там есть и 5-вольтовые.

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