Как мы изобрели велосипед: адаптер USB–RS485 с выходом питания 12 В и защитой

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Мы в Wiren Board разрабатываем и производим устройства для автоматизации и мониторинга, которые работают на тысячах объектах: жилых комплексах, частных домах и квартирах, сетевых магазинах и ресторанах, складах, нефтяных предприятиях и т.п.

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

А иногда мы делаем что-то простое, но по-своему — например, преобразователь интерфейсов WB-USB485. Вы узнаете о недостатках существующих адаптеров, как мы искали идеальное решение и про весь процесс: от идеи до запуска серийного производства.

Задача

Периферийные устройства Wiren Board работают по протоколу Modbus RTU, а значит, их можно использовать с любым контроллером или SCADA, если они поддерживают Modbus.

Но особенность в том, что наши устройства многое могут, поэтому перед использованием их надо как-то настроить. Например, в модуле WB-MR6C v.2 можно назначить управление любым выходом от любого входа — и всё это в разрезе четырёх типов нажатий. Ещё есть безопасные режимы и разные типы выключателей, подключаемых к входам.

При использовании контроллера Wiren Board устройства настраиваются через его веб-интерфейс, а если контроллера нет — настраивать надо с компьютера.

Настройка реле WB-MR6C v.2 из веб-интерфейса контроллера Wiren Board 7
Настройка реле WB-MR6C v.2 из веб-интерфейса контроллера Wiren Board 7
Настройка реле WB-MR6C v.2 через Rilheva Modbus Poll на компьютере с Windows
Настройка реле WB-MR6C v.2 через Rilheva Modbus Poll на компьютере с Windows

Обычно настройка с компьютера делается через софт, эмулирующий modbus-мастер и преобразователь интерфейса USB <> RS485.

И если с софтом всё более или менее понятно, есть та же Rilheva Modbus Poll для Windows или консольный modbus_client для Linux, то с преобразователями не всё так хорошо.

Например, мы регулярно получали от пользователей сообщения, что купленный на Алиэкспресс преобразователь за 200-500 рублей почему-то не хотел работать или на нужной скорости, или с двумя стоповыми битами, которые по умолчанию использовались в наших устройствах до 2022 года.

Поиск решения

Сперва мы хотели решить задачу просто: привезти кучу хороших преобразователей интерфейса, растаможить, заплатить налоги и продавать с минимальной наценкой и гарантией, указав «Сделано в Китае».

Но оказалось всё не так просто: где-то нет выхода GND, где-то и правда проблемы со стоповыми битами, какие-то требовали установки драйверов вендора.

Ещё для стабильной работы преобразователя на любых скоростях, трансивер должен явно переключаться на передачу и приём. Для этого микросхема USB-UART должна иметь специальную ножку, которая будет сигнализировать об окончании передачи. 

Но таких микросхем мало, да и чаще всего производители просто ставят RC–цепочку и инвертор, а потом пытаются угадать направление по напряжению на TX. В итоге оно зависит от скорости передачи: может слишком поздно переключиться на приём и терять начало ответа, либо наоборот — включать приём в середине передачи пакета.

Осциллограммы передачи пакета без явного переключения направления передачи и с явным (в нормальном размере)
Осциллограммы передачи пакета без явного переключения направления передачи и с явным (в нормальном размере)
Преобразователи интерфейсов USB-RS485 с Алиэкспресса
Преобразователи интерфейсов USB-RS485 с Алиэкспресса


Преобразователи интерфейсов USB-RS485 с Алиэкспресса

Поэтому мы вспомнили старую пословицу «Если хочешь, чтобы что-то было хорошо — сделай всё сам». Так началась работа над «Адаптером USB-RS485», который впоследствии получил имя WB-USB485, но обо всём по порядку.

Формулируем задание на разработку

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

Modbus-устройства Wiren Board работают в диапазоне напряжений от 9 до 28 В, а пиковая потребляемая мощность — 4 Вт. Поэтому в требованиях прописали выход 12.5 В с током до 400 мА.

Если есть питание, то хочется дать пользователю индикатор с простой логикой: горит — питание есть, не горит — что-то пошло не так, например, короткое замыкание на линии.

Устройство должно быть компактным и удобным в использовании, идеальный форм-фактор — флешка с клеммником под шину RS-485.

Обязательна работа без вендорских драйверов в Windows, Linux, MacOS и Android — для этого микросхема USB-UART должна относиться к классу CDC ACM (Communication Device, Abstract Control Model).

В итоге ТЗ на разработку выглядело так: 

  • Сделать USB-RS485 переходник со степ-апом на 12 В / 400 мА, чтобы можно было подключать наши modbus-устройства без внешнего блока питания.

  • Индикатор питания на шине, он же индикатор короткого замыкания.

  • Работа в популярных ОС без установки дополнительных драйверов.

  • Стабильная работа при любых настройках во всём диапазоне скоростей вплоть до 115200 бит/с.

  • Умещаться устройство должно в компактный корпус, похожий на флешку.

Задача есть — делаем.

А где гальваническая развязка?

У нас были бурные дискуссии внутри разработки, были сторонники её добавить несмотря ни на что, а были и противники. И у каждого были свои аргументы от «А если на шине будет сетевое напряжение?» до «А если шина будет на сотни метров да между разными зданиями?».

Но основное назначение WB-USB485 — настройка устройств на столе. Поэтому сетевое напряжение на шине может оказаться только при питании modbus-устройства от неизолированного блока питания 230 В. В этом случае на A/B шины окажется 110 В сетевого напряжения, попавшие туда через среднюю точку конденсаторов.

Тогда возможно два сценария развития событий:

  • с гальваноразвязкой — под сетевым напряжением останутся провода и клемма RS-485;

  • без гальваноразвязки — USB-разъём ноутбука обеспечит выравнивание земель через защитные диоды, но в теории может сгореть ноут.

И непонятно, что хуже — вероятность спалить технику или подвергнуть опасности человека.

Ещё довольно дорого сделать гальванически изолированный БП на 5 Ватт, и он точно не уместится в компактном корпусе.

В итоге мы решили гальваническую развязку не делать и в документации явно про это сказать, а ещё предупредить, чтобы не подключали к длинным линиям и к странным китайским устройствам с питанием от 230 В.

Первый блин

Трансиверы RS-485 у нас используются примерно везде, а вот хорошие преобразователи USB-UART пришлось долго и муторно искать.

В 2020 году WCH (WinChipHead) анонсировал новые чипы CH342 и CH343. Мы на всякий случай купили все образцы, какие смогли. Покупали не напрямую в WCH, так как они тогда шугались англоязычных клиентов, а через случайного китайского агента.

Когда проектировали наше устройство в первый раз, оказалось, что чипов CH342 и CH343 ещё нет в массовом производстве, поэтому в проект заложили другой чип от WCH. Но до производства дело так и не дошло — нагрянул кризис компонентов и стало не до новинок.

Вторая попытка

И вот мы неожиданно обнаружили, что чипы CH343G стали свободно доступны, есть у всех поставщиков и стоят недорого — мы реанимировали проект.

Дело было в апреле 2022 года, когда измотанный пандемией рынок электронных компонентов накрыла волна логистического ужаса и отмены поставок. Поэтому мы всей компанией пытались не допустить остановки производства: делали новые ревизии устройств с ещё доступными в продаже компонентами, подбирали аналоги, закупали компоненты впрок и т.п. Подробнее про то, как всё это происходило, читайте в нашем докладе Новости Wiren Board. Как мы теперь покупаем компоненты.

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

Наш склад компонентов
Наш склад компонентов

Но нам удалось найти человека, который смог взяться за проект преобразователя интерфейсов и довести его до конца!

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

Один из стендов, собранных Даниилом для тестирования реле
Один из стендов, собранных Даниилом для тестирования реле

Корпус

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

Будущий корпус устройства
Будущий корпус устройства

Схема и плата

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

Обычно процесс выглядит так: инженер рисует схему в Eagle, обсуждает с коллегами, потом там же разводит плату и размещает заказ на 10-20 штук в Резонит.

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

Создание схемы в EAGLE
Создание схемы в EAGLE
Плата
Плата

Прототип и неожиданная проблема

Через несколько дней мы получаем плату v2.0 (v1.0 была нарисована в 2020 году, но в производство не пошла), припаиваем компоненты и… у нас не работает управление полудуплексом. Да ещё и на двух образцах.

Проверка работы WB-USB485 на ноутбуке от Apple
Проверка работы WB-USB485 на ноутбуке от Apple

Даниил долго ищет проблему: проверяет схему, разводку плат и монтаж и номиналы деталей, изучает сигналы с осциллографом и, с подачи коллеги, приходит к выводу — проблема в чипах CH343, которые мы купили для пробы в далёком 2020 году.

Чтобы подтвердить гипотезу, надо было поставить чип из другой партии, а взять негде — от производителя чипы приедут только через два месяца, а в продуктах на рынке их ещё толком не было.

Но нам удалось найти какое-то устройство на ESP32 и с чипом CH343, которое мы и купили для опытов. Это помогло — после пересадки чипа с донора всё заработало.

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

Плата WB-USB485 и плата-донор чипа
Плата WB-USB485 и плата-донор чипа

Поиск идеального USB-коннектора

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

Решили поставить SMD, но искать оказалось непросто: большой выбор типоразмеров, а на некоторых чертежах не указан размер. Приходилось угадывать по фото: считать по клеткам миллиметровки или высчитывать размер в графическом редакторе.

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

USB-коннекторы слева направо: ТНТ, дешёвый SMD, Molex и финальный вариант
USB-коннекторы слева направо: ТНТ, дешёвый SMD, Molex и финальный вариант

Предположили, что так себя ведут дешевые коннекторы, поэтому купили самые дорогие в Компэле от Molex — работают идеально, но стоят недешево.

Продолжили поиски: долго ковыряли LCSC в поисках коннектора с подходящими габаритами, нормальными материалами, известным производителем и не подозрительно маленькой ценой. Нашли, купили образцы, проверили, заказали много штук на склад.

Защищаем вход компьютера

У нас так устроены процессы, что над задачей разработчик работает сам и привлекает коллег в двух случаях: если ему нужна помощь или хочет что-то показать.

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

Так случилось и в этот раз — кто-то из коллег сразу заметил, что в устройстве есть вероятность сломать компьютер, к которому подключен преобразователь интерфейсов, если подключить устройство к действующей шине RS-485, где устройства питаются от 24 В.

Решили сделать защиту. Максимальное напряжение питания наших устройств 28 В постоянного тока, поэтому сделали защиту до 30 В.

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

Кусочек схемы с защитой
Кусочек схемы с защитой

Запуск производства

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

Страница устройства в интернет-магазине
Страница устройства в интернет-магазине

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

Почему нельзя просто собрать устройство и потом менять по гарантии, если оно не работает? На это есть сразу несколько причин:

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

  2. Проходит много времени с момента выпуска устройства до реальной эксплуатации, что несёт риски поздно заметить критическую ошибку и получить много негатива, а ещё убытки от сотен неработающих устройств на складе.

  3. Мы постоянно выпускаем новые ревизии устройств: улучшаем их, исправляем незначительные ошибки или просто меняем компоненты, потому, что старые больше нельзя купить.

  4. Прошивка устройства именно на этой аппаратной ревизии может вести себя немного не так, как ожидалось.

  5. Компоненты из новой партии могут оказаться бракованными.

Сообщение на портале поддержки с описанием процедуры замены неработающего устройства
Сообщение на портале поддержки с описанием процедуры замены неработающего устройства

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

Стенд тестирования WB-USB485 проверяет:

  1. Тракт приема-передачи: передаём пакет на скорости 115200 бит/с, принимаем его контроллером и отправляем назад.

  2. Степ-ап преобразователь: к выходу 12 В подключаем резистивную нагрузку и следим, чтобы выходное напряжение было не ниже заданного порога.

Монтажнику на производстве достаточно воткнуть устройство в USB-порт стенда, подключить клеммник RS-485 и нажать большую красную кнопку — остальное происходит автоматически.

Стенд выходного тестирования WB-USB485 на производстве
Стенд выходного тестирования WB-USB485 на производстве

Нейминг и наклейки

Нейминг моделей у нас нехитрый: 

  • префикс WB — это сокращение от Wiren Board;

  • Буквы MB в modbus-устройствах — это сокращение от MODBUS;

  • а дальше уже идёт какая-то характеристика устройства: количество выходов, протокол, тип сигнала и т.п.

Это устройство мы назвали также просто — WB-USB485, он лишь преобразователь интерфейсов и не ограничен только Modbus.

Типография у нас своя — это позволяет оперативно печатать нужное количество наклеек и оперативно вносить изменения, если сменилась версия устройства, появилась новая функция или закралась ошибка.

Первые образцы наклеек с ошибкой — это преобразователь интерфейсов, а не Modbus-адаптер
Первые образцы наклеек с ошибкой — это преобразователь интерфейсов, а не Modbus-адаптер
Плоттер Graphtec CE7000-40
Плоттер Graphtec CE7000-40

Первые серийные экземпляры

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

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

Установщик компонентов SMD-Taxi, используем для небольших партий плат до 30 000 точек пайки
Установщик компонентов SMD-Taxi, используем для небольших партий плат до 30 000 точек пайки
Панель с платами WB-USB485 v2.2, партия A
Панель с платами WB-USB485 v2.2, партия A
WB-USB485 v.2.2 в сборе
WB-USB485 v.2.2 в сборе

А комплект?

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

Решение казалось очевидным: взять кусок витой пары, обжать концы в НШВИ и закрутить их в ответные части клеммников. Получилось удобно и функционально: USB-свисток и пара кабелей в комплекте. В таком виде их и получили первые покупатели.

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

Первый вариант комплектации WB-USB485 v.2.2
Первый вариант комплектации WB-USB485 v.2.2

Фидбэк

Инженеры-электронщики работают у нас на производстве, а вот большая часть команды — удалённо. Поэтому до старта продаж устройства у нас проверяли сами разработчики и техписатель при написании документации.

Красный индикатор питания в версии 2.2 и жёсткий кабель для подключения устройств
Красный индикатор питания в версии 2.2 и жёсткий кабель для подключения устройств

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

  • красный статусный индикатор пугает пользователя;

  • комплектные кабели получились жёсткие и некрасивые;

  • не хватает индикаторов RX/TX — нельзя понять, есть ли обмен на шине;

  • клеммная колодка шины RS485 сделана такой же, как в устройствах WB-M1W2/WB-MSW, что не позволяет откинуть в инсталляции от шины контроллер и подключить вместо него WB-USB485;

  • колпачок оказался жутко неудобным и его тяжело снимать;

  • на разъёме RS-485 не хватает цветовой маркировки — надо всматриваться в буквы на плате при использовании кабелей не из комплекта.

Обсудили замечания на общей планёрке и решили поправить, а на будущее внесли в инструкцию по выпуску новых устройств пункт, который предписывает отправлять удалённым сотрудникам образцы из тестовой партии. Здесь логика проста: чем больше человек, не вовлечённых в процесс разработки устройства, его пощупает — тем лучше.

Работа над ошибками

Даниил перерисовывает схему и плату, где меняет цвет светодиода питания на зелёный и добавляет ещё два: оранжевый TX и синий RX.

Инженерные образцы, сверху вниз: v2.0, v2.2 с напаянными на трансивер индикаторами RX/TX, v2.3
Инженерные образцы, сверху вниз: v2.0, v2.2 с напаянными на трансивер индикаторами RX/TX, v2.3

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

В первом варианте мы использовали кабель ParLan Patch U/UTP Cat5e PVC 2х2х0.35 мм кв., у которого всего 2 витых пары, но довольно упругая изоляция и пластиковая жилка внутри.

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

Попытка сделать гибкий кабель без изоляции
Попытка сделать гибкий кабель без изоляции

Вышло, честно сказать, плохо. Решили заказать обычный тоненький четырёхпроводной кабель без витых пар 26awg Black 4 Cores — кабели короткие, поэтому в витой паре нет совершенно никакой необходимости. Зато результат получится классным: тоненький гибкий проводок чёрного цвета.

Слева — первая версия кабеля, справа — вторая
Слева — первая версия кабеля, справа — вторая

Во всех устройствах на складе из пробной партии кабели мы тоже поменяли, заменили и коробку на более компактную и крепкую. Таким образом первые пользователи получили устройства с нормальными кабелями и одним красным индикатором, вместо трёх разных цветов.

К моменту прихода большой партии WB-USB485 v2.3, модули v2.2 уже разлетелась и следующие пользователи получили уже по-настоящему классные устройства: в комплекте с удобными кабелями, индикаторами обмена на шине и питания, а также в компактной коробке.

Две версии WB-USB485: слева v2.2, справа — v2.3
Две версии WB-USB485: слева v2.2, справа — v2.3

Что в итоге

В результате мы получили то, что хотели, — компактный преобразователь интерфейса с настоящим RS-485 в удобном форм-факторе с выходом питания на 12 В постоянного тока. В нём есть защита от случайной подачи напряжения до 30 В, индикатор питания и перегрузки по току и два индикатора обмена данными.

В комплекте с устройствами два кабеля, подходящие ко всем нашим устройствам. Не нужно ставить драйвера на Windows, Linux, MacOS и Android.

Судя по отзывам и продажам, пользователям тоже понравилось.

Настройка реле с измерением мощности WB-MRWM2 через WB-USB485
Настройка реле с измерением мощности WB-MRWM2 через WB-USB485

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

Мы немного облегчили их труд шаблонами под Rilheva Modbus Poll, но это всё не то. Однажды мы сделаем удобный конфигуратор наших устройств, который будет использовать шаблоны от нашего драйвера.

Так сейчас выглядит настройка диммера Wiren Board в Rilheva Modbus Poll с использованием наших шаблонов
Так сейчас выглядит настройка диммера Wiren Board в Rilheva Modbus Poll с использованием наших шаблонов

На этом всё, пишите в комментариях, чтобы вы сделали так же, как мы или по-другому. А лучше приходите к нам работать, будем делать интересные штуки вместе — мы как раз ищем инженера-электронщика в отдел выходного тестирования.

Если вы просто интересуетесь автоматизацией, производством электроники и чем-то таким — приходите 21 и 22 апреля 2023 г. на нашу конференцию и выставку WBCE 2023. Там мы с партнёрами покажем новинки, расскажем много интересного и обязательно организуем для вас живую экскурсию по нашему офису и производству.

Источник: https://habr.com/ru/companies/wirenboard/articles/727624/


Интересные статьи

Интересные статьи

Компания “Волжское пароходство” —  это больше 3 тысяч сотрудников, часть из которых используют Битрикс24 во время перевозок. По пути следования судна интернет не везде стабильный, поэтому нужен б...
Чтобы подключиться к локальной сети обычно используют интерфейс Ethernet. Но не всегда удобно размещать его на своей плате. Интерфейс USB может дать больше возможностей и обходится гораздо дешевле. Зд...
В прошлой части мы поговорили о советах директору по разработке бизнес-процесса в Битрикс24, сейчас же я постараюсь дать советы руководителям отделов, поскольку по моему опыту почти всегд...
На днях представлен проект открытой программной платформы для создания мобильных устройств. Он получил название Precursor. По словам автора, это Arduino или Raspberry Pi для моби...
Одна из стоек внутренней виртуализации. Заморочились с цветовой индикацией кабелей: оранжевый обозначает нечетный ввод по питанию, зеленый – четный. Мы тут чаще всего рассказываем про “круп...