版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 1第5章 信 号 处 理第5章 信 号 处 理5.1 运算放大器运算放大器5.2 无源滤波器无源滤波器5.3 有源滤波器有源滤波器5.4 ADC5.5 PID5.6 FIR5.7 常用算法常用算法2 2第5章 信 号 处 理PID应用案例应用案例1、加热控制系统加热控制系统 设计一个水温自动控制系统,该系统通过加热棒使水设计一个水温自动控制系统,该系统通过加热棒使水温升高,通过电风扇使水温降低,水温可以在温升高,通过电风扇使水温降低,水温可以在定范围内定范围内由人工通过按键设定,并能在受外界环境温度影响的情况由人工通过按键设定,并能在受外界环境温度影响的情况下实现快速水温自动控制,以保持设
2、定的温下实现快速水温自动控制,以保持设定的温度基本不变度基本不变。 2、直流电机转速控制系统直流电机转速控制系统 要求通过控制使直流电机的转速,要求通过控制使直流电机的转速,保持在保持在一个预置一个预置(预置可通过按键来设定)的转速上。(预置可通过按键来设定)的转速上。 为了达到上面的为了达到上面的快速快速、精确精确控制,就需要一个闭环控控制,就需要一个闭环控制,就需要用到制,就需要用到PID算法。算法。5.5 PID3 3第5章 信 号 处 理PID应用案例应用案例2、直流电机转速控制系统直流电机转速控制系统 要求通过控制使直流电机的转速,要求通过控制使直流电机的转速,保持在保持在一个预置一
3、个预置(预置可通过按键来设定)的转速上。(预置可通过按键来设定)的转速上。 为了达到上面的为了达到上面的快速快速、精确精确控制,就需要一个闭环控控制,就需要一个闭环控制,就需要用到制,就需要用到PID算法。算法。5.5 PIDMCU电机驱动电机测速装置A/DPWM4 4第5章 信 号 处 理 自从计算机进入控制领域以来,用数字计算机代替模拟计算机调节器组成计算机控制系统,不仅可以用软件实现PID控制算法,而且可以利用计算机的逻辑功能,使PID控制更加灵活。数字PID控制在生产过程中是一种最普遍采用的控制方法,在机电、冶金、机械、化工等行业中获得了广泛的应用。它将偏差的比例它将偏差的比例(P)、
4、积分、积分(I)和微分和微分(D)通通过线性组合构成控制量,对被控对象进行控制,故称过线性组合构成控制量,对被控对象进行控制,故称PID控制器控制器。 PID调节器,调节器,本质上本质上是是通过闭环控制通过闭环控制使一个系统的输使一个系统的输出达到理想的目标状态。出达到理想的目标状态。 5.5 PID5 5第5章 信 号 处 理5.5.1 PID算法原理算法原理图5-54 模拟PID控制系统原理框图error(t)u(t)6 6第5章 信 号 处 理PID控制器是一种线性控制器,它根据给定值rin(t)与实际输出值yout(t)构成控制偏差: (5.5.1)PID的控制规律为 (5.5.2)(
5、yout)(rin)(errorttttttTttTtktu 0 DIpd)(derror d)(error1)(error)(7 7第5章 信 号 处 理或写成传递函数的形式: (5.5.3)sTsTksEsUsGDIp11)()()(式中,pk为比例系数;IT为积分时间常数;DT为微分的时间常数。 8 8第5章 信 号 处 理简单来说,PID控制器各校正环节的作用如下:比例环节比例环节:成比例地反映控制系统的偏差信号,偏差一旦产生,控制器立即产生控制作用,以减小偏差。积分环节积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数,越大,积分作用越弱,反之则越强。微分
6、环节微分环节:反映偏差信号的变化趋势(变化速率),并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。9 9第5章 信 号 处 理5.5.2 PID算法及程序算法及程序数字式数字式PID控制根据控制对象的特点,演变出不同的控制根据控制对象的特点,演变出不同的算法,常见的有算法,常见的有位置式位置式PID控制算法控制算法、增量式增量式PID控制算法控制算法、积分分离积分分离PID控制算法控制算法、抗积分饱和、抗积分饱和PID控制算法、梯形积控制算法、梯形积分分PID控制算法、变速积分控制算法、变速积分PID算法、不完全微分算法、不完全微分PID控
7、制控制算法、微分先行算法、微分先行PID控制算法、带死区的控制算法、带死区的PID控制算法、基控制算法、基于前馈补偿的于前馈补偿的PID控制算法、步进式控制算法、步进式PID控制算法等。在此控制算法等。在此只讲解电机控制常用的一种算法只讲解电机控制常用的一种算法增量式增量式PID控制算法。控制算法。根据递推原理可得:根据递推原理可得:1010第5章 信 号 处 理说明:当采样周期相当短时,用说明:当采样周期相当短时,用求和代替积分求和代替积分,用用差商代替微商差商代替微商,将描述,将描述连续时间连续时间PID算法的微分算法的微分方程变为描述方程变为描述离散时间离散时间PID算法的微分方程。算法
8、的微分方程。1111第5章 信 号 处 理位置式PID程序流程图方法二:1212第5章 信 号 处 理位置式位置式PID程序程序/*积分分离积分分离PID控制算法控制算法(即:上一次输出值即:上一次输出值+增量,特点:减少增量,特点:减少了超调量,即输出不会超出目标值了超调量,即输出不会超出目标值)应先定义:应先定义:#define Kp ?/比例系数比例系数 #define Ki ? /积分系数积分系数#define Kd ? /微分系数微分系数int PID_MAX; /PID_MAX即是输入控制量即是输入控制量u(t)的最大值的最大值int Uk1=0,ek1=0,ek2=0;则:输入控
9、制量则:输入控制量u(t)PID(目标值目标值,测量测量值值)*/1313第5章 信 号 处 理位置式位置式PID程序程序int PID(int Set_value,int Real_value) /积分分离积分分离PID控控制算法制算法int ek,Uk;float Up,Ui,Ud; ek=Set_value - Real_value;/误差量误差量 Up=Kp*(ek-ek1); /比例量比例量 if(UpPID_MAX) Up=PID_MAX;/限定限定积分量上限积分量上限 else if(UpPID_MAX) Ui=PID_MAX;/限定积分量限定积分量上限上限 /else if(U
10、iPID_MAX) Uk=PID_MAX;/控制量上限控制量上限=PID_MAX else if(Uk0) Uk=0;/控制量下限控制量下限=0 ek2=ek1; ek1=ek; Uk1=Uk;return(Uk); 1515第5章 信 号 处 理有限长单位脉冲响应(FIR)数字滤波器可以做成具有严格的线性相位,同时又具有任意的幅度特性。此外FIR滤波器的单位抽样响应是有限长的,因而滤波器一定是稳定的。只要经过一定延时,任何非因果有限长序列都可以变成因果有限长序列,因而总能用因果系统来实现。FIR滤波器由于单位冲激响应是有限长的,因而可以用快速傅里叶变换(FFT)算法来实现过滤信号,从而大大提
11、高运算效率。5.6 FIR1616第5章 信 号 处 理虽然滤波程序有很多优点,但是由于单片机运行速度较慢,复杂的运算程序无法在单片机运算时保证其实时性,所以很少使用。FIR、FFT、IIR等算法程序一般用于等算法程序一般用于DSP、FPGA的工程设计中,的工程设计中,而在单片机中一般用较简单的处理算法程序,这些程序设计简单,所需运行时间短,且在一定应用场合使用时也可达到很好的处理效果。5.7 常常 用用 算算 法法1717第5章 信 号 处 理5.7.1 均值滤波均值滤波均值滤波是最简单、有效的滤波方法,它能在一定范围内消除干扰信号对测量数据的影响,且该算法所耗指令周期最短,有利于低速单片机
12、的程序处理。示例程序如下:均值滤波函数:将reg寄存器数组中的数据进行平均计算,建议数组中的数据应为2n个,有利于平均时利用移位来实现,这样所需时钟周期要比除法程序所需时钟周期少得多。1818第5章 信 号 处 理输入参数:reg,待计算的数组。输出参数:均值计算结果。int calculate_average(int reg16) long data = 0; int i; for(i=0; i 4; return(data); /数组更新 reg0=a; reg1=reg0; , reg15 reg14; 1919第5章 信 号 处 理5.7.2 中值滤波中值滤波中值滤波是在均值滤波的基础
13、上适当改进而成的。均值滤波只是简单地对所有数值进行平均化处理,如果数值中有错值,也将其计算在内,而中值滤波的思想中值滤波的思想是将数组是将数组中的数据中的数据n个最大值和个最大值和n个最小值同时剔除,将剩余的数据个最小值同时剔除,将剩余的数据进行均值滤波进行均值滤波,这样做的优点是提高了均值数据的可靠性且增加的消耗时钟周期又不多,缺点是有很大可能性将正确的数据剔除,较小可能性将错误的数据未剔除。其示例程序如下:中值滤波函数:将reg寄存器数组中的数据进行排序处理,提取排序后数组中间的2n个数据。2020第5章 信 号 处 理输入参数:输入参数:reg,待计算的数组。,待计算的数组。输出参数:均
14、值计算结果。输出参数:均值计算结果。int calculate_average(int reg32) #define ReadLoop 32 int bufReadLoop; int val; long data = 0;2121第5章 信 号 处 理 int i, j; / 转移reg的值,目的是不改变reg中值的状态 for(i=0; iReadLoop; i+) bufi = regi; / 排序 for(i=0; iReadLoop-1; i+) 2222第5章 信 号 处 理 for(j=i+1; j bufj) val = bufi; bufi = bufj; bufj = val
15、; 2323第5章 信 号 处 理 / 将中间数值进行均值滤波 for(i=8; i 4; return(data); 2424第5章 信 号 处 理5.7.3 3置信区间处理置信区间处理2525第5章 信 号 处 理5.7.3 3置信区间处理置信区间处理对于采集的信号,通常在一段短时间内可看做是不变的,因此,在一定时间内采集的数据成正态分布,而正态分布的随机误差落在-,+区间的概率为 (5.7.1)683. 0d e21 |222 iP2626第5章 信 号 处 理该结果的含义可理解为,在进行大量等精度测量时,随机误差落在-,+区间的测得值的数目占测量总数目的68.3%,或者说,测得值落在范
16、围(该范围在概率论中称为置信区间)内的概率(在概率论中称为置信概率)为0.683。同样可以求得随机误差落在2和3范围内的概率为 (5.7.2)954. 0d e212 |2222 2 iP2727第5章 信 号 处 理 (5.7.3)即当测得值xi的置信区间为和时的置信概率分别为0.954和0.997。由式(5.7.3)可见,随机误差的绝对值大于3的概率仅为0.003,即0.3%,实际上出现的可能性极小,因此定义 (5.7.4)997. 0d e213 |2223 3 iP32828第5章 信 号 处 理为极限误差,或称为随机不确定度。如果在测量次数较多的等精度测量中,出现了的情况,则必须予以
17、仔细考虑,通常将的测得值判为坏值,应予以剔除。为了便于读者学习和使用,下面给出判定剔除程序。3置信区间判断函数:判断reg寄存器中16个值是否为可靠测量值,即16个值的误差是否都在3区间内,如不在则剔除该值,剔除后重新对剩余值进行再一次3置信区间判断,如再次有值不在3置信区间内,则再次剔除,剔除后再重新对剩余值进行再一次3置信区间判断,如此循环,直至所有值都在3置信区间内,将剩余值进行均值计算后返回。3|i3|iiv2929第5章 信 号 处 理输入参数:输入参数:reg,待计算的数组。,待计算的数组。输出参数:剔除错值后均值计算结果。输出参数:剔除错值后均值计算结果。double calcu
18、late_average (double reg16) double Vi16 ; / 寄存器值与平均值的偏差值 double Viexp2 ; / Vi的平方 double average ; / 平均值 double delta3 ; / 3delta double sigma_Vi ; / Vi的和值应为0 char i = 0 ; / 有大于3delta的坏值标志位 char j = 0 ; / char k = 16 ; / 寄存器中还有多少有效值3030第5章 信 号 处 理 char l = 0 ; / 剔除错值排序 do i = 0 ; average = 0 ; for (j
19、=0; jk; j+) average = average + regj ; average = average/k ; / 计算出均值3131第5章 信 号 处 理 for (j=0; jk; j+) Vij = average - regj ; / 计算出残差 sigma_Vi = 0 ; for (j=0; jk; j+) sigma_Vi = sigma_Vi + Vij ; / 计算出Vi的和值 Viexp2 = 0 ; for (j=0; jk; j+) Viexp2 = Viexp2 + Vij*Vij ; / 计算出方差3232第5章 信 号 处 理 if ( k = 1) r
20、eturn(0) ; / average delta3 = 2.443 * sqrt(Viexp2/(k-1); / 计算出3delta的置信区间 for (j = 0 ; j regj) / 排除坏值 3333第5章 信 号 处 理 i = 1; -k; for(l=j; l (average + delta3) 3434第5章 信 号 处 理 i = 1; -k; for(l=j; lk; l+) regl = regl+1; -j; while(i); return(average);3535第5章 信 号 处 理5.7.4 CRC校验校验CRC校验是数据通信中常用的校验方法。CRC域是
21、两域是两个字节,包含一个个字节,包含一个16位的二进制值。它由传输设备计算后位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的加入到消息中。接收设备重新计算收到消息的CRC,并与,并与接收到的接收到的CRC域中的值比较,如果两值不同,则有误。域中的值比较,如果两值不同,则有误。CRC是先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。仅每个字符中的8 bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。3636第5章 信 号 处 理CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移
22、动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。最终寄存器中的值是消息中所有的字节都执行之后的CRC值。CRC添加到消息中时,低字节先加入,然后是高字节。计算CRC校验码函数:计算pSendBuf指针指向地址的nEnd个字节数据的CRC校验码。3737第5章 信 号 处 理输入参数:*pSendBuf,待计算数据指针;nEnd,待计算数据个数。输出参数:CRC校验码(两个字节)。int GetCheckCode(const char *pSendBuf, int nEnd) int wCrc = 0 xFFFF; for(int i=0; inEnd; i+) 3838第5章 信 号 处 理 wCrc = pSendBufi; for(int j=0; j= 1; wCrc = 0 xA001; else 3939第5章 信 号 处 理 wCrc = 1; return wCrc;4040第5章 信 号 处 理CRC校验码函数的应用(校验码函数的应用(发送信息时发送信息时)D1D2D3D4CRC-HCRC-L调用GetCheckCode(D1地址,4)产生2B的CRC校验码放入指定地址中发送4141第5章 信 号 处 理CR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中华民族共同体意识艺术教育融入课题申报书
- 员工劳动条件保障承诺书8篇范文
- 机械设计基础课程设计课件
- 天然产品产地信誉承诺书(6篇)
- 客户资料隐秘保障承诺函6篇
- 精准医疗救治承诺书7篇
- 供应商变更信息告知函6篇
- 创新发展举措之庄严承诺书(4篇)
- 校园文化教育责任承诺书4篇
- 智能制造车间能耗管理优化方案
- 2026年教育局思想政治工作科工作计划
- 2025年安徽卫生健康职业学院单招职业适应性测试试题及答案解析
- 医保村卫生室管理制度
- 园林绿化修剪合同范本
- 杭州师范大学2022年软件专业基础考研真题
- 工程开工报审表
- 《石油化工项目可行性研究投资估算编制办法》
- 2022上海金融信息产业发展报告
- 医院行风建设应知应会考核试题及答案
- 脱硝催化剂安装施工方案1026
- GB 24790-2009电力变压器能效限定值及能效等级
评论
0/150
提交评论