MCU - Что произойдет, если я поставлю выходной штырь ШИМ рядом с набором входных штырьков АЦП?

В настоящее время я рассматриваю схему, управляемую микроконтроллером, которая будет выполнять множество функций, в том числе управлять некоторыми двигателями BLDC и выполнять некоторые аналоговые измерения (датчиков положения, температуры и т.п.).

Разработчики микросхемы, которую я хотел бы использовать (STM32F4, FWIW), сочли целесообразным разместить следующие два контакта рядом друг с другом:

  1. Единственный возможный выходной контакт для таймера, который я хотел бы использовать в качестве выхода ШИМ для одного из драйверов двигателя .
  2. ВСЕ входы АЦП.

Еще несколько лайфхаков:

  • Вывод PWM может работать с очень низкими/высокими рабочими циклами (от <1% до>99%) на частоте 20 кГц.
  • Интересующие аналоговые сигналы находятся в диапазоне от ~ 2 Гц до ~ 200 кГц, в зависимости от типа датчика.

Теперь я собираюсь пойти дальше и постулировать, что размещение контакта ШИМ рядом с входом АЦП является плохой практикой, но мне интересно:

  • кто-нибудь пробовал это с успехом?
  • Каковы некоторые потенциальные смягчающие решения, которые позволили бы этому работать?

Редактировать:

Вот как выглядит часть MCU. Я выделил неисправный вывод таймера:

введите описание изображения здесь

Можешь опубликовать свою схему? или это ТС? Я могу заявить, что ваши соседние контакты ШИМ будут вызывать некоторые электромагнитные / радиопомехи на любые близлежащие входные контакты. Это зависит от вас, как вы проектируете и макетируете. Какие шаги вы предприняли, чтобы избежать каких-либо выбросов и соответствующего приема?
Схем пока немного — ST публикует утилиту под названием STM32CubeMX, которая позволяет вам компоновать микроконтроллер до того, как приступить к разработке, которую я сейчас использую для изучения альтернатив. Если вам нужны подробности, я смотрю на серию F4 в корпусах TQFP100/144; выход TIM8 CH1N отображается на два контакта, альтернативными функциями которых являются АЦП, и находятся прямо в середине секции микросхемы, где находятся все контакты АЦП. Я не знаю, что побудило разработчиков сделать это (могу только предположить, что была веская причина, которую я не вижу), и я обсуждаю переход на более крупный чип, чтобы избежать этой проблемы.
Одна вещь, которую я рассмотрел, это заземление соседних контактов и прохождение дорожки ШИМ через переходное отверстие как можно ближе к выводу, перемещая дорожку на другую сторону плоскости заземления. Таким образом, остается только короткий неэкранированный участок, а соседние контакты не используются. Это решение не идеально: оно потребует от меня отказаться от 2 из 24 доступных выводов АЦП, которых уже не хватает для этого приложения. Но я не знаю, насколько эффективным было бы это решение, и на данный момент дизайн более чувствителен ко времени, чем к стоимости.
Пожалуйста, публикуйте все, что у вас есть, и все, что вам было бы интересно использовать и задавать вопросы.
Вызов шума на входах АЦП — это то, что вам нужно, чтобы заставить работать передискретизацию. Если вы этого не делаете, избегайте шума.
Самое главное — убедиться, что обратный ток PWM проходит прямо под трассой на всем пути (и, конечно, не должно быть никакого звона, поэтому либо сделайте его коротким, либо прервите его). Тогда это не повлияет на АЦП.
@GregoryKornblum, я не уверен, что это правда. Путь обратного тока высокочастотного сигнала является важным фактором, но он не влияет на связь с соседним проводником. Перекрёстные помехи всё равно будут.
Хорошо. Я обычно использую правило компоновки минимального зазора, которое уменьшает магнитные перекрестные помехи. Емкостная связь здесь не вызывает беспокойства. Но да, вы правы, магнитной связи следует избегать.

Ответы (3)

Вы действительно определили законную проблему перекрестных помех. Строго говоря, величина перекрестных помех не зависит от частоты сигнала. Это функция того, как быстро сигнал переходит от высокого к низкому или от низкого к высокому. Даже сигнал ШИМ с частотой 1 Гц будет передаваться на соседнюю линию во время нарастания и спада фронтов. Очевидно, что для вашего сигнала 20 кГц это происходит 40 000 раз в секунду, что, безусловно, может быть проблемой. С академической точки зрения хороший ровный синусоидальный сигнал не будет вызывать столько перекрестных помех, как прямоугольный сигнал той же частоты.

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

Поскольку вывод ШИМ и вывод АЦП физически находятся рядом друг с другом, их дорожки будут находиться в непосредственной близости на некоторой длине трассы, и вы ничего не можете с этим поделать. Очевидно, что любой способ как можно быстрее развести две трассы друг от друга поможет. Вы также можете уменьшить эффект связи, убедившись, что базовая плоскость находится очень близко. На печатной плате это означает использование 4-слойной платы (или более), поэтому заземляющая пластина может быть размещена на расстоянии не более толщины препрега (обычно всего несколько мил). На двухслойной плате плоскость заземления будет противоположной стороной платы, которая обычно находится на расстоянии 63 мил и очень плоха для перекрестных помех.

Существует очень хороший бесплатный онлайн-калькулятор под названием Saturn PCB Design Toolkit , который позволит вам приблизительно рассчитать величину перекрестных помех. Вы можете получить представление о том, насколько плохими будут перекрестные помехи, исходя из вашей компоновки. Вы не можете узнать время перехода, не зная мощности выходного драйвера и точного импеданса дорожки, подключенной к выводу ШИМ, но вы можете использовать что-то вроде 10 нс или около того в качестве консервативного приближения.

Если для показаний АЦП требуется очень высокая точность, а расчетная величина перекрестных помех слишком велика, возможно, лучше всего выбрать другой микроконтроллер. У того же производителя доступно множество других, поэтому найти один с выводом ШИМ и АЦП отдельно друг от друга должно быть тривиально. Если есть какая-то причина, по которой вы должны использовать этот конкретный микроконтроллер, вам нужно будет определить, с каким количеством перекрестных помех вы можете жить, и спроектировать его.

Принято для наиболее тщательного лечения по этому вопросу. Спасибо, что нашли время, @Dan Laks!

Я удивлен, что здесь никто ничего не упомянул об уровне импеданса на линиях АЦП! Очевидно, что мешать линии с высоким импедансом на входе легче, чем мешать линии с низким импедансом. Если ваши датчики имеют выходы с высоким импедансом, я бы рекомендовал буферизировать их выходное напряжение локально (рядом с датчиком). Если ваши датчики имеют выходы с низким выходным импедансом, буферизация может не понадобиться.

Вы также можете рассмотреть возможность буферизации сигналов датчика на небольшом расстоянии от MCU и убедиться, что сигналы остаются «чистыми». Затем направьте их на входы АЦП.

В зависимости от того, насколько хорош инструмент компоновки (при условии компоновки), защитное кольцо вокруг входа АЦП также может быть полезным.
@PeterSmith, не могли бы вы привести пример этого? Единственный способ, который я могу придумать в настоящее время для реализации защитного кольца, — это заземлить соседние контакты, а затем залить их GND. Сочетание этого с переходным отверстием очень близко к выводу ШИМ для передачи сигнала на дальнюю сторону платы (и другую сторону заземления) завершает конструкцию. Но я хотел бы избежать этого, если это возможно, так как они оба являются выводами АЦП, и в моем дизайне их не хватает.
утром соберу что-нибудь
Минимизируйте длину параллельных дорожек, поместив ШИМ или АЦП обратно под STM и сразу подключив их к другой стороне платы. Я бы выбрал ШИМ, так как он самый шумный, и его не волнует шум, исходящий от самого чипа.

Вы должны установить скорость GPIO на самое низкое значение, чтобы иметь более длительное время нарастания и спада. Это должно помочь с проблемой перекрестных помех. Эти перекрестные помехи являются индуктивными, если ваша линия ШИМ не является линией с низким импедансом, у вас не должно быть никаких проблем.

Хотя в целом это интересный подход, в моем конкретном случае важна синхронизация фронта из-за потенциального пробоя в драйвере двигателя, на который идет этот ШИМ-сигнал. Я хотел бы избежать всего, что создает потенциальные проблемы с синхронизацией такого рода (оставляю здесь примечание для тех, кто придет после меня).
Хорошо, тогда вы должны увеличить время нарастания и спада. Из-за низкой частоты (20 кГц) у вас должно быть очень небольшое превышение или недорегулирование.