步进电机速度控制系统设计内容摘要:

7 3 软件的设计与实现 单片机是系统的核心,主要承担控制信号的接受,逻辑分析和运算,控制量的输出和显示的运算和输出等功能。 本程序采用模块化设计, 针对上述功能主要包括 主函数、键盘扫描、 串口 中断、 计时中断和显示程序几个模块。 其中,主函数主要负责对单片机、内部元件及中断等工作方式进行定义和设定,并协调好各模块之间的运行时序,其流程图如下: 图 5 主函数流 程图 控制信号输入程序 控制信号可以通过 独立键盘和串口通讯两种方式输入。 键盘的输入主要是用扫描程序,即不停取键盘接口的逻辑值,与特定值进行位运算就可以识别键盘的控制信息。 串口通讯控制信号的输入也是利用了扫描,不过单片机内软件所要做的,主要是定义计数器工作及串口协议,如波特率等。 成功实现串口通讯后,对获得的数据编辑运算就可以形成对应的控制 输出。 中断允许计时器初始化串口通讯初始化显示器初始化显示初始值进入输入扫描结束开始 8 为避免 两种方式的 控制信号冲突,程序通过外接开关选定控制方式。 整个控制信号输入程序流程图如下: 图 6 输入扫描程序流程图 步进电机控制程序设计 确定方案的时候已经提到,对步进电机的控制主要是对单片机输出脉冲频率的控制。 频率的快慢必然是要有时间来衡量的,显然要使用单片机内部的计时器进行计时 ,电平输出指令就在计时器中断程序中。 每当计时结束,就执行一次比较运算并改写电平 与原来相反。 值得注意的是,由于单片机计时器的计选择判定关闭输入低四位有键按下。 速度控制与显示高位有键按下。 方向控制与显示有输入。 存储接收的数据并返回指令分析电机控制运算与显示开始串口输入 键盘输入是否是否否是 9 时是对预存的起始量进行减运算。 这样,要想加快电机速度提高输出频率就要减小速度标量 B, 以 减少 两者比较 次数 ,更 频繁 地 执行中断以 改写电平,从而达到提高频率的目的。 频率控制原理图如图 7 所示 : 图 7 频率变化 原理 由图可以明显地看出,速度标志量越小,输出波形的频率越快。 由此可以确定键盘控制和串口控制下,步进电机控制算法程序的流程图如下: 图 8 步进电机 控制 程序 流程 图 计数器计时t =Ru nSpeed ?输出电平取反控制要求Ru nSpeed + 2计时结束t ++Ru nSpeed 2有控制量输入。 开始减速 加速否是否是 10 程序分析及说明 本设计的程序采用了多个变量,其中 Runspeed 变量在控制输入和控制输出之间起枢纽作用,可以说对 Runspeed 的控制就是对电机速度的控制。 计数器环节中, Cnt 变量的使用让计时器解放出来成为独立的走时,把对计 时中断次数的统计作为计算量,而计数器本身不参与逻辑运算。 这样大大提高了单片机内有限个计时器的利用率,当有新的控制需要时间量度时,只需增加变量即可。 此外,通过取反改变输出电平的算法简单方便,节省了单片机内存空间的同时也节省了有限的数据口。 设计程序从多方面充分提高单片机的利用率,是值得推广的。 11 4 系统的仿真与调试 仿真时 ,先完成由键盘控制的一台步进电机的加速减速控制,确定 键盘扫描、电机走步等的 基本算法是否可行。 之后开辟新的接口,对另一台电机控制,新变量的加入使两台电机的 异步运行十分容易。 最后仿真串行接口的通讯与控制。 程序的调试 对于脉冲波的输出算法,可以选择对管脚位定义,再对变量或管脚代号分别作取反运算。 这种方法可靠简单,但如果所要控制的电机数目较多,程序就会十分冗长。 用 8 位异或的位运算就可以解决这个问题,位异或可以只对目标管脚作用而不影响其他管脚的输出,可以同时对多个管脚改写电平。 键盘扫描是不断用接口数据与特定 16 进制数进行位运算,位运算的选择也会影响到信号采集的准确度和管脚的利用率。 调试显示器的关键则是准确地将初始化信息分批地送到显示器里。 针对本设计所使 用的 AT89C51 单片机,如果选用 P0 口作为显示输出则必须对 P0 口 每个管脚接上拉电阻。 而对电机速度的显示需要以 Runspeed 为应变量选取适当的换算函数,才能显示正确的速度值。 串口通信的调试 调试串口通讯的关键是对串口正确地初始化。 一旦通信成功,串口控制就解决了大半的问题,接着就是用缓存里的数据编程控制,其算法与键盘控制相差不远。 串口调试最需注意的是,除了在程序里对串口和通讯初始化之外,电路图中器件相关属性 的 设置都必须 与通讯要求 保持一致,比如串口的波特率应设置为软件里初始化波特率的大小。 同样地, 模拟的上位机的 传输位和停止位等 指标也应认真选定。 本设计只完成了单片机与控制口之间以字节为单位的简单通讯,所以能通信的控制功能十分有限。 12 调试结果 经过调试,系统能以键盘和串口两种方式对两部步进电机进行异步控制 ,并在显示屏上显示各电机的转向和转速。 其中串口控制 仿真 效果 如 下图 所示: 图 9 串口控制 仿真 效果 图 图 10 串口控 制 窗口 13 5 设计 总结 本 计选择常规 的脉 冲分配器完成对电机绕组电平的时序控制, 从而使单 片机 对每部电机 对应输出一个触发信号和一组脉冲波即可。 这样节省了单片机的数据接口,一定程度提高了 利用率。 另外,正如程序分析师所述, 本设计的软件采用 了 多个变量 使单片机计时器等部分得以共享, 当有新的控制需要时间量度时,只需增加变量即可 ,大大提高了使用价值。 此外, 程序 通过取反改变输出电平的算法简单方便,节省了单片机内存空间的同时也节省了有限的数据口。 系统对信号频率控制,使得控制的精确度较输出控制字方式较差。 此外,变量的使用也是的多个程序模块同时依赖一个计数器,降低了系统可靠性。 14 参考文献 [1]于海生 .微型计算机控制 技术 .北京 :清华大学 出版社 , [2]常喜茂 ,孔英会等 .C51 基础与应用实例 .北京 :电子工业出版社 ,2020 [3]马德骏 ,张建宏等 .C 语言程序设计 .北京 :科学出版社 ,2020 [4]刘宝廷 ,程树康等 .步进电机及其驱动控制系统 .哈尔滨 :哈尔滨工业大学出版社 ,1997 [5]马忠梅 ,籍顺心等 .单片机的 C 语言应用程序设计 .北京 :北京航空航天大学出版社 ,2020 15 附录 include include include int delay()。 void inti_lcd()。 void show_lcd(int i)。 void cmd_wr()。 void ShowSpeed()。 void ShowDir()。 void key_scan()。 void cod_scan()。 void delayms(int ms)。 void send_char(unsigned char out)。 sbit RS=P2^4。 //。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。