Форумы
Новое
Сайт
Регистрация
Вход
Регистрация
Что нового?
Поиск
Поиск
Искать только в заголовках
От:
Меню
Вход
Регистрация
Приложение
Установить
Эквалайзеры
Цифровая обработка звуковых сигналов
JavaScript отключён. Чтобы полноценно использовать наш сайт, включите JavaScript в своём браузере.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать
другой
.
Ответить в теме
Сообщение
[QUOTE="Zandy, post: 332235, member: 1823"] Ну конечно, это программный устранитель дребезга контактов. Работает только с бинарными сигналами и с АЦП конечно работать не будет. А это уже гораздо интереснее. Как спектр измеряли и чем? Я ранее писал о пораженных точках. Когда они возникают? Вот смотрите - два десятиразрядных числа: 0b1000000000 и 0b0111111111 Они отличаются на 1 в младшем бите. Мизер, правильно? Округляем оба числа до старшего разряда. Получаем 0b1000000000 и 0b0000000000. И они уже отличаются на 1 в старшем бите. А это уже огого! А мы всего лишь округлили числа. Понимаете? И интеграторы и фильтры тут не помогают. Да, они могут уменьшать количество пораженных точек, сводя их к минимуму, но не устраняют их совсем в силу специфики двоичного исчисления! Тем не менее фильтр как-то работает. Да. Хоть некорректно, но как-то на пользу. Я тоже это заметил. Но после него тоже должны быть пораженные точки. И то, что мы их не чувствуем, может быть по двум причинам. Первая - за счет задержки в регулировке (а он должен ее давать, частота среза достаточно низкая). Ручку крутим туда-сюда, и все время их проскакиваем. Вторая - несовпадение этих точек с индексами переменных табличного массива. Теперь про какой гистерезис я говорил... Смотрите объясняю алгоритм на пальцах. Допустим, зададимся гистерезисом в 4 единицы отсчета. Производим периодическое считывание АЦП с фиксированным периодом (поллинг). Объявляем переменную, в которой храним флаг знака регулировки. Сравниваем текущее значение АЦП с предыдущим. Если флаг положительный и текущее больше предыдущего, запоминаем текущее. Следущее текущее сравниваем с запомненным. Если оно больше и флаг положительный, записываем его в запомненное. И т. д. Если текущее меньше запомненного при положительном флаге, смотрим, насколько меньше. Если разница меньше гистерезиса - ничего не записываем. Смотрим следующий отсчет. Если опять меньше гистерезиса -опять ничего не делаем. И только если текущее становится меньше запомненного на величину гистерезиса или больше, записываем это значение и при этом перекидываем флаг знака регулировки в минус. Далее все тоже самое, только с изменеными знаками. Может сумбурно объяснил, но как-то так. В коде - проще! Немного похоже на способ устранения шумов квантования в старинных дельта или сигма-дельта модуляторах. Так называемое устранение шума незанятого канала. Сейчас такое наверное не применяется, наверное, но когда-то было актуально. Я когда-то занимался речевыми кодеками, но было это очень давно. Еще до вокодеров. Можно привести механический аналог такого гистерезиса. Представьте себе обычный регулятор громкости, но ручка его имеет большой люфт, а у вас трясучка в руках (не про вас конечно, а чисто виртуально). Рука трясется (за рамки люфта трясучка не заходит) резистор стоит на месте. И только если осознанно начинам вращать, резистор крутится. Остановили. Резистор может еще повернуться чуть-чуть за счет тремора в руке. Но дальше будет работать люфт в ручке, защищающий резистор от поворота. А вот спектрами вашими я очень заинтересовался! Очень странно, как регулировка может так влиять на спектр? Ну очень интересно! Конечно мы не знаем, на каком клоке работает эта управляющая билеберда. Или знаем? Наверняка в прерываниях по таймеру... Или под это у них там отдельное низкоскоростное ядро? Честно, я не изучал проц до такой степени. Чего изучать, если повлиять на все это все равно не можешь... Времени, к сожалению, совершенно нет этим заниматься. А очень хочется. Вот кусок кода гистерезиса: [CODE=c]while (1) { U_inst = 0; for (x=0;x<8;x++) U_inst += read_adc(0x01); U_inst = U_inst >> 4; //Ïîëó÷àåì 7-áèòíîå ÷èñëî delta_u = U_inst - U_curr; if (Flag_direct == UP) { if (delta_u > 0) // ðåãóëèðîâêà ââåðõ { U_curr = U_inst; MA12070P_write(0x40, U_curr); // ïåðåäà÷à óðîâíÿ ãðîìêîñòè } if (delta_u < -U_HIST) // ðåãóëèðîâêà âíèç { Flag_direct = DOWN; } } if (Flag_direct == DOWN) { if (delta_u < 0) // ðåãóëèðîâêà âíèç { U_curr = U_inst; MA12070P_write(0x40, U_curr + U_HIST); // ïåðåäà÷à óðîâíÿ ãðîìêîñòè } if (delta_u > U_HIST) // ðåãóëèðîâêà ââåðõ { Flag_direct = UP; } }[/CODE] Это для регулировки MA12070P по I2C. С русской кодировкой нелады, но я не стал править... Ну это так, для примера... [/QUOTE]
Вставить цитаты...
Проверка
4+5 = ?
Ответить
Последние сообщения
К
48 кГц и 86 дБ - возможно ли на виниле?
От: Корвет 200УМ-088С
Сегодня в 02:29
Виниловые проигрыватели
Одиссей-001 Стерео
От: Torin007
Сегодня в 01:14
Усилители СССР
Д
JLH - усилитель Джона Линсли-Худа (John Linsley-Hood)
От: Динозавр
Сегодня в 01:06
Транзисторные
G
20АС-2, 25АС-421, "Электроника Б1-01". Что внутри?
От: Georgi
Сегодня в 01:00
Акустические системы
Д
Германиевые УНЧ
От: Динозавр
Сегодня в 00:59
Транзисторные
Падение на мощных диодах. Свежие опыты
От: IvanRAU
Сегодня в 00:20
Блоки питания и стабилизаторы напряжения
Выбор акустики
От: Colt71
Вчера в 23:28
Выбор акустических систем
Лабораторный БП на модулях AC-DC и DC-DC
От: apalych
Вчера в 23:11
Блоки питания и стабилизаторы напряжения
2SK1058 + 2SJ162 - подделка и оригинал
От: Игорь F°
Вчера в 22:31
Транзисторы
Ч
О здоровье, на здоровье.
От: чатем
Вчера в 22:27
Беседка
Статистика форума
Темы
2,769
Сообщения
206,586
Пользователи
2,203
Новый пользователь
Draiver-A
Поделиться страницей
Facebook
Pinterest
WhatsApp
Электронная почта
Ссылка
Эквалайзеры
Цифровая обработка звуковых сигналов
Сверху
Снизу