Удаление цифрового шума на сигналах квадратурного энкодера

Я использую квадратурный энкодер с 3 линиями для отслеживания положения вращения вала, прикрепленного к двигателю BLDC (через планетарный редуктор).

Когда я вращаю вал, линии A, B и Z всегда имеют неустойчивый цифровой шум (наблюдаемый с помощью логического анализатора), который всегда искажает показания положения. Изображение цифрового сигнала выглядит следующим образом. введите описание изображения здесьПорядок сигналов - A, B, а последний - Z (индекс).

Шум всегда наблюдается на всех трех линиях вместе, и по сравнению с фактическими импульсами энкодера он имеет очень короткую продолжительность.

Что может быть источником этого шума? Как удалить шум из сигналов? Желательно через минимальное аппаратное решение.

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

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

РЕДАКТИРОВАТЬ: я использую энкодер CUI AMT11-3S, который является емкостным энкодером. Ссылка и таблица данных.

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

Ответы (6)

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

Я бы посоветовал сначала проверить, есть ли у вас не менее 10-20 мкФ на напряжении питания квадратурного детектора. Они могут быть чувствительны к колебаниям напряжения, если вы используете их вблизи нижнего предела напряжения питания. Большинство из них рассчитаны на питание 5-12 или 12-24 В, но некоторые рассчитаны только на 5 В (и обычно совсем другой дизайн). Если вы используете 5 или 12 В, вы находитесь прямо на их нижнем пределе для каждого варианта.

Убедитесь, что сигналы A, B, Z имеют приемник с триггером Шмитта, такой как 74LS14, и проверьте техническое описание вашего квадратурного детектора, чтобы узнать, ожидает ли он подтягивающий резистор на конце кабеля приемника (большинство из них).... и наоборот, если у вас есть подтягивающий резистор, убедитесь, что его значение не слишком низкое.

В качестве примера приведено техническое описание энкодера Omron: http://www.mouser.com/ds/2/307/e6b2-c_ds_csm491-25665.pdf.

Обратите внимание, что структура ввода-вывода значительно различается для разных вариантов; pulldown, pullup и линейные драйверы.

Схема вашего квадратурного датчика поможет устранить неполадки. Позвольте мне предположить, что это инфракрасный светодиод (возможно, два) в сочетании с фототранзистором, генерирующим канал A, и другим фототранзистором, генерирующим канал B. Осциллограф может дать больше информации, чем логический анализатор.
Почти все ваши шумовые сбои происходят, когда ваш датчик находится на низком логическом уровне. Это дает подсказку, что светодиодный свет может быть либо недостаточным, либо слишком ярким — только схема может сказать, что именно. Это также может быть вызвано оптическим смещением. Это также может быть вызвано неправильно выбранным значением подтягивающего или подтягивающего резистора на вашем оптическом детекторе. Тем не менее, я вижу один сбой, идущий от высокого к низкому, так что это может быть не единственная проблема. Глюк-шум также может быть вызван:
- Ближайший импульсный источник питания
- Ваш двигатель BLDC переключается с полюса на полюс

Казалось бы, глюки одновременно затрагивают все три канала (если они все низкие, а не когда высокие). Это говорит о внешнем источнике шума. Такой шум обычно атакуют в источнике. Я думаю, что ваша индексная линия должна оставаться в основном низкой и обычно пульсирует высокой один раз за оборот. Используйте эту линию, чтобы оценить успех ваших усилий по снижению шума.
В техническом паспорте CUI AMT11-3S указано, что «GND» должен быть подключен к корпусу двигателя с помощью короткого провода. Это может нарушить принцип заземления «звезда», создав контур заземления, создающий помехи. Этот модуль имеет только один контакт заземления, который должен служить нескольким целям:

    -Обеспечивает обратный путь для источника питания +5В.
    -Обеспечивает заземление для последовательных линий TX, RX.
    -Обеспечивает логическую ссылку на землю для выходных логических уровней CMOS.
    -Вероятно, обеспечивает металлическую оболочку электростатического экранирования

Этот заземляющий контакт обязательно должен возвращаться к заземлению вашего микроконтроллера вместе с линией постоянного тока +5 В. Заземление корпуса двигателя BLDC может помочь, но точно не ясно, где именно подключить заземление (земля ATM11-3S?, земля микроконтроллера?, масса корпуса?)
. но, как вы говорите, иногда вы ограничены тем, что другие говорят: «Я не могу изменить свою роль». О, инженерное удовольствие!

Я обновил вопрос. Энкодер является емкостным энкодером, а не инфракрасным светодиодом...
@TarangShah Спасибо, вы посмотрели лист данных CUI ATM11-3S и обновили мой ответ. Однако по вашим ссылкам как-то не пошло.

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

Первый очевидный ответ — попытаться экранировать проводку и проверить точки заземления. Если это не удастся...

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

Вы можете преобразовать сигнал энкодеров X, Y, Z (или sin/cos/mark и т. д.) в дифференциальный сигнал с помощью передатчика RS422 или RS485. Затем используйте приемник 422/485 на другом конце. Держите преобразователь как можно ближе к энкодеру и, возможно, защитите его металлическим корпусом. Проводка должна быть витой парой 120 Ом с габаритным экраном. Наденьте развязывающий колпачок на линии питания каждого чипа. Керамика 0,1 мкФ — хороший выбор.

Это низкозатратный подход, поскольку чипы стоят несколько долларов каждый. Кабель на 120 Ом обычно используется в промышленной последовательной связи для RS422 или RS485 и легко доступен. Вы можете найти линейные драйверы и приемники RS422/485 для работы с напряжением 5 В, что делает ненужными дополнительные источники питания и проводку. Это также стандартный метод для дифференциальной сигнализации энкодера, так что это не что-то необычное, на самом деле, это вполне обычное дело.

Существует множество различных вариантов микросхем линейных драйверов, которые можно перечислить, но есть множество, которые предлагают несколько линейных драйверов в корпусах DIP или SOIC с источниками питания 5 В. Примером может служить использование счетверенного передатчика MAX3042 в паре с счетверенным приемником MAX3095. Также загляните в каталог Ti.

Самое простое решение — добавить небольшую нагрузку на сигнальные провода. Например, резистор 4,7 кОм , который примерно добавляет 1 мА тока при напряжении питания 5 В. Эти резисторы должны быть размещены между каждой сигнальной линией и GND. Это самое дешевое решение.

Добавление керамических конденсаторов емкостью от 10 до 100 пФ каждый дает почти такой же эффект.

Если вы хотите улучшить свою схему в отношении проблем с электромагнитными помехами и решить вашу проблему, добавьте диод TVS в каждую сигнальную линию, например, PESD5V0S1BA с таблицей данных . Эти диоды предотвращают скачки напряжения, которые могут вывести из строя ваш контроллер, и добавляют емкость на 45 пФ. Это лучшее решение.

Какой бы вы ни выбрали, он должен находиться рядом с контроллером, который считывает сигнальные линии.

Убедитесь, что вы используете витую пару для сигналов A, A/, B, B/, Z, Z/. Белден 9503 например. Внимательно прочитайте руководство производителя энкодера, поскольку они рекомендуют наилучшее экранирование/заземление для конкретной настройки энкодера. Если у вас все еще есть проблемы с шумом, заделайте экран энкодера на обоих концах, чтобы свести к минимуму импеданс кабеля. (Импеданс превосходит возможности контура заземления).