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

 
 
6 страниц V  « < 4 5 6  
Reply to this topicStart new topic
> Цифровой Фильтр на ATmega, Цифровой Фильтр на ATmega
Alexashka
сообщение Jan 11 2016, 19:38
Сообщение #76


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

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



Цитата(RedD @ Jan 11 2016, 21:46) *
но дело даже не в постоянной составляющей, например ...
Делаем смещение на 128 ...

Вот именно -все дело в ней, в постоянной составляющей sm.gif эти 128 на которые смещён сигнал -это и есть постоянная составляющая, которую обычно добавляют специально, чтобы корректно оцифровать знакопеременный сигнал.
Делая вычитание 128 Вы удаляете эту постоянку sm.gif
Проблема в том, что точно Вы не знаете какая именно постоянка присутствует на входе АЦП, поэтому иногда сначала накладывают ФВЧ, который ее удаляет в силу своей природы, а потом уже делают все остальные преобразования с сигналом. Теперь понятно, что для этого удобнее работать со знаковыми (signed) переменными.
Цитата
Но и сигнал тогда на вход двухполярный нужен, операционник с двуполярным питанием, как то так, ну ессно смещение в половину AREF,

Ну это если АЦП у Вас в контроллере позволяет работать с двуполярным сигналом (чаще бывает диф.вход,т.е сигнала подается два - полезный со смещением и собственно смещение (или если хотите парафазные сигналы), при этом оба сигнала однополярные, что гораздо проще реализуется в кристаллах, ну и смещение удаляется автоматически самим АЦП).
Go to the top of the page
 
+Quote Post
RedD
сообщение Jan 11 2016, 20:42
Сообщение #77


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 1-01-16
Из: Красный Яр
Пользователь №: 89 904



Да не АЦП однополярный, делаем смещение и ввиду того что сигнал двуполярный он будет играть около точки смещения.

И тогда получается что

adc=ADCL,
if (adc<128) {
x=-(128-adc),
}
else
x=adc-128,

Сообщение отредактировал RedD - Jan 11 2016, 21:41
Go to the top of the page
 
+Quote Post
Alexashka
сообщение Jan 12 2016, 01:39
Сообщение #78


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

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



Цитата(RedD @ Jan 12 2016, 00:42) *
И тогда получается что

adc=ADCL,
if (adc<128) {
x=-(128-adc),
}
else
x=adc-128,

Да можно проще sm.gif
Код
signed char x;
x = ADCL - 128;


И еще, без использования аналогового АРУ 8 бит для оцифровки звука будет слишком мало. Я бы ориентировался на 12 бит (в крайнем случае 10).
Go to the top of the page
 
+Quote Post
RedD
сообщение Jan 12 2016, 09:01
Сообщение #79


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 1-01-16
Из: Красный Яр
Пользователь №: 89 904



Цитата(Alexashka @ Jan 12 2016, 02:39) *
Да можно проще sm.gif
Код
signed char x;
x = ADCL - 128;


И еще, без использования аналогового АРУ 8 бит для оцифровки звука будет слишком мало. Я бы ориентировался на 12 бит (в крайнем случае 10).


x = ADСL - 128; да проще,

Напрашивается мысль смещение вычислять автоматически, ну не знаю, допустим при включении, или используя второй канал АЦП,
Хотя если хорошо застабилизировать цепь смещения, то и так никуда не денется

Про то что 8 бит мало, это понятно, но обкатать можно и на 8 битах,

Кстати у 8 бит avr, тоже есть инструкция ASR ....

Сообщение отредактировал RedD - Jan 13 2016, 02:53
Go to the top of the page
 
+Quote Post
RedD
сообщение Jan 12 2016, 13:57
Сообщение #80


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 1-01-16
Из: Красный Яр
Пользователь №: 89 904



А понял, если наложить ФВЧ то и получим смещение, ....
Но накладно по ресурсам, можно взять резистор 50кОм, подключить к АЦП, заблокировать на корпус ну 10тью МКФдами, и другим каналом мерить,
благо их у avr как минимум восемь.

А усиление ослабление как делать правильно? Через коэффициенты передачи фильтров или напрямую можно ?

По эквалайзеру ....

Сделал три полосовых фильтра с перекрытием в 30 процентов в полосе 0,3 - 3,4 кГц, НЧ, СЧ, ВЧ, для каждого фильтра свой Кус,
int Kus1,Kus2,Kus3;
Прогоняем сигнал через фильтра, каждую полосу или усиливаем или ослабляем или не трогаем Кus=1.
Получаем Y1,Y2,Y3 - выходные данные фильтров,

Y1=Y1*Kus1;
Y2=Y2*Kus2;
Y3=Y3*Kus3;


Правильно ли будет что

Y0=Y1||Y2||Y3, где Y0 общий выходной сигнал ?

По компрессору ...
В статье которую я приводил формула SPL такая

X(n)=10log((1/m)*((Сумма i=0,m-1)X2[n-1])

Может я чего не понял, но это формула работает только для положительных значений adc, так х в квадрате.

Как быть ?????????

И еще много вопросов )

А лана со знаком понятно нужно умножить на (x(n)/x(n)), да и есть более удачный вариант ....

Сообщение отредактировал RedD - Jan 13 2016, 00:59
Go to the top of the page
 
+Quote Post
Alexashka
сообщение Jan 13 2016, 01:04
Сообщение #81


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

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



1) Да как Вам удобней, так и делайте.
2) Y0=Y1||Y2||Y3 а это что? перемножение по модулю? или логическое "или"? biggrin.gif не знаю, я бы просто сложил.
3) Не понял о какой статье идет речь.
Цитата
но это формула работает только для положительных значений adc, так х в квадрате
Да ладно?! (+5) и (-5) в квадрате это не одно и то же? wacko.gif
Go to the top of the page
 
+Quote Post
RedD
сообщение Jan 14 2016, 00:56
Сообщение #82


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 1-01-16
Из: Красный Яр
Пользователь №: 89 904



Ок )

Возми в студенты а ? Вторую вышку хочу получить !

Сообщение отредактировал Herz - Feb 6 2016, 09:54
Go to the top of the page
 
+Quote Post
IMaxI
сообщение Feb 5 2016, 05:00
Сообщение #83


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 25-09-09
Из: Красноярск
Пользователь №: 52 562



Прошу прощение. А не проще ли использовать аппаратный перемножитель (если конечно таковой присутствует в камне). Просто интересно где то год назад делал простенький ПФ 2-рого порядка на MSP430. Точно во сколько он тактов вылез не скажу (не помню). Но возник вопрос не проще, если имеется аппаратный перемножитель с накоплением использовать его, предворительно сместив коэффициенты в целочисленную область. А учитывая что в том же MSP430 два 16-ти разрядных регистра и 32 разрядный аккумулятор то по моему это прямо конфэтка yeah.gif (там кажется 2 такта всего на перемножение с суммированием уходит). Поругайте если не прав.

PS. Ох помню тогда намучился с переносом коэффициентов в целочисленную область (но благо для фильтра это делается 1 раз).

И еще подскажите где можно почитать про реализацию кольцевых буферов (особенно заинтересовало про размещение буфера по определенным адресам (в чем преимущество)) и на какие грабли при этом можно наступить.

Сообщение отредактировал IMaxI - Feb 5 2016, 05:08
Go to the top of the page
 
+Quote Post
Alexashka
сообщение Feb 5 2016, 05:57
Сообщение #84


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

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



Цитата(IMaxI @ Feb 5 2016, 08:00) *
А учитывая что в том же MSP430 два 16-ти разрядных регистра и 32 разрядный аккумулятор

У автора какбы не совсем MSP430 sm.gif
А так да, штука полезная, у Silabs тоже есть в некоторых камнях встроенный МАС (multiple and accumulate), правда на 40 бит (32 по моему опыту не хватает даже для фильтра 4го порядка -например данные 16 бит, коэфф.тоже 16 бит -это уже 32, плюс сумма нескольких слагаемых - и вот уже переполнение). Чем хорош предложенный тут метод -он сразу ограничивает разрядность данных уже при умножении на коэффициент, поэтому для сумматора можно использовать переменные небольшой разрядности.
Go to the top of the page
 
+Quote Post
RedD
сообщение Feb 6 2016, 08:43
Сообщение #85


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 1-01-16
Из: Красный Яр
Пользователь №: 89 904



dspic тоже не плох
Go to the top of the page
 
+Quote Post
RedD
сообщение Apr 12 2017, 13:26
Сообщение #86


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 1-01-16
Из: Красный Яр
Пользователь №: 89 904



http://www.cqham.ru/forum/showthread.php?3...-Mixer-RedD-%E0
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd June 2017 - 07:05
Рейтинг@Mail.ru


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