第二章 系统工作原理和总体方案拟定
2.1控制方案论证与比较
2.1.1步进电机控制系统的构成
步进电机的工作过程一般由控制器控制,控制器按照设计者的要求完成一定的控制过程,是功率放大电路按照要求的规律驱动步进电机运行。旧式的步进电机控制系统由脉冲发生器、步进控制器、功率放大器和步进电机组成,如图2.1所示。步进控制器包括缓冲寄存器、环形分配器、控制逻辑,其作用主要是将输入脉冲变为环形脉冲,以便实现对电机的转动和正反转的控制。功率放大器的作用是将步进控制器输出的环形脉冲加以放大,以驱动步进电机转动。这种控制方案由于是用各种逻辑电路来实现控制过程,线路复杂、控制方案改变困难、成本高。
图2.1步进电机控制系统的组成
随着单片微型计算机迅速发展和普及,为设计功能很强而价格低廉的步进电机控制器提供了条件。采用计算机控制系统,只要控制输入电脉冲的数量、频率以及电机绕组通电相序即可获得所需的转角、转速及转向。这不仅简化了线路,降低了成本,而且操作方便,提高了可靠性。图2.2为单片机控制步进电机的系统结构图。
图2.2单片机控制步进电机的系统结构图
第三章 控制系统的数学模型
由2.3节分析可知,把矩-频特性作为加速范围下可以达到(但不能超过)的最大输出转矩来拟订升降速脉冲序列的规律,就接近于最大转矩控制的最佳升降速规律。所以用步进电机的动力学方程和矩-频特性曲线来导出步进电机的最佳升降速的控制算法,并用单片机对其进行离散控制。
3.1 步进电机升速的控制算法
在步进电机的控制系统中,如图3-1,给一个电脉冲信号,步进电机就转动一个角度或前进一步。设输入为脉冲数,输出为转角,则(为步矩角),这就是步进电机输入/输出的比例关系。
图3.1 步进电机与驱动电路特性框图步进电机的旋转物体动力学方程式为:
(3-1)
式中为输出力矩,为转子转动惯量,为阻尼系数,为负载转矩,为转子位置,如为电机的回转角速度,,则(3-1)式用表示的方程为:
(3-2)如驱动脉冲的频率用表示,由,有,则式(3-2)变为:
(3-3)如果电机尽可能快的加速,则所有频率下都必须产生最大转矩,由式(3-3)步进电机的运动一定满足下式:
(3-4)
式中为步进电机输出转矩。
假设矩-频特性曲线是线性下降的,电机的输出转矩可由下式求出:
第四章 控制系统的硬件设计
4.1 系统的硬件结构
计算机的硬件和软件是相互结合而工作的,有些任务必须由硬件来实现,另
外有些任务必须由软件来实现。但是也有一些任务可以由软件来完成,也可由硬
件来完成。一般来说,增加硬件会提高成本,但能简化设计程序,且实时性好。
反之,加重软件任务,会增加编程调试工作量,但能降低硬件成本。所以要合理
的安排软、硬件的结构。
本系统步进电机速度的控制是由改变发出脉冲的时间间隔来实现的,用定时
器来控制发出脉冲的时间间隔,这样更能发挥硬件实时性的优势,同时能够减轻
软件的任务。
系统的硬件框图如图4.1所示。系统采用单片机作为核心部件,通过扩展外围
设备及接口电路完成对步进电机的并行控制。
第五章 控制系统的软件设计
本系统的软件用 C51 语言编写,采用模块化结构。采用指数规律升降速,用定时器中断方式来控制电动机的速度,升降速的控制实际上就是不断的改变定时器装载值的大小。为了便于编制程序,不必每步都计算装载值,可以用阶梯曲线来逼近升降速曲线,即进行离散化处理。对于每一档频率,软件系统可以通过查表方法查出所需的装载值。
5.1 软件结构设计
进行软件结构设计的任务是确定程序结构、划分功能模块。本系统采用模块化编程,模块化编程是一种软件设计方法,各模块分别编写、编译和调试,最后模块一起连接/定位。模块化编程有以下优点:
1.模块化编程使程序开发更有效。小块程序更易理解和调试。知道模块的输入和输出就可以直接测试小模块。
2.当同类的需求较多时,可把程序放入库中以备以后使用。例如,显示驱动,若要再使用显示驱动,由库中把它取出而不需全部的重新编写。
3.模块化编程使得要解决的问题与特定的模块分离,很容易找到出错的模块,大大简化了调试。
本系统软件的模块规划如图5.1所示,各个模块的具体实现见程序流程图部分。各个模块化文件如下:
1.global.c:定义全局变量类型的模块。
2.main.c:主程序模块。在主程序模块中,控制系统的流程、对系统的资源进行全面的管理、处理输入与显示等。
3.initial.c:初始化模块。在初始化模块中,对CPU的寄存器、I/O、中断、外部芯片(如 8255A)、变量等分别进行初始化。
4.control.c:控制函数模块。升降速由控制函数来实现,在升降速控制函数中实现步进电机的走步,累计走过的步数。当控制函数中等待时间到,则响应定时器中断服务函数。
5.keyinput.c:键盘输入处理模块。本系统的键盘显示接口采用 8255A 芯片,由键盘扫描函数来实现对键盘的处理功能。在键盘输入处理模块中,调用显示函数对输入的键盘数据进行显示。
6.display.c:七段 LED 显示输出模块。显示函数 display 将键盘输入的数实时的显示出来,并可以显示操作提示。
7.operate.c:计算参数模块。在函数 operate 中,根据输入的步数和运行速度计算降速段各档的定时时间间隔及各档的步数。函数 keyconvert 和函数 hexbcd 分别实现对键值的转换和拆分处理。
图5.1 主要程序模块图