• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

PWM - звуки космоса?

Всем доброго времени суток!
Делаю первые шаги в освоении программирования для МК с помощью Arduino IDE.
Задача: без DAC воспроизвести звуковой файл PCM 8bit mono дискретизация 8kHz (сохранен в SPIFFS) используя любой из доступных методов. Звук выводится на один из выводов ESP8266.

Сделал с помощью PWM как описано в WAV playback - Everything ESP8266
"
analogWriteRange(255);//8 Bit
analogWriteFreq(32000);//Multiple of the sample rate - See more at: ttp://www.esp8266.com/viewtopic.php?f=6&t=8562#sthash.P9Xl8NFC.dpuf
"
Везде пишут что звук плохой. Но честно не ожидал что кроме записанного звука в динамике услышу "звуки космоса".

Есть ли возможность отфильтровать сигнал простым RC фильтром ? Или изменить параметры PWM чтобы хотя бы "звуки космоса" убрать?

В официальном примере от Espressif (mp3_decoder) в качестве альтернативы упоминается sigma_delta библиотека. В моем SDK для Arduino исходник переименован в ".c.unused" может быть кто-н подскажет можно ли решить задачу подключив к Arduino внешнюю библиотеку sigma-delta ?

Заранее спасибо за подсказки, помощь по вопросу!
 
Если честно с трудом представляю откуда берутся "звуки космоса" и не понятно на какую частоту делать фильтр? Для голоса верхняя частота вроде как 4кГц, а то что попробовал из 100 Ом - 10нФ что мертвому припарка. Вот и думаю копать дальше в этом направлении или на этот вопрос уже есть практичный ответ - частота такая -то или схема такая-то или "бесполезная" затея. Понятно что вопрос уже больше к радиотехнике чем к электронике. Но все-таки ... Просто хочу узнать у опытных людей можно ли от этих "звуков космоса" избавиться...
 

Jury_78

New member
Начните со среза в 1кГц - 100Ом/1,5мкФ. Вообще на ШИМ многие жалуются. Я бы для начала, без файла, попробовал воспроизводить разные частоты и посмотрел, что и как ...
 
RC фильтр поставил. Есть ощущение что верхнюю частоту срезает ... Но звуки космоса в более низком диапазоне. Похожи на звуки дельфинов )). Попробую воспроизвести звук в 1кГц ...
 

13_CHIP_13

New member
Тему для такой мелочи создавать не хочеться, вопрос простой: как быть если мне нужно менять не только скважность ШИМ, но и частоту (частота от 10 до 100 Гц). Среда Arduino IDE. Функция analogWriteFreq(freq) - работает как то непонятно (точнее скорее всего её нельзя вызывать как попало), она работает в момент первого вызова, потом вызов не влияет, может часто вызываю. Пойду пробовать щас, может "угадаю", но возможно кто то уже сталкивался. А да, еще в core_esp8266_wiring_pwm.cpp вообще частоту 100 Гц снизу ограничивают, это чё меньше не задать?
 

13_CHIP_13

New member
Тему для такой мелочи создавать не хочеться, вопрос простой: как быть если мне нужно менять не только скважность ШИМ, но и частоту (частота от 10 до 100 Гц). Среда Arduino IDE. Функция analogWriteFreq(freq) - работает как то непонятно (точнее скорее всего её нельзя вызывать как попало), она работает в момент первого вызова, потом вызов не влияет, может часто вызываю. Пойду пробовать щас, может "угадаю", но возможно кто то уже сталкивался. А да, еще в core_esp8266_wiring_pwm.cpp вообще частоту 100 Гц снизу ограничивают, это чё меньше не задать?
Короче глупость написал, порылся в библиотеке увидел что analogWriteFreq только переменную меняет и всё, поправил библиокеку, чтоб до 10 Гц опускалось и нашёл у себя косяк в одной строчке и всё заработало.
 
Сверху Снизу