Разводка печатной платы со смешанными сигналами для PSoC

Я разрабатываю печатную плату для аналогового сенсорного приложения. Он использует внутренний АЦП на PSoC3. Как обычно, приложение очень ограничено в пространстве (11 мм x 21 мм), поэтому мне пришлось пойти на некоторые компромиссы в компоновке печатной платы, чего я бы не сделал на более крупной печатной плате.

PSoC печатная плата

Плата питается от регулируемого 6В и содержит два линейных регулятора 5В. MCP1702 для цифрового питания и MIC5205 для аналогового питания. На плате установлены пять датчиков Холла A1324 . Каждый выходной сигнал эффекта Холла фильтруется RC-фильтром 100 нФ + 1 кОм. Один датчик находится на самой плате (внизу справа). Остальные 4 подключаются к правому 6-контактному разъему.

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

К сожалению, я все еще вижу некоторый шум (около 1,5 LSB при 12 битах) в аналоговых сигналах, и мне интересно, можно ли было сделать что-то по-другому в макете, чтобы улучшить его.

Компоновка PSoC

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


Добавлен:

Другие проекты печатных плат, которые я сделал с использованием MCP3208 , и те же двойные источники питания 5 В, те же датчики и те же RC-фильтры не дали заметного шума при 12 битах.

АЦП на PSoC3 представляет собой дельта-сигма. Эта версия PSoC ограничена 12 битами, но другой номер детали имеет 16-битный АЦП (хотя и с более низкой частотой дискретизации).

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


Добавлен:

Схема. Извините, это немного тесно, но вы можете просто прочитать значения.

Схема PSoC

Вы имеете в виду MCP3208?? Это имеет SINAD 72 дБ или ENOB = 11,7.
Упс. Да. Исправлено.
Забыл спросить: можешь выложить схему?
@stevenvh — добавлено.
Пожалуйста, пожалуйста, перестаньте рисовать свои схематические объекты, чтобы они выглядели как физический чип. Весь смысл схемы в том, чтобы визуально определить функцию схемы . Нарисовав свою схему как физическую компоновку микросхемы, вы в основном предотвращаете это с каким-либо успехом.
Кроме того, ПРЕКРАТИТЕ ИСПОЛЬЗОВАТЬ NET-LABELS! Ваша схема далеко не настолько сложна, чтобы требовать их, и, фактически не показывая соединения, вы значительно затрудняете их отслеживание. Опять же, цель схемы состоит в том, чтобы сделать предполагаемую функцию и функциональность схемы визуально очевидными . Затем вы позволяете компьютеру преобразовать визуальное представление в реальное физическое расположение устройств (в чем компьютеры очень хороши).
Другие жалобы заключаются в том, что у вас много боковых портов заземления и питания. Попробуйте поставить их вертикально (так их легче различить визуально). Исправив объекты схемы, вы сможете без проблем расположить их все вертикально. Это просто странное схематическое расположение объектов, которое заставляет вас класть их боком, чтобы все подошло.
@FakeName - я согласен с вашими комментариями относительно схемы. И я на самом деле делаю все эти вещи для некоторых схем, и я бы рекомендовал их другим людям, если только они не планируют печатную плату с очень ограниченным пространством, подобную этой. В таком случае совет начинает работать против вас. Если пространство является вашим ограничением № 1, то ваш рабочий процесс отличается, и способ использования схемы отличается.
Обычно, когда вы создаете прототип схемы, вы можете разработать большую схему, чтобы увидеть, работает ли она, и помочь в ее отладке. Но когда пространство является ограничением № 1, ваш прототип — это реальный размер, чтобы увидеть, возможно ли это вообще.
На самом деле я нахожу метки цепей очень полезными, и они облегчают чтение и редактирование схемы. Компоновка платы ограничивает, какие сигналы могут поступать к каким контактам, и мне часто приходится перемещать элементы, чтобы все поместилось. Отключение и повторное подключение множества проводов — это гораздо больше похоже на PITA, чем перемещение меток.
@Rocketmagnet - они, безусловно, полезны для человека, рисующего схему . Они совершенно отвратительны для всех остальных .
Кроме того, если у вас возникли проблемы с необходимостью прокладки проводов из-за нехватки места, вам крайне необходимо изучить функции замены контактов в Altium. По сути, вы можете указать функционально заменяемые выводы в определении компонента (например, различные выводы ввода-вывода), а затем, когда вы разводите печатную плату, вы можете запускать трассировки для любого из выводов, которые будут работать, а не только для одного . вы указали на схеме. Затем вы можете синхронизировать маршрутизацию, которую вы выбрали на плате, со схемой.
В основном сетевые метки похожи gotoна схематичную форму. Они немного облегчают вашу работу, но усложняют жизнь любому, кто должен работать или читать вашу схему.
Наконец, вы знаете о ctrl+ перетаскивании? Он перемещает детали компонентов, сохраняя соединения (только редактор схем). Это не всегда работает, но очень полезно.
@FakeName, хотя соединение с метками может затруднить отслеживание схемы, перерисовка каждого символа для создания чистой и чистой схемы с красивыми прямыми линиями может легко в четыре раза увеличить время ввода схемы. Я хотел бы увидеть идеальную схему, я не уверен, что ее реально требовать.
@Rocketmagnet, наличие очень маленькой площади печатной платы не означает, что вы не можете нарисовать свою схему на бумаге размера D.
@ThePhoton — вам нужно только один раз перерисовать символ для каждого устройства. Затем вы просто помещаете его в свою библиотеку компонентов.
И я рисую схемы, насколько это возможно, в соответствии со спецификациями, которые я прошу у других. На самом деле я не использую сетевые метки. вообще . Это занимает немного больше времени, но это время легко сэкономить, и даже больше при обсуждении дизайна с другими людьми.
Опять же, использование сетевых меток очень похоже на goto. Это может сэкономить вам время, но если вы работаете с другими людьми (а я на самом деле тесно сотрудничаю с другим инженером), то это полная трата времени, поскольку каждый раз, когда вы что-то обсуждаете, вам приходится вручную по всей схеме пытаюсь найти куда он идет.
@FakeName - Извините, я просто вынужден с вами не согласиться. Я рад, что у тебя есть мнение.
@FakeName, в Altium очень удобно использовать метки цепей, даже если ваша схема полностью связана графически, потому что тогда, когда вы переходите к макету, вы получаете метки на дорожках, которые напоминают вам о функции каждой цепи.
@ThePhoton - Ну, я использую их для обозначения проводов, но я вообще не использую их для соединения.
@Rocketmagnet - Если вы начнете тесно сотрудничать с другими людьми над одним и тем же дизайном, вы, вероятно, передумаете.
Чтобы было ясно, я не говорю, что вы никогда не должны использовать сетевые метки, просто у вас должна быть веская причина , когда вы это делаете. Относитесь к ним как к любому другому мощному приему программирования, изменяющему поток управления. Они устраняют визуальную непосредственность функции схемы, которую должна обеспечивать схема. Вы не хотите использовать их, если у вас нет действительно веской причины для этого, а если вы не уверены, что у вас есть веская причина, вы ее не используете.

Ответы (2)

У вас всегда будет некоторый шум на АЦП, особенно типы SA (последовательное приближение) на кристалле микроконтроллера. Сигма-дельта лучше работает с гауссовским шумом, поскольку они интегрируют его. Не ожидайте 12 ENOB от 12-битного АЦП.

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

Но вот вопрос: тебе все равно? 1,5 бита шума на 12-битном АЦП по-прежнему оставляет вам более 10 бит или лучше 0,1 %. Насколько точен ваш датчик Холла? Другие компоненты в цепи?

редактировать
Вы, кажется, используете внутренний генератор PSoC, так как я не вижу никакого кристалла на схеме. Выглядит нормально: у вас правильная развязка. Помимо внутренних часов, кажется, что единственной высокоскоростной частью схемы является SPI, но вы говорите, что во время измерений он будет молчать. Остальная часть платы имеет постоянный ток или, вероятно, относительно низкую частоту, как датчики на эффекте Холла. И это Damn Small™, который также помогает: более короткие дорожки улавливают меньше шума. Конечно, я мог бы придраться к MCP1702, который я бы повернул на 90° против часовой стрелки, чтобы выходной конденсатор можно было разместить еще ближе к контактам, но это не решит проблемы.

Я вижу только одно изменение в макете, которое может улучшить соотношение сигнал/шум:

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

В техническом описании для «Оптимальной аналоговой производительности» (стр. 10) предлагается разделить аналоговую и цифровую заземляющие плоскости.

В остальном: это небольшая плата, как я уже сказал, а значит, короткие дорожки и развязка в пределах нескольких миллиметров. Поэтому я хотел бы еще раз взглянуть на источник шума. Главный подозреваемый — часы PSoC. PSoC может работать при очень низком напряжении питания, что уменьшит его шум. Конечно, это сильно помогло бы, если бы VDDA тоже нужно было понизить, но я нигде не читал в техническом описании, что VDDA не должно быть выше, чем VDDD.

Далее АЦП. На странице 55 таблицы данных указано 66 дБ SINAD, это 11 бит, близко к тому, что вы получаете сейчас. Техническое описание A1324 дает нам шум 7 мВ пик-пик при напряжении покоя 2,5 В. Это также намного меньше, чем отношение сигнал/шум 72 дБ, которое может дать вам 12-разрядная схема. Вы можете немного улучшить это с помощью дополнительной фильтрации.

Вы упомянули лучшую производительность MCP3208, но это АЦП вне микроконтроллера, и это может объяснить, почему АЦП SA может работать лучше, чем сигма-дельта с тем же разрешением.

Итак, варианты, которые я вижу: понизить напряжение цифрового питания и разделить аналоговую и цифровую земли.

Это очень интересная идея о снижении напряжения цифрового питания PSoC. VDDA, безусловно, может быть выше, чем VDDD.
Итак, как вы думаете, я должен отключить VSSA от термопрокладки? На самом деле я опубликовал это как совершенно новый вопрос .

Я согласен с вышесказанным. 1,5 LSB шума вполне разумно. http://www.cypress.com/?docID=39346 показывает минимальный SINAD 66 дБ в 12-битном режиме, что предполагает ENOB = 10,7.

Я знаю, что это не прямой ответ на ваш вопрос, но я собираюсь интерпретировать вопрос как «как мне решить мои проблемы с контролем скорости?» а не «Как мне получить больше 10,5 ENOB?».

Как вы различаете? Достаточно ли у вас запасных часов, чтобы сделать что-то более гладкое, чем центральная разница в две точки? Может быть, разработать что-то шириной в 5 семплов, оптимизированное в Matlab?

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

1 л С Б Δ т
становится больше, когда дельта t становится меньше). Старайтесь сэмплировать так быстро, как вам нужно, а не так быстро, как вы можете.

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

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

Мы вычисляем положение и скорость, используя альфа-бета-фильтр . Я понимаю, что шум скорости увеличивается с увеличением частоты дискретизации, если это делается наивно. Я уверен, что шум скорости не связан с ошибкой знака. И мы уже почти на полной шкале, поэтому я больше не могу делать усиление, не рискуя попасть в верхнюю или нижнюю часть диапазона.
Вы скажете, что нет никаких улучшений, которые я могу внести в макет?
Пока ничего не видно. Как вы усиливаете датчики холла? Вы действительно рассматривали выходные данные фильтров AB и управляющих уравнений для проверки реальности? Заметили шум на выходе вашего регулятора? Было бы полезно составить формальный бюджет шума для всей системы.
@Залы не имеют усиления. У них уже есть качели 0v - 5v. Нет никакой буферизации, кроме фильтрующего конденсатора. Шум регулятора еще не измерялся, но я знаю, что этот регулятор + Холл + фильтр достиг 12 ENOB в другой системе. Последний месяц мы потратили на изучение сигналов, шумов и фильтров. Я очень уверен, что они работают правильно.
Похоже, что сигма-дельта АЦП Cypress имеет дифференциальный режим. Вы пробовали это? cypress.com/?docID=39346 , кажется, говорит (стр. 17), что вы можете получить несколько дБ, минуя внутренний Vref. Суть в том, что минимальный SINAD этого АЦП составляет всего 66 дБ в 12-битном режиме, что довольно близко к тому, где вы находитесь ((66-1,76)/6,02), дает ENOB = 10,67 (но убедитесь, что мои расчеты верны и что Я просматриваю документы для АЦП, который вы сейчас используете!) Я думаю, что вы можете выбрать другой АЦП, тот же АЦП с большим количеством битов или алгоритм управления, более устойчивый к шуму.
Досадно, что дифференциальный режим дает мне размах напряжения только от 0 до 4,096 В, поэтому я не могу его использовать. Я мог бы попытаться ослабить сигналы в следующей версии платы, чтобы воспользоваться этим преимуществом. Однако, когда я попробовал, шум был немного хуже (вероятно, из-за уменьшенного диапазона). Так что похоже не помогло.
Но! Другим преимуществом дифференциального режима является то, что он позволяет увеличить частоту дискретизации в 4 раза, чтобы я мог выполнять передискретизацию. Это должно немного уменьшить шум.
Это может быть достаточно для вас. Если шум стационарен, усреднение по четырем точкам должно уменьшить его на квадратный корень из 4, так что вот вам и дополнительный бит! Спасибо за ваше терпение с моими случайными вопросами, но для меня это всегда был отличный способ вызвать творческие повторные посещения.
Но мой вопрос остается без ответа. Есть ли что-нибудь, что я мог бы сделать лучше в разводке печатной платы?
Возможно, байпасный колпачок на Vref (не знаю, как это сделать, это указано в техническом описании). Кроме этого, я думаю, что вы очень близки к идеальному ENOB для 12-битного АЦП PSOC 3, так что вы сделали все, что могли!
@Rocketmagnet: вместо того, чтобы контакт GND бортового датчика Холла был соединен длинной тонкой дорожкой на «красном» слое, прежде чем он пройдет через переходное отверстие к плоскости GND, похоже, что было бы лучше иметь этот GND вывод напрямую подключается к плоскости GND на слое плоскости GND. Но я сомневаюсь, что это будет иметь большое значение — как сказал Скотт, похоже, что вы уже получаете максимальный ENOB, который вы можете ожидать от этого чипа.
Причина длинной тонкой дорожки заключалась в том, чтобы вернуть питание и землю к аналоговому регулятору и АЦП, не пропуская его через часть заземляющего слоя, в которой определенно есть цифровые токи. Две дорожки расположены друг над другом, чтобы минимизировать площадь петли.