AVR и живой звук. Как связать контроллер с ЦАП?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
RomixERR
Родился
Сообщения: 5
Зарегистрирован: Вс июн 01, 2008 17:05:33

AVR и живой звук. Как связать контроллер с ЦАП?

Сообщение RomixERR »

Имеется контроллер ATMega16, имеется свободный порт B. Порт с частотой 8000 Гц меняет свое состояние (от 0 до 255 и обратно). Хочу получить звуковой сигнал типа синусоиды или любой другой в зависимости от цифровой матрицы в памяти контроллера.
Первый раз столкнулся с необходимостью применения ЦАП, тоесть хочу зацепить ЦАП на свой 8 битный порт, на выходе получить пропорциональный сигнал от 0 до 5, скажем, вольт. Его усилить и подать на динамик.
Посоветуйте, пожалуйста, самый простой ЦАП, желательно несколько (включая аналоги), у меня в схеме не предусматривается двуполярное питание, должно быть все как можно проще!
Или подскажите, как еще можно вывести звук с МК? :idea:
Реклама
Аватара пользователя
ArtemKuchin
Поставщик валерьянки для Кота
Сообщения: 2277
Зарегистрирован: Вс апр 20, 2008 23:34:26
Откуда: Москва
Контактная информация:

Сообщение ArtemKuchin »

Я тут новенький и ваще не крутой. Но могу посоветовать несколько вещей:

1) Использовать ШИМ (PWM) от таймера или сделать софтовый ШИМ на выходе.

2) Если есть весь порт, то может быть как-то прикрутить резисторную лестницу http://www.rlocman.ru/shem/schematics.html?di=44633

3) По поводу самого подключения я сам недавно спрашивал, вот:
http://www.radiokot.ru/forum/viewtopic.php?t=9353
Реклама
Аватара пользователя
Pahan
Мучитель микросхем
Сообщения: 487
Зарегистрирован: Чт ноя 23, 2006 22:47:35
Контактная информация:

Re: AVR и живой звук. Как связать контроллер с ЦАП?

Сообщение Pahan »

RomixERR писал(а):Посоветуйте, пожалуйста, самый простой ЦАП, желательно несколько (включая аналоги), у меня в схеме не предусматривается двуполярное питание, должно быть все как можно проще!
Или подскажите, как еще можно вывести звук с МК? :idea:
Самый простой ЦАП - R-2R матрица из резисторов.
Если кто помнит, был татой девайс для компов, COVOX - вешался на LPT порт.
А при использовании ШИМ ЦАП ваще не нужен.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18561
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: AVR и живой звук. Как связать контроллер с ЦАП?

Сообщение ARV »

Pahan писал(а):А при использовании ШИМ ЦАП ваще не нужен.
зато нужен фильтр низких частот :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Эиком - электронные компоненты и радиодетали
RomixERR
Родился
Сообщения: 5
Зарегистрирован: Вс июн 01, 2008 17:05:33

Сообщение RomixERR »

Во! Пасиба, R-2R -довольно любопытная схемка. Я сам пытался сочинять, подобие делителя и вешать на порт - получилось кривовато).
С ШИМ - к сожалению не работал, вернее делал программно, но аппаратный, я понимаю - по лучше будет. Почитаю.

Изучаю Скопетрис - потрясно)) :)))
Реклама
RomixERR
Родился
Сообщения: 5
Зарегистрирован: Вс июн 01, 2008 17:05:33

Сообщение RomixERR »

И все же, бывают ли ЦАПы без лишнего гемора? Что-бы примерно так было: подпаял порт, VCC, GND, выход и пользуйся?
Реклама
Аватара пользователя
Fuvuchuas
Родился
Сообщения: 10
Зарегистрирован: Чт май 01, 2008 16:57:57

Сообщение Fuvuchuas »

Если надо вывести звук с микросхемы могу предложить использование УМС-8 (или УМС-7, зависит от нужного времени записи звука). Если я не ошибаюсь в УМС-8 можно записать 20 секунд, где-то читал как можно записать в УМС звуковую информацию но не помню где. Мало , можно еще несколько штук добавить, а ими уже управлять микроконтроллером.
Вот типовая схема включения http://kazus.ru/articles/314.html
Аватара пользователя
ArtemKuchin
Поставщик валерьянки для Кота
Сообщения: 2277
Зарегистрирован: Вс апр 20, 2008 23:34:26
Откуда: Москва
Контактная информация:

Сообщение ArtemKuchin »

RomixERR писал(а):И все же, бывают ли ЦАПы без лишнего гемора? Что-бы примерно так было: подпаял порт, VCC, GND, выход и пользуйся?
Конечно бывают. В старших моделях МК встраивают.
и отдельно чипы есть
вот например
http://www.analog.com/UploadedFiles/Dat ... AD5398.pdf

и вот туева хуча
http://www.chip-dip.ru/search.aspx?searchtext=%F6%E0%EF

тока дорогие они, блин
RomixERR
Родился
Сообщения: 5
Зарегистрирован: Вс июн 01, 2008 17:05:33

Сообщение RomixERR »

Да, 300рэ. Дороже самого контроллера)

Ну пасиб, буду изучать рынок)
RomixERR
Родился
Сообщения: 5
Зарегистрирован: Вс июн 01, 2008 17:05:33

Сообщение RomixERR »

Эврика!
ШИМ работает!

Почитал кое-что)
В архиве маленький проэкт-пример работы с ШИМ на Algorithm Builder и скриншоты эмуляции в ISIS 6.
Иду мучать контроллер, а потом дописывать свой Поли-проект.))

PS: Глупости какие-то, вложение не мб больше 128Kb!
Вложения
ШИМ (ЦАП на Atmel).part1.rar
Архив
(117.19 КБ) 2778 скачиваний
ШИМ (ЦАП на Atmel).part2.rar
(117.19 КБ) 2846 скачиваний
ШИМ (ЦАП на Atmel).part3.rar
(16.3 КБ) 848 скачиваний
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: AVR и живой звук. Как связать контроллер с ЦАП?

Сообщение YS »

Товарищи, а кто подскажет, как связана минимально необходимая частота ШИМ и максимально возможная частота выходного сигнала? Ну, типа теоремы Котельникова-Найквиста, только для ШИМ? С обычным ЦАП понятно - частота выборок должна быть минимум в два раза выше частоты сигнала. А вот во сколько раз частота ШИМ должна быть больше частоты выборок?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
UN7TGT
Родился
Сообщения: 13
Зарегистрирован: Сб май 01, 2010 06:38:42

Re: AVR и живой звук. Как связать контроллер с ЦАП?

Сообщение UN7TGT »

2YS

А разве есть четкая граница? Думаю, что на слух приемлемо будет F(PWM)=2Fmax. А по сути хватит и 1Fmax. Тут важней ФНЧ: не будет ли его кривая резать вашу Fmax.

Это я так думаю.
[img]http://img35.imageshack.us/img35/4414/avrfan.png[/img]
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: AVR и живой звук. Как связать контроллер с ЦАП?

Сообщение YS »

Мне кажется, таки есть. Единственный разумный критерий, который я могу придумать - при минимальной частоте ШИМ конденсатор фильтра должен успевать полностью зарядиться (T=RC, тогда время полной зарядки ~3T) за время полного периода ШИМ (k=100%). Тогда, если мы хотим макс. частоту 20КГц, период ШИМ должен быть как минимум в три раза меньше, т.е. частота должна быть как минимум 60КГц. :dont_know:
А по сути хватит и 1Fmax.
Неее, вот это точно не хватит. Частота ШИМ должна обрезаться фильтром. И чем сильнее, тем лучше. Для этого она должна находиться за верхней границей выходной частоты, и чем дальше, тем лучше.

Мой вопрос можно переформулировать так: во сколько раз частота ШИМ должна быть больше частоты синтезируемого сигнала, чтобы качество не уступало параллельным и сигма-дельта ЦАП (чтобы можно было получить полноценное, не терпимое, а вполне приятное на слух, воспроизведение)?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
DrWatson
Опытный кот
Сообщения: 890
Зарегистрирован: Вт янв 20, 2009 14:49:08
Откуда: Гондурас, Мурманск

Re: AVR и живой звук. Как связать контроллер с ЦАП?

Сообщение DrWatson »

Наверное, можно порассуждать так: если частота ШИМ будет в 10 раз выше частоты полезного сигнала, и на выходе поставим ФНЧ первого порядка с частотой среза равной частоте полезного сигнала, то получим ослабление частоты ШИМ на выходе 20 дБ (на частоте полезного сигнала), если частота ШИМ будет выше частоты полезного сигнала в 100 раз, то с тем же ФНЧ получим ослабление частоты ШИМ на выходе 40дБ, а с ФНЧ второго порядка - 80дБ - что на слух вполне приемлемо, ну а дальше искать формулы и по ним считать для разных частот ШИМ и порядка фильтров.
Хотя с учетом того, что человеческое ухо само работает как ФНЧ, то наверное частоты ШИМ в два раза выше частоты дискретизации наверное будет достаточно с простым фильтром. Но это уже только для воспроизведения звука, и еще неизвестно, как на такой сигнал отреагирует звуковой тракт от фильтра до динамика.
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: AVR и живой звук. Как связать контроллер с ЦАП?

Сообщение YS »

Хм. Мне казалось, дело не только в ослаблении частоты ШИМ. Ведь максимальная частота по-любому завязана на время установления уровня на конденсаторе. Очевидно, что получить сигнал частотой 20КГц при частоте ШИМ 2КГц принципиально невозможно, как его не фильтруй. Или я не прав?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
DrWatson
Опытный кот
Сообщения: 890
Зарегистрирован: Вт янв 20, 2009 14:49:08
Откуда: Гондурас, Мурманск

Re: AVR и живой звук. Как связать контроллер с ЦАП?

Сообщение DrWatson »

Естественно, частота ШИМ должна быть выше частоты полезного сигнала, под ослаблением частоты ШИМ я понимаю ослабление составляющей спектра соответствующей частоте самого ШИМ в выходном сигнале, ослабление это делается фильтром низкой частоты. Т.е. При максимальной частоте полезного сигнала 20кГц, частота ШИМ должна быть (на мой взгляд) не меньше 40 кГц. При таком раскладе с ФНЧ первого порядка с частотой среза 20кГц в спектре выходного сигнала будет наблюдаться несущая ШИМ частотой 40кГц ослабленная на 6 дБ по сравнению с 20кГц, если будем таким ЦАПом формировать частоту 20кГц. Однако человеческое ухо эти 40кГц отсеет само и услышит (если способно) только 20кГц, при том, что на осциллографе будет бяка, а не чистые 20кГц.
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
UN7TGT
Родился
Сообщения: 13
Зарегистрирован: Сб май 01, 2010 06:38:42

Re: AVR и живой звук. Как связать контроллер с ЦАП?

Сообщение UN7TGT »

2YS

А зачем вам заряжать конденсатор полностью? Зарядится на треть или сколько там и достаточно. Потом разрядится :roll:
Мне думается, что для красивого звучания ШИМ не подходит. Объясню почему: уровень сигнала передается в линейной зависимости, в виде ширины импульса. Который затем преобразуется в соответствующий уровень напряжения _нелинейным_ процессом заряда разряда конденсатора. В любом случае будут искажения. Наверное фазовые. Т.е. чтобы избавиться от этих фазовых искажений Вам придется задирать частоту ШИМа так высоко, чтобы можно было пренебречь разницей в скорости заряда (разряда) конденсатора между соседними отсчетами оригинальной кривой. Потом еще ФНЧ.

Вот если бы смешать ШИМ с точно такой же _пилой_, да поставить схему сравнения с запоминанием состояния. Вот тогда бы получился линейный процесс. Но это все уже фантазии. Внешний ЦАП на SPI заменит весь геморрой.

Это я так думаю
[img]http://img35.imageshack.us/img35/4414/avrfan.png[/img]
UN7TGT
Родился
Сообщения: 13
Зарегистрирован: Сб май 01, 2010 06:38:42

Re: AVR и живой звук. Как связать контроллер с ЦАП?

Сообщение UN7TGT »

О! в голову пришла еще одна мысль: :write:

Заряжать и разряжать кондер не резистором а источником и приемником тока. Процесс будет линейным.
[img]http://img35.imageshack.us/img35/4414/avrfan.png[/img]
Аватара пользователя
DrWatson
Опытный кот
Сообщения: 890
Зарегистрирован: Вт янв 20, 2009 14:49:08
Откуда: Гондурас, Мурманск

Re: AVR и живой звук. Как связать контроллер с ЦАП?

Сообщение DrWatson »

Касательно звука: можно ШИМ не фильтровать, а напрямую подключить к широкополосному усилителю мощности (с полосой пропускания сотни кГц, т.е. на порядки выше частоты ШИМ), в роли ФНЧ будет уже динамик и уши.
класс D однако получится.
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: AVR и живой звук. Как связать контроллер с ЦАП?

Сообщение YS »

А зачем вам заряжать конденсатор полностью?
Объясню почему: уровень сигнала передается в линейной зависимости, в виде ширины импульса. Который затем преобразуется в соответствующий уровень напряжения _нелинейным_ процессом заряда разряда конденсатора.
Ну вот, сами себе и ответили. Полностью он должен заряжаться только при коэффициенте заполнения 100%. Главный вопрос - достигнуть максимальной скорости переходных процессов заряда. Интересует та самая минимальная максимальная скорость.
Внешний ЦАП на SPI заменит весь геморрой.
Это то понятно. Цель моего вопроса - понять, какая минимальная частота ШИМ (в зависимости от частоты синтезируемого сигнала) позволяет получить максимально возможное качество для такой простой схемы, т.е. интересно понять предел возможностей ШИМ. ШИМ - самоцель, объект изучения.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»