基于C单片机的数字滤波要点
数字滤波程序,方法,优缺点

} for (j=0;j<N-1;j++) { for (i=0;i<N-j;i++) { if ( value_buf[i]>value_buf[i+1] ) { temp = value_buf[i]; value_buf[i] = value_buf[i+1]; value_buf[i+1] = temp; } } } for(count=1;count<N-1;count++) sum += value[count]; return (char)(sum/(N-2)); } 6、限幅平均滤波法 /* */ 略 参考子程序 1、 3 7、一阶滞后滤波法 /* 为加快程序处理速度假定基数为 100 ,a=0~100 */ #define a 50 char value; char filter() { char new_value; new_value = get_ad(); return (100-a)*value + a*new_value; } 8、加权递推平均滤波法 /* coe 数组为加权系数表,存在程序存储区。*/ #define N 12 char code coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12}; char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12; char filter() { char count; char value_buf[N]; int sum=0; for (count=0,count<N;count++) { value_buf[count] = get_ad();
10种简单的数字滤波算法(C语言源程序)

10种简单的数字滤波算法(C语言源程序)假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad();1、限副滤波/* A值可根据实际情况调整value为有效值,new_value为当前采样值滤波程序返回有效的实际值*/#define A 10char value;char filter(){char new_value;new_value = get_ad();if ( ( new_value - value > A ) || ( value - new_value > A )return value;return new_value;}2、中位值滤波法/* N值可根据实际情况调整排序采用冒泡法*/#define N 11char filter(){char value_buf[N];char count,i,j,temp;for ( count=0;count<n;count++)< p="">{value_buf[count] = get_ad();delay();for (j=0;j<n-1;j++)< p="">{for (i=0;i<n-j;i++)< p="">{if ( value_buf[i]>value_buf[i+1] ){temp = value_buf[i];value_buf[i] = value_buf[i+1];value_buf[i+1] = temp;}}}return value_buf[(N-1)/2];}3、算术平均滤波法*/#define N 12char filter(){int sum = 0;for ( count=0;count<n;count++)< p=""> {sum + = get_ad();delay();}return (char)(sum/N);}4、递推平均滤波法(又称滑动平均滤波法)/*#define N 12char value_buf[N];char i=0;char filter(){char count;int sum=0;value_buf[i++] = get_ad();if ( i == N ) i = 0;for ( count=0;count<n,count++)< p="">sum = value_buf[count];return (char)(sum/N);}5、中位值平均滤波法(又称防脉冲干扰平均滤波法)/* */#define N 12char filter(){char count,i,j;char value_buf[N];int sum=0;for (count=0;count<n;count++)< p="">{value_buf[count] = get_ad();delay();}for (j=0;j<n-1;j++)< p="">for (i=0;i<n-j;i++)< p="">{if ( value_buf[i]>value_buf[i+1] ){temp = value_buf[i];value_buf[i] = value_buf[i+1];value_buf[i+1] = temp;}}}for(count=1;count<n-1;count++)< p="">sum += value[count];return (char)(sum/(N-2));}6、限幅平均滤波法/**/略参考子程序1、37、一阶滞后滤波法/* 为加快程序处理速度假定基数为100,a=0~100 */ #define a 50char value;char filter(){char new_value;new_value = get_ad();return (100-a)*value + a*new_value;}8、加权递推平均滤波法/* coe数组为加权系数表,存在程序存储区。
基于单片机系统的数字滤波方法的研究_向红军

"))F , A!B : *FD*!’
刘 晖 ’ 微 机 控 制 系 统 的 数 字 滤 波 算 法 <@>’ 现 代 电 子 技 术 , <#> 任 克 强 ,
"))F , AFB : =*D=G’ 作者简介:
向 红 军 (=+G=D ) , 男, 硕士研究生, 主要研究方向: 机电系统检测技 术。 收稿日期: "))*D)!D==
!"Z A’"
# !!
" "BA
!"#!"BA !!!"#!"BA "!-
(A)
中位值滤波法
中位值滤波法是对某一被测参 数 连 续 采 样 " 次
(" 一般取奇数) ,然后把 " 次采样值按大小顺序排成 一列, 排序一般采取 “冒泡排序法” , 然后取中间值为 本次采样值。中位值滤波能有效克服因偶然因素引起 的波动或采样器不稳定引起的误码等造成的 脉 冲 干 扰。对温度、 液位等缓慢变化的被测参数采用此法能
<’B 一阶滞后滤波
一阶滞后滤波又称为低通滤波或一阶惯性滤波。 在模拟量输入通道等硬件电路中,常用一阶惯性 EF 模拟滤波器来抑制干扰, 当这种模拟方法来实现对低 频干扰的滤波时, 首先遇到的问题是要求滤波器有大 的时间常数和高精度的 EF 网络。 时间常数 ! 越大, 要 求 ( 值越大, 其漏电流就也越大 , 从 而 使 EF 网 络 的
= 常用基于单片机的数字滤波算法 A’A 程序判断法 工程实践表明< 许多物理量的变化都存在一定的 范围< 相邻两次采样值 !" 和 !"BA 之间的变化肯定会有
一定的限度。程序判断滤波就是根据实践经验确定出 相 邻 两 次 采 样 信 号 之 间 可 能 出 现 的 最 大 偏 差 为 !- , 若实际相邻两次采样值超出此偏差值< 则表明发生了 干扰, 剔出该数据, 并用 !"BA 代替 !"; 若小于此偏差值 < 可将该信号作为本次采样值。这样可以近似推出:
基于单片机的程控滤波器设计要点

摘要在电子电路中,滤波器是不可或缺的部分,其中有源滤波器更为常用。
一般有源滤波器由运算放大器和RC元件组成,对元器件的参数精度要求比较高,设计和调试。
也比较麻烦。
美国Maxim公司生产的可编程滤波器芯片MAX270可以通过编程对各种低频信号实现低通、高通、带通、带阻以及全通滤波处理,且滤波的特性参数如中心频率、品质因数等,可通过编程进行设置,电路的外围器件也少。
本文设计并实现了由MAX270构成的程控滤波器电路设计和实现。
单片机AT89S52是控制程序的控制过滤器的核心。
通过单片机控制继电器的吸合来控制增益电阻的连接进而实现了增益的0dB到60dB每10dB步进可调;通过单片机控制二阶低通程控滤波器MAX270,完成了在-3dB时截止频率fc在1kHz~20kHz范围内可调的低通滤波器的设计,调节截止频率步进为1kHz,并用LCD来显示设置参数。
应用Matlab计算椭圆滤波函数的传递函数,建立电路网络,设计出了四阶椭圆低通滤波器。
关键词:程控滤波器可编程滤波器芯片单片机ABSTRACTIn the electronic circuit, the filter is the indispensable part. Especially the active filter is used more commonly. Generally the active filter is composed of the operational amplifier and the RC part. Its requirement to the accuracy of the device's parameter is quite high, and the design and the debugging are also quite troublesome.The filter chip MAX262 which produced by American Maxim Corporation is capable of achieving low-pass, high-pass, band-pass, band elimination to each kind of low-frequency signal through programming, and the filter's characteristic parameter like center frequency, the quality factor and so on may set through programming, and the periphery component of electric circuit are also few. This article design and completed the design the design and realize of the program control filter circuit which make up of the MAX270.Monolithic integrated circuit AT89S52 is the control core of the program control filter. Controlled by the microcontroller to control relays pull the gain resistor connected in turn to achieve a gain of 0dB to 60dB 10dB step adjustable each; second-order low-pass through the SCM programmed filter MAX270, when completed in the-3dB cutoff frequency fc at 1kHz ~ 20kHz range adjustable low-pass filter design, cut-off frequency adjustment step is 1kHz, using the LCD to display the configuration parameters. Application of Matlab computing elliptic filter function of the transfer function, the establishment of the circuit network, to design a fourth-order elliptic low-pass filter.Key words:Program control Filter Programmable filter chip SCM目录1 绪论 (1)1.1 滤波器的发展 (1)1.2 课题研究的意义 (1)2 系统设计 (3)2.1 滤波器相关知识 (3)2.1.1 滤波器的分类 (3)2.2 单片机相关知识 (4)2.2.1 单片机的产生与发展 (4)2.3 系统方案设计 (6)2.3.1设计要求 (6)2.3.2 各模块方案的选择 (6)2.3.3 最终方案 (7)2.4 理论分析与计算 (10)3 硬件设计 (13)3.1 放大器模块 (13)3.2 单片机控制滤波器模块 (14)3.3 操作及显示模块 (18)4 软件设计 (20)4.1 开发软件及环境简介 (20)4.1.1 Keil (20)4.1.2 Proteus (20)4.2 系统主要程序 (21)5 系统测试 (23)5.1 指标测试 (23)5.2 误差分析 (23)5.3 功能实现 (24)结论 (26)谢辞 (27)参考文献 (28)附录 (29)1 绪论1.1 滤波器的发展从广义上讲,任何对某些频率(相对于其他频率来说)进行修正的系统称为滤波器。
单片机滤波算法

单片机滤波算法引言在许多嵌入式系统中,采集到的信号可能会受到各种干扰,如噪声、杂波等,这些干扰会使得信号变得不稳定,难以准确分析和处理。
为了降低这些干扰的影响,需要对采集到的信号进行滤波处理,将其平滑或去除掉一些不必要的波动,使得信号更加准确和可靠。
本文将介绍一种常用的单片机滤波算法,帮助读者了解如何在单片机中实现信号滤波。
一、滤波算法概述滤波算法是一种通过对信号进行加权平均或滑动平均等处理方式,以去除误差、噪声等不必要的波动,使得信号更加平稳和准确的方法。
常用的滤波算法有移动平均滤波、中值滤波、卡尔曼滤波等,它们各有特点,适用于不同的应用场景。
移动平均滤波是一种简单有效的滤波方法,它通过对连续采集到的信号值进行加权平均,计算出一个平滑的信号值。
移动平均滤波的原理是,取一定长度的信号窗口,将窗口中的信号值进行加权平均,得到一个新的信号值,然后将窗口向后滑动一个位置,重复进行加权平均,直到计算结束。
移动平均滤波可以有效地去除信号中的高频噪声,使得信号更加平稳和可靠。
中值滤波是一种基于排序的滤波方法,它通过对采集到的信号值进行排序,取其中间值作为新的信号值。
中值滤波的原理是,将一定长度的信号窗口中的信号值进行升序排列,然后取排序后的中间值作为新的信号值,重复进行这个过程,直到计算结束。
中值滤波适用于对信号中的脉冲噪声进行滤除,可以有效地去除突发性的噪声干扰,使得信号更加平滑和准确。
卡尔曼滤波是一种基于状态估计的滤波方法,它通过对信号的状态进行估计和预测,将测量值和预测值进行加权组合,得到一个更准确的信号值。
卡尔曼滤波的原理是,根据系统的状态方程和观测方程,通过状态估计和状态预测,融合测量值和预测值,得到一个最优的估计值,使得信号的估计更加稳定和准确。
卡尔曼滤波适用于对信号中的随机噪声进行滤除,可以有效地提高信号的估计精度和稳定性。
二、移动平均滤波移动平均滤波是一种简单有效的滤波方法,它通过对连续采集到的信号值进行加权平均,计算出一个平滑的信号值。
单片机数字滤波算法

单片机主要作用是控制外围的器件,并实现一定的通信和数据处理。
但在某些特定场合,不可避免地要用到数学运算,尽管单片机并不擅长实现算法和进行复杂的运算。
下面主要是介绍如何用单片机实现数字滤波。
在单片机进行数据采集时,会遇到数据的随机误差,随机误差是由随机干扰引起的,其特点是在相同条件下测量同一量时,其大小和符号会现无规则的变化而无法预测,但多次测量的结果符合统计规律。
为克服随机干扰引起的误差,硬件上可采用滤波技术,软件上可采用软件算法实现数字滤波。
滤波算法往往是系统测控算法的一个重要组成部分,实时性很强。
1采用数字滤波算法克服随机干扰的误差具有以下优点:1.数字滤波无需其他的硬件成本,只用一个计算过程,可靠性高,不存在阻抗匹配问题。
尤其是数字滤波可以对频率很低的信号进行滤波,这是模拟滤波器做不到的。
2.数字滤波使用软件算法实现,多输入通道可共用一个滤波程序,降低系统开支。
3.只要适当改变滤波器的滤波程序或运算,就能方便地改变其滤波特性,这对于滤除低频干扰和随机信号会有较大的效果。
4.在单片机系统中常用的滤波算法有限幅滤波法、中值滤波法、算术平均滤波法、加权平均滤波法、滑动平均滤波等。
2限幅滤波算法该运算的过程中将两次相邻的采样相减,求出其增量,然后将增量的绝对值,与两次采样允许的最大差值A进行比较。
A的大小由被测对象的具体情况而定,如果小于或等于允许的最大差值,则本次采样有效;否则取上次采样值作为本次数据的样本。
算法的程序代码如下:#define A //允许的最大差值char data; //上一次的数据char filter(){char datanew; //新数据变量datanew=get_data(); //获得新数据变量if((datanew-data)>A||(data-datanew>A))return data;elsereturn datanew;}说明:限幅滤波法主要用于处理变化较为缓慢的数据,如温度、物体的位置等。
基于单片机的数字滤波算法分析与实现

第24卷第6期 齐 齐 哈 尔 大 学 学 报 Vol.24,No.6 2008年11月 Journal of Qiqihar University Nov.,2008基于单片机的数字滤波算法分析与实现朱恒军,王发智,姚仲敏(齐齐哈尔大学,黑龙江 齐齐哈尔 161006)摘要:以低运算能力单片机为基础,对其数字滤波的基本原理、方法进行分析、归纳、总结,并在51单片机上实现,为进一步深入研究低运算能力嵌入式系统上的数字信号处理方法奠定基础。
关键词:单片机;数字滤波;嵌入式系统;数字信号处理中图分类号:TN911.7 文献标识码:A 文章编号:1007-984X(2008)06-0053-02单片机等低运算能力嵌入式系统应用广泛。
在用单片机进行数据采集时,经常会遇到采集速度慢、数据易出现随机误差等问题。
数字滤波技术由于其运算速度快,可方便地改变其滤波特性等特点,在解决低频干扰、随机信号的滤波等方面效果明显优于模拟滤波技术。
在单片机等低运算能力嵌入式系统上研究可实现的数字信号处理方法具有重要的现实意义。
1 常用的数字滤波算法通过对单片机应用环境的分析,在实践中得到一些单片机中能够实现的简单数字滤波算法。
常用的有以下几种:限幅滤波法、中值滤波法、算术平均滤波法、加权平均滤波法、滑动平均滤波法、低通滤波法、复合滤波法。
2 数字滤波算法基本原理1)限幅滤波法。
限幅滤波法是把两次相邻的采样值相减,求出增量并用绝对值表示,然后与两次采样允许的最大值⊿Y 进行比较。
⊿Y 的大小由被测对象的具体情况而定,若小于或等于⊿Y ,则取本次样本值;若大于⊿Y ,则取上次采样值作为本次采样数据的样本。
2)中值滤波法。
中值滤波法是将某一参数连续采样N 次,N 通常是奇数,然后把N 次采样值按从小到大排队,再取中间值作为本次采样值。
3)算术平均滤波法。
算术平均值滤波法是连续取N 次采样值进行算术平均。
4)加权平均滤波法。
加权平均滤波法是对N 次采样值分别乘以不同的加权系数之后再求累加和。
基于单片机系统的数字滤波方法研究

基于单片机系统的数字滤波方法研究作者:马桂英来源:《科学家》2017年第06期摘要随着现代科学技术的发展,数字技术也得到了较好的进步,数字滤波技术在单片机系统中的应用也越来越广泛。
在研究中,笔者将对现阶段比较常见的几种数字滤波方法进行论述,并通过对比分析将这些方法的优缺点和适用的对象进行论述。
关键词单片机;数字滤波;研究中图分类号 TP2 文献标识码 A 文章编号 2095-6363(2017)06-0077-01数字滤波是由软件算法来实现的,和硬件滤波将比较,优势在于不需要增加硬件设备,仅仅需要在程序进入控制算法之前加设一个数字滤波程序。
在微机化控制系统之中,每一个信号的采集通道都可以共用同一个数字滤波程序,这就比硬件滤波减少了多个滤波器的使用。
除此之外,数字滤波的使用更为灵活,而且只要进行适当的滤波程序改变,就能够实现不同的滤波效果。
就目前的而言,有很多基于单片机的数字滤波方法,常见的几种数字滤波方法有程序判断法、中位值滤波法、算术平均滤波法等。
1 常用的基于单片机的数字滤波算法1.1 程序判断法在大量的工程实践结果的表现下,很多的物理量的变化其实都存在着一定的范围,例如相邻的两次采样值yM和yM-1之间的变化就有着一定的限度。
程序判断滤波就是根据实践的结论量进行两次采样信号之间的最大偏差值的确认,一旦相邻采样值超出了偏差值以后,就表明其中存在着干扰问题,需要将这部分数据进行剔除,也就是需要用ym-1来代替ym。
当小于偏差值得时候,那么该信号就能够作为本次的采样值。
1.2 中位值滤波法对于中位值滤波法而言,就是将某一个被测参数进行连续的采样,然后将连续采样的值根据大小顺序进行排列,排列的主要方法是“冒泡排序法”,通过“冒泡排序法”将数据进行排序之后,选择中间值作为采样的采样值。
对于中位值滤波法而言,其很大程度上能够克服由于偶然因素导致的数据波动或者因为采样器不稳定引发的误码现象。
中位值滤波法主要应用于温度、液体等变化比较缓慢的被测参数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
湖北师范学院教育信息与技术学院2010级信息工程专业综合课程社稷(一)HUBEI NORMAL UNIVERSITY综合课程设计(一)Integrated Curriculum Design(1)任务分工:尤杉:整体系统设计及编程调试。
柯俊:进行资料的查询。
钱德超:辅助编程,及proteus电路图的绘制。
陈小浩:完成word文档的编辑。
摘要 (I)1 绪论 (1)1.1仿真软件介绍 (2)1.2数字滤波器介绍 (2)2 单片机和AD/DA相关知识 (4)2.1 51单片机相关知识 (4)2.2 AD转换器相关知识 (5)2.3 DA转换器相关知识 (6)3 数字滤波器设计 .................................. 错误!未定义书签。
3数字滤波器系统设计 (7)3.1 数字滤波器理论分析设计 (7)3.2 单片机电路 (9)3.3 数据采集电路............................... 错误!未定义书签。
3.4 数模转换输出电路 (10)3.5 数字电压表系统电路原理图 (11)4 程序设计 (11)4.1程序流程图 (11)4.2 AD转换器程序.............................. 错误!未定义书签。
4.3 程序代码 (12)6 心得与体会 (20)参考文献 (21)1 绪论1.1仿真软件介绍现代工业控制系统中,电路系统越来越复杂,因而带来的相互干扰也越来越强烈,模拟滤波电路已经不能满足要求,数字滤波应运而生。
数字滤波器的实现过程的实现过程是把输入的模拟信号数字化,也就是由采样器对输入的模拟信号进行周期性的采样,并对每个样本进行量化和编码,即模数转换。
从ADC输出的数字信号送入到数字信号处理器进行处理变化,处理器输出的数字信号再通过数模转换为模拟信号,这个过程要用到DAC来转换实现模拟信号的输出。
1.2数字滤波器介绍Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:(1)现了单片机仿真和SPICE电路仿真相结合。
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
(2)支持主流单片机系统的仿真。
目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
(3)提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。
(4)具有强大的原理图绘制功能。
可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。
还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。
配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。
在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。
PROTEUS 是单片机课堂教学的先进助手。
PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。
前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。
它的元器件、连接线路等却和传统的单片机实验硬件高度对应。
这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。
课程设计、毕业设计是学生走向就业的重要实践环节。
由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。
2 单片机和AD/DA相关知识2.1 51单片机相关知识51单片机是对目前所有兼容intel 8031指令系统的单片机的统称。
该系列单片机的始祖是intel的8031单片机,后来随着技术的发展,成为目前广泛应用的8为单片机之一。
单片机是在一块芯片内集成了CPU、RAM、ROM、定时器/计数器和多功能I/O口等计算机所需要的基本功能部件的大规模集成电路,又称为MCU。
51系列单片机内包含以下几个部件:一个8位CPU;一个片内振荡器及时钟电路;4KB的ROM程序存储器;一个128B的RAM数据存储器;寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;32条可编程的I/O口线;两个16位定时/计数器;一个可编程全双工串行口;5个中断源、两个优先级嵌套中断结构。
51系列单片机如下图:图1 51单片机引脚图ADC0808是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式AD转换器。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
(1)主要特性:1)8路输入通道,8位A/D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)4)单个+5V电源供电5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度7)低功耗,约15mW。
(2)内部结构ADC0808是CMOS单片型逐次逼近式A/D转换器,内部结构如图13.22所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。
图2 ADC0808引脚根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。
主要性能如下:(1)分辨率为8位;(2)电流稳定时间1us;(3)可单缓冲、双缓冲或直接数字输入;(4)只需在满量程下调整其线性度;(5)单一电源供电(+5V~+15V);(6)低功耗,20mW。
DAC0832引脚功能电路应用原理图DAC0832是采样频率为八位的D/A转换芯片,集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。
所以这个芯片的应用很广泛,关于DAC0832应用的一些重要资料见下图: D/A转换结果采用电流形式输出。
若需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放大器实现。
运放的反馈电阻可通过RFB端引用片内固有电阻,也可外接。
DAC0832逻辑输入满足TTL电平,可直接与TTL电路或微机电路连接。
图2 ADC0809引脚图2 ADC0809引脚图3 DAC0832引脚3数字滤波器系统设计3.1 数字滤波器理论分析设计数字滤波方法有很多种,如中值滤波、算术平均滤波、加权平均滤波,限幅滤波等等。
本次课程设计我选用的是限幅滤波方法和中位值滤波法限幅滤波的基本原理是把两次相邻时刻(n和n-1)的采样值Yn和Yn-1相减,求出其差值,以绝对值表示,然后将这个差值与两次采样允许的最大偏差值ΔY比较,如果两次采样值的差值超过了允许的最大偏差值ΔY,则认为发生了随机干扰,并认为最后一次采样值Yn非法,应予剔除。
剔除Yn后,可用Yn-1代替Yn;若未超过允许的最大偏差值范围,则认为本次采样值有效。
可用如下公式表示:|Yn-Yn-1|≤ΔY;则Yn有效|Yn-Yn-1|>ΔY;则Yn-1有效此算法的样例子程序如下:#define A 11 //A值可根据实际情况调整char data; //上一次的数据char filter_1(){char datanew; //新数据变量datanew=get_data(); //获得新数据//滤波算法uchar filter1(){uchar new_value,value;value=get_data(N-2); //把第十个值给valuenew_value = get_data(N-1); // 第十一个值给new_valueif ( ( new_value - value > A ) || ( value - new_value > A ) ) //如果差值大于0.002return value;return new_value;//中位值滤波算法void filter2(){int count,i,j; //定义存储数据的数组uchar temp; //定义存储数据的数组for(count=0;count<N;count++) //获取数据{buf[count]=get_data(count);}for(j=0;j<N-1;j++) //用冒泡法对数据进行排序,当然最好用其他排序方法{for(i=0;i<N-j;i++)if(buf[i]>buf[i+1]){temp=buf[i];buf[i]=buf[i+1];buf[i+1]=temp;}}res=buf[(N-1)/2]; //11个数排序后取中间的数值}该算法主要用于处理变化比较缓慢的数据,如温度、物体的位置等。
使用时关键在于最大偏差值的Δy的选择,通常可根据经验获得,也可按照输出参数可能的最大变化速度Vmax及采样周期T来决定ΔY的值,即ΔY=VmaxT。
3.2 整体框架整体框架图如下:3.1单片机最小系统如下:图4 单片机最小系统使用51系列单片机——AT89C51,利用这个单片机进行编程,实现对输入信号的滤波。
我使用了P0口作为接受AD转换的结果的端口,而P1口则输出数据到DA转换器。
另外还利用了P2作为控制端口,P2.0-P2.2用来控制AD转换器,而P1.0-P1.3外接四个开关,用来实现滤波方式的选择。
3.3数据采集电路由于ADC0809是带地址锁存的模数转换器件,ADDA、ADDB、ADDC为模拟通道选择,编码为000~111分别选中IN0~IN7。
ALE为地址锁存信号,其上升沿锁存ADDA、ADDB、ADDC的信号,译码后控制模拟开关,接通八路模拟输入中相应的一路。
CLK为输入时钟,为AD转换器提供转换的时钟信号,典型工作频率为500KHz-600kHZ。
START为AD转换启动信号,正脉冲启动ADDA~ADDC选中的一路模拟信号开始转换。