Как определить частоту среза для фильтра нижних частот?

pwm audio filter

Я пытаюсь сгенерировать какой-то базовый стереозвук, используя ШИМ-контакты Arduino вместе с фильтрами низких частот.

Это частотный спектр для звука, который я хочу воспроизвести с помощью ШИМ-контактов Arduino UNO:

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

Я понимаю, что самая быстрая частота, которую можно получить для 8-битного ШИМ на UNO, составляет 62,5 кГц. Так что, возможно, я не смогу генерировать эту волну с помощью самого UNO. К сожалению, я не смогу использовать другой микроконтроллер для этого проекта. Однако то, что я могу сделать, чтобы решить эту проблему, - это генерировать другую звуковую волну более низкой частоты. Если кто-то может помочь мне выяснить, насколько увеличится частота волны, если я использую ШИМ для ее генерации, я смогу сгенерировать соответствующую волну.

, 👍1

Обсуждение

Да, вам потребуется частота ШИМ, намного превышающая частоту, которую вы хотите, но частота ШИМ UNO фиксирована на уровне 490 Гц (см. https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/). Не похоже, что это сработает., @PMF

@PMF Я думаю, что можно увеличить частоту по умолчанию. Нашел несколько учебных пособий в Интернете, но вот аналогичный вопрос на этом форуме: https://arduinoprosto.ru/q/25609/set-pwm-frequency-to-25-khz, @TheReal_Skywalker

Если у вас есть Uno или какая-либо аналогичная плата на базе AVR, самая быстрая частота, которую вы можете получить для 8-битной ШИМ, составляет 62,5 кГц. Вы могли бы двигаться быстрее за счет разрешения., @Edgar Bonet

Вам, вероятно, понадобится Крошка для этого., @towe

@towe К сожалению, я не смогу использовать Крошку для этого проекта. Однако то, что я могу сделать, чтобы решить эту проблему, - это создать другую звуковую волну. Если кто-нибудь может помочь мне выяснить, насколько увеличится частота волны, если я буду использовать ШИМ для ее генерации, я смогу сгенерировать соответствующую волну., @TheReal_Skywalker


1 ответ


Лучший ответ:

1

Это похоже на спектр 8-битного звука, который воспроизводит только низкие басовые ноты. Почти все, что выше этого, похоже на шумовой пол. (Вы можете получить только диапазон около 6 дБ на бит разрешения, так что 8 бит дают максимум около 48 дБ) Если это так, то вы определенно не хотите воспроизводить верхние частоты. Если вы хотите придерживаться своей оригинальной схемы ШИМ, используйте контакты 5 или 6, потому что они используют ШИМ с частотой 980 Гц вместо 490. Я предлагаю вам определить фильтр методом проб и ошибок, поскольку все сводится к тому, сколько несущей ШИМ вы можете выдержать. Вы можете сделать простой RC-фильтр, используя формулу F = 1 / (2 * pi * R * C), где F-частота среза в Гц, R-ом, а C-фарады (это 10^6 микрофарад на фараду). Этот тип простого фильтра будет иметь очень мягкую частоту среза, около 6 дБ на октаву, поэтому, если вы установите его на 123 Гц (на 3 октавы ниже 980 Гц), ШИМ 980 Гц будет уменьшен на 18 дБ. R подключается к ШИМ-контакту, а C идет от другого конца R к земле, как и выходной сигнал. Формула предполагает, что выходной нагрузки нет, поэтому вы должны подключить туда усилитель. Если вы похожи на большинство людей, то у вас, вероятно, под рукой меньше значений конденсаторов, чем значений резисторов, поэтому сначала выберите значение С. Допустим, это 1 uFd. Тогда, если вы используете R=1K, срез будет равен 159 Гц. Измените R во время прослушивания выходного сигнала

,