tatiyixi2015 发表于 2016-4-28 17:44:17

怎样滤掉50hz的交流干扰?

最近在做个adc处理的项目时,发现微波模块靠近交流时,就会产生干扰。原本一条直线的信号,变成了50hz的正弦波。

creep 发表于 2016-4-28 18:11:02


/*
A、名称:递推平均滤波法(又称滑动平均滤波法)
B、方法:
    把连续取得的N个采样值看成一个队列,队列的长度固定为N,
    每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据(先进先出原则),
    把队列中的N个数据进行算术平均运算,获得新的滤波结果。
    N值的选取:流量,N=12;压力,N=4;液面,N=4-12;温度,N=1-4。
C、优点:
    对周期性干扰有良好的抑制作用,平滑度高;
    适用于高频振荡的系统。
D、缺点:
    灵敏度低,对偶然出现的脉冲性干扰的抑制作用较差;
    不易消除由于脉冲干扰所引起的采样值偏差;
    不适用于脉冲干扰比较严重的场合;
    比较浪费RAM。
E、整理:shenhaiyu 2013-11-01
*/

int Filter_Value;

void setup() {
Serial.begin(9600);       // 初始化串口通信
randomSeed(analogRead(0)); // 产生随机种子
}

void loop() {
Filter_Value = Filter();       // 获得滤波器输出值
Serial.println(Filter_Value); // 串口输出
delay(50);
}

// 用于随机产生一个300左右的当前值
int Get_AD() {
return random(295, 305);
}

// 递推平均滤波法(又称滑动平均滤波法)
#define FILTER_N 12
int filter_buf;
int Filter() {
int i;
int filter_sum = 0;
filter_buf = Get_AD();
for(i = 0; i < FILTER_N; i++) {
    filter_buf = filter_buf; // 所有数据左移,低位仍掉
    filter_sum += filter_buf;
}
return (int)(filter_sum / FILTER_N);
}


creep 发表于 2016-4-28 18:13:06

对于周期性较好的干扰采用滑动平均滤波很不错,比如50HZ工频干扰。

冷月无声 发表于 2016-4-28 18:58:41

楼上高手,学习了,谢谢

NJ8888 发表于 2016-4-28 19:07:24

50Hz很低的,你说你是微波,频率很高,高通就能过滤了

luybpotter 发表于 2016-4-28 19:25:17


这是我用的AD滤波电路,供参考!

zouzhichao 发表于 2016-4-28 19:39:05

本帖最后由 zouzhichao 于 2016-4-28 22:19 编辑

int filter(int data)
{
        #define filter_len 10
        static int buffer = {0};
        static int* buffer_p = (int*)buffer + (filter_len - 1);
        static int sum = (filter_len >> 1);
        sum -= *buffer_p;
        *buffer_p-- = data;
        sum += data;
        if (buffer_p < buffer)
        {
                buffer_p += filter_len;
        }
        return sum / filter_len;
}

编辑原因:原代码有错误

dazelong2018 发表于 2016-6-20 22:12:44

高手,果断收藏,以后试试。

kupica 发表于 2016-6-20 23:21:10

使用抗工频干扰的放大器做成跟随器滤波,效果不是一般的好。

雨雪随行 发表于 2016-6-21 07:47:39

有没有软件带通滤波?

zouzhichao 发表于 2016-6-21 07:53:55

雨雪随行 发表于 2016-6-21 07:47
有没有软件带通滤波?

有啊,你要么?

weichao4808335 发表于 2016-6-21 08:09:19

kupica 发表于 2016-6-20 23:21
使用抗工频干扰的放大器做成跟随器滤波,效果不是一般的好。

有放大器型号么?

fengshuai_1984 发表于 2016-6-21 14:11:08

50Hz陷波器

icexiong 发表于 2016-6-21 14:37:22

luybpotter 发表于 2016-4-28 19:25
这是我用的AD滤波电路,供参考!

能说说原理吗?

Robin_King 发表于 2016-6-21 14:46:01

大学实验之工频陷波器,应该好多这样的电路可用吧?

kupica 发表于 2016-6-21 15:52:59

weichao4808335 发表于 2016-6-21 08:09
有放大器型号么?

精密仪表放大器

雨雪随行 发表于 2016-6-21 18:57:39

zouzhichao 发表于 2016-6-21 07:53
有啊,你要么?

说错了 带阻滤波器 难道是对信号fft之后去掉部分然后再做三角函数?

interstellar_tr 发表于 2016-6-21 19:49:39

kupica 发表于 2016-6-21 15:52
精密仪表放大器

具个栗子, 写个型号出来
大家学习学习
谢谢

zouzhichao 发表于 2016-6-21 21:25:40

雨雪随行 发表于 2016-6-21 18:57
说错了 带阻滤波器 难道是对信号fft之后去掉部分然后再做三角函数?

不用这么麻烦,直接fir

kupica 发表于 2016-6-22 17:41:00

interstellar_tr 发表于 2016-6-21 19:49
具个栗子, 写个型号出来
大家学习学习
谢谢

仪表放大由于是差动放大,即两个输入端之差做放大,这样的放大器具有较高的共模抑制比,可以滤除大部分谐波干扰。仪表放大最典型的是AD620
我印象中AD623,的谐波抑制能力也非常强。

interstellar_tr 发表于 2016-6-22 18:17:19

kupica 发表于 2016-6-22 17:41
仪表放大由于是差动放大,即两个输入端之差做放大,这样的放大器具有较高的共模抑制比,可以滤除大部分谐 ...

谢谢!
涨姿势了

lpdpzc777 发表于 2024-1-12 13:34:51

luybpotter 发表于 2016-4-28 19:25
这是我用的AD滤波电路,供参考!
(引用自6楼)

没看懂怎么用,能讲讲原理吗
页: [1]
查看完整版本: 怎样滤掉50hz的交流干扰?