В предыдущем проекте я рассматривал варианты использования Трансформаторов Тока и собрал одноканальный усилитель/точный выпрямитель для одного из них. В этом проекте мы поднимаем эту идею на новый уровень.
Дом, который я арендую, имеет только 240В/16А для гаража. Это неприятно, потому что, будучи Мейкером, у меня в гараже есть довольно интересные игрушки, такие как станок с ЧПУ и лазерный резак. У меня есть формы для обработки для предстоящего крупного проекта, в котором я буду создавать детали из углеродного волокна, армированные пластиком. Мой старый компрессор мгновенно выбивает автомат в гараже, когда я его включаю, поэтому мне пришлось пересмотреть свои варианты для работы станка с ЧПУ — ему требуется больше, чем доступные 16А при полной нагрузке. Из-за этого я купил относительно тихий компрессор малой мощности, чтобы уменьшить потребление тока, но мне нужен способ убедиться, что он не включится, когда шпиндель станка с ЧПУ работает под высокой нагрузкой или когда работает охладитель шпинделя.
Моё решение заключается в создании многоканального монитора тока, который позволит мне контролировать потребление тока роутером и подключенным оборудованием. Это должно позволить мне определить, когда безопасно включить маленький компрессор, в зависимости от нагрузки на другие системы. Мне нужен постоянный поток воздуха к шпинделю смены инструмента, так как подшипники должны быть постоянно продуваемы, чтобы оставаться чистыми, а поршень в сменщике должен обеспечивать постоянное давление на инструмент, чтобы тот не скользил, так что давление воздуха жизненно важно.
У меня будет 6 выходных каналов для платы управления, соответствующих 6 каналам контроля тока. Мне не нужно столько каналов для моего проекта, но как для универсального проекта с открытым исходным кодом, вы можете захотеть сделать с платой что-то иное, чем я. Я также планирую установить на плате дисплей для отображения тока в реальном времени.
Этот проект не является измерителем мощности. У него нет возможности мониторить напряжение. Следовательно, он также не может мониторить коэффициент мощности нагрузки. Моя задача чисто в том, чтобы попытаться убедиться, что я не вызову срабатывание моего автомата на 16А. Если вам нужна эта функциональность, этот проект может стать хорошей отправной точкой, так как я собираюсь добавить небольшой трансформатор для изоляции переменного тока и его понижения до более управляемого уровня.
Как обычно в моих проектах, вы можете найти файлы дизайна на GitHub; они доступны для использования бесплатно под очень либеральной лицензией MIT. Это позволяет вам свободно использовать проект, как вам угодно. Если вы ищете компоненты, использованные для создания этого проекта, вы можете найти их все в моей бесплатной и открытой библиотеке Altium Designer Library®.
Выше представлена схема печатной платы (PCB), о которой вы будете читать в Altium 365 Viewer; бесплатный способ связаться с вашими коллегами, клиентами и друзьями с возможностью просмотра дизайна или скачивания одним нажатием кнопки! Загрузите ваш дизайн за считанные секунды и получите интерактивный способ подробного изучения без необходимости использования громоздкого программного обеспечения или мощного компьютера.
Несмотря на количество компонентов на печатной плате для этого проекта, схемы для этого монитора тока довольно просты.
Текущие датчики точно такие же, как те, которые я ранее собрал, используя трансформаторы тока Talema. У меня есть пять датчиков на 10А с усилением сигнала 2:1, что, с учетом выпрямления, дает в четыре раза большую амплитуду сигнала переменного тока. Шестой датчик на 15А с усилением 1:1, что должно позволить контролировать полную амплитуду сигнала шпинделя для смены инструмента мощностью 1800Вт. Это стандартная схема точного выпрямителя базовой точности. Существуют более продвинутые схемы точных выпрямителей, которые добавляют пару дополнительных компонентов (например, диод параллельно с резистором обратной связи). Для целей этого проекта базовая схема обеспечивает больше, чем мне требуется для точности и допуска.
Сердцем этого проекта является микроконтроллер, который будет принимать все показания с датчиков и определять, какие выходы должны быть активированы. Я серьезно рассматривал новую серию микроконтроллеров STM32G, но в итоге остановил свой выбор на NXP LPC11U35. Основным преимуществом LPC для меня является функциональность загрузки через USB, позволяющая быстро развертывать новое программное обеспечение на плате после ее установки в шкафу моего ЧПУ-фрезера. Почти вся серия LPC позволяет устройству загружаться как USB-накопитель с помощью встроенного загрузчика ROM, что позволяет копировать новое программное обеспечение на USB-диск, который отображается на подключенном компьютере, без необходимости в дополнительном оборудовании или программном обеспечении. Эта функциональность позволит мне разрабатывать программное обеспечение в моем офисе и легко переносить его на установленную плату.
Основным недостатком LPC11U35 является то, что это старый ARM Cortex и он имеет только 10-битные АЦП. Мне нужно проверить, обеспечит ли АЦП достаточное разрешение для этого проекта.
В предыдущей статье о трансформаторе тока я забыл получить напряжение RMS сигнала на выходе усилителя, и зафиксировал только напряжение RMS сигнала на выходе трансформатора тока.
Я перестроил схему трансформатора тока на макетной плате, чтобы получить новые показания осциллографа. Я использую твердотельное реле, управляемое моим настольным блоком питания, для включения керамического обогревателя мощностью 1.1 кВт, который стоит на перевернутом противне для теплоизоляции от моего стола.
Синий след (канал 2) - это выход точного выпрямителя, а желтый след (канал 1) - это переменный ток на выходе из датчика тока до операционного усилителя.
С усилителем датчика тока, построенным согласно схеме в этом проекте, у меня есть 1.299 В RMS с теоретическим током 4.429 А, проходящим через него. Это дает мне разрешение около 293 мВ на ампер. С 10-битным АЦП (1024 значения) и диапазоном 3300 мВ (разрешение 3.2 мВ), это дает мне читаемое разрешение около 0.01 А, что не удивительно по сравнению с 14- или 16-битными АЦП в более современных микроконтроллерах, но все же достаточно для этого проекта и многих других приложений тоже.
На этой одной схеме происходит много всего! Стоит сразу отметить, что подтягивающий P-канальный MOSFET на линии USB не требуется для последних ревизий кремния серии LPC11U, но я собираюсь оставить его, потому что у меня есть некоторые старые микроконтроллеры, которые я мог бы использовать для монтажа этой платы и не хочу оказаться в ситуации, когда мое соединение USB не работает. Если вы покупаете новую партию LPC11U35, вы можете избавиться от всего, что связано с IC3.
Пока мы говорим о USB, у меня также есть диод TVS, который предназначен для защиты линий USB 2.0 от событий электростатического разряда (ESD). Разъемы USB - отличное место для прямого электростатического разряда в микроконтроллер, поэтому они являются моим главным приоритетом для защиты.
По мере того как мы продолжаем движение вдоль левой стороны схемы, у меня есть микросхема контроля сброса, чтобы гарантировать стабильность питания 3.3V перед загрузкой МК, с кнопкой для ручного сброса платы. Также у меня есть кнопка включения загрузчика, так как мне нравится логически объединять элементы. Чтобы перевести плату в режим загрузчика USB mass storage, достаточно удерживать нажатой кнопку программирования S2, а затем нажать кнопку сброса S1. Удержание кнопки программирования в течение секунды или около того после загрузки переведет устройство в режим клиента USB mass storage, если подключен USB-кабель.
В верхнем правом углу схемы у меня также есть стандартный 10-контактный разъем для отладки по однопроводному интерфейсу (SWD), что позволяет отлаживать плату в среде разработки.
Наконец, фильтрация входного сигнала для микроконтроллера. Мы перейдем к разъемам ввода-вывода в следующем разделе статьи, так что не волнуйтесь, что я пропустил две шины и как их настроить! Фильтрация питания для этой платы довольно критична, поскольку она будет установлена в промышленную машину и питаться от нее, которая генерирует большое количество электрических помех (как проводимых, так и излучаемых). Имеется более 2000 Вт блока питания AC-DC, привод переменной частоты мощностью 2200 Вт, управляющий шпинделем, серводвигатели постоянного тока, промышленный охладитель и сборщик пыли, все они работают от одного и того же источника переменного тока. Из-за количества помех я размещаю ферритовый бус на каждом пине питания с двумя развязывающими конденсаторами — обычно в дизайне микроконтроллера я бы использовал только один феррит и, возможно, пару объемных конденсаторов, но для этого дизайна я хочу иметь как можно более короткие дорожки между микроконтроллером и фильтром. Поскольку пины питания микроконтроллера находятся на противоположных сторонах устройства, я решил создать фильтр для каждого пина, чтобы дорожки были короткими.
Для каждого питающего контакта был выбран феррит, имеющий максимально возможное сопротивление на частоте 100 МГц при минимально возможном постоянном сопротивлении. В основном, я пытался определить, с каким постоянным сопротивлением я готов мириться, а затем максимизировал сопротивление на частоте для этого постоянного сопротивления.
Мой станок ЧПУ уже имеет несколько источников питания на выбор, линия 5В является самой чистой и наименее используемой, поэтому логично использовать этот источник для питания платы. Как бонус, это также позволит мне питать плату от USB-кабеля на моем рабочем столе. Так как я ожидаю, что плата будет питаться только от одного из этих источников, я добавил простой диод к каждому входу в качестве защиты от обратной полярности и основной защиты от одновременного подключения обоих источников.
Диод защиты был выбран с низким падением напряжения в прямом направлении, чтобы можно было использовать очень дешевый линейный регулятор без того, чтобы суммарное падение напряжения обоих устройств снизило выходное напряжение ниже требуемых 3,3 вольта.
Между линейным регулятором и защитным диодом я добавил пи-фильтр. Я не знаю точно, с какими частотами мне придется иметь дело на входе, поэтому я нацелился на максимально возможную индуктивность в пределах доступных индукторов размером 4-5 мм. Я использую экранированный индуктор с ферритовым сердечником и намоткой из провода, чтобы добиться наименьшего постоянного сопротивления, поскольку эта плата потенциально может потреблять до 1 ампера при питании всех светодиодов и оптоизоляторов. Зная требования к току и размер, оставалось лишь найти индуктор с высоким значением индуктивности и низким постоянным сопротивлением, который также соответствовал бы требованиям по размеру и току. Я добавил по конденсатору на 10 мкФ с каждой стороны индуктора, чтобы завершить пи-фильтр, поскольку это недорогое решение, которое все же обеспечивает достаточный объем емкости.
Мне, вероятно, не нужно оптоизолировать каждый выход, поскольку в используемых мной твердотельных реле уже есть оптоизоляторы, но, поскольку это открытая конструкция, я не знаю, может ли кто-то подключить реле или вход-выход промышленного контроллера напрямую к плате. В качестве дополнительного бонуса, изолятор дает мне спокойствие. Ток для светодиода в изоляторе выше, чем может обеспечить ARM Cortex, поэтому я использую очень дешевый N-канальный МОП-транзистор для управления светодиодом в оптоизоляторе и внешний, который можно увидеть, чтобы указать, что выход активирован.
Мне на самом деле нужны только два выхода для моего использования на этом дизайне платы, но, поскольку это проект с открытым исходным кодом, я подумал, что, вероятно, будет хорошо иметь более универсальный дизайн. Я добавляю 6 выходных каналов, чтобы соответствовать 6 каналам измерения тока, так что если бы это использовалось в другой промышленной машине, это позволило бы контроллеру включать или отключать каждую нагрузку, для которой есть датчик тока.
Я также добавил на плату диод TVS, который насколько это возможно близок к 5V, чтобы защитить плату от электростатических разрядов на входных разъемах. Я планирую использовать предварительно обжатые разъемы JST KH от DigiKey для подключения моих твердотельных реле к этой плате, которые совместимы с JST PH. Кроме того, я добавил на плату клеммный блок с шагом 2.54 мм для подключения проводов, чтобы обеспечить дополнительную гибкость для других приложений. Предварительно обжатые провода отлично подходят для меня, так как я могу разрезать один пополам и получить два кабеля, готовых к использованию с твердотельным реле, что избавляет меня от необходимости резать провода определенной длины и зачищать два конца — потенциально экономя мне секунды на установке! Но если говорить всерьез, то обжатые разъемы будут более надежными и менее склонными к выходу из строя или усталости на машине, которая подвергается сильным толчкам и вибрации.
Финальным блоком схемы этого проекта является дисплей LCD. Я решил использовать относительно недорогой и надежный графический дисплей Newhaven, так как у него простой интерфейс SPI. Я очень надеялся использовать дисплей размером 128x64 пикселя, но на плате просто не хватило места, поэтому я вернулся к схеме во время размещения элементов на плате и изменил дизайн на использование дисплея 128x32 пикселя. Ему требуется много развязывающих конденсаторов, но в остальном он имеет очень мало требований к подключению.
Одним из ключевых аспектов этого проекта является то, что у меня есть пять идентичных каналов датчиков тока и шесть идентичных выходных каналов, что делает многоканальный дизайн идеальным для этого проекта. На мой взгляд, это то, в чем Altium значительно превосходит другое программное обеспечение ECAD, которым я пользовался. Его функции позволяют быстро проводить трассировку и размещение на плате, а также создавать легко читаемые схемы.
Вместо дублирования блоков схем на вашем верхнем уровне, как показано ниже, я могу сделать схему намного чище, просто добавив один блок схемы и используя функцию REPEAT на нем.
Это объединяет все схематические блоки в один виртуальный стек компонентов. Для этого проекта это позволяет подключить микроконтроллер ко всем датчикам тока одним соединением. Если мне нужно изменить порты на символе схемы, изменения будут применены ко всем каналам сразу, что позволит сэкономить время, если мой проект потребует изменений на этапе проектирования.
Используя функцию повторения, теперь все наши каналы датчиков сгруппированы вместе, что делает схему более понятной, и это значительно упростит разработку печатной платы, когда я дойду до этого этапа проекта.
Давайте рассмотрим, как воспользоваться этой функцией и использовать ее в вашем проекте.
Для работы инструментов многоканальности вам нужно использовать шины для объединения ваших соединений для каналов. В нашей схеме микроконтроллера, вместо того чтобы иметь порт для каждого соединения АЦП, у нас будет один порт для всех соединений.
Это делает вашу схему более аккуратной, не требуя от вас выведения всех 6 портов.
Вы можете использовать функцию Разместить -> Шина (Place -> Bus) в главном меню, чтобы разместить шину вместо провода. Можно думать о шине как о пучке проводов, собранных вместе. Чтобы шина работала, вам нужно сообщить Altium, сколько соединений проходит по шине. Это делается путем размещения метки сети (Разместить -> Метка сети (Place -> Net Label)) на шине и присвоения ей имени, например, ADC[0..5]. Это означает, что шина будет нести ADC0, ADC1, ADC2, ADC3, ADC4 и ADC5, двойные точки в квадратных скобках означают «от 0 до 5».
При использовании функции повторения вам нужно будет начинать нумерацию сети с 1, а не с 0. Однако для АЦП у меня также есть датчик тока 15А, который не является частью повторяющегося блока, и поэтому я начинаю с 0. Канал АЦП 0 будет для датчика 15А, с 1 по 5 для каналов 10А. Шина OUT нумеруется с 1 по 6, поскольку каждый из них будет повторяющимся блоком на схеме и плате.
После того, как вы назовете свою шину, вам также потребуется добавить метку сети к каждому проводу, который идет к шине. Провода должны иметь то же имя, что и шина, с номером соединения в конце. Например, OUT1 и OUT3 подключены к шине OUT[1..6]. Эти провода соединяются с шиной через вход шины (Place -> Bus Entry), что является соединением под углом 45 градусов, которое вы видите. Вы также можете заметить, что OUT4, OUT5 и OUT6 на самом деле графически не соединяются с проводом шины - название сети достаточно для того, чтобы Altium знал, что эти провода будут работать в шине. Это очень удобно и избавляет от нечитаемости схемы, где все провода должны были бы пересекаться друг с другом.
Теперь, когда лист микроконтроллера настроен с соответствующими портами, мы можем добавить его на верхнеуровневый лист схемы. Более простой способ сделать это - не использовать Place -> Sheet Symbol, а вместо этого щелкнуть правой кнопкой мыши по вашей схеме и перейти к Sheet Actions -> Create Sheet Symbol From Sheet. Это создаст символ для схемы, а также добавит все порты, которые у вас есть на схеме, экономя время.
Сделайте то же самое для вашего листа канала, так что теперь у вас есть символы обоих листов в схеме. Теперь лист выходного канала нужно переименовать, формат следующий:
REPEAT(name, start, end)
По умолчанию, каждый компонент в канале будет назван ‘designator_sheetname’. Лично мне нравится, когда обозначение идет первым, чтобы можно было быстро прочитать спецификацию материалов и увидеть, к какому типу компонента относится строка — но если вы предпочитаете другой формат, в окне Project -> Options -> Multi-Channel доступно множество вариантов. Если вам все еще не нравится формат, вы даже можете ввести свой собственный формат обозначений, используя переменные из стандартных опций.
Очень важно также обернуть имя вашего порта в REPEAT( ), иначе провод будет подключать только первую запись шины ко всем портам, вместо того, чтобы генерировать новый порт для каждого канала. Обычно исключение составляют протоколы связи, где вы можете захотеть, чтобы те же SPI Clock/MISO/MOSI или I2C SCL/SDA шли на каждый лист. Это дает вам большую гибкость в использовании много канальных листов.
Теперь это просто вопрос наличия именованной шины, исходящей из порта шины микроконтроллера, и затем прямого соединения с проводом, имеющим то же имя, что и шина. Это может выглядеть немного странно, но это говорит Altium, что вы хотите разделить шину на каждый из схематических листов. Altium автоматически добавит номер канала в конец имени сети шины при генерации каждого канала. Имя шины не обязано совпадать с именем порта или названием шины на схематическом листе, для которого предназначен блок. Оно может быть таким же или другим — единственное важное именование — это шина и провод.
Я применил ту же настройку к датчикам тока, как я упоминал ранее в статье, я пронумеровал шину АЦП от 0 до 5, так как я вывожу ADC0 для датчика на 15А с помощью входа шины.
Теперь, когда много канальная схема завершена, я могу начать разводку платы. Это так же просто, как выглядит верхнеуровневая схема, так как мне нужно только проложить первый канал для каждого из повторяющихся каналов.
Как только я выполню приказ об изменении конструкции для добавления всех компонентов на печатную плату, вы увидите все блоки верхнего уровня в их зонах. Здесь стоит отметить, что множество непроложенных сетей тянутся к каналам от микроконтроллера, что показывает, что все мои имена шин работают хорошо, поскольку каждый канал подключен правильно. Если бы я не добавил команду REPEAT( ) к АЦП и выходным потенциометрам, мы бы увидели только один провод, идущий вверх и затем подключающийся параллельно. То же самое касается и питания.
Вам также может показаться, что контур для дисплея выглядит довольно большим. Это дисплей 128x64 пикселя, о котором я упоминал ранее и который надеялся использовать. После трассировки платы и неспособности уместить его на печатной плате я заменил его на дисплей 128x32 пикселя, видимый на схемах.
Я начинаю с выходного соединения. Я собираюсь проложить первый канал в его зоне со всем необходимым, кроме внешних соединений. Я также уменьшил зону до более практичного размера для расположенных компонентов.
Теперь я могу сэкономить огромное количество времени, используя инструмент Копировать Форматы Зон. Есть два основных способа получить доступ к этому инструменту, во-первых, если у вас включена панель инструментов Утилиты; он находится под иконкой зон.
Вы можете включить панель инструментов Utilities, щелкнув правой кнопкой мыши в любом месте в верхней части окна дизайнера и выбрав Utilities.
«Длинный» путь к инструменту проходит через верхнее меню, переходя в Design -> Rooms -> Copy Room Formats.
Как только инструмент активирован, достаточно просто щелкнуть по первой комнате, которую вы уже проработали (ваш шаблон), а затем щелкнуть по следующей комнате, которую вы хотите оформить в том же стиле и с той же разводкой.
Вы можете продолжать щелкать по дополнительным комнатам, чтобы применить те же настройки и к ним. Инструмент работает только для комнат, находящихся в одном и том же наборе мульти-каналов. Это означает, что я не могу применить формат из комнаты мульти-канального АЦП к 15A АЦП. Хотя 15A АЦП почти не отличается по схеме и различается только значением одного резистора, он не совместим, так как не входил в тот же набор мульти-каналов, что и остальные.
После того, как я закончил копировать форматы комнат для выходных каналов, у меня получилось 6 идентично проложенных каналов на выходе. Схемы и трассировка для каждого канала в этом дизайне очень просты, но я уверен, вы можете представить, сколько времени это сэкономит при работе с сложным многоканальным аудиопродуктом или продвинутым многоканальным датчиком.
Я применил тот же приём к каналам АЦП, в результате чего большая часть трассировки моей платы уже была завершена.
Я планирую использовать недорогого китайского поставщика печатных плат, так как они предлагают лучшую цену для платы размером 100мм x 100мм. Работая с этим ограничением по размеру, я могу разместить все каналы. Мне удалось разместить все выходы с одной стороны платы, но датчики тока, несмотря на их малый размер, всё ещё слишком большие, поэтому я разместил их в форме буквы U вокруг одной из сторон платы.
Я разместил свой USB-коннектор и вход 5V рядом друг с другом на одном краю платы, чтобы сделать маршрутизацию питания аккуратной. Учитывая, что это двухслойная плата толщиной 1,6 мм, я решил не прокладывать трассы с согласованным импедансом для линий USB до микроконтроллера. Учитывая скорость передачи данных, которую будет использовать загрузчик USB или последовательный порт, целостность сигнала не будет критически важной. Я подключил этот микроконтроллер к USB-порту с помощью проводов, припаянных к выводам микроконтроллера, а затем напрямую к USB-коннектору, так что я знаю, что он справится с этим неправильным обращением. Для двухслойной платы толщиной 1,6 мм мои трассы USB должны были бы быть примерно 1,5 мм в ширину, чтобы быть согласованными по импедансу, и это немного затрудняет маршрутизацию.
Наконец, я установил экран в таком месте, где, надеюсь, кабели не будут слишком мешать обзору того, что отображается.
Я добавил на плату несколько монтажных отверстий, а также маркеры для установки. Монтажные отверстия крайне важны для этой платы, так как она будет вертикально установлена в необычном месте внутри моего управляющего шкафа.
С небольшим количеством веселья для некоторых арт-работ, плата выглядит довольно хорошо. Шрифт «AlternateGothic2 BT», который по какой-то причине установлен на моем компьютере, отлично подходит для маркировки разъемов. Он читаем и очень компактен, что замечательно подходит для клеммных блоков.
На нижней стороне платы я добавил довольно стандартный блок для проектов, над которыми я работаю для клиентов, включая штрих-код для отслеживания или загрузки тестовых программ для универсального приспособления, дату сборки, раздел контроля качества и место для серийного номера. Мне нравится, как этот блок завершает нижнюю часть платы и делает ее немного более элегантной.
Плата для этого монитора тока была построена как довольно универсальная плата для измерения и контроля тока, несмотря на мои довольно специфические требования. Файлы дизайна распространяются под лицензией MIT, так что вы можете сделать свою собственную версию или использовать часть дизайна в своем проекте, если хотите. Как всегда, файлы проекта можно найти на GitHub.
Altium Designer на Altium 365 обеспечивает беспрецедентный уровень интеграции для электронной индустрии, который до сих пор был характерен только для мира разработки программного обеспечения, позволяя дизайнерам работать из дома и достигать невиданных ранее уровней эффективности.
Мы только начали осваивать возможности, которые открывает Altium Designer на Altium 365. Вы можете посетить страницу продукта для более подробного описания функций или один из вебинаров по запросу.