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

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

Сообщение RomixERR »

Имеется контроллер ATMega16, имеется свободный порт B. Порт с частотой 8000 Гц меняет свое состояние (от 0 до 255 и обратно). Хочу получить звуковой сигнал типа синусоиды или любой другой в зависимости от цифровой матрицы в памяти контроллера.
Первый раз столкнулся с необходимостью применения ЦАП, тоесть хочу зацепить ЦАП на свой 8 битный порт, на выходе получить пропорциональный сигнал от 0 до 5, скажем, вольт. Его усилить и подать на динамик.
Посоветуйте, пожалуйста, самый простой ЦАП, желательно несколько (включая аналоги), у меня в схеме не предусматривается двуполярное питание, должно быть все как можно проще!
Или подскажите, как еще можно вывести звук с МК? :idea:
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 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
Контактная информация:
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 487
Зарегистрирован: Чт ноя 23, 2006 22:47:35

Сообщение Pahan »

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

Сообщение ARV »

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

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

Сообщение RomixERR »

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

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

Сообщение RomixERR »

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

Сообщение Fuvuchuas »

Если надо вывести звук с микросхемы могу предложить использование УМС-8 (или УМС-7, зависит от нужного времени записи звука). Если я не ошибаюсь в УМС-8 можно записать 20 секунд, где-то читал как можно записать в УМС звуковую информацию но не помню где. Мало , можно еще несколько штук добавить, а ими уже управлять микроконтроллером.
Вот типовая схема включения http://kazus.ru/articles/314.html
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 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

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

Сообщение RomixERR »

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

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

Сообщение RomixERR »

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

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

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

Сообщение YS »

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

Сообщение UN7TGT »

2YS

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

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

Сообщение YS »

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

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

Сообщение DrWatson »

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

Сообщение YS »

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

Сообщение DrWatson »

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

Сообщение UN7TGT »

2YS

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

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

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

Сообщение UN7TGT »

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

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

Сообщение DrWatson »

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

Сообщение YS »

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

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