Имеется контроллер ATMega16, имеется свободный порт B. Порт с частотой 8000 Гц меняет свое состояние (от 0 до 255 и обратно). Хочу получить звуковой сигнал типа синусоиды или любой другой в зависимости от цифровой матрицы в памяти контроллера.
Первый раз столкнулся с необходимостью применения ЦАП, тоесть хочу зацепить ЦАП на свой 8 битный порт, на выходе получить пропорциональный сигнал от 0 до 5, скажем, вольт. Его усилить и подать на динамик.
Посоветуйте, пожалуйста, самый простой ЦАП, желательно несколько (включая аналоги), у меня в схеме не предусматривается двуполярное питание, должно быть все как можно проще!
Или подскажите, как еще можно вывести звук с МК?
RomixERR писал(а):Посоветуйте, пожалуйста, самый простой ЦАП, желательно несколько (включая аналоги), у меня в схеме не предусматривается двуполярное питание, должно быть все как можно проще!
Или подскажите, как еще можно вывести звук с МК?
Самый простой ЦАП - R-2R матрица из резисторов.
Если кто помнит, был татой девайс для компов, COVOX - вешался на LPT порт.
А при использовании ШИМ ЦАП ваще не нужен.
Во! Пасиба, R-2R -довольно любопытная схемка. Я сам пытался сочинять, подобие делителя и вешать на порт - получилось кривовато).
С ШИМ - к сожалению не работал, вернее делал программно, но аппаратный, я понимаю - по лучше будет. Почитаю.
Если надо вывести звук с микросхемы могу предложить использование УМС-8 (или УМС-7, зависит от нужного времени записи звука). Если я не ошибаюсь в УМС-8 можно записать 20 секунд, где-то читал как можно записать в УМС звуковую информацию но не помню где. Мало , можно еще несколько штук добавить, а ими уже управлять микроконтроллером.
Вот типовая схема включения http://kazus.ru/articles/314.html
Почитал кое-что)
В архиве маленький проэкт-пример работы с ШИМ на Algorithm Builder и скриншоты эмуляции в ISIS 6.
Иду мучать контроллер, а потом дописывать свой Поли-проект.))
PS: Глупости какие-то, вложение не мб больше 128Kb!
Товарищи, а кто подскажет, как связана минимально необходимая частота ШИМ и максимально возможная частота выходного сигнала? Ну, типа теоремы Котельникова-Найквиста, только для ШИМ? С обычным ЦАП понятно - частота выборок должна быть минимум в два раза выше частоты сигнала. А вот во сколько раз частота ШИМ должна быть больше частоты выборок?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
А разве есть четкая граница? Думаю, что на слух приемлемо будет F(PWM)=2Fmax. А по сути хватит и 1Fmax. Тут важней ФНЧ: не будет ли его кривая резать вашу Fmax.
Мне кажется, таки есть. Единственный разумный критерий, который я могу придумать - при минимальной частоте ШИМ конденсатор фильтра должен успевать полностью зарядиться (T=RC, тогда время полной зарядки ~3T) за время полного периода ШИМ (k=100%). Тогда, если мы хотим макс. частоту 20КГц, период ШИМ должен быть как минимум в три раза меньше, т.е. частота должна быть как минимум 60КГц.
А по сути хватит и 1Fmax.
Неее, вот это точно не хватит. Частота ШИМ должна обрезаться фильтром. И чем сильнее, тем лучше. Для этого она должна находиться за верхней границей выходной частоты, и чем дальше, тем лучше.
Мой вопрос можно переформулировать так: во сколько раз частота ШИМ должна быть больше частоты синтезируемого сигнала, чтобы качество не уступало параллельным и сигма-дельта ЦАП (чтобы можно было получить полноценное, не терпимое, а вполне приятное на слух, воспроизведение)?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Наверное, можно порассуждать так: если частота ШИМ будет в 10 раз выше частоты полезного сигнала, и на выходе поставим ФНЧ первого порядка с частотой среза равной частоте полезного сигнала, то получим ослабление частоты ШИМ на выходе 20 дБ (на частоте полезного сигнала), если частота ШИМ будет выше частоты полезного сигнала в 100 раз, то с тем же ФНЧ получим ослабление частоты ШИМ на выходе 40дБ, а с ФНЧ второго порядка - 80дБ - что на слух вполне приемлемо, ну а дальше искать формулы и по ним считать для разных частот ШИМ и порядка фильтров.
Хотя с учетом того, что человеческое ухо само работает как ФНЧ, то наверное частоты ШИМ в два раза выше частоты дискретизации наверное будет достаточно с простым фильтром. Но это уже только для воспроизведения звука, и еще неизвестно, как на такой сигнал отреагирует звуковой тракт от фильтра до динамика.
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Хм. Мне казалось, дело не только в ослаблении частоты ШИМ. Ведь максимальная частота по-любому завязана на время установления уровня на конденсаторе. Очевидно, что получить сигнал частотой 20КГц при частоте ШИМ 2КГц принципиально невозможно, как его не фильтруй. Или я не прав?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Естественно, частота ШИМ должна быть выше частоты полезного сигнала, под ослаблением частоты ШИМ я понимаю ослабление составляющей спектра соответствующей частоте самого ШИМ в выходном сигнале, ослабление это делается фильтром низкой частоты. Т.е. При максимальной частоте полезного сигнала 20кГц, частота ШИМ должна быть (на мой взгляд) не меньше 40 кГц. При таком раскладе с ФНЧ первого порядка с частотой среза 20кГц в спектре выходного сигнала будет наблюдаться несущая ШИМ частотой 40кГц ослабленная на 6 дБ по сравнению с 20кГц, если будем таким ЦАПом формировать частоту 20кГц. Однако человеческое ухо эти 40кГц отсеет само и услышит (если способно) только 20кГц, при том, что на осциллографе будет бяка, а не чистые 20кГц.
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
А зачем вам заряжать конденсатор полностью? Зарядится на треть или сколько там и достаточно. Потом разрядится
Мне думается, что для красивого звучания ШИМ не подходит. Объясню почему: уровень сигнала передается в линейной зависимости, в виде ширины импульса. Который затем преобразуется в соответствующий уровень напряжения _нелинейным_ процессом заряда разряда конденсатора. В любом случае будут искажения. Наверное фазовые. Т.е. чтобы избавиться от этих фазовых искажений Вам придется задирать частоту ШИМа так высоко, чтобы можно было пренебречь разницей в скорости заряда (разряда) конденсатора между соседними отсчетами оригинальной кривой. Потом еще ФНЧ.
Вот если бы смешать ШИМ с точно такой же _пилой_, да поставить схему сравнения с запоминанием состояния. Вот тогда бы получился линейный процесс. Но это все уже фантазии. Внешний ЦАП на SPI заменит весь геморрой.
Касательно звука: можно ШИМ не фильтровать, а напрямую подключить к широкополосному усилителю мощности (с полосой пропускания сотни кГц, т.е. на порядки выше частоты ШИМ), в роли ФНЧ будет уже динамик и уши.
класс D однако получится.
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Объясню почему: уровень сигнала передается в линейной зависимости, в виде ширины импульса. Который затем преобразуется в соответствующий уровень напряжения _нелинейным_ процессом заряда разряда конденсатора.
Ну вот, сами себе и ответили. Полностью он должен заряжаться только при коэффициенте заполнения 100%. Главный вопрос - достигнуть максимальной скорости переходных процессов заряда. Интересует та самая минимальная максимальная скорость.
Внешний ЦАП на SPI заменит весь геморрой.
Это то понятно. Цель моего вопроса - понять, какая минимальная частота ШИМ (в зависимости от частоты синтезируемого сигнала) позволяет получить максимально возможное качество для такой простой схемы, т.е. интересно понять предел возможностей ШИМ. ШИМ - самоцель, объект изучения.
Разница между теорией и практикой на практике гораздо больше, чем в теории.