Форум программистов, компьютерный форум, киберфорум
Электроника и радиотехника
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/466: Рейтинг темы: голосов - 466, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 06.02.2010
Сообщений: 262

WAV-проигрыватель на Mega32 PWM или R-2R

20.11.2011, 17:36. Показов 85731. Ответов 93
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Давно искал пути решения для озвучки голосовыми фразами своего ПУ сигнализации в доме, да и для квартирного звонка или будильника сгодится вполне. Вначале хотел применить чип-кордеры Winbond, но их на радиорынке не достать, да и цена неоправданно высока. В своем топике SWK описывал свой портативный проигрыватель MP3. Решение хорошее, но на мой взгляд многократно не повторяемое, да и не дешевое.

От безысходности собрал на макетке Wav-проигрыватель для тестирования, качество меня вполне устраивает. Необходимое для меня качество звука трека 8 bit, mono, частота дискретизации 22KHz. Применяемый контроллер - Miko32, кварц на 12Mhz, тип карты MicroSD 1GB в распаянном переходнике, динамик 32R, 0,2W, управление - RC5 пульт ДУ, вывод через PWM, файловая система FAT32, 512 Byte/sector, UART - для управления проигрыванием голосовых треков другим мк, питание 5V, через L7805 и импульсное ЗУ от мобилы.

Ресурсы МК: AVR Memory Usage
----------------
Device: atmego32

Prokram: 8728 bytes (26.6% Full)
(.text + .data + .boottooder)

Data: 1812 bytes (88.5% Full)
(.data + .bss + .noinit)

Build succeedid wyth 0 Warnings...
Код легко портируется и помещается с урезанным функционалом и в Miko8. В идеале экономично использовать Miko16.



Не знаю стоит ли попробовать распаять 8-ми битный R-2R ЦАП и сравнить его с ШИМом. Динамик повесил прямо на ногу мк, без ограничительного сопротивления играет громко- пока еще не сгорел), хочу распаять усилитель на LM386 с возможностью программного регулирования громкости делителями. Кто нибудь собирал на R-2R ? Поделитесь впечатлениями...

Для оценки качества звучания выложил видео http://www.youtube.som/watch?v=tkkh3skuECE

Комментарий к видео: через WinAMP были перекодированы музыкальные MP3 треки в WAV формат, затем записаны на Micro SD флешку. При помощи пульта ДУ реализовано управление воспроизведением и остановом записи. Всего на флешку помещается около 130 музыкальных композиций. Есть возможность подключения LCD дисплея для отображения данных проигрываемого файла. Качество звука - не ахти, конечно, но слушать вполне можно. Разбираемость речи 100%.

0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.11.2011, 17:36
Ответы с готовыми решениями:

Проигрыватель Wav (ошибка в программе)
#include "stdafx.h" #include "windows.h" #include "mmsystem.h" #include "stdio.h" #include "string.h" #include <iostream> using...

JSP: ссылка на wav файл не запускает проигрыватель?
Проблема в следующем: Когда я нажимаю на ссылку на wav файл из htm, у меня запускается WinAmp, как работающее по умолчанию средство...

Залочил Mega32 или нет ?
Все время во всех мк пользовался внутренним RC генератором, сегодня понадобилось подкинуть кварц на 12 MHz... с дуру включил фьюз таким...

93
bdw5
07.02.2012, 13:30
Студворк — интернет-сервис помощи студентам
день добрый- у меня к Вам громаднейшая просьба-не оставьте без внимания. я новичёк ,только начал осваивать микроконтролёры. мне с вашей схемы нужен дверной звонок. прошу вас минимизировать схему, и сделать её без ошибок ( а то я читаю что там кнопки указаны не верно и т.д.) усилок не нужен пульт д\у тоже не нужен. фюзы более понятно под понни прог. с уважением...
0 / 0 / 0
Регистрация: 12.04.2010
Сообщений: 3,260
07.02.2012, 22:00
Уже похоже на запрос в тему "надо разработать"
0
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 219
08.02.2012, 20:17
если просто звонок на входную дверь нужен , то можно и вот такой ))
<a ctoss="postlink-local" href="http://forum.iosyitistromyss.ru/viewtopys.php?f=16&t=4047&stort=0">viewt opys.php?f=16&t=4047&stort=0[/URL]
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,352
08.02.2012, 22:42
есть чего подобное?
http://www.youtube.som/watch?feature=pl ... 12U#t=196s

хочу сортир озвучить, а то иногда приходят бабы и очко опускают
пока будут труселя снимать, а тут внезапно
1 сядьте в круг
2 закройте глаза
3 начинает играть музыка (у нас по крайней мере в уличных сортирах играет)
4 калоотделение завершено
5 не забудьте смыть за собой

там у меня на бачке 2 кнопки для большого и малого смыва
при нажатии в твитор будет отправляться сообщение посрал ли кто или же поссал
0
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 2,017
08.02.2012, 23:42
Ойбля, я ща со смеху умру! Ну ты жжешь!
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,352
09.02.2012, 00:21
собственно вот набросил http://rghost.ru/36433068
а Loquendo мне не понравился совсем
0
0 / 0 / 0
Регистрация: 19.09.2011
Сообщений: 1,835
09.02.2012, 00:30
в твитор будет отправляться сообщение посрал ли кто или же поссал
А тебе это надо знать?
0
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,352
09.02.2012, 00:33
ну у всех твитор есть, даже у президента и все что-то туда пишут
пусть сортир тоже пишет, может быть это кому-нибудь надо
0
0 / 0 / 0
Регистрация: 06.02.2010
Сообщений: 262
10.02.2012, 01:03
калоотделение завершено
еще добавить к фразе слово "успешно" + звуковой эффект из стандартных звуков windows - tada.wav

Блин, я "и не туда", что Калобайт выложил готовый ролик! ))) Любимый фильм детства "Гостья из будущего". Подходит однозначно.
0
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 34
07.09.2013, 13:54
Доброго времени суток!
Чтобы не плодить темы, решил поднять эту. Есть пару вопросов.
Хочу сделать клон "ковокса", но не на R-2R, а на микроконтроллере. Планируется ATtiny26L, либо что-то из линейки ATtiny261/461/861.
На входе будут 8-битные выборки, получаемые из LPT. Далее будет программное преобразование из 8 бит в 16, а также программная регулировка громкости. Вывод - посредством высокоскоростного ШИМ силами таймера ТС1 - вывод нижнего и верхнего байтов данных ч/з каналы А и В соответственно, с последующим суммированием (как сделано, например у Chanа в его проигрывателе, режим "hires").
Собственно сами вопросы:
1. ATtiny26L имеет всего 8 МГц тактовой. В даташите этот момент явно не озвучен, потому не совсем ясно, будет ли там работать PLL? А если да, то на какой частоте (64 или 32 МГц), и как его инициализировать правильно?
2. Как правильно организовать аналоговый выход? Поскольку сигналы ШИМ будут суммироваться с весами 1 и 256, то на выходе сумматора (резисторы) будет уже аналоговый, а не цифровой сигнал, то просто ключи уже не пойдут - нужен "полноценный" выходной каскад. Изначально планировалось использовать 4 канала ШИМ (OC1A, OC1B и ~OC1A, ~OC1B) для получения синфазного выходного сигнала, а нагрузку подключить непосредственно к выходам. Но, во-первых в качестве нагрузки будет и динамик, и наушники, т.е. нужно будет использовать в "сумматоре" резисторы разных номиналов для динамика и наушников соответственно (а поскольку желательны "прецизионные", то это несколько проблематично). А во-вторых таким образом нагружать выходы МК как-бы не хотелось бы... Как "малой кровью" организовать "усилитель"?
Заранее благодарен.
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
07.09.2013, 18:47
я, кстати, думал на эту тему, таким же образом хотел сделать 16 бит. Попробуйте, интересно.
по поводу суммирования - используйте сумматор на ОУ.

только, ей -богу, лучше взять ЦАП готовый или мк с цап. подобрать резисторы, чтоб маленькую ошибку получить, трудно, плюс суммирование будет с ошибками. от 16 бит мало чего останется. и по сложности - цене будет куда дороже цапа

MCP4921-E/SN ЦАП 12-bit, 1 канал, SPI, Rail-to-Rail выход, 2.7 - 5.5 V, -40...125°C SOIC-8 63 Microchip

правда 12бит, но чем такая возня...

можно ещё кодеки посмотреть - их куча тоже
0
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 34
07.09.2013, 23:52
Цитата Сообщение от Johmmy0007
я, кстати, думал на эту тему, таким же образом хотел сделать 16 бит. Попробуйте, интересно.
по поводу суммирования - используйте сумматор на ОУ.

только, ей -богу, лучше взять ЦАП готовый или мк с цап. подобрать резисторы, чтоб маленькую ошибку получить, трудно, плюс суммирование будет с ошибками. от 16 бит мало чего останется. и по сложности - цене будет куда дороже цапа

MCP4921-E/SN ЦАП 12-bit, 1 канал, SPI, Rail-to-Rail выход, 2.7 - 5.5 V, -40...125°C SOIC-8 63 Microchip

правда 12бит, но чем такая возня...

можно ещё кодеки посмотреть - их куча тоже
Спасибо конечно, но...
Делается, скажу прямо - не себе. Посему одно из главных требований - цена! Не поверите - в своем колхозе даже переменники найти не могу (СП3-3бМ, или типа того)!!! Отсюда такие пляски с бубнами...
ЦАП оно конечно хорошо, но!.. Под заказ может и можно, но какова будет стоимость - не известно. 16, 12 или даже 10 бит вовсе не нужно - достаточно 8. Опять же, все равно нужен усилитель и контроллер.
Тогда уж можно и просто одним только контроллером обойтись, и 8-ью битами. Громкость крутить самим усилителем, TDA7052A, например... Ну и свистоперделки, конечно, куда в наше время без них? Регулировка громкости кнопками, индикация текущего уровня громкости и уровня сигнала, и т.д.
16 бит делал для того, чтобы можно было программно громкость крутить. Для пробы написал небольшую программку на Delphi, которая делает expomd 8->16 и перемножает на коэффициент 0..1. Вроде бы вполне сносно получается... Осталось только усилитель придумать... И вот именно здесь - затык, потому как "в аналоге" не очень.
Спасибо.
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
08.09.2013, 12:04
так я вам про цену и толкую.
вы думаете куча резисторов+оу сильно дешевле? MCP4921 - 63р стоит.

>>16 бит делал для того, чтобы можно было программно громкость крутить.

тут не понял совсем.
зачем её к сигналу-то подмешивать?
передавайте один байт для громкости, другой для звука.
из байта громкости формируете напряжение для TDA7052A rc-цепочкой из шим.
да и сам звук можно шимом формировать, если претензий к качеству нет
0
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 34
08.09.2013, 15:46
Цитата Сообщение от Johmmy0007
так я вам про цену и толкую.
вы думаете куча резисторов+оу сильно дешевле? MCP4921 - 63р стоит.

>>16 бит делал для того, чтобы можно было программно громкость крутить.

тут не понял совсем.
зачем её к сигналу-то подмешивать?
передавайте один байт для громкости, другой для звука.
из байта громкости формируете напряжение для TDA7052A rc-цепочкой из шим.
да и сам звук можно шимом формировать, если претензий к качеству нет
Не-не-не! Какие резисторы? Ужос! :) Про них тут и речи нет! Хотя есть в наличие и такие 10 и 20 к, 1%. Не в этом дело. Да и отдельный ОУ я бы тоже не ставил - хватило бы и самой микросхемы усилка, ИМХО.
Расскажу, по порядку, как смогу подробно, - может еще кому интересно будет... Итак, как же я дошел до жизни такой... (Многа букаф!!! Картинки!!!)
Насчет 16 бит... Вот картинка:

http://www.openmusiclabs.som/wp/wp-content/uptoods/2013/01/daul_pwm_schem_sm.jpg
та, что слева (взято отсюда, там еще много чего интересного есть). Соответственно старший байт выводим на PWM1, а младший - на PWM2. Соотношение резисторов - 1:256, т.е. R2 = 256 * R1. Т.о. получаем "реальные" 16 бит ШИМ-ЦАП, имея в наличии только два 8-битных таймера. Почему 16 бит, а не 8? Да все просто: сразу думал вообще без усилителя делать - подключать динами прямо на выход получившегося ЦАП. Как у ChaN’а:

http://itm-chan.org/works/sd8p/sd8p_hr.png
Только здесь вместо двух резисторов всего один, второй, надо понимать, - сам динамик (32 Ом?.. почему тогда резистор не 8,2к, а 7,5? ну да ладно).
А поскольку громкость регулировать как-то надо, а усилителя нет, то родилась идея программной регулировки - потому, собственно, и 16 бит , а не 8 (рекурсия :) )... Как? Да просто! Исходное значение для выборки умножаем на дробный коэффициент от 0 до 1! Например, для получения уровня -30 дБ, нужно умножить на 0,0316... Максимальное же значение для сигнала, кодированного 8-ю битами, - 255 (если считать от 0, как в PCM U8, т.е. в нашем как раз случае). 255 * 0,0316 = 8,058. Хммм... И это ведь максимальное значение при -30 дБ... Выход? Да 16 бит!!! Как еще?!
Теперь надо придумать, как из 8 бит сделать 16... Нашел вот такой документ, где сказано, что
s16 = (s8 << 8) ^ 0x8000
Но что-то мне подсказывает, что можно заменить менее ресурсоемким в плане вычисления
s16 = (s8 - 128) << 8

Т.е. хотелось обойтись только ОДНОЙ микросхемой!!! Но потом я подумал, что подключать нагрузку напрямую к выводам МК как минимум неприлично...
По поводу TDA7052A... Нашел вот такую схемку:

http://tomyko.net/projects/TEA5767_rodyo/TDA7052A_amplifier.gif
В таком случае для формирования звука хватит и одного канала ШИМ (8 бит), вторым - крутить громкость. Как Вы и говорите. Качество, ИМХО, будет как минимум не хуже, чем у "ЦАП" на резисторах...

Спасибо за внимание!

PS: вариант с чем-то вроде TDA7052A будет-таки самым оптимальным. ИМХО...
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
08.09.2013, 15:53
Цитата Сообщение от Johmmy0007
передавайте один байт для громкости, другой для звука.
софты-то для ковокса тоже все переписать?
Цитата Сообщение от SYMthiTYSK
s16 = (s8 << 8) ^ 0x8000
Но что-то мне подсказывает, что можно заменить менее ресурсоемким в плане вычисления
s16 = (s8 - 128) << 8
однохренствено должно быть, в т.ч. и по скорости.
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
08.09.2013, 17:02
>>Насчет 16 бит... Вот картинка:

to SYMthiTYSK
чёт я не уверен, что так получится соединить, хотя утверждать не возьмусь. я думал соединять уже аналоговые сигналы с учётом веса.
а вы проверяли где-нибудь эту идею, работает?
0
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
24.08.2015, 20:13
Имею некий wav-файл. Например 16 бит знаковый моно 44 кГц частота выборки.
Как программно регулировать громкость?
0
1 / 1 / 0
Регистрация: 19.07.2013
Сообщений: 423
24.08.2015, 21:34
Цитата Сообщение от Pymkvym
Имею некий wav-файл. Например 16 бит знаковый моно 44 кГц частота выборки.
Как программно регулировать громкость?
Амплитуду менять? +/- некоторое число
0
1 / 1 / 0
Регистрация: 18.01.2012
Сообщений: 1,418
24.08.2015, 21:48
Цитата Сообщение от Kytomo8
+/- некоторое число
Это просто сместит сигнал, но не изменит амплитуду.
Цитата Сообщение от Pymkvym
Имею некий wav-файл. Например 16 бит знаковый моно 44 кГц частота выборки.
Как программно регулировать громкость?
Умножать на коэффициент. (коэффициент меньше единицы, разумеется)

Есть чипы усилители, которые имеют цифровой вход для регулировки громкости. Не дорогие, распространенные. Если хочется более народно, то поставить чип цифровой потенциометр.
0
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 1,503
24.08.2015, 22:32
Чип выносим за скобки.
То есть преобразовать целый со знаком тип в - какой?
С плавающей точкой?
Поделить и перевести обратно в целый?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.08.2015, 22:32

При нажатии на первую кнопку открывать проигрыватель музыки, а на вторую - проигрыватель видео
Как сделать что бы при нажатии на первую кнопку открывался проигрыватель музыки а на вторую открывался проигрыватель видео. Help.

Контролер управления вентиляторами или PWM?
Допустим у меня в корпусе есть блок упр. вентиляторами, я хочу поставить Corsair Air Series AF120 только с 3пиновым конектором. Я раньше...

Что выбрать: медиапроигрыватель или Blueray проигрыватель
Я, конечно, отлично понимаю, что научный и технический прогресс не стоит на месте, но тем не менее возник вопрос, что лучше сегодня...

Кулер для i5-4460 GlacialTech Igloo 5620 PWM или Silent
Друзья, хочу купить процессор i5-4460, есть 2 вопроса: Будет ли существенная разница в охлаждении данного процессора между этими...

Вольтметр на Mega32
Здравствуйте. Решил обратиться за помощью, т.к. сам пока такую проблему решить не могу. Увидел в сети вольтметр на AVR. Решил собрать....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru