基于单片机的运动控制系统(6)

2019-01-10 12:27

4.5.2 数字滤波

在电动机的数字闭环控制系统中,转速测量值至关重要,但是实际中对电机转速

的测量中常混有干扰噪声,为此可以通过一定的软件计算来减少干扰在信号中的比重,达到减弱或消除干扰的目的。数字滤波器利用程序实现,不需要硬件投入,成本低,而且可以通过修改程序来应对不同的干扰情况。

目前比较实用的数字滤波方法主要有:(1)算术平均值法即连续采样多个数据求其平均值作为测量值,该法对于周期性干扰有较好的抑制效果。(2)移动平均滤波法即将采样的数据按照先后顺序存储,每次计算前将最先采样的数据移出,补充新数据到队列尾部,并计算平均值作为测量值,该法数据处理速度较快。(3)防脉冲干扰平均值法即对连续采样的数据排序,去除最大值和最小值,求剩余数据的平均值作为测量值,该法对于尖峰脉冲干扰有较好抑制作用。

在对本系统进行测试时,液晶显示的转速值变化过快,而且周期性出现较大的波动,因此采用算术平均值滤波法,这样不仅能够抑制干扰,而且能够使转速显示稳定。

4.6 上位机程序设计

图形化的上位机界面有利于工程人员对电机运行状态进行监测,方便人们对数据进行分析。本次设计在VB环境中实现了串口数据采集并绘制转速曲线,显示电机正反转信息和以当前时间命名保存转速曲线。

(1)程序界面设计

确定程序要实现的功能后就可以设计程序窗口即添加相应的控件,并设置控件属性。本次设计所用到的主要控件见表4-1。

表4-1 控件对象及属性 控件类型 PictureBox CommandButton CommandButton CommandButton Shape Shape TextBox MSComm 主要属性 Picture1 (名称)=cmdstart (名称)=cmdstop (名称)=cmdsave (名称)=aheadshape (名称)=backshape (名称)=speedtext (名称)=MSComm1其余属性在程序中设置 功能 绘制转速曲线 开始采集命令按钮 停止采集命令按钮 保存图片命令按钮 正转提示信号 反转提示信号 显示转速值 串口通信控件 Timer Interval=1000 时钟控件(周期1000ms) 添加完控件后的界面如图4.5所示

图4.5 上位机界面

(2)界面设计完成后需要添加程序代码。

本次设计中单片机与PC机的通信采用条件触发方式,触发后执行OnComm事件,故必须设置相应的通信事件,另外由于在单片机程序中设置串口工作于方式一,因此可将串口通信控件的属性设置为通信端口号为4,以二进制方式接收数据,当接收缓冲区收到一个字符或者发送缓冲区为空时触发OnComm事件,波特率为9600bps,没有奇偶校验位,8位数据,1位停止位。相应代码如下:

MSComm1.CommPort = 4 MSComm1.InputMode = 1 MSComm1.RThreshold = 1 MSComm1.SThreshold = 1

MSComm1.Settings = \

本设计中需要将转速值显示出来,但是单片机发送的转速值是十六进制数,而PC以ASCII码的形式接收,因此必须对接收到的数据进行处理,处理过程在OnComm事件中进行。

处理过程为先获得单片机发送的十六进制数据(一个字节),并将数据以字符串形式存储(字符串只包括一个或两个字符),通过空格隔开各个数据,为了将数据转化为十进制,先判断字符串中字符个数,若为一个字符,则转化为两个字符(如A转化为

0A),最后转化为十进制数并在图形界面的文本框显示。

数据处理代码如下:

Select Case MSComm1.CommEvent Case comEvReceive

Inbyte = MSComm1.Input For i = LBound(Inbyte) To UBound(Inbyte) buffer = buffer + Hex(Inbyte(i)) + Chr(32) Next i Case comEvSend End Select

If Len(Trim(buffer)) = 1 Then 'Trim()函数是去掉数据两边的空格 datastr(1) = \

datastr(2) = Trim(buffer) End If

If Len(Trim(buffer)) = 2 Then

datastr(1) = Mid(Trim(buffer), 1, 1) datastr(2) = Mid(Trim(buffer), 2, 1) End If

datatemp(num) = Val(\speedtext.Text = Format$(datatemp(num) * 15, \显示十进制数,保留一位小数

4.7 本章小结

本章对系统软件部分的主要程序进行了说明,首先介绍了主控程序的组成和工

作流程以及数字PID控制规律的推导和调节过程,然后对矩阵键盘的工作原理和PWM波的生成方法进行了阐述,并且说明了开机时参数设定的操作流程以及不停车情况下重新设定参数的操作流程,之后又介绍了常见的转速测量方法和数字滤波方法,最后说明了VB环境下上位机的设计的过程。

第五章 系统调试

硬件电路焊接完成后,先编写相应的模块程序对各个电路模块进行测试,判断其性能是否满足要求,当各模块功能满足要求后,再对系统进行整体调试,测试系统性能。

5.1硬件电路调试

(1)电源模块测试

接通220V、50Hz交流电源,按下电源模块的12V和5V电压开关,将万用表调至直流电压档,测得两个直流稳压电源电路输出分别为11.89V和5.02V,满足电路需求。

(2)矩阵键盘测试

键盘的硬件测试主要判断每个按键是否完好。方法如下:将万用表调制蜂鸣器档,红、黑表笔分别接在按键两端,按下按键时,若万用表发出响声则按键完好。在测试时发现有一个按键并不灵敏,更换按键后,灵敏度达到要求。

(3)LCD1602液晶测试

液晶调试主要是检查字符显示是否清楚。编写一段显示程序在液晶上显示“SPEED_SET:”,但是液晶显示模糊,这是液晶对比度的问题,在液晶屏的第1、3引脚之间焊接电位器,通过调节阻值达到比较理想的效果。

5.2 软件调试

(1)键盘及显示程序测试

键盘和液晶作为本系统的交互界面,必须正常工作,才能方便系统测试。键盘的软件测试是看键值和按键是否对应,编写键盘和按键联调程序,每当按下一个按键时在液晶屏上显示按键值。在测试过程中时,只有一部分按键的键值能够正确显示,这是因为编写的键盘扫描程序逻辑错误,重新编写扫描程序后测试结果如图5.1

图5.1 键盘及显示测试图

(2)PWM生成程序测试

由于本次设计采用闭环控制,因此PWM波的占空比会随着调节器的输出而改变,

所以在本模块程序测试时主要是看PWM波的占空比能否人为设定,检测程序效果的最直观的方法是观察PWM波形,为此可以采用Proteus软件仿真波形输出。

先在PWM波生成程序中确定占空比为0.6,周期为1ms。定时器T0采用如下赋 TH0=(64536+ZKB)/256; TL0=(65536-ZKB)%6; TH0=(65536-ZKB)/256;

值方式:TL0=(64536+ZKB)%6;

程序中ZKB=600,在测试过程中发现PWM波占空比和周期并不受到控制。仿真结果如图5.2所示:

图中每一方格代表0.5ms,

图5.2 PWM仿真结果1

出现这种错误是因为计算定时器初值的过程在T0中断中进行,造成了定时误差。为此可以在主函数中先计算出定时器初值,然后定义四个变量T0L_L,T0L_H,T0H_L,T0H_H用于存储定时器初值,在中断函数中将变量赋值给定时器的TH0和TL0。修改后的程序如4.2.1节的PWM波生成程序。 修改后的仿真结果如图5.3: 图中每一方格代表0.2ms


基于单片机的运动控制系统(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:拓扑空间中集合的导集

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: