文档详情

基于单片机的AD采集的滤波算法.doc

发布:2017-10-07约1.09万字共15页下载文档
文本预览下载声明
基于单片机的AD采集的滤波算法 1 引言 理论上讲单片机从A/D芯片上采集的信号就是需要的量化信号,但是由于存在电路的相互干扰、电源噪声干扰和电磁干扰,在A/D芯片的模拟输入信号上会叠加周期或者非周期的干扰信号,并会被附加到量化值中,给信号带来一定的恶化。考虑到数据采集的实时性和安全性,有时需要对采集的数据进行软处理,一尽量减小干扰信号的影响,数字滤波算法就算通过特定的计算机处理,降低干扰信号中的比例,故实际上是一种基于单片机的程序滤波。 2 单片机的AD接口 以AVR单片机atmega128为例,atmega128是10位的逐次逼近式ADC,先介绍一下AD转换的主要技术指标。 2.1 A/D转换器的主要技术指标 (1)分辨率 ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12位ADC的分辨率就是12位,或者说分辨率为满刻度FS的1/4096。一个10V满刻度的12位ADC能分辨输入电压变化最小值是10V×1/4096=2.4mV。 (2)偏移误差 偏移误差是指输入信号为零时,输出信号不为零的值,所以有时又称为零值误差。假定ADC没有非线性误差,则其转换特性曲线各阶梯中点的连线必定是直线,这条直线与横轴相交点所对应的输入电压值就是偏移误差。 (3)满刻度误差 满刻度误差又称为增益误差。ADC的满刻度误差是指满刻度输出数码所对应的实际输入电压与理想输入电压之差。 (4)线性度 线性度有时又称为非线性度,它是指转换器实际的转换特性与理想直线的最大偏差。 (5)绝对精度 在一个转换器中,任何数码所对应的实际模拟量输入与理论模拟输入之差的最大值,称为绝对精度。对于ADC而言,可以在每一个阶梯的水平中点进行测量,它包括了所有的误差。 (6)转换速率 ADC的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需的时间(包括稳定时间),则是转换速率的倒数。 2.2 AVR单片机内部ADC简介 (1) 预分频与转换时间 在通常情况下,ADC的逐次比较转换电路要达到最大精度时,需要50kHz~200kHz之间的采样时钟。在要求转换精度低于10位的情况下,ADC的采样时钟可以高于200kHz,以获得更高的采样率。 ADC模块中包含一个预分频器的ADC时钟源,它可以对大于100KHz的系统时钟进行分频,以获得合适的ADC时钟提供ADC使用。预分频器的分频系数由ADCSRA寄存器中的ADPS位设置的。一旦寄存器ADCSRA中的ADEN位置“1”(ADC开始工作),预分频器就启动开始计数。ADEN位为“1”时,预分频器将一直工作;ADEN位为“0”时,预分频器一直处在复位状态。 AVR的ADC完成一次转换的时间见表4.1。从表中可以看出,完成一次ADC转换通常需要13-14个ADC时钟。而启动ADC开始第一次转换到完成的时间需要25个ADC时钟,这是因为要对ADC单元的模拟电路部分进行初始化。 表4.1 ADC转换和采样保持时间 转 换 形 式 采样保持时间 完 成 转 换 总时间 启动ADC后第一次转换 13.5个ADC时钟 25个ADC时钟 正常转换,单端输入 1.5个ADC时钟 13个ADC时钟 自动触发方式 2个ADC时钟 13.5个ADC时钟 正常转换,差分输入 1.5/2.5个ADC时钟 13/14个ADC时钟 真当ADCSRA寄存器中的ADSC位置位,启动ADC转换时,A/D转换将在随后ADC时钟的上升沿开始。一次正常的A/D转换开始时,需要1.5个ADC时钟周期的采样保持时间(ADC首次启动后需要13.5个ADC时钟周期的采样保持时间)。当一次A/D转换完成后,转换结果写入ADC数据寄存器,ADIF(ADC中断标志位)将被置位。在单次转换模式下,ADSC也同时被清零。用户程序可以再次置位ADSC位,新的一次转换将在下一个ADC时钟的上升沿开始。 当ADC设置为自动触发方式时,触发信号的上升沿将启动一次ADC转换。转换完成的结果将一直保持到下一次触发信号的上升沿出现,然后开始新的一次ADC转换。这就保证了使ADC每隔一定的时间间隔进行一次转换。在这种方式下,ADC需要2个ADC时钟周期的采样保持时间。 在自由连续转换模式下,一次转换完毕后马上开始一次新的转换,此时,ADSC位一直保持为“1”。 (2) ADC输入通道和参考电源的选择 寄存器ADMUX中的MUXn和REFS1、REFS0位实际上是一个缓冲器,该缓冲器与一个MCU可以随机读取的临时寄存器相连通。采用这种结构,保证了ADC输入通道和参考
显示全部
相似文档