В какой-то момент понадобилось мне в очередной раз прошить ESP8266. Причем плата планировалась максимально компактной и малопотребляющей, да к тому же перепрошивка не планировалась. То-есть ставить на плату свой мост смысла не было.
Но меня ужасно достали эти жутко неудобные UART мосты по типу
![](https://habrastorage.org/getpro/habr/upload_files/84f/1c2/006/84f1c2006a7a71c7fb68e6f3e5885705.png)
Строятся они все в основном на 4х видах мостов:
CH340
CP2102
PL2303
FT232
Из плюсов конечно доступность и цена. Но минусов значительно больше. Нужно пихать это в USB удлинитель или хаб, платы голые и легко чего-нибудь замкнуть. Отдельно пару слов о питании.
При отладке многих малопотребляющих устройств, либо прошивки по UART- не грех взять питание с того же USB. Так вот на этих свистках питание организовано никак. Нет никаких защит, 5В либо заведено напрямую с коннектора, либо через диод, что еще хуже за счет падения напряжения. К тому-же тот же длинный удлинитель неплохо его сажает.
Ну делать так делать
Было решено собрать свой мост и это самое питание реализовать нормально. Да и вообще от основных задач отвлечься. К тому же я начинал работать с новым для меня ПО- DipTrace, и практиковаться конечно лучше на том, чего не жалко.
Мост я решил делать на CH340. Для меня это давно знакомый и хорошо себя зарекомендовавший чип и я его ставил на многие свои платы.
![](https://habrastorage.org/getpro/habr/upload_files/d7a/3e2/ac9/d7a3e2ac94a825f2e67b7d41ebc9b545.png)
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мВт на потери и питание самого моста.
Многие решения здесь конечно излишне и сделаны просто чтобы пощупать руками такую схемотехнику. Например шунты здесь стоят по линиям питания, а не по земле как обычно. Так чтобы извлечь разницу напряжения с шунта был использован дифференциальный усилитель.
![](https://habrastorage.org/getpro/habr/upload_files/7e9/1ad/4eb/7e91ad4eb3e4858db0269a43be966a94.png)
Любой линейный стабилизатор имеет падение напряжение, поэтому чтобы получить чистые 5В пришлось поставить DC DC на mt3608, создающий линию 6.6В.
Диф усилители здесь выдают напряжение с шунта, а потом мы усиливаем это напряжение для компаратора ограничения тока и АЦП системы мониторинга.
Мониторинг
![](https://habrastorage.org/getpro/habr/upload_files/d46/0fb/f69/d460fbf69eedf55615bd07e3bf2c0107.png)
Для мониторинга стоит маленький OLED диагональю 0.91 дюйма. Мозги- ATTINY85.
Как можете заметить- ног у нашей тиньки на все не хватит. У нас 2 значения тока и 2 значения напряжений. Поэтому я поставил мультиплексор, и на 4 входящих значения мы тратим 3 ноги- 2 на адресацию и 1 это собственно АЦП, на который мультиплексор будет заводить напряжения по очереди. Добавив какой-нибудь счетчик можно раздуть количество входов практически до бесконечности.
Собственно мост
![](https://habrastorage.org/getpro/habr/upload_files/751/2b5/0ce/7512b50ce6d1404baab9f27e312fccc9.png)
Ну тут без комментариев. Выведены все ноги порта. Для защиты стоят резисторы по всем линиям. 3.3В логика организована очень просто- TX просто делителем догоняется до 3.2В, а RX у CH340 даже при питании 5В неплохо чувствует 3.3В логику.
Так-же по выходам по светодиоду, ток рассчитан около 1-2мА чтобы максимально не мешать обмену.
Плата
![](https://habrastorage.org/getpro/habr/upload_files/4b9/c3f/c30/4b9c3fc30efe6b4f5fa1d83d342d719a.jpg)
Плата нарисована односторонняя, соответствующая возможностям ЛУТ. На всю плату всего 2 перемычки, не считая пары нулей. Рассыпуха размера 0805.
![Плата после ЛУТА Плата после ЛУТА](https://habrastorage.org/getpro/habr/upload_files/850/49b/827/85049b827c91ff4df4cf7070e8eec584.jpeg)
Эх, печаль...
Нарисовав это все, и даже вытравивив плату я вдруг осознал что печально для такого питания иметь всего 1 UART. Да и с питанием я что-то замудрил, есть же INA219 практически повторяющая мою ДИФ схему. В общем желание отступило, и его заняло другое.
Подумалось мне поставить USB хаб на плату, и вытащить еще как минимум один UART. В наличии есть GL850G. Но он 4х канальный. Тогда почему бы не влепить еще и STlink и USBasp? Ну вот в это и вылилось продолжение проекта. Такой мега отладчик-программатор получается) О нем и будет во второй части.
Комментарии (10)
Solgo
30.12.2022 02:24+3Вам надо было распределить усиление между двумя каскадами усилителя тока. А то у вас у диференциального усилителя коэффицент усиления 1, а у второго каскада 100. Лучше было бы сделать два по 10. Тогда бы у вас полоса пропускания была бы не 10КГц а 100КГц. Соответсвенно реакция на превышение тока была бы грубо не 100мкс а 10мкс. Бюджет потребления вы считали так, как будто у вас повышающий стабилизатор стабильно потребляет ток, но это не так, потребление тока имеет треугольную форму и пиковый ток будет гораздо больше одного ампера. Кстати по спецификации у USB 2 максимальный разрешенный ток 500мА. Здесь больше подходит топология ПУШ-ПУЛЛ, пиковые токи существенно меньше чем у однотактных преобразователей, если не нужна гальваническая развязка то ПУШ-ПУЛЛ реализуется достаточно просто.
ENGIN33RRR Автор
30.12.2022 06:16+1Я не рассматриваю USB 2.0, извините, но уже лет 5 как в любом компьютере их максимум 2 штуки для клавиатуры и мышки, а все остальное 3.0 с током 1А по стандарту, но опять же нормальные материнские платы выдают до 2А до срабатывания защиты, а у MSI это даже называется как-то модно, типа буст зарядка. Насчет тока- есть такие волшебные элементы, называются конденсаторами, которые это самое потребление и сглаживают. Большая пила там будет только на ключе. Ах да, она еще будет на частоте 1.2мГц, так что считайте сами.
quaer
30.12.2022 11:25У MT3608 ограничение тока в 4А, значит при нехороших условиях он все 4А и попытается получить. Дросселю тоже придётся напрячься.
Solgo
30.12.2022 12:34+2Набросал модель в MC12, длительность импульсов подобрал для получения на выходе 7В. Там естественно идеальные конденсаторы и источник напряжения, в реальности еще присутствует дизайн печатной платы. Так вот, ток потребления получается 1.5А и да на частоте 1.2Мгц в идеальном мире пиковый ток потребления мало отличается от среднего.
Верхний график ток через индуктивность L1, нижний напряжение на выходе. Колебания естественно от того что нет стабилизации.
zatim
30.12.2022 10:28+3У вас TL431 зашунтированы 0,1 мкф. Такая емкость вызовет колебания. Сам буквально вчера-позавчера нарвался. Надо или сильно меньше или сильно больше. Или поменять TLку на ИОН.
aumi13
30.12.2022 13:41еслі есть возможность, я ставлю многоногие мк. это гораздо удобнее чем мультиплексирование выводов, особенно для единичных проектов.
а свободные порты потом оказываюца весьма кстати для вывода отладочных сигналов на логический анализатор.
Gordon01
30.12.2022 18:37Прикольно и автор молодец, но лично я не понимаю зачем это все. Создаётся впечатление, что просто хочется использовать детальки, которые жалко выбросить.
Например, почему выбрана ATTINY85 у которой банальное не хватит памяти для фреймбуфера этого дисплея? И ещё и ног не хватает.
Я бы на вашем месте взял бы МК с USB, завёл бы все измерения и ключи в него, а отображение и управление сделал бы на компьютере. Заодно можно было бы и управлять отсечкой тока.
COKPOWEHEU
31.12.2022 14:36Я бы на вашем месте взял бы МК с USB, завёл бы все измерения и ключи в него, а отображение и управление сделал бы на компьютере.
Причем на том же контроллере можно и переходники на UART сделать, и пару-тройку обычных цифровых GPIO. Например, чтобы STM'ки прошивать: выставил BOOT0, дернул ресет, шьешь через UART, потом поменял BOOT0, снова дернул ресет, и через тот же UART можно отлаживать. Я так для GD32 делал, очень удобно. С программированием через JTAG/SWD у того контроллера были проблемы.
А вот индикацию убирать не стоит. Задублировать можно, но на переходнике оставить надо. Чтобы сразу бросить взгляд не приближается ли к критическим параметрам.
Leon010203
Еще можно добавить по 2 транзистора и резистора для автопрошивки esp8266/32