利用Matlab2017b Simulink基于模型设计的自动代码生成对STM32F4进行开发 (4)----(ADC电压采集以及自适应滤波实验)

ADC实验通过1个电压采集来演示STM32ADC功能,以及如何在simulink平台上面完成这些功能的具体操作,并利用simulink强大的信号处理工具相,将采集回来的电压信号进行自适应滤波,告别一些传统的平均值,排序取中间值这些简单操作。

下图为一个通道的ADC采样的基本操作,ADC采样回来,参考电压为3.3V12位通道,所以得到的电压值等于采样值乘以3.3/4096;并通过串口进行数据的传输,加两个闪烁灯方便查看程序是否正常运行;

ADC控件的设置:自行选择ADC Moudle,对应的IO口;输出的数据类型;

    ADC的基本操作到这里已经完成了,可以直接输出采样回来的电压值,下面我给大家介绍一个非常常用的信号处理---自适应 滤波
    一般来说自适应滤波有两个输入信号和两个输出信号,一个信号源输入,另一个通常为期望信号,输出信号分别为估计输出和误差信号;

      如图是一个采用最小均方误差自适应算法模块。


下图为加入自适应滤波后的工程

  这个工程一个采用最小均方误差自适应算法进行时间延迟信号的信号处理系统模型来。模型中的LMS滤波器模块的输入ADC采样回来的电压信号;这一信号在经过了一个未知的延时系统后成为LNMS滤波器的模块的期望信号输入。自适应滤波的目的是通过对未知延时系统传递函数的故居获得输入信号的时间延迟量的估计。这样的电压过滤,在不稳定的电源,不稳定无规律的跳动的电压信号,可以有效地降低电压信号的噪度;

我们给它一个3.28V左右的电压信号给芯片采集,采集回来的数据如图所示,芯片本身和信号本身就有不确定的微小跳动0.04之间的跳动,加入滤波后信号变得更加稳定,跳动在0.01之间;可以很明显地看出滤波是非常明显的;对于某些领域来说这样的滤波尤为关键,决定一个产品或者一个实验数据最后的精准问题

猜你喜欢

转载自blog.csdn.net/weixin_36967309/article/details/80290878