单片机实用算法设计.pdfVIP

  • 16
  • 0
  • 约1.83万字
  • 约 54页
  • 2019-03-30 发布于江苏
  • 举报
单片机实用算法设计 1 单片机滤波算法的设计 2 信号处理的FFT变换 3 SPWM正弦逆变算法的设计 4 PID控制算法 5 51单片机PID算法程序 6 模糊控制算法 1 单片机滤波算法的设计 电路的滤波分为模拟滤波与数字滤波。 其中数字滤波器具有精度高、高可靠性和高 稳定性的特点,因此被广泛应用。用数字滤波 算法克服随机误差主要有如下优点: 数字滤波由软件程序实现,不需要硬件,因 此 不存在阻抗匹配的问题; 对于多路信号输入通道,可以共用一个软件 “滤波器”,降低仪表的设计成本; 只要改变滤波器程序或元算参数,就能方便 的改变滤波特性。 下面我们介绍几种主要的数字滤波法: A. 限幅滤波法 对于随机干扰, 限幅滤波是一种有效的方法; 基本方法:比较相邻n 和n - 1时刻的两个采 样值y(n)和y(n – 1),根据经验确定两次采样 允许的最大偏差。如果两次采样值的差值超过 最大偏差范围,认为发生可随机干扰,并认为后 一次采样值y(n)为非法值,应予删除,删除y(n) 后,可用y(n – 1) 代替y(n) ;若未超过所允许的 最大偏差范围,则认为本次采样值有效。 下面是限幅滤波程序:( A 值可根据实际情况调 整,value 为有效值,new_value 为当前采样值 滤波程序返回有效的实际值) #define A 10 char value; char filter() { char new_value; new_value = get_ad(); if ( ( new_value - value A ) || ( value - new_value A )) return value; return new_value; } B.中位值滤波法 中位值滤波法能有效克服偶然因素引起的 波动或采样不稳定引起的误码等脉冲干扰; 对温度液位等缓慢变化的被测参数用此法 能收到良好的滤波效果,但是对于流量压力等 快速变化的参数一般不宜采用中位值滤波法; 基本方法:对某一被测参数连续采样n次 (一般n 取奇数) ,然后再把采样值按大小排列, 取中间值为本次采样值。 下面是中位值滤波程序: #define N 11 char filter() { char value_buf[N],count,i,j,temp; for ( count=0;countN;count++) { value_buf[count] = get_ad(); delay(); } for (j=0;jN-1;j++) { for (i=0;iN-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; } } } return value_buf[(N-1)/2]; } C.算术平均滤波法 算术平均滤波法适用于对一般的具有随机 干扰的信号进行滤波。这种信号的特点是信 号本身在某一数值范围附近上下波动,如测量 流量、液位; 基本方法:按输入的N 个采样数据,寻找这 样一个Y ,使得Y 与各个采样值之间的偏差 的平方和最小。 编写算术平均滤波法程序时严格注意: 一.为了加快数据测量的速度,可采用先测 量数据存放在存储器中,测完N 点后,再对N 个数据进行平均值计算; 二.选取适当的数据格式,也就是说采用定 点数还是采

文档评论(0)

1亿VIP精品文档

相关文档