реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Формирование звука ШИМом Меги48, Нужен совет по фильтрации
ksv198
сообщение Aug 8 2006, 05:42
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964



Доброго времени суток всем!
Решил вот заставить Мегу разговаривать biggrin.gif . Прицепил к ней AT45DB161D, залил звуковой файлик (PCM 8 kHz, 8 bit) и ШИМом на 1-м таймере пытаюсь формировать звук. Таймер 0 у меня тикает на 8000 Гц, на каждом тике записываю в OCR1A новое значение, прочитанное из датафлэша. Режим ШИМа 8 битный "Fast PWM", тактовая контроллера 8 МГц, т.е. частота ШИМа ~31 кГц. Хотел сам себя обмануть и обойтись без дополнительных фильтров, надеялся на сглаживание индуктивностью динамика. После первых опытов, понял, что был не прав, разборчивость речи плохая. Сейчас в раздумье: или фильтровать сразу на выходе Меги, а потом усиливать звук; или раскачать импульсный сигнал сначала, а потом зафильтровать его LC фильтром. Что посоветуете? Качество нужно на уровне телефонного, т.е. чтобы только разборчива речь была.
Go to the top of the page
 
+Quote Post
pokos
сообщение Aug 8 2006, 06:30
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 270
Регистрация: 29-06-06
Пользователь №: 18 445



Наверное, параллельно со звуком имеется характерный свист?
Передискретизацию полезно сделать хотя бы 2х. Т.е. частота дискретизации на выходе должна быть 16кГц. И цифровой фильтр. Ресурсов это дело жрёт не сильно много, а эффект весьма заметный.
Ну, потом зафильтровать каким-нибудь примитивным аналоговым фильтром.
Go to the top of the page
 
+Quote Post
ksv198
сообщение Aug 8 2006, 07:03
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964



Цитата(pokos @ Aug 8 2006, 10:30) *
Наверное, параллельно со звуком имеется характерный свист?
Передискретизацию полезно сделать хотя бы 2х. Т.е. частота дискретизации на выходе должна быть 16кГц. И цифровой фильтр. Ресурсов это дело жрёт не сильно много, а эффект весьма заметный.
Ну, потом зафильтровать каким-нибудь примитивным аналоговым фильтром.

"Про пар мне барин все понятно... куды лошадь то запрягать?" smile.gif Примитивный аналоговый фильтр не помогает, вот здесь например, применили Чебышевский 5-го порядка. Я собственно хотел бы попроще что-нибудь (жаба и лень душат совместно, а тут еще жара +35). Про цифровой фильтр, жрущий мало ресурсов интересно, если можно - ссылочку на примерчик, сам пока цифровых фильтров не делал.
Go to the top of the page
 
+Quote Post
pokos
сообщение Aug 8 2006, 07:22
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 270
Регистрация: 29-06-06
Пользователь №: 18 445



Цитата(ksv198 @ Aug 8 2006, 11:03) *
Примитивный аналоговый фильтр не помогает, вот здесь например, применили Чебышевский 5-го порядка.

Качества хотели. Если нужна только разборчивая речь, то с передискретизацией и RC цепочка неплохо работает. Я, правда, предискретизацию делал 4х, но, думаю, 2х тоже сильно улучшит звук.
Цитата
Про цифровой фильтр, жрущий мало ресурсов интересно, если можно - ссылочку на примерчик,

http://www.atmel.com/dyn/resources/prod_do...nts/doc2527.pdf
FIR поможет. Чем больше его длина, тем лучше, ограничивается только наличием вычислительных ресурсов. Аккумулятора 16-битного хватит. Частоту среза ему 3,4кГц и будет щастье.

А вообще, для речи гораздо лучше подходит АДИКМ, а не ИКМ.
Go to the top of the page
 
+Quote Post
ksv198
сообщение Aug 8 2006, 07:52
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964



Цитата(pokos @ Aug 8 2006, 11:22) *
Качества хотели. Если нужна только разборчивая речь, то с передискретизацией и RC цепочка неплохо работает. Я, правда, предискретизацию делал 4х, но, думаю, 2х тоже сильно улучшит звук.

http://www.atmel.com/dyn/resources/prod_do...nts/doc2527.pdf
FIR поможет. Чем больше его длина, тем лучше, ограничивается только наличием вычислительных ресурсов. Аккумулятора 16-битного хватит. Частоту среза ему 3,4кГц и будет щастье.

Спасибо за ссылку, буду читать.

Цитата(pokos @ Aug 8 2006, 11:22) *
А вообще, для речи гораздо лучше подходит АДИКМ, а не ИКМ.

Имеется в виду ADPCM?
Go to the top of the page
 
+Quote Post
pokos
сообщение Aug 8 2006, 07:58
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 270
Регистрация: 29-06-06
Пользователь №: 18 445



Цитата(ksv198 @ Aug 8 2006, 11:52) *
Имеется в виду ADPCM?

Я-я, безондерс.
Go to the top of the page
 
+Quote Post
proba
сообщение Aug 8 2006, 12:30
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 358
Регистрация: 29-05-05
Пользователь №: 5 526



наверно из PCM правильно PWM преобразовали ? там знак +12 бит получается. я использовал 2 канала PWM , один вышие 6 бит выдает, другои младшие 6. суммируются резисторами R и 64*R, за этим 3.порядка RC филтрь на опарационном У. качество неплохая получается. еще, PWM должен быть фазокорректный.
Go to the top of the page
 
+Quote Post
pokos
сообщение Aug 8 2006, 12:44
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 270
Регистрация: 29-06-06
Пользователь №: 18 445



Цитата(proba @ Aug 8 2006, 16:30) *
... еще, PWM должен быть фазокорректный.

Кстати, да! На такой низкой частоте дискретизации Fast PWM будет здорово гадить.
Если вопрос ко мне, могу рассказать, что я делал. Дело было давно, не все подробности помню. машина была 51-я с соответствующими ограничениями по железу и быстродействию.
Go to the top of the page
 
+Quote Post
INT1
сообщение Aug 8 2006, 13:08
Сообщение #9


deleted
****

Группа: Свой
Сообщений: 555
Регистрация: 28-08-05
Пользователь №: 8 024



А посмотрите :
http://www.gaw.ru/html.cgi/txt/app/Atmel/m...at45_to_avr.htm
(AVR335)
PS, увидел, что это и есть "вот здесь" - smile.gif
что вспомнилось, у меня это был 4433 , и, если они не подправили исходник - нужно задействовать оба буфера. А как заливали РСМ во флэш?

Сообщение отредактировал INT1 - Aug 8 2006, 13:23
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Aug 8 2006, 16:44
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата(ksv198 @ Aug 8 2006, 08:42) *
Прицепил к ней AT45DB161D, залил звуковой файлик (PCM 8 kHz, 8 bit) и ШИМом на 1-м таймере пытаюсь формировать звук. Таймер 0 у меня тикает на 8000 Гц, на каждом тике записываю в OCR1A новое значение, прочитанное из датафлэша. Режим ШИМа 8 битный "Fast PWM", тактовая контроллера 8 МГц, т.е. частота ШИМа ~31 кГц. Хотел сам себя обмануть и обойтись без дополнительных фильтров, надеялся на сглаживание индуктивностью динамика. После первых опытов, понял, что был не прав, разборчивость речи плохая. Сейчас в раздумье: или фильтровать сразу на выходе Меги, а потом усиливать звук; или раскачать импульсный сигнал сначала, а потом зафильтровать его LC фильтром. Что посоветуете? Качество нужно на уровне телефонного, т.е. чтобы только разборчива речь была.

Или лыжи не едут, или масло мало cranky.gif . Проверь, что залил и как выдаешь. Проверь стоит ли у тебя в параллель динамику емкость. Проверь, стоит ли у тебя электролит между ногой Меги и динамиком...
Бо при твоих условиях можно говорить о плохом воспроизведении музыки, но никак не о плохой разборчивости речи. Плохая разборчивость это когда 2 кгц, 4 бита biggrin.gif .
Go to the top of the page
 
+Quote Post
_artem_
сообщение Aug 8 2006, 17:23
Сообщение #11


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



Если звук сделан по псм стандарту то может быть что мю или а компандирование применено . То есть перед тем как воспроизводить обратное преобразование надо.
Что касается 8 кГц звука то согласен с предыдушим автором - с разборчивостью речи никаких проблем не должно быть.
А в случае увеличения частоты шима в два раза попробуй грубо заполнить промежуточные недостаюшие значения средним двух смежных.


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
INT1
сообщение Aug 8 2006, 18:03
Сообщение #12


deleted
****

Группа: Свой
Сообщений: 555
Регистрация: 28-08-05
Пользователь №: 8 024



Нашел вот статью из "Paguo" может будет интересна
Нормально работает с усилителем в классе D, но нужен хотя бы однозвенный LC фильтр на динамик, и обеспечить конструктивные требования к L. Поройтесь в апнотах Apex_a:
http://eportal.apexmicrotech.com/mainsite/...s/app_notes.asp

Сообщение отредактировал INT1 - Aug 8 2006, 18:34
Прикрепленные файлы
Прикрепленный файл  wav_pcm_eeprom.rar ( 154.47 килобайт ) Кол-во скачиваний: 77
 
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Aug 8 2006, 20:22
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(proba @ Aug 8 2006, 15:30) *
наверно из PCM правильно PWM преобразовали ? там знак +12 бит получается. я использовал 2 канала PWM , один вышие 6 бит выдает, другои младшие 6. суммируются резисторами R и 64*R, за этим 3.порядка RC филтрь на опарационном У. качество неплохая получается. еще, PWM должен быть фазокорректный.


Согласен с данным автором у меня также получалось (13 бит). Поэтому от шима я отказался поставил кофидек с цифровым фильтром на выходе. Там ЦАП нелинейный. Всё класс получилось. В смысле речи.
Go to the top of the page
 
+Quote Post
Woodoo
сообщение Aug 8 2006, 20:29
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 26-05-05
Из: Севастополь
Пользователь №: 5 391



имел опыт с воспроизведением аудио используя шим, но он был програмный, и написан на х86. Воспроизводил не голос, а музыку в формате 11050 Гц, 8 бит. Вывод на ПК-спикер. + элементарная р-ц цепочка = очень приемлемое качество как для ШИМа. Так что мой совет: поднимите частоту, хотябы вдвое + элементарный фильтр, а уж потом усилитель (ни как не наоборот, импульсы усиливать не стоит). Для голоса этого должно хватить с избытком.

P.S.: Так как в кампе небыло звуковой карты, слушал таким оброзом музыку довольно долго, ставил Электроника У-101-стерео + S30 = супер!
Go to the top of the page
 
+Quote Post
ksv198
сообщение Aug 9 2006, 07:23
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 177
Регистрация: 25-08-05
Из: Ставрополь
Пользователь №: 7 964



Цитата(proba @ Aug 8 2006, 16:30) *
наверно из PCM правильно PWM преобразовали ? там знак +12 бит получается. я использовал 2 канала PWM , один вышие 6 бит выдает, другои младшие 6. суммируются резисторами R и 64*R, за этим 3.порядка RC филтрь на опарационном У. качество неплохая получается. еще, PWM должен быть фазокорректный.

Не совсем понял про преобразование. Я использую 8-ми битный RAW PCM, беззнаковый, без A-low, mu-low; такие может делать Cool Edit. Пробовал и фазокорректный PWM, при этом качество улучшается немного, но сильнее свист.

Цитата(INT1 @ Aug 8 2006, 17:08) *
А посмотрите :
http://www.gaw.ru/html.cgi/txt/app/Atmel/m...at45_to_avr.htm
(AVR335)
PS, увидел, что это и есть "вот здесь" - smile.gif
что вспомнилось, у меня это был 4433 , и, если они не подправили исходник - нужно задействовать оба буфера. А как заливали РСМ во флэш?

РСМ во флэш заливаю через последовательный порт, вернее с СОМа компьютера на скорости 19200 передаю контроллеру, а он уже льет по SPI во флэш, для контроля читаю назад - все совпадает. Можно оба буфера использовать, а если лениво , то можно в RealTerm-е поставить задержку между байтами 5-6 мс, тогда с одним буфером успевает писать в страницу между приемом соседних байтов.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 11:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.02131 секунд с 7
ELECTRONIX ©2004-2016