第四章 控制系统软件分析与设计
步进电机控制系统的软件需要同时完成读取键盘、处理键盘、控制步进电机转动、控制数码管动态显示等任务,这就必须通过中断技术来实现。
在本设计中,主程序采用查询方式扫描键盘端口,检测按键动作是否发生,若有按键动作则处理键盘,根据按键值修改相应参数值,实现键盘的实时处理功能。定时器0中断服务程序控制步进电机的转动:根据当前显示的速度进行键盘手动改变T0定时时间常数,设置TH0和TL0的值,达到对转速精确控制的目的;根据转动方向控制位的值,控制脉冲信号循环移动的方向,达到对转动方向控制的目的。
4.1 主程序流程图
系统分为电机正转、电机反转、电机加速与电机减速的几部分组成,其主程序框图如图4-1所示:
开始 初始化 调按键、显示子程序 调用正反转子程序 调按键子程序 停止 调用加减速子程序
图4-1 步进电机控制系统主程序流程图
4.2 读按键子程序流程图
按键采用扫描的方法,与初始值比较,相等则说明没有键按下,不相等则软件消抖,以便确认是否真的有键按下。延时10ms后再次扫描,第二次与初始值比较,若相等则表明前一次比较不相等是由抖动产生;如果相等则表明确实有键按下。执行键盘之程序里的指令,将相应的变量值改变,为键盘处理子程序做准备。如图4-2所示:
15
启动 否
是否有键按下 是 处理键盘子程序
图4-2 扫描键盘字程序流程图
4.3 按键处理子程序流程图
步进电机的启停控制通过启停定时器T0来实现,因为定时器T0控制着脉冲信号的输
出,关闭定时器T0也就阻止了脉冲信号的输出。
开始 初始化变量 S1是否按下 是 TR0取反,通过启停T0启停步进电机 是 遥控下键是否按下 修改速度参数值,减速 是 遥控上键是否按下 修改速度参数值,加速 是 遥控右键是否按下 取反方向控制为,改变电机转动方 退出 红外遥控程序流程图 16
开始 初始化变量 是 S4是否按下 TR0取反,通过启停T0启停步进电机 是 S3是否按下 修改速度参数值,减速 S2是否按下 是 修改速度参数值,加速 S1是否按下 是 取反方向控制为,改变电机转动方向 退出
键盘处理子程序流程图
4.4 电机控制中断程序流程图
定时器中断0服务程序流程图如图4-4所示:
定时器中断0服务程序的中断时间由当前的转速决定。进入中断程序后,首先要保护现场,再根据当前值设置TH0和TL0的值。然后判断转动方向控制位的值,最后恢复现场,返回,等待下次中断。
通过用当前转速控制中断时间,控制了脉冲的输出频率,也就到达了控制步进电机转动速度的目的;通过检测方向控制位的电平,控制了步进电机各引出端的接通顺序,也就到实现了步进电机转动方向的控制。
17
开始 设置T0时间参数 判断转动方向控制位的值 是 有控制位查询输出脉冲 改变方向控制变量值 退出
图3.4 定时器中断0服务程序流程图
18
第五章 系统调试与改进
5.1 调试与改进
在系统完成后测试系统,检查硬件和软件是否能够协调运行,并对系统出现的情况进行分析,看是否能够达到系统创作之初所设想的效果,如达不到则重新修改系统的硬件结构或者修改软件的程序部分,直到达到设计需要为止。
本系统的设计思路为:首先从整体上划分出各功能模块,然后硬件和软件同时进行依次完成各个功能模块,最后将各个模块联系起来完成整个系统。
在硬件调试的过程中,遇到了很多问题。主要有:
1. 确定步进电机的使用方法,和控制模式。此处尤为重要,这是整个系统的基础,也是确定软件是否能控制步进电机思路的开端。
2. 单片机应用(电源)注意事项:在电源两端应该加一个47uF以上的电解电容和一个0。1uF的小电容,进行电源去藕滤波。
3.电机档位切换时,转速不明显,应当对每个档位中断的二维数组值改变大点。 软件测试的时候也有些问题,主要有: 1.软件去抖方式,和时间的控制。
2.控制步进电机转动的程序段完成后,调试发现对步进电机速度的控制范围过小,查阅资料后发现设计思路不太合理,原先的设计思路是用主程序控制步进电机转动,采用延时方式控制步进电机速度,由定时器处理键盘;改进程序,主程序用来处理键盘,由定时器控制步进电机转动,步进电机转动速度由定时器定时时间决定。问题得到解决,不仅扩大了步进电机速度的控制范围,也使得单片机对步进电机速度的控制更加精确。 由于编译只能检查是否存在语法错误,所以还要看是否存在逻辑错误。程序修改好以后,当显示编译0错误,0警告的时候,这说明已经没有语法错误了,是否有逻辑错误还要看接上电路板通过仿真以后,步进电机能否正常转动,显示是否正常。
5.2 运行结果
进电机一开始不能正常转动,以为是电路焊接有问题,为了防止再次出现虚焊,首先将电路板用万用表检查了一遍,没问题。程序也是正确的。后来仔细看了步进电机工作原理,原来步进电机要正常实现正反转,四个相序必须弄清。把电机接上电源,用高电平分别接触电机的引线,每接触一下电机就会向前或向后转动一下,经过几次试验,终于搞清了电机的四个相序,排列顺序分别是1—A,2—C,3—B,4—D。弄清了相序,把电路板重新布线,焊接好,结果电机能够正常转动了。
19