Как убрать шумовой сигнал?

19

Я управляю 4-контактным вентилятором PWM для ПК от PIC16F684, скорость вращения которого определяется показаниями АЦП датчика приближения. Это все работает хорошо.

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

Теперь, что я заметил, так это то, что, когда ШИМ работает с вентилятором на 100%, сигнал тахометра (который является открытым стоком, подключенным через резистор 10 кОм) хорош и чист:

tachclean

Тем не менее, когда я бегу на менее чем 100%, это шумно:

tachdirty

Увеличение этого шума:

tachdirtyzoom

Я предполагаю, что на него воздействует сигнал ШИМ, но я хотел бы понять, почему и как, чтобы я мог очистить его в случае необходимости в будущем. На самом деле меня интересует, что вам следует делать, когда вы видите такой шум, как вы находите причину и как вы ее «исправляете». Прицел умело срабатывает нормально, поэтому мне интересно, если я просто подам его на вывод внешнего прерывания на PIC (RA2), который является входом триггера Шмитта с уровнями CMOS, тогда я не "увижу" шум, и я например, может выводить чистый сигнал из другого контакта, чтобы погас светодиод или что-то еще.

Так может ли кто-нибудь объяснить в общих чертах, как распознать и исправить шумовые сигналы? Или, если это слишком широко, может быть, только эта конкретная проблема? Кроме того, если что-то не так с моей схемой, было бы неплохо знать тоже. На схеме ниже, сигнал, который я показываю, является входом TACH слева от цепи:

схематический

ОБНОВЛЕНИЕ
После полезных советов от @MichaelKaras и @techydude я исключил Q2 как источник любой проблемы, полностью удалив его из цепи и заземлив вентилятор напрямую. Не оказывает существенного влияния на шум.

Поэтому я затем кодировал внешнее прерывание на RA2, чтобы отразить «очищенный» сигнал из запасного контакта (в данном случае RA1), который очень помог, но все еще мерцал из-за ложных прерываний. (Таким образом, я бы установил прерывание для удержания переднего фронта, а затем переключил его на спадающий фронт при срабатывании и наоборот, соответственно установив / сбросив RA1).

Но после добавления 100 нФ конденсатора через R3 (как часть предложения @ techydude) я теперь получаю гораздо более стабильный выход. На приведенном ниже снимке экрана показан сигнал TACH после очистки через триггерный вход RA2 Шмитта и повторный вывод на RA1:

tachclean

Роджер Роуланд
источник
1
Зачем вам нужен IRF510 FET для переключения питания на вентилятор? При приведении ШИМ в рабочий цикл 0% вентилятор должен быть выключен или работать на минимальной рабочей скорости.
Майкл Карас
1
@MichaelKaras Да, вентилятор имеет минимальную скорость, поэтому он не остановится, пока вы не отключите питание. По своей конструкции он игнорирует любой ШИМ менее чем ~ 10% и работает при 400 об / мин. Поэтому я использую этот FET, чтобы полностью убить его, когда это необходимо.
Роджер Роуланд
2
Понимаю. Но это означает, что когда вы намереваетесь перезапустить вентилятор из выключенного состояния +12 В, вам может потребоваться запустить его с коэффициентом заполнения выше ШИМ. Я испытал это с несколькими типами поклонников, которые нуждались в ударе, чтобы заставить их надежно запускаться при включении питания. Алгоритмы управления вентиляторами на многих компьютерах серверного типа будут работать при 100% -ном рабочем цикле в течение первых 10–20 секунд при запуске, чтобы обеспечить правильную работу всех вентиляторов.
Майкл Карас
2
Почти во всех подсистемах вентиляторов, над которыми я работал, сигнал TACH был привязан к сети резисторов, которая смещает сигнал от шины + 12 В, а затем дополнительно имеет пару разделительных резисторов, которые понижают сигнал TACH до + 5 или + 3,3 В уровни, необходимые для системы мониторинга. Небольшой колпачок на нижнем резисторе делителя может помочь отфильтровать любые пики шума в сигнале TACH.
Майкл Карас
1
Основное использование шины + 12 В для смещения сигнала TACH заключается в том, что он обеспечивает изоляцию между сигналами + 12 В и цифровыми сигналами низкого уровня системы управления. Три соображения: 1) Провода вентилятора могут быть зажаты между частями шасси, и возможны шорты между четырьмя проводами. 2) Вентиляторы в запыленной среде могут накапливать статический заряд, а резисторы могут помочь предотвратить любой разряд электростатического разряда на входе детектора TACH. 3) Постоянная времени RC делителя с паразитной емкостью или с добавленной крышкой действует как фильтр для сигнала TACH.
Майкл Карас

Ответы:

9

О вашей схеме:

Все выглядит хорошо, вы можете увеличить R2 до 10 кОм или даже до 100 кОм, емкость MOST настолько мала, у FAN будет гораздо большая инерция вращения, чем задержка выключения в MOST, возможно, даже с 1M. Таким образом, местоположение вашего 100R не имеет значения, и пока вы не тратите мА. Если вы никогда не удерживаете de uC в режиме сброса, это технически даже не требуется вообще, так как ваш uC будет активно тянуть его высоко или низко.

Что касается сигнала ШИМ, вы можете увидеть, допускает ли таблица данных внешнее напряжение до 12 В, хотя я сомневаюсь, что в любом случае это будет иметь большое значение.

По поводу шума:

РЕДАКТИРОВАТЬ: Я неправильно понял ваш график для кГц, что глупо, если вы думаете об этом, где это Гц. Часть моей истории немного изменится (например, разговор о необходимости МГц для цифровой работы), но общая идея остается.

Я оставлю весь пост как есть, но для сигнала 100 Гц с шумом 30 кГц вместо 100 кГц с шумом> 5 МГц (тоже не имеет смысла, не так ли?), Вы могли бы увеличить резисторы, которые взаимодействуют с конденсаторами в 10 раз, а также увеличьте конденсаторы в 50-100 раз. Это даст вам в 1000 раз более низкую частоту фильтрации во всех примерах. Но также можно просто увеличить конденсаторы в 10–20 раз, чтобы получить более резкие края или более быстрый отклик на интересующий вас сигнал, поскольку 30 кГц очень далеки от 100 Гц.

Так что считайте этот пост написанным для высоких частот и уменьшайте количество идей, чтобы их было гораздо проще реализовать! (Особенно цифровой отказ в 3.)

Конец редактирования

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

Чтобы кто-нибудь читал, знайте:

Это только шум на цифровом сигнале

В цифровом сигнале вы можете сделать предположение, что вас интересуют только два напряжения: «включено» и «выключено». Все, что находится между ними, бессмысленно и принадлежит шуму или неправильности. В аналоговом сигнале вам необходимо знать о каждом уровне напряжения и выполнять некоторую фактическую фильтрацию с нагрузками C, L и т. Д.

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


Ваши варианты:

  1. Изменить уклон
  2. Изменить уровни напряжения
  3. Добавить "медленный" гистерезис
  4. Отфильтровать шум

1. Изменить смещение:

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

2. Измените уровни напряжения

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

схематический

смоделировать эту схему - схема, созданная с использованием CircuitLab

Теперь между высоким и низким пиками может быть достаточно места, чтобы MOST всегда был включен, даже когда есть отрицательные пики и всегда выключен, даже если есть положительные пики. Может потребоваться несколько диодов, стабилитронов или резисторов, чтобы получить заданное значение в новой ситуации, но если пики на отрицательном сигнале остаются такими, какие они есть, они не должны запускать MOSFET, пока вы этого не сделаете. замените его на тот, у которого порог затвора ниже 2В.

3. Добавьте «медленный» гистерезис:

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

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

Вы можете сделать это в контроллере (что является самым простым в подсчете компонентов): вы можете запустить с фланга, а затем сэмплировать еще несколько значений на достаточной скорости, чтобы увидеть высокий уровень между всплесками шума, но не путайте с отсутствием целого периода низкого уровня. Затем вы делаете заранее определенное суждение, основываясь на знании вашего сигнала и шума. Например, если вы можете сэмплировать на частоте 10 МГц, вы можете захватить 50 сэмплов и быть уверенным, что самая высокая частота 100 кГц не будет проигнорирована, если вы будете следовать правилу большинства. Т.е. как минимум 25 должно быть низким, чтобы оно действительно было низким. Ваши пики только очень тонкие и в большинстве случаев это исходный сигнал, так что это может сработать, но число большинства можно отрегулировать. Это будет работать и с частотой 1 МГц и с 6 или 7 сэмплами, но фактического большинства будет меньше, поэтому здесь снова могут быть некоторые риски.

Вы также можете сделать это внешне: но это уже НАМНОГО сложнее, чем добавление простого фильтра, особенно когда вы смотрите на результат с помощью ОК с некоторым гистерезисом на входе. Но об этом интересно думать, так что давайте:

схематический

смоделировать эту схему

U1 - любой подходящий операционный усилитель или компаратор. Операторы являются лучшими коммутаторами, часто с лучшими колебаниями, но для под-МГц операционный усилитель с приличным рельсом / рельсовым колебанием легко подойдет.

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

Сначала представьте это без конденсатора:

Во-первых, обратите внимание, что на резисторный делитель влияет выход U1, он будет подтягивать его чуть выше и выше через видимое сопротивление 20 кОм. Допустим, на положительном входе U1 напряжение 1,1 В округляется в сторону уменьшения, когда его выход равен 0, и 3,9 В округляется в большую сторону, когда его выход составляет 5 В.

Если входной сигнал Tacho при установившемся режиме высокий, выход U1 будет низким из-за инвертирующего характера входа Tacho. Таким образом, отрицательный вход будет, опять же из-за дополнительного подтягивающего резистора, около 2,3 В. Поскольку положительный вход составляет всего 1,1 В, вход должен упасть ниже 2,2 В, чтобы отрицательный вход видел напряжение ниже, а выход переворачивался.

Когда выходной сигнал перевернется, отрицательный вход увидит 3,6 В (потому что в этот момент входной сигнал равен 2,2 В, выходной сигнал U1 равен 5 В, поэтому их среднее значение, составляющее резисторы 10 кОм, составляет около 3,6 В), но положительное значение входной сигнал переключится с 1,1 В на 3,9 В, так что отрицательный сигнал все еще находится ниже положительного входа, а выходной сигнал останется на уровне 5 В.

Если сигнал теперь быстро «прерывается» и переворачивается обратно, выходной сигнал U1 быстро возвращается обратно, но тогда пик уже должен был упасть ниже 2,2 В, так что это лучше, чем ничего.

Если сигнал упадет до 0, стабильная ситуация станет только сильнее, отрицательный вход упадет до 2,5 В (поскольку мы предполагаем, что тахограф FAN достаточно силен для понижения), а положительное значение будет примерно на уровне 3,9. V.

Теперь сигнал должен подняться выше 2,7 В, чтобы выход перевернулся в другую сторону. Скорее всего, 95% ваших шипов будут уже проигнорированы.

Добавление конденсатора:

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

Значение C, конечно, зависит от исходного сигнала и шумового сигнала. У меня есть припаркованный мяч 510pF для сигнала источника 100 кГц против длительности пика 1us, но на самом деле я не особо разбираюсь в математике, это просто интуиция, основанная на времени RC, что это может быть близко к тому, что будет работать.

4. Отфильтровать шум

Это немного похоже на фильтрацию аналогового сигнала. Вы можете использовать простую сеть RC, как обсуждалось в предыдущем разделе:

схематический

смоделировать эту схему

Поскольку пики шума не превышают 1 мкс, они не могут вносить значительных изменений в напряжение на конденсаторе, поскольку время его срабатывания составляет 5 мкс. Это означает, что энергия в шипах сглаживается до среднего. Поскольку вы видите высокие вершины и низкие провалы на шипах, даже возможно, что средние значения будут очень близки к 0 В и 5 В, но это можно сказать только с лучшими фотографиями или просто экспериментом. Поскольку вы подаете его на вывод uC, RC-времени, вероятно, будет достаточно, чтобы увидеть его как высокое или низкое. Это даст небольшое искажение из-за более медленной зарядки, чем разрядка, вызванной подтягивающим резистором. Некоторое изменение значений может привести к результату, который незначителен.

Если этого недостаточно, вы можете добавить еще несколько компонентов, но вы очень быстро переусердствуете, когда ваш доминирующий шум по крайней мере в 10 раз «быстрее» вашего сигнала.

Вы можете добавить индуктор 4,7 мкГн последовательно с резистором, чтобы сгладить еще несколько высокочастотных фронтов, возможно, даже 10 мкГн.

Но, честно говоря, в случае «подачи его в ОК» единственная причина поэкспериментировать с L в сигнале вашего рода - это найти баланс, в котором R велико, C мало, а L просто помогает сгладить некоторые фланги, так что R2 / R1 будет достаточно маленьким, чтобы игнорировать разницу во времени подъема и спада. такие как R1 33k, C 150pF и L последовательно с R1 56uH. Или, может быть, ферритовый шарик вместо индуктора, немного зависит от остроты ваших шипов.

Но уже обдумав это, я бы сказал.

Asmyldof
источник
1
У меня нет слов! Какой фантастический, хорошо объясненный, исчерпывающий и полезный ответ. Я не могу отблагодарить вас достаточно, это именно тот ответ, на который я надеялся. Так много учиться здесь и очень благодарен. Мне нужно прочитать это несколько раз, но с первого взгляда я теперь вижу варианты более четко, и вы действительно открыли мне глаза. Отлично, просто отлично.
Роджер Роуланд
2
@RogerRowland Это главное на этом сайте. Рад был помочь. Любые дальнейшие осложнения / математика могут быть в чате. Я там регулярно. Нужно только добавить примечание, что я неправильно истолковал ваш график как кГц, а не как Гц
Асмильдоф
6

Подобный шум от тахометра вентилятора является обычным, потому что схема (которая обычно включает в себя датчик эффекта Холла) в вентиляторе, который генерирует тахо-выход, сама включается / выключается на частоте вашего ШИМ (когда ваш ШИМ-выход находится на каком-либо другом уровне). чем 100% -на), а не только питание самого двигателя. Конечно, у них будет какая-то емкость для сглаживания питания в этой схеме, но, скажем, с 12 В блоком питания вентилятора, при условии, что есть достаточная емкость для поддержания нескольких вольт между минимальными периодами выключения ШИМ, этого достаточно для того, чтобы оба управляли Холлом. Влияние датчика и подтягивания выходного сигнала тахометра (если вентилятор включает собственное подтягивание выходного сигнала тахометра), чтобы обеспечить извлекаемый выходной сигнал. Да, фанаты грязны, когда вы их ШИМ. Некоторые вентиляторы имеют ШИМ-вход, независимый от их источника питания +12 В.

Ваш ШИМ, кажется, составляет около 27 кГц. Таким образом, в данной конкретной ситуации хорошо то, что ваш тахо-выход при выходе 100%, кажется, составляет около 800 Гц, что составляет <1/30 частоты вашего ШИМ, поэтому фильтрация этого тахо-выхода, чтобы избавиться от большей части ШИМ-шума, легко и стоит делать. Здесь уже поздно, поэтому я CBF работал через кальки, но потому что он с открытым стоком и это напряжение вашего подтягивающего напряжения (в вентиляторе), которое притесняется ШИМ, колпачком между тахометром и шиной +12 В (не ШИМ) выход из вашей схемы привода вентилятора), вероятно, будет лучшим вариантом, чем крышка на тахометре на землю. Попробуйте оба и посмотрите. Начните с керамической крышки 100n соответствующего напряжения и посмотрите, как она выглядит.

С входом Schmigger на PIC вы можете даже уйти, не выполняя никакой фильтрации этого тахо-выхода, прежде чем вставить его в PIC, но у вас есть такой дифференциал частоты, который легко позволит вам пройти долгий путь к его очистке вверх.

Одна из возможных проблем с обработкой сигнала тахометра от вентилятора, хотя: если вентилятор вытягивает его до +12 с 10К внутри (некоторые делают, некоторые нет), и вы также подтягиваете сигнал тахографа к своему + 5V рельс, тогда вы на самом деле тянете его вниз! Существуют различные конфигурации цепей, чтобы справиться с этим, в зависимости от напряжения питания вентилятора, силы подтягивания и т. Д. Попробуйте измерить его с помощью мультиметра и сообщите нам.

Techydude
источник
«Некоторые вентиляторы предлагают ШИМ-вход скорости, отдельный от их источника питания +12 В» - Да, вот что у меня есть :-) Этот 4-контактный вентилятор имеет ШИМ-контроль, который отделен от 12 В / GND, так что это линия I Я за рулем. Другой FET (Q2) только там, так что я могу полностью отключить вентилятор, потому что он имеет минимальную скорость. Так что я не ШИМ Q2, только Q1.
Роджер Роуланд,
Обычно для 4-проводного вентилятора, если ему подается постоянное напряжение 12 В, а входной ШИМ-кабель используется для управления скоростью, вы не увидите частоту переключения ШИМ на выходе TACH. Только в случае применения ШИМ к выводам питания вентилятора.
Майкл Карас
«если вентилятор тянет его до +12 с внутренним 10k» - Хммм, он не поднимается до +12, но если я снимаю подтягивание, кажется, что вентилятор поднимается примерно до 2В. Мне кажется странным, но, возможно, объясняет, почему мои шумовые сигналы составляют около 6 В, а не 5 В. Не уверен, что делать сейчас!
Роджер Роуланд,
D'о! Извините, я даже не заметил на вашем ще, что это 4-проводный вентилятор. А теперь я помню твои другие вопросы :). Хорошо, теперь, просмотрев таблицу IRF510, я думаю, что @Michael Karas, скорее всего, прав, что Q2 может быть не полностью включен (и ему не поможет R1 & R2, являющийся делителем 1:10, так что вы получите не более Vgs = 4,5 В, поэтому ваши +12 к вентилятору могут провисать (слишком трудно убедиться по снимкам прицела, нужно видеть в течение периода ШИМ). Замените R2 на 100 КБ (более чем достаточно, чтобы отключить его при включении. состояние) и посмотрите, поможет ли это. Если это так, выберите более низкий порог Vgs MOSFET.
Techydude
1
@Techydude LOL, неважно, это все еще загадка. Как я сказал Майклу, теперь я снял Q2 и заземлил вентилятор напрямую, и я все еще вижу тот же шум. Я также попытался отослать TACH к другому выводу через INT, но Schmitt не очищает его сам по себе, и отраженный вывод все еще прерывистый. Может быть, это потому, что это все еще на макете? На самом деле 100nF между TACH и Vcc помогло.
Роджер Роуланд,
3

Возможный источник шума в сигнале TACH может быть из-за того, что FET IRF150 не является достаточно низким включенным импедансом. Это может быть связано с тем, что FET RdsON достаточно высок или FET не полностью включен при предоставленном напряжении возбуждения затвора.

Когда ток переключения вентилятора и выключается с сигналом ШИМ будет падение на сопротивлении FET понуждают «GND» ссылка вентилятора поднять вверх и вниз и перевести на шум видно на сигнале TACH.

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

Решение состоит в том, чтобы выбрать FET с гораздо более низким RdsON, если он поставляется с приводом затвора, который предоставляет ваша система.

Другая возможная идея - использовать P-FET для переключения провода + 12 В вентилятора вместо провода GND.

Обратите внимание, что используемая схема резистора затвора приводит к потере части вашего потенциального затвора. Переместите резистор 1К на другую сторону 100Ом.

Майкл Карас
источник
Спасибо, Майкл, я очень ценю твой совет. Теперь я полностью отцепил Q2 и заземлил вентилятор напрямую, но я все еще вижу тот же шум TACH при всех значениях ниже 100% ШИМ. Хороший момент о размещении резистора 1K, хотя!
Роджер Роуланд,
3

Это звучит как работа для фильтра нижних частот. Вам нужно сохранить полезный сигнал с f 1 около 1 кГц и удалить сигнал сбоя с f 2 около 25 кГц. Частота среза может быть выбрана как среднее геометрическое для f 1 и f 2 (неоптимальное, но простое):

f c = sqrt (1 * 25) = 5 кГц.

Предполагая , что простой RC-фильтр будет достаточно, и вы уже имеют сопротивление в цепи TACH (R 3 = 10 кОм), соответствующее значение конденсатора должен быть рассчитан в соответствии с частотой 5 кГц времени Костанта :

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

C = 1 / (2 * pi * fc * R) = 1 / (6,28 * 5000 * 10000) = 3,2 * 10 -9 F.

Поэтому все, что вам нужно сделать, это припаять конденсатор 3 нФ между линией TACH и землей. Это ослабит высокочастотный шум в 20 и более раз, что должно быть достаточно для вашего применения.

Дмитрий Григорьев
источник
Спасибо, это похоже на то, что предложил @techydude (хотя ваши расчеты, очевидно, лучше, чем предположение), но знаете ли вы, почему я нахожу лучшее подавление шума с ограничением между TACH и 5V, а не TACH и GND? Влияет ли этот выбор на то, где подавляется шум (т. Е. На большую часть импульса или на низкую часть), или он должен подавлять его одинаково?
Роджер Роуланд,
Тот факт, что ограничение между TACH и 5V работает лучше, чем ограничение между TACH и GND, удивляет меня. Обычно вы должны подключать фильтр к уровню напряжения, который используется в качестве эталона в вашей системе, и в 99% случаев это GND. Кроме того, VCC и GND подключаются через источник напряжения с внутренним сопротивлением, близким к нулю (по сравнению с резистором 10 кОм), поэтому это не должно иметь большого значения.
Дмитрий Григорьев
После более тщательного изучения схемы, я думаю, что это связано с тем, что ваш вход является открытым стоком, который производит шум с асимметричными краями (быстрое падение и сглаженное повышение). Если вы используете схему из ответа @Asmildof , зашумленный сигнал будет подаваться на вход RC-фильтра, а не в его середину, и он должен работать, как и ожидалось, для любого вида шума.
Дмитрий Григорьев
Благодаря @Dmitry, асимметричный шум, который вы описываете, кажется, соответствует моему увеличенному следу, так что это имеет смысл для меня. Я сделаю еще немного работы на трассе, основываясь на всех полезных советах, которые я получил здесь. Ваш вклад очень ценится.
Роджер Роуланд,