基于STM32的A/D采样软件滤波改进算法研究
发布时间:2021-04-09 10:34
在工程实践和实验中,经常要对经过A/D转换后的数据进行采集,但由于存在外界干扰和电路设计不合理等因素,将会导致数据不停的跳变,非常不稳定。为了改善这种情况,有效地去除干扰,提出一种改进的软件滤波算法。采用STM32作为高速处理器,对16个通道的A/D连续采样1 600次,每个通道采集100次,将采样到的数据通过内部的高速DMA通道传送到内存的数组中。首先对每个通道的100个数据进行冒泡排序,去掉排序后的前后各10个数据,用剩余的80个数据再取平均值。测试结果表明:这种改进的均值滤波算法,能够有效的去除跳变的干扰数据,使得处理后的数据变得稳定、可靠,提高了精度和稳定性。
【文章来源】:仪表技术与传感器. 2016,(03)北大核心CSCD
【文章页数】:3 页
【部分图文】:
电流检测电路
尽?图2电流检测电路图2中为了检测流过电阻R1的电流大小,建立了一个正反馈放大电路,放大倍数为1+R4/R3=51,流过负载R1的电流变化范围是0.25~0.35A,由此可计算得到输入给STM32的PA0的电压变化范围是1.275~1.785V。检测到电压后,通过I=U/R,即可求得流过负载R1的电流大校1.3显示电路简介显示电路采用12864接口的ILI9325,可以在液晶屏上显示采集到的16路电压值。2详细设计及关键技术2.1软件流程图在进行STM32F103软件开发时,编程语言采用C语言,编译环境为MDK5.0软件,流程图如图3所示。图3软件流程图在编程时,首先初始化ADC的16个通道为连续扫描模式,采集完1600次后启动DMA通道将1600个数据高速传送到内存数组中,传送完成后产生DMA中断[7]。在DMA中断中,首先关掉A/D采集,对1600个数据中每个通道的100个数据进行冒泡排序,然后去掉排序后的最大值和最小值各20个,用剩下的80个数据求平均值,最后将其送到TFT真彩屏上去显示。2.2ADC初始化程序代码voidAdc1_Init(void){rcc->apb2enr|=1<<2;//使能时钟rcc->apb2enr|=1<<4;//使能时钟rcc->apb2enr|=1<<3;gpiob->crl&=0xffffff00;gpioa->crl&=0x0000000;gpioc->crl&=0xff000000;rcc->apb2enr|=1<<9;delay_ms(10);rcc->apb2rstr|=1<<9;//adc1复位rcc->apb2rstr&=~(1<<9);rcc->cfgr&=~(3<<14);rcc->cfgr|=2<<14;//6分频adc1->cr1&=0xf0ffff;adc1->cr1|=0<<16;//独立工作模式adc1->cr1|=1<<8;//扫描模式adc1->cr2|=1<<1;//启用连续转换adc1->cr2&=~(7<<17);adc1->cr2|=7<<17;//软件控制转换adc1->cr2|=1<<20;adc1->cr2&=~(1<<11);//?
DC=1.6V无排序求均恤栩到ND值
【参考文献】:
期刊论文
[1]基于卡尔曼滤波的超声波电动机测速算法研究[J]. 黄帆,金龙,徐志科,潘鹏. 微特电机. 2015(11)
[2]基于智能算法优化卡尔曼滤波器的电机转速估计[J]. 张秀国. 实验室研究与探索. 2015(09)
[3]基于卡尔曼滤波的光学遥感影像高精度复原处理[J]. 张炳先,王密,潘俊. 武汉大学学报(信息科学版). 2015(07)
[4]基于改进均值滤波和参数拟合的矿井TOA几何定位方法[J]. 孙继平,李晨鑫. 煤炭学报. 2015(05)
[5]血压脉搏振荡波的三重软件滤波提取算法[J]. 许永峰,贺玉成,周林. 电子测量与仪器学报. 2015(03)
[6]基于光电传感器的脉搏信号采集电路优化设计[J]. 龚中良,李曜. 电子器件. 2014(04)
[7]基于FPGA的软件滤波算法设计及实现[J]. 彭巧君,任勇峰,王强,刘占峰,陈倩. 科学技术与工程. 2014(03)
本文编号:3127468
【文章来源】:仪表技术与传感器. 2016,(03)北大核心CSCD
【文章页数】:3 页
【部分图文】:
电流检测电路
尽?图2电流检测电路图2中为了检测流过电阻R1的电流大小,建立了一个正反馈放大电路,放大倍数为1+R4/R3=51,流过负载R1的电流变化范围是0.25~0.35A,由此可计算得到输入给STM32的PA0的电压变化范围是1.275~1.785V。检测到电压后,通过I=U/R,即可求得流过负载R1的电流大校1.3显示电路简介显示电路采用12864接口的ILI9325,可以在液晶屏上显示采集到的16路电压值。2详细设计及关键技术2.1软件流程图在进行STM32F103软件开发时,编程语言采用C语言,编译环境为MDK5.0软件,流程图如图3所示。图3软件流程图在编程时,首先初始化ADC的16个通道为连续扫描模式,采集完1600次后启动DMA通道将1600个数据高速传送到内存数组中,传送完成后产生DMA中断[7]。在DMA中断中,首先关掉A/D采集,对1600个数据中每个通道的100个数据进行冒泡排序,然后去掉排序后的最大值和最小值各20个,用剩下的80个数据求平均值,最后将其送到TFT真彩屏上去显示。2.2ADC初始化程序代码voidAdc1_Init(void){rcc->apb2enr|=1<<2;//使能时钟rcc->apb2enr|=1<<4;//使能时钟rcc->apb2enr|=1<<3;gpiob->crl&=0xffffff00;gpioa->crl&=0x0000000;gpioc->crl&=0xff000000;rcc->apb2enr|=1<<9;delay_ms(10);rcc->apb2rstr|=1<<9;//adc1复位rcc->apb2rstr&=~(1<<9);rcc->cfgr&=~(3<<14);rcc->cfgr|=2<<14;//6分频adc1->cr1&=0xf0ffff;adc1->cr1|=0<<16;//独立工作模式adc1->cr1|=1<<8;//扫描模式adc1->cr2|=1<<1;//启用连续转换adc1->cr2&=~(7<<17);adc1->cr2|=7<<17;//软件控制转换adc1->cr2|=1<<20;adc1->cr2&=~(1<<11);//?
DC=1.6V无排序求均恤栩到ND值
【参考文献】:
期刊论文
[1]基于卡尔曼滤波的超声波电动机测速算法研究[J]. 黄帆,金龙,徐志科,潘鹏. 微特电机. 2015(11)
[2]基于智能算法优化卡尔曼滤波器的电机转速估计[J]. 张秀国. 实验室研究与探索. 2015(09)
[3]基于卡尔曼滤波的光学遥感影像高精度复原处理[J]. 张炳先,王密,潘俊. 武汉大学学报(信息科学版). 2015(07)
[4]基于改进均值滤波和参数拟合的矿井TOA几何定位方法[J]. 孙继平,李晨鑫. 煤炭学报. 2015(05)
[5]血压脉搏振荡波的三重软件滤波提取算法[J]. 许永峰,贺玉成,周林. 电子测量与仪器学报. 2015(03)
[6]基于光电传感器的脉搏信号采集电路优化设计[J]. 龚中良,李曜. 电子器件. 2014(04)
[7]基于FPGA的软件滤波算法设计及实现[J]. 彭巧君,任勇峰,王强,刘占峰,陈倩. 科学技术与工程. 2014(03)
本文编号:3127468
本文链接:https://www.wllwen.com/kejilunwen/dianzigongchenglunwen/3127468.html