В какой-то момент понадобилось мне в очередной раз прошить ESP8266. Причем плата планировалась максимально компактной и малопотребляющей, да к тому же перепрошивка не планировалась. То-есть ставить на плату свой мост смысла не было.

Но меня ужасно достали эти жутко неудобные UART мосты по типу

Строятся они все в основном на 4х видах мостов:

  • CH340

  • CP2102

  • PL2303

  • FT232

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

При отладке многих малопотребляющих устройств, либо прошивки по UART- не грех взять питание с того же USB. Так вот на этих свистках питание организовано никак. Нет никаких защит, 5В либо заведено напрямую с коннектора, либо через диод, что еще хуже за счет падения напряжения. К тому-же тот же длинный удлинитель неплохо его сажает.

Ну делать так делать

Было решено собрать свой мост и это самое питание реализовать нормально. Да и вообще от основных задач отвлечься. К тому же я начинал работать с новым для меня ПО- DipTrace, и практиковаться конечно лучше на том, чего не жалко.

Мост я решил делать на CH340. Для меня это давно знакомый и хорошо себя зарекомендовавший чип и я его ставил на многие свои платы.

Ch340 это классический USB serial мост. Доступен в разных модификациях, отличающихся количеством выводов, корпусом и немного функционалом. Самый распространенный- CH340G, версия C от него отличается встроенным RC осциллятором, не требующим кварца, ее я и буду использовать.

Питание

Если сам мост задача крайне простая- USB разъем да сам чип, то схемотехника питания уже поинтереснее.

Базовые задачи были такие- 2 стабилизированные линии 5 и 3.3В и нормальная защита по току и отсечкой либо ограничением. По ходу дела я подумал- не плохо бы добавить мониторинг потребления. Это бывает нужно при разработке автономных устройств, либо питающихся от того же USB. К тому же давно хотелось сделать чегонибудь на ATTINY85 с маленьким OLED.

Так вот получилось то что получилось.

USB компьютера отдает в среднем до 1А. Итого имеем 5Вт. Из этого бюджета на выходах у нас ограничение в 500мА. 5*0.5 и 3.3*0.5 = 4.15Вт , остается 850мВт на потери и питание самого моста.

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

Любой линейный стабилизатор имеет падение напряжение, поэтому чтобы получить чистые 5В пришлось поставить DC DC на mt3608, создающий линию 6.6В.

Диф усилители здесь выдают напряжение с шунта, а потом мы усиливаем это напряжение для компаратора ограничения тока и АЦП системы мониторинга.

Мониторинг

Для мониторинга стоит маленький OLED диагональю 0.91 дюйма. Мозги- ATTINY85.

Как можете заметить- ног у нашей тиньки на все не хватит. У нас 2 значения тока и 2 значения напряжений. Поэтому я поставил мультиплексор, и на 4 входящих значения мы тратим 3 ноги- 2 на адресацию и 1 это собственно АЦП, на который мультиплексор будет заводить напряжения по очереди. Добавив какой-нибудь счетчик можно раздуть количество входов практически до бесконечности.

Собственно мост

Ну тут без комментариев. Выведены все ноги порта. Для защиты стоят резисторы по всем линиям. 3.3В логика организована очень просто- TX просто делителем догоняется до 3.2В, а RX у CH340 даже при питании 5В неплохо чувствует 3.3В логику.

Так-же по выходам по светодиоду, ток рассчитан около 1-2мА чтобы максимально не мешать обмену.

Плата

Плата нарисована односторонняя, соответствующая возможностям ЛУТ. На всю плату всего 2 перемычки, не считая пары нулей. Рассыпуха размера 0805.

Плата после ЛУТА
Плата после ЛУТА

Эх, печаль...

Нарисовав это все, и даже вытравивив плату я вдруг осознал что печально для такого питания иметь всего 1 UART. Да и с питанием я что-то замудрил, есть же INA219 практически повторяющая мою ДИФ схему. В общем желание отступило, и его заняло другое.

Подумалось мне поставить USB хаб на плату, и вытащить еще как минимум один UART. В наличии есть GL850G. Но он 4х канальный. Тогда почему бы не влепить еще и STlink и USBasp? Ну вот в это и вылилось продолжение проекта. Такой мега отладчик-программатор получается) О нем и будет во второй части.

Комментарии (10)


  1. Leon010203
    29.12.2022 22:18
    +1

    Еще можно добавить по 2 транзистора и резистора для автопрошивки esp8266/32


  1. Solgo
    30.12.2022 02:24
    +3

    Вам надо было распределить усиление между двумя каскадами усилителя тока. А то у вас у диференциального усилителя коэффицент усиления 1, а у второго каскада 100. Лучше было бы сделать два по 10. Тогда бы у вас полоса пропускания была бы не 10КГц а 100КГц. Соответсвенно реакция на превышение тока была бы грубо не 100мкс а 10мкс. Бюджет потребления вы считали так, как будто у вас повышающий стабилизатор стабильно потребляет ток, но это не так, потребление тока имеет треугольную форму и пиковый ток будет гораздо больше одного ампера. Кстати по спецификации у USB 2 максимальный разрешенный ток 500мА. Здесь больше подходит топология ПУШ-ПУЛЛ, пиковые токи существенно меньше чем у однотактных преобразователей, если не нужна гальваническая развязка то ПУШ-ПУЛЛ реализуется достаточно просто.


    1. ENGIN33RRR Автор
      30.12.2022 06:16
      +1

      Я не рассматриваю USB 2.0, извините, но уже лет 5 как в любом компьютере их максимум 2 штуки для клавиатуры и мышки, а все остальное 3.0 с током 1А по стандарту, но опять же нормальные материнские платы выдают до 2А до срабатывания защиты, а у MSI это даже называется как-то модно, типа буст зарядка. Насчет тока- есть такие волшебные элементы, называются конденсаторами, которые это самое потребление и сглаживают. Большая пила там будет только на ключе. Ах да, она еще будет на частоте 1.2мГц, так что считайте сами.


      1. quaer
        30.12.2022 11:25

        У MT3608 ограничение тока в 4А, значит при нехороших условиях он все 4А и попытается получить. Дросселю тоже придётся напрячься.


      1. Solgo
        30.12.2022 12:34
        +2

        Набросал модель в MC12, длительность импульсов подобрал для получения на выходе 7В. Там естественно идеальные конденсаторы и источник напряжения, в реальности еще присутствует дизайн печатной платы. Так вот, ток потребления получается 1.5А и да на частоте 1.2Мгц в идеальном мире пиковый ток потребления мало отличается от среднего.

        Верхний график ток через индуктивность L1, нижний напряжение на выходе. Колебания естественно от того что нет стабилизации.
        Верхний график ток через индуктивность L1, нижний напряжение на выходе. Колебания естественно от того что нет стабилизации.


  1. zatim
    30.12.2022 10:28
    +3

    У вас TL431 зашунтированы 0,1 мкф. Такая емкость вызовет колебания. Сам буквально вчера-позавчера нарвался. Надо или сильно меньше или сильно больше. Или поменять TLку на ИОН.


  1. dec123
    30.12.2022 11:28
    +2

    возможно стоит добавить гальваническую развязку.


  1. aumi13
    30.12.2022 13:41

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

    а свободные порты потом оказываюца весьма кстати для вывода отладочных сигналов на логический анализатор.


  1. Gordon01
    30.12.2022 18:37

    Прикольно и автор молодец, но лично я не понимаю зачем это все. Создаётся впечатление, что просто хочется использовать детальки, которые жалко выбросить.

    Например, почему выбрана ATTINY85 у которой банальное не хватит памяти для фреймбуфера этого дисплея? И ещё и ног не хватает.

    Я бы на вашем месте взял бы МК с USB, завёл бы все измерения и ключи в него, а отображение и управление сделал бы на компьютере. Заодно можно было бы и управлять отсечкой тока.


    1. COKPOWEHEU
      31.12.2022 14:36

      Я бы на вашем месте взял бы МК с USB, завёл бы все измерения и ключи в него, а отображение и управление сделал бы на компьютере.

      Причем на том же контроллере можно и переходники на UART сделать, и пару-тройку обычных цифровых GPIO. Например, чтобы STM'ки прошивать: выставил BOOT0, дернул ресет, шьешь через UART, потом поменял BOOT0, снова дернул ресет, и через тот же UART можно отлаживать. Я так для GD32 делал, очень удобно. С программированием через JTAG/SWD у того контроллера были проблемы.


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