• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 Гц опускалось и нашёл у себя косяк в одной строчке и всё заработало.
 
Сверху Снизу