Можно применить усредняющий КИХ-фильтр. (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Леонид Иванович 01 октября 2005 г. 01:06
В ответ на: Подскажите алгоритм подавления 50Гц в сигнале. Может примеры у кого имеются. отправлено <font color=gray>Lexandro</font> 30 сентября 2005 г. 16:15

В простейшем случае - с прямоугольным окном длительностью 20 мс. Он имеет АЧХ вида sin(x)/x и подавляет частоту 50 Гц и её гармоники. Если не устраивает высокая чувствительность к отклонению частоты, есть более сложные окна, которые обеспечивают двойные нули АЧХ на первой и некоторых других гармониках. К примеру, вот такое равноамплитудное окно длительностью 30 мс:


FltWin: .DB 1, 1, 1, 1, 0, 0, 0, 0
.DB 1, 1, 1, 1, 0, 0, 0, 0
.DB 1, 1, 1, 1, 1, 1, 1, 1
.DB 1, 1, 1, 1, 1, 1, 1, 1
.DB 1, 1, 1, 1, 1, 1, 1, 1
.DB 0, 0, 0, 0, 1, 1, 1, 1
.DB 0, 0, 0, 0, 1, 1, 1, 1

;Каждые 500 мкс выполнять это:

.equ FltWn = 56 ;digital filter window length

dec DigF ;DigF = DigF - 1
clr temp
ldi ZL,byte1(FltWin*2)
ldi ZH,byte2(FltWin*2)
add ZL,DigF
adc ZH,temp ;add table offset
lpm temp,Z
tst temp
breq No_Smp

in ZL,ADCL ;read ADC code
in ZH,ADCH
sbi ADCSR,ADSC ;start ADC

add AdcLr,ZL
adc AdcHr,ZH

No_Smp: tst DigF ;check DigF
brne F_rdy
ldi DigF,FltWn ;new cycle
rjmp Snd_g
F_rdy: cpi DigF,FltWn-1
brne Snd_g
sts ADCm+0,AdcLr ;store ADC value
sts ADCm+1,AdcHr
clr AdcLr
clr AdcHr



Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru