Шум при работе Arduino рядом с аналоговой аудиосхемой
Краткий обзор: мой Arduino создает много шума в аналоговой аудиосхеме, даже если физически не подключен.
Я экспериментирую с использованием Arduino в качестве низкочастотного генератора в аудиоцепях (модульные синтезаторы, гитарные эффекты и т. д.). Я использую Arduino Uno, питаемый от USB + сетевой вилки.
В качестве теста я создал простую схему. Я не думаю, что схема имеет большое значение в данном случае, но я все равно включаю ее сюда:
Arduino настроен на один вывод ШИМ, подающий 0-5 В, изменяющийся в виде треугольной волны (т. е. медленно нарастающий, затем снова медленно спадающий). Он подключен к JFET, который действует как переменный резистор. Я проверил аналоговую часть схемы вручную, и она работает так, как и ожидалось.
Однако при подключении Arduino схема производит очень громкий "хлюпающий" шум, который заглушает проходящий через нее аудиосигнал, что напоминает шум, который издает кто-то, настраивающий старое коротковолновое радио. Шум "хлюпает" в такт колебаниям напряжения. Он не похож на звук в этом видео, связанном с блоком питания ПК: https://youtu.be/lXPJvSU8MwI?t=10m52s.
Это происходит даже если я физически отсоединяю вывод ШИМ от схемы — чем ближе его провод к схеме, тем громче шум, но он отчетливо слышен, даже когда они разделены воздухом в фут или больше.
Что я пробовал:
- Подключение земли Arduino к земле аналоговой схемы и их разделение.
- Добавление фильтрующих конденсаторов в обе цепи.
- Поместите Arduino в алюминиевый корпус, заземлив его либо на его собственную землю, либо на землю аналоговой схемы, или на обе.
- Питание Arduino осуществляется от моего ноутбука вместо прямого подключения к электросети.
Аналоговая схема сейчас находится на макетной плате, поэтому ожидается некоторый шум, но это далеко за пределами всего, с чем я сталкивался раньше, даже с очень плохо работающими схемами.
Я ДАЛЕКО не разбираюсь в Arduino, поэтому надеюсь, что делаю что-то глупое и легко исправимое. Я бы с радостью принял ответ, который предлагает совершенно другой способ достижения желаемого результата.
@helveticat, 👍3
Обсуждение1 ответ
Лучший ответ:
Сигнал ШИМ Arduino составляет около 500 Гц, поэтому он будет слышен (читай: шум) сам по себе. Вы можете реализовать фильтр нижних частот между выводом ШИМ и вашим J-FET. Простой RC-фильтр, настроенный на 5 Гц, ослабит сигнал 500 Гц до -40 дБ, чего, вероятно, будет недостаточно для высококачественного звука. Существуют фильтры с лучшими свойствами подавления, для построения которых обычно требуются активные компоненты. Одним из простейших таких фильтров является топология Sallen-Key, которая может практически удвоить коэффициент подавления, используя один активный компонент (операционный усилитель).
Другой вариант — использовать простой RC-фильтр, но увеличить частоту ШИМ (как описано здесь) для достижения высокого коэффициента подавления. В конечном итоге, увеличение частоты за пределами слышимого диапазона (около 16 кГц) в конечном итоге решит проблему шума, хотя я бы все равно использовал RC-фильтр, чтобы поддерживать J-FET в линейном режиме. По-видимому, самая высокая частота, которую вы можете достичь при полном разрешении, составляет 62,5 кГц, что более чем достаточно.
Спасибо за предложение. Я попробую поднять частоту ШИМ выше звукового диапазона и посмотреть, какой эффект это даст. Подозреваю, что фильтр на входе не поможет, так как шум, похоже, излучается, а не ограничивается самой схемой, но это не повредит (и, вероятно, это хорошая практика проектирования в любом случае). Я отчитаюсь — возможно, это будет позже на неделе, прежде чем у меня появится возможность попробовать это., @helveticat
@helveticat Шум "излучается", пока вы позволяете J-FET его улавливать, оставляя затвор плавающим. Фильтр привяжет затвор к земле (через конденсатор), и он ничего не улавливает. Подключив затвор к выводу Arduino, вы также устраните шум, который является внешним по отношению к схеме., @Dmitry Grigoryev
У меня была возможность быстро опробовать идею RC-сети и получить значительные улучшения, как с этим, так и с комбинацией LED/LDR, заменяющей JFET. Спасибо за помощь!, @helveticat
- Питание USB работает, VIN нет на Arduino Nano RP2040
- Управление скоростью двигателя постоянного тока с помощью внешнего источника питания
- Какое максимальное энергопотребление Arduino Nano 3.0?
- Есть ли способ воспроизводить звуки с Arduino без использования звукового экрана?
- В чем разница между analogWrite и digitalWrite?
- Питание светодиодной ленты - Сколько ампер?
- Какова частота PWM-выхода на Arduino
- Самый компактный способ питания Arduino от розетки
вы не можете сделать треугольную волну с помощью широтно-импульсной модуляции. Это всегда квадраты. Последовательность квадратов с разной длиной 0 и 1 уровня., @Juraj
@Juraj Справедливое замечание, но я не думаю, что разница существенна в этом случае, верно? Он тускнеет светодиодом, как будто это переменное постоянное напряжение (хотя, признаюсь, я не совсем понимаю, почему это работает)., @helveticat
светодиод можно обмануть, заставив его действовать так, как будто это постоянное напряжение. транзистор не может, @Juraj
@Juraj Это очень интересно -- так что, я думаю, мне нужно заменить мой FET на комбинацию LED/LDR. Спасибо, что просветили меня! К сожалению, проблема шума все равно будет решающим фактором., @helveticat
использовать модуль DA-преобразователя, @Juraj
@Juraj Светодиод не обманешь с помощью ШИМ, а вот глаза могут. Вы просто перестаете видеть мигание после частоты ~100 Гц., @Dmitry Grigoryev
@Juraj Потому что он включен половину времени., @Dmitry Grigoryev
Аудиовыход — это сигнал переменного тока. Поэтому его напряжение будет ниже GND примерно половину времени. Вы уверены, что можете использовать JFET для переключения отрицательных напряжений?, @Gerben
@Gerben Да, я думаю, что это только шунтирование положительной стороны аудио на землю. Хотя дает слышимый результат — достаточно хороший для теста (конечно, эта схема не является конечным продуктом!), @helveticat