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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Low Cost воспроизведение звука на паре выходов PWM
GetSmart
сообщение Dec 4 2016, 11:57
Сообщение #1


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Хочу поделиться идеей воспроизведения звука на процессоре почти без аналогового тракта. Может уже где-то было. Класс D. Полный мост. У NXP CM0/CM3 и на других линейках есть таймеры с 4-мя MATCH регистрами. На две ножки процессора можно вывести два MATCH-сигнала в режиме PWM, работающих в противофазе от некоторого центра периода. Ещё один MATCH-регистр задаёт период PWM. И ещё один задаёт задержку входа в прерывание таймера для оптимальной позиции перезагрузки двух MATCH-регистров - перед самым обнулением счётчика таймера. Прерывание, конечно же, пишется на ассемблере. Работающих в противофазе это, например, когда при выводе сэмпла, равного 0 будет PWM1=X, PWM2=X, где X примерно половина периода. То есть переключение выходов будет одновременно и в середине и в конце периода. При выводе сэмпла, равного 1 будет PWM1=X+1, PWM2=X. При выводе сэмпла, равного -1 будет PWM1=X-1, PWM2=X. При выводе сэмпла, равного 2 будет PWM1=X+1, PWM2=X-1. При выводе сэмпла, равного -2 будет PWM1=X-1, PWM2=X+1.

Принципиальная схема:
к ножкам MATCH подключаётся (ключевой) драйвер на нужное напряжение, а между парой выходов драйвера - один или два LC-фильтра последовательно, и далее громкоговоритель. Громкость регулируется программно.

Сообщение отредактировал GetSmart - Dec 4 2016, 12:08


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 4 2016, 12:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (GetSmart @ Dec 4 2016, 13:57) *
Хочу поделиться идеей воспроизведения звука....

Идея, как идея. Класс D сами-же написали. Ничего необычного. Тут имеет стоимость конкретная реализация. Если сделаете реализацию моноканала ватт на 25-50 в речевом диапазоне, то можем поговорить о стоимости sm.gif. Хотя, пожалуй сначала устроит и "линейный выход" нагруженный на трансформатор.



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 4 2016, 12:46
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (GetSmart @ Dec 4 2016, 14:57) *
Прерывание, конечно же, пишется на ассемблере.
Ужас. А что, разве у NXP CM0/CM3 нет буфера на регистры сравнения и обновления рабочих регистров из буфера по событию переполнения?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Ydaloj
сообщение Dec 4 2016, 13:03
Сообщение #4


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

Группа: Свой
Сообщений: 1 879
Регистрация: 20-06-11
Из: Карелия, Петрозаводск
Пользователь №: 65 799



в чём преимущество по отношению к ШИМ-2, которая на одном выходе?
ноль - открыта одна диагональ моста
единица - другая диагональ
скважность =2 - диагонали работают попеременно, нет звука


--------------------
путь наименьшего сопротивления проходит по пути наитолстого провода (с)
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Dec 4 2016, 13:28
Сообщение #5


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(zltigo @ Dec 4 2016, 16:23) *
Ничего необычного. Тут имеет стоимость конкретная реализация.

Это же лазер полный мост. При одинаковом питании и сопротивлении нагрузки - выходная мощь выше в 4 раза. Относительно класса D на одном PWM-выходе. Но из-за полного моста динамик нежелательно (из-за ЭМИ) далеко располагать от выходных ключей. И эта схема не для т.н. линейного выхода, а для управления относительно мощной нагрузкой с предельно высоким КПД. Стоимость схемотехники как раз минимальна.

Сообщение отредактировал GetSmart - Dec 4 2016, 13:34


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 4 2016, 13:50
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (GetSmart @ Dec 4 2016, 15:28) *
И эта схема не для т.н. линейного выхода, а для управления относительно мощной нагрузкой с предельно высоким КПД.

Я же написал "сначала устроит" - так сказать для отработки идеи. А про уровень мощности, которая интересует, тоже уже писал. Но для мощи надо уже уже реализовывать и защиты, ибо голые ключи для реальной жизни негодны. Простота резко уменьшится sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Alexashka
сообщение Dec 4 2016, 15:37
Сообщение #7


Практикующий маг
******

Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576



Искажений будет целый вагон. Посмотрите область применения класса Д - это сабвуферы, т.е частоты на порядки ниже частоты ШИМ.
А в усилителях в интегральном исполнении применяются различные методы для снижения КНИ, как например ООС.
А так достаточно одного канала ШИМ, второй получается в противофазе обычным драйвером MOSFET, т.е берется двухканальный драйвер, один канал у которого прямой, другой инверсный (вы ведь не предполагаете качать MOSFET напрямую ножкой контроллера?)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 4 2016, 15:48
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Alexashka @ Dec 4 2016, 17:37) *
Посмотрите область применения класса Д - это сабвуферы.

Да ну? sm.gif. Значит, например, у меня в машине один сплошной сабвуфер на 605W JBL впихнул sm.gif, а про 7.1 и 14 динамиков наврал sm.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Ydaloj
сообщение Dec 4 2016, 19:35
Сообщение #9


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

Группа: Свой
Сообщений: 1 879
Регистрация: 20-06-11
Из: Карелия, Петрозаводск
Пользователь №: 65 799



zltigo, +1. У известной IRS2092 тактовая частота 800кГц, она весь звуководй диапазон с лёгкостью переплюнет


--------------------
путь наименьшего сопротивления проходит по пути наитолстого провода (с)
Go to the top of the page
 
+Quote Post
Alexashka
сообщение Dec 5 2016, 06:39
Сообщение #10


Практикующий маг
******

Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576



Цитата(Ydaloj @ Dec 4 2016, 22:35) *
У известной IRS2092 тактовая частота 800кГц, она весь звуководй диапазон с лёгкостью переплюнет

Ну ок. Только у него способ формирования ШИМ несколько иной - аналоговый, и охвачен глубокой ООС. Да и я бы не ставил его в ряд с усилителями Hi-Fi класса, ну да на 1кГц уровень искажений довольно низкий 0,01%, но вот что там на 20кГц производитель скромно умалчивает rolleyes.gif

Да и по реализации...никаких ассемблерных вставок не должно быть. Это сразу на порядок (если не на 2) увеличит КНИ и С/Ш. Делается это через DMA и регистры автоматической перезагрузки, тогда все времена будут жесткими, т.к перезагрузка будет происходить сразу после переполнения таймера.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 5 2016, 07:20
Сообщение #11


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Alexashka @ Dec 5 2016, 08:39) *
Да и по реализации...никаких ассемблерных вставок не должно быть. Это сразу на порядок (если не на 2) увеличит КНИ и С/Ш. Делается это через DMA и регистры автоматической перезагрузки, тогда все времена будут жесткими, т.к перезагрузка будет происходить сразу после переполнения таймера.


Какие-то прерывания все равно будут. Ассемблер только не сильно поможет.
Я бы уже думал над фазовым ругилированием многканальных PWM. Чтобы делать направленный звук.
Скажем 8-мь динамиков и отслеживать слушателя по сигналу Bluetooth с его смартфона. biggrin.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение Dec 8 2016, 09:41
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Сергей Борщ @ Dec 4 2016, 15:46) *
Ужас. А что, разве у NXP CM0/CM3 нет буфера на регистры сравнения и обновления рабочих регистров из буфера по событию переполнения?

Не знаю какой NXP имеется в виду автором, но у LPC17xx вполне себе есть DMA, принимающий события от таймеров. Вероятно просто ТС "не умеет его готовить"... wink.gif
В таких задачах - это самое то - заранее просчитать последовательность необходимых значений, сложить в буфер DMA и спокойно заниматься другими полезными делами, вместо того чтобы дёргаться в прерываниях.

Цитата(AlexandrY @ Dec 5 2016, 10:20) *
Какие-то прерывания все равно будут. Ассемблер только не сильно поможет.

Их будет на порядки меньше.
Всё что можно делать пакетно, надо делать пакетно. А дёргаться в прерываниях только чтобы загружать данные в регистры периферии - это подход сродни реализации интерфейсов методом ногодрыга.
Это лучший способ угробить производительность ARM-ов до уровня какого-нить AVR.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Dec 8 2016, 11:10
Сообщение #13


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



как раз сегодня прочитал это.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Dec 8 2016, 11:45
Сообщение #14


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(GetSmart @ Dec 4 2016, 14:57) *
Хочу поделиться идеей воспроизведения звука на процессоре почти без аналогового тракта. Может уже где-то было. Класс D. Полный мост. ...

Принципиальная схема:
к ножкам MATCH подключаётся (ключевой) драйвер на нужное напряжение, а между парой выходов драйвера - один или два LC-фильтра последовательно, и далее громкоговоритель. Громкость регулируется программно.


Давайте посчитаем...
"один или два LC-фильтра последовательно" дадут наклон АЧХ либо -40 либо -80 дб/дек. Это значит, что для того чтобы подавить частоту квантования в 1000 раз нам нужно иметь 60 дб. Это значит что "по горизонтали" нам надо иметь пару декад. Да, еще неплохо учесть "горбик", который даст LC-фильтр... Чтобы на него не попасть.. И чем лучше добротность, тем этот горбик больше... Так вот, сколько там процессор сможет дать период у ШИМ? Если тактовая счетчика 50 Мгц (я точно не знаю, пусть хоть так), то при 1 % ошибки это будет 127 или 7 разрядов... А реально наверное, что регистры имеют 8 разрядов... Следовательно период ШИМ - не лучше чем 5 Мгц, а на самом деле и наверняка не будет выше 1 Мгц. Тогда от этого отступаем влево 2 декады - получим 10 Кгц, это то, что пройдет через фильтр без подавления.... Правда можно наверное программно делать подъем высоких частот...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Dec 10 2016, 03:58
Сообщение #15


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(zltigo @ Dec 4 2016, 17:50) *
Но для мощи надо уже уже реализовывать и защиты, ибо голые ключи для реальной жизни негодны. Простота резко уменьшится sad.gif

У меня пока предохранитель по питанию стоит. Не знаю, надо ли усложнять. Динамик рядом. От КЗ защитит предохранитель, а от обрыва ничего не надо. Защищать не ключи надо, а динамик, - от постоянки. Это если лоукостить даже на ёмкости последовательно с динамиком )))

Упд.
Хотя, для защиты от обрыва тоже паралельно ёмкости в LC-фильтре нужно что-то ставить. Резисторы, супрессор или что-то ещё.
Для мощных схем актуально иметь какой-то детектор обрыва.

Сообщение отредактировал GetSmart - Dec 10 2016, 22:28


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 1st July 2025 - 04:52
Рейтинг@Mail.ru


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