DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 262|回复: 0
打印 上一主题 下一主题

一种基于单片机的工频干扰滤除快速算法

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 17:28:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
      工频干扰广泛存在各种工业现场中,其产生的途径主要包括输电馈线、照明设备、发动机以及各种电子仪器设备等。一般可以通过滤波电路消除工频干扰,但这必将增加硬件结构的复杂程度。实际上,还可以采用数字信号处理的相关算法,通过软件滤波器滤除工频干扰。软件滤波算法的采用,无疑会在简化电路结构的同时,使系统的硬件资源得到更加充分的利用,并达到降低产品成本的要求。

  AVR单片机是Atmel公司生产的8位精简指令集(RISC)单片机。与同类单片机相比,在运算速度、外设资源、灵活性等方面性能均衡,性价比较高。AVR单片机适合C语言开发,Mega系列AVR单片机还有一个内部硬件乘法器单元。这些特点都为软件滤波器的实现提供了极大的便利。
  1 滤波算法
  常用的单片机滤波算法包括中值滤波、增色值滤波、滑动平均以及复合滤波算法等。工频干扰的频率范围在50Hz附近,可以采用一个截止频率远低于50Hz的低通滤波器来滤除工频干扰。
  假设输入信号x(t),输出信号y(t),则一个RC低通滤波器表达式为:τ[dy(t)]/dt+y(t)=x(t),其中τ为时间常数。
  连续时间信号经过采样后成为离散时间信号,低通滤波器的表达式也变为:
  τ[y(t)-y(k-1)]/ Δt+y(k)=x(t)   (1)
  Δt为采样时间间隔,k为归一化时间。
  由(1)式可得:
  y(k)=[1/(1+τ/Δt)]x(k)+(τ/Δt)/(1+τ/Δt)[y(k-1)  (2)
  令a=(τ/Δt)(1+τ/Δt),代入(2)式,
  y(k)=(1-a)·x(k)+a·y(k-1)   (3)
  对(3)式进行z变换,可得:
  Y(z)=(1-a) ·X(z)+a·z-1·Y(z)
  所以系统的传递函数为:
  假设采样频率Fs=500Hz,a分别取0.8、0.85、0.9、0.95,代入(4)式,利用matlab画出频率响应曲线,如图1。其中50Hz频率对应的幅度衰减见表1。
  表1 50Hz幅度衰减

a衰减
0.8-9.4dB
0.85-11.9dB
0.9-15.5dB
0.95-21.6dB


                                
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-20 05:12 , 耗时 0.077263 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表