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

 
 
 
Reply to this topicStart new topic
> Расчет громкости. Помогите вспомнить математику.
zheka
сообщение May 14 2013, 16:27
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Есть задачка.
С помощью ЦАП регулирую громкость (выход ЦАП подключен ко входу усилителя).
Так сложилось, что регулировка сводится к введению в ЦАП значений от 1000 (минимум) до 1800 (максимум).
Делений 20.
Я написал программу, которая увеличивает напряжение ЦАП линейно.
Однако громкость заметно возрастает на первых 5-7 делениях, а до 20 - изменяется незначительно.
НУжен логарифмический регулятор громкости.
Помогите сообразить формулу логарифмическу, у которой на входе будет минимум (1000) и максимум (18000), число делений (20), номер деления (от 0 до 20), а на выходе будет число от 1000 до 1800, которое нужно записать в ЦАП.
Go to the top of the page
 
+Quote Post
AlexeyW
сообщение May 14 2013, 19:51
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 988
Регистрация: 3-11-10
Пользователь №: 60 636



exp(уровень_громкости*ln(18000/10000)/20)
Go to the top of the page
 
+Quote Post
zheka
сообщение May 14 2013, 21:26
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



хм...
я почти что допер уже сам. но у меня формула другая получилась:
Код
DAC->DHR12R1=MIN_VOLUME+pow(10,(log10f(MAX_VOLUME-MIN_VOLUME)/20*volume));


РАзница в двух вещех - я не делю а вычитаю минимум из максимума, и использую десятичный логарифм, а не натуральный.

Вопросы:
1. Почему нужно делить?
2. ПОчему лохарифм натуральный? ВРоде бы децибелы считаются по десятичному логарифму...

кстати, ваша формалу не дает значения, которое можно в ЦАП подставить.
Получается число, исчисляемое единицами.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение May 15 2013, 06:00
Сообщение #4


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Да. Интересно всё-таки человек устроен, что уши, что глаза - везде логарифмическая характеристика...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
_Ivana
сообщение May 15 2013, 06:06
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 13-08-11
Из: Воронеж
Пользователь №: 66 710



Имхо, потому что увеличить/уменьшить в количество раз не требует задания единицы измерения, а прибавить-вычесть требует rolleyes.gif
Go to the top of the page
 
+Quote Post
mcheb
сообщение May 15 2013, 07:31
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 30-05-06
Пользователь №: 17 602



Цитата(zheka @ May 14 2013, 19:27) *
Есть задачка.
С помощью ЦАП регулирую громкость (выход ЦАП подключен ко входу усилителя).
Так сложилось, что регулировка сводится к введению в ЦАП значений от 1000 (минимум) до 1800 (максимум).
Делений 20.
Я написал программу, которая увеличивает напряжение ЦАП линейно.
Однако громкость заметно возрастает на первых 5-7 делениях, а до 20 - изменяется незначительно.
НУжен логарифмический регулятор громкости.
Помогите сообразить формулу логарифмическу, у которой на входе будет минимум (1000) и максимум (18000), число делений (20), номер деления (от 0 до 20), а на выходе будет число от 1000 до 1800, которое нужно записать в ЦАП.

i=1000*(1800/1000)^(j/20)
1000
1029
1060
1092
1124
1158
1192
1228
1265
1302
1341
1381
1422
1465
1509
1554
1600
1648
1697
1747
1800
Как-то так
Go to the top of the page
 
+Quote Post
zheka
сообщение May 15 2013, 07:51
Сообщение #7


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



да... не все так просто...
Оказывается регуляция усиления в микросхеме TDA7052 (стр.7 FIG.3) тоже какая-то логарифмическая.
Потому и не устраивает результат даже с натуральным логарифмом.

Наверное сделаю-ка я массив из 2ти громкостей, забью его в память и горя знать не буду.
А так хотелось чтобы все было "по понятиям"..

Сообщение отредактировал zheka - May 15 2013, 08:03
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение May 15 2013, 08:36
Сообщение #8


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Получается, что меняя линейно напряжение от 0,4В до 1,2В можно получить нужную вам характеристику.
Т.к. судя по картинке на этом участке она фактически линейна (для уха).
ИМХО.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
zheka
сообщение May 15 2013, 11:33
Сообщение #9


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



А я меняю до 1.4 вольт, пытаясь выжать из усилителя все))
К тому же нижняя граница у мня не 0.4 вольт, а побольше, так как от 0.4 до 0.7 реально ничего не слышно, зачем пустые деления?
В общеи, буду решать проблему не математически, а эмпирически)))
Go to the top of the page
 
+Quote Post
AlexeyW
сообщение May 15 2013, 18:29
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 988
Регистрация: 3-11-10
Пользователь №: 60 636



Цитата(zheka @ May 15 2013, 00:26) *
Вопросы:
1. Почему нужно делить?
2. ПОчему лохарифм натуральный? ВРоде бы децибелы считаются по десятичному логарифму...

кстати, ваша формалу не дает значения, которое можно в ЦАП подставить.
Получается число, исчисляемое единицами.

Да, извиняюсь - 10000*exp(уровень_громкости*ln(18000/10000)/20) (т.е. нужно умножить на начальный уровень).
Чувствительность - логарифмическая, значит, чтобы результат был линейным - функция должна быть экспонентой. Далее идут нормировочные коэффициенты - exp(ln(18000/10000))=18000/10000, т.е. во сколько раз меняется во всем диапазоне. Ну а если 20 уровней - нужно делить показатель экспоненты на 20 (точнее, даже на 19 sm.gif.
Децибеллы абсолютно ни при чем. Нужно просто, чтобы совпадали основание логарифма и число, возводимое в степень. То же самиое - 10^(log(18000/10000))=18000/10000.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th June 2025 - 05:59
Рейтинг@Mail.ru


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