直接用计算机串行口控制步进电机的方法
- 格式:doc
- 大小:25.50 KB
- 文档页数:5
步进电机常用控制方式-回复步进电机是一种能够将电信号转变为机械运动的设备,广泛应用于各个领域,如自动化控制、通信设备、3D打印等。
步进电机的控制方式有多种,不同的控制方式适用于不同的应用场景。
本文将为您详细介绍几种常用的步进电机控制方式及其原理。
一、开环控制开环控制是最简单也是最常见的步进电机控制方式之一。
在开环控制中,控制器发出的电信号直接驱动步进电机,但无法实时监测电机的转动情况及位置信息。
这种控制方式通常使用脉冲信号进行驱动,脉冲的频率决定了电机的转速,脉冲的数量决定了电机的旋转角度。
开环控制具有控制简单、成本低的优点,适用于一些对位置精度要求不高的应用场景,如打印机、输送带等。
但开环控制无法保证电机的运动精度,容易发生误差积累,且对于负载变化或电机参数变化较大的情况下,控制效果较差。
二、半闭环控制半闭环控制是在开环控制的基础上增加了位置反馈,在电机转动过程中实时获取电机的位置信息,从而实现更加精确的控制。
在半闭环控制中,控制器发出的脉冲信号驱动电机,同时通过位置传感器获取电机的位置信息反馈给控制器,控制器根据位置信息实时调整脉冲信号,从而实现对电机转动的控制。
半闭环控制相比开环控制具有更高的控制精度和更好的抗干扰性能。
适用于对位置精度要求较高的应用场景,如数控机床、印刷设备等。
但半闭环控制需要额外的位置传感器来实现位置反馈,增加了系统的复杂性和成本。
三、闭环控制闭环控制是步进电机控制的最高级别。
闭环控制通过在电机转动过程中实时获取位置、速度等信息,并与目标设定值进行比较,实现对电机位置、速度的闭环控制。
在闭环控制中,控制器发出的脉冲信号驱动电机,同时通过位置传感器获取电机的位置信息反馈给控制器,控制器根据位置信息计算出电机的速度和加速度信号,进一步精确调整对电机的驱动信号。
闭环控制具有极高的控制精度和稳定性,适用于对位置和速度精度要求非常高的应用场景,如精密仪器、卫星导航等。
闭环控制系统的响应速度快、鲁棒性好,能够在负载变化或环境干扰较大的情况下保持稳定的控制效果。
一、电子琴1、连线:按键K1~K7与P10~P16相连,蜂鸣器与P33(INT1)相连。
2、流程图3、程序#include "reg51.h"sbit P3_3=P3^3;unsigned char idata i,tl0_temp=0,th0_temp=0;void INTTO() interrupt 1{TH0=th0_temp;TL0=tl0_temp;P3_3=~P3_3;}main(){P1=0Xff;TMOD=0X01;ET0 =1;EA =1;TH0=0;TL0=0;TCON =0x10;while(1){i=P1;if(i==0xff)TR0=0;if(i==0xfe){th0_temp=0xfC;tl0_temp=0x42;TR0 =1;}if(i==0xFD){th0_temp=0xFC;tl0_temp=0xAE;TR0=1;}if(i==0xFB){th0_temp=0xFD;tl0_temp=0x0A;TR0 =1;}if(i==0xF7){th0_temp=0xFD;tl0_temp=0x35;TR0 =1;}if(i==0xEF){th0_temp=0xFD;tl0_temp=0x82;TR0 =1;}if(i==0xDF){th0_temp=0xFD;tl0_temp=0xC8;TR0 =1;}if(i==0xBF){th0_temp=0xFE;tl0_temp=0x05;TR0 =1;}}}二、步进电机1、连线P1.0---P1.3依次连接A-DP3.4—K2 调节转向P3.5—K1 调节转速2、流程图3、程序#include "reg51.h"sbit SW1=P3^4;sbit KEY1=P3^5;bit Key1Flag;void DELAY(unsigned char dly){unsigned char i,j;for(i=0;i<dly;i++)for(j=0;j<255;j++);}void Mode1_deasil(unsigned char dly){P1=0x01; //ADELAY(dly);P1=0x02; //BDELAY(dly);P1=0x04; //CDELAY(dly);P1=0x08; //DDELAY(dly);}void Mode1_anticlockwise(unsigned char dly){P1=0x08; //DDELAY(dly);P1=0x04; //CDELAY(dly);P1=0x02; //BDELAY(dly);P1=0x01; //ADELAY(dly);}main(){unsigned char counter;counter=10;while(1){if(SW1==1)Mode1_deasil(counter);elseMode1_anticlockwise(counter);if((Key1Flag==0)&&(KEY1==1))Key1Flag= 1;elseif((Key1Flag==1)&&(KEY1==0)){DELAY(50);if(KEY1==0){Key1Flag=0;counter=counter+50;if(counter>=250)counter=50;}}}}三、直流电机1、连线P3.5—PWM0-5V输出---直流电机输入(至D/A)P1.1 ——K1P1.2——K22、流程图3、程序#include "reg51.h"sbit PWMout=P3^5;sbit KEY1=P1^1;sbit KEY2=P1^2;bit Key1Flag;bit Key2Flag;unsigned char Th0_temp,Tl0_temp;void DelayS(unsigned int dly);void key_check(void);void INTTO() interrupt 1{TR0=0;PWMout=0;}void INTT1() interrupt 3{TL0=Tl0_temp;TH0=Th0_temp;TR0=1;PWMout=1;}void DelayS(unsigned int dly){unsigned int i;for(; dly>0; dly--){for(i=0; i<1000; i++);}}void key_check(void){if((Key1Flag==0)&&(KEY1==1))Key1Flag=1;else if((Key1Flag==1)&&(KEY1==0)){DelayS(10); //k1按下加速if(KEY1==0){Key1Flag=0;Th0_temp-=0x10;if(Th0_temp<=0) Th0_temp=0x10;}}else if((Key2Flag==0)&&(KEY2==1))Key2Flag=1;//k2按下减速else if ((Key2Flag==1)&&(KEY2==0)){DelayS(10);if(KEY2==0){Key2Flag=0;Th0_temp+=0x10;if(Th0_temp>=250)Th0_temp=0xF0;}}}void main(){TMOD=0x11;TL0=0x00;TH0=0x70;Th0_temp=0x70;Tl0_temp=0x00;TL1=0x00;TH1=0x00;ET1=1;ET0=1;EA=1;TR1=1;while(1){key_check();}}四、串口通讯1、连线实验箱仿真头的TxD,RxD接用户串行口的TxD,RxD。
第四节 步进电机的控制与驱动步进电机的控制与驱动流程如图4-11所示。
主要包括脉冲信号发生器、环形脉冲分配器和功率驱动电路三大部分。
步进脉冲方向电平图4-11 步进电机的控制驱动流程二、步进电机的脉冲分配环形分配器是步进电机驱动系统中的一个重要组成部分,环形分配器通常分为硬环分和软环分两种。
硬环分由数字逻辑电路构成,一般放在驱动器的内部,硬环分的优点是分配脉冲速度快,不占用CPU的时间,缺点是不易实现变拍驱动,增加的硬件电路降低了驱动器的可靠性;软环分由控制系统用软件编程来实现,易于实现变拍驱动,节省了硬件电路,提高了系统的可靠性。
1.采用硬环分时的脉冲分配采用硬环分时,步进电机的通电节拍由硬件电路来决定,编制软件时可以不考虑。
控制器与硬环分电路的连接只需两根信号线:一根方向线,一根脉冲线(或者一根正转脉冲线,一根反转脉冲线)。
假定控制器为AT89S52单片机,晶振频率为12MHz,如图4-18:P1.0输出方向信号,P1.1输出脉冲信号。
则控制电机走步的程序如下:(1)电机正转100步MOV 0FH,#100D ;准备走100步CONT1: SETB P1.0 ;正转时P1.0=1CLR P1.1 ;发步进脉冲的下降沿(设驱动器对于脉冲的下降沿有效)NOP ;延时(延时的目的是让驱动电路的光耦充分导通)NOP ;延时(根据驱动器的需要,调整延时)SETB P1.1 ;发步进脉冲的上升沿MOV 0EH,#4EH ;两脉冲之间延时20000μs(决定电机的转速)MOV 0DH,#20H ;20000的HEX码为4E20CALL DELAY ;调用延时子程序DJNZ 0FH,CONT1 ;循环次数减1后,若不为0则继续,循环100次RET(2)电机反转100步MOV 0FH,#100D ;准备走100步CONT2: CLR P1.0 ;反转时P1.0=0CLR P1.1 ;发步进脉冲的下降沿(设驱动器对于脉冲的下降沿有效)NOP ;延时(延时的目的是让驱动电路的光耦充分导通)NOP ;延时(根据驱动器的需要,调整延时)SETB P1.1 ;发步进脉冲的上升沿MOV 0EH,#4EH ;两脉冲之间延时20000μs (决定电机的转速)MOV 0DH,#20H ;20000的HEX 码为4E20CALL DELAY ;调用延时子程序 DJNZ 0FH,CONT2 ;循环次数减1后,若不为0则继续,循环100次RET2.采用软环分时的脉冲分配如图4-19所示,该系统基于AT89S52单片机,利用扩展的可编程接口芯片8255A 的PB 口送出步进脉冲信号,经过驱动放大后,分别控制X 轴、Z 轴两个三相六拍反应式步进电机激磁绕组的通电顺序,以控制刀架在X、Z 两个方向的运动。
步进电机是工业自动化过程当中经常用到的一种控制传动机构,它是通过接受输入脉冲,然后每个脉冲转动一定的步距(角度)来完成对执行机构的控制传动的。
使用PLC可以通过特殊功能存储器(SM)或者增加EM253位控模块来控制步进电机,但是使用SM需要熟悉每一位的意义,而且编程烦琐。
如果为PLC增加功能扩展模块,无疑会增加产品成本。
鉴于这些原因并结合本人的实践经验,本文利用STEP 7-Micro/WI N 位置控制向导来实现应用PLC控制步进电机的运动功能。
1 操作步骤[2]使用STEP 7——Micro/WIN位置控制向导,为线性脉冲串输出(PTO)操作组态一个内置输出。
启动位置控制向导,可以点击浏览条中的向导图标,然后双击PTO/PWM图标,或者选择菜单命令工具→位置控制向导。
(1)在位置控制向导对话框中选择“配置S7-200 P LC内置PTO/PWM操作”。
(2)选择Q0.0或Q0.1,组态作为PTO的输出。
(3)从下拉对话框中选择“线性脉冲串输出(PTO)”。
(4)若想监视PTO产生的脉冲数目,点击复选框选择使用高速计数器。
(5)在对应的编辑框中输入最高电机速度(MAX_SPE ED)和电机的启动/停止速度(SS_SPEED)的数值。
(6)在对应的编辑框中输入加速和减速时间。
(7)在移动包络定义界面,点击新包络按钮允许定义包络,并选择所需的操作模式。
a)对于相对位置包络:输入目标速度和脉冲数。
然后,可以点击“绘制包络”按钮,查看移动的图形描述。
若需要多个步,点击“新步”按钮并按要求输入步信息。
b)对于单速连续转动:在编辑框中输入目标速度的数值。
若想终止单速连续转动,点击子程序编程复选框,并输入停止事件后的移动脉冲数。
(8)根据移动的需要,可以定义多个包络和多个步。
(9)选择完成结束向导。
2 应用实例本例通过PLC控制步进电机在车轮自动超声探伤中的应用,进一步说明利用STEP 7-Micro/WIN 位置控制向导来实现利用PLC控制步进电机的具体操作过程。
上海理工大学本科生毕业论文目录摘要ABSTRACT第 1 章绪论 (1)1.1 设计背景 (1)1.2 设计要求 (1)第 2 章硬件设计 (2)2.1总体方案流程 (2)2.2 各部分设备及芯片 (2)2.2.1 步进电机 (2)2.2.2 单片机的介绍及其选择 (6)2.2.4 MAX232芯片的介绍 (13)2.3 上位机设计 (14)2.4下位机设计 (14)第3章软件设计 (15)3.1 上位机软件任务 (15)3.2 上位机界面实现 (15)3.3 串行口模块 (16)3.3.1 概述 (16)3.3.2 RS-232串行口 (16)3.3.3 串行口通信原理和通信流程 (16)3.3.4在vb平台下实现串口通信 (17)第4章系统调试与实验 (18)总结 (20)参考文献 (21)附录 (21)步进电机PC控制(硬件部分)步进电机的PC控制(硬件部分)摘要人类社会进入自动化时代的今天,步进电动机已成为除直流电动机和交流电动机以外的第三类电动机。
传统电动机作为机电能量转换装置,在人类的生产和生活进入电气化过程中起着关键的作用。
当传统电动机的功能已不能满足工厂自动化和办公自动化等各种运动控制系统要求的时候,一系列新的具备控制功能的电动机系统便诞生了。
其中较有自己特点,且应用十分广泛的一类,便是步进电动机。
步进电机是一种执行机构,它能将电脉冲转化为角位移。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
本设计采用PC作为上位机,51系列单片机作为下位机对五线四相步进电机进行控制,对步进电机控制的硬件和软件方面分别进行研究并加以结合,最终成功的实现步进电机的PC控制系统。
预计未来步进电机的研究将会继续深入下去,研究方向之一便是电机与驱动的一体化,从而达到减小体积、提高性能和性价比的目的。
串口控制步进电机方向和转速一、项目目标:单片机1 单片机2发送机不断扫描独立按键,当判断到某键按下,通过串口发送控制代码给接收机,接收机收到信号,判断相应的代码,并执行相应的动作(正转,反转,加速,停止),同时显示步进机的延时速度。
二、硬件设计1键盘模块设计步进电机控制系统具有正转、反转、加速和停止4个功能,采用独立键盘使得程序简单,电路易实现。
这4个按键分别接到P2口的P2.0,P2.1,P2.2和P2.3引脚,为正转按键,反转按键,加速按键,和停止按键。
如下图所示。
2步进电机驱动模块设计由于步进电机的功率较大,步进电机驱动电路设计采用高电压、大电流的ULN2003A.芯片,P1口的P1.0、P1.1、P1.2和P1.3四个引脚通过步进电机驱动电路分别接在步进电机的A、B、C、D。
如下图所示。
8显示模块设计显示模块采用7段共阳数码管显示,数码管的段选依次为P0口的P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7,同时P0口需安装上拉电阻。
数码管的位选依次为P2口的P2.4、P2.5、P2.6、P2.7。
如下图所示。
电路图:三、程序设计单片机1 单片机2C语言程序:(1)发送机程序:#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit key0=P2^0;sbit key1=P2^1;sbit key2=P2^2;sbit key3=P2^3;//独立按键定义void delay()//消抖子程序{uchar a;for(a=0;a<200;a++);}void trans()//代码发送子程序{key0=1;if(key0==0);delay();if(key0==0) { SBUF=0x00;while(!TI);TI=0;}while(!key0);key1=1;if(key1==0);delay();if(key1==0) {SBUF=0xff;while(!TI);TI=0;}while(!key1);key2=1;if(key2==0);delay();if(key2==0) {SBUF=0xfe;while(!TI);TI=0;}while(!key2);key3=1;if(key3==0);delay();if(key3==0) { SBUF=0xfd;while(!TI);TI=0;}while(!key3);}void main(){TMOD=0x20;//选择工作方式为T1:工作方式2 自动重装初值8位计数器TH1=0xE7;TL1=0xE7;//设置波特率为625bpsTR1=1;//开T1中断IE=0X90;//开串口中断,开总中断IP=0X02;//设置串口中断为高优先级0x10//设置T0中断为高优先级0X02SCON=0X40;//设置串口为方式1,不允许串口接收while(1){trans();}}(2)接收机程序#include<reg52.h>//头文件unsigned char step[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//步进机工作方式为四相八拍unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xa4,0x8e,0xbf};//0-9加Z,F,----显示void delay()//延时子程序{unsigned char i,o;for(o=0;o<20;o++)for(i=0;i<200;i++);}void delayc()//长延时{unsigned char i,o;for(o=0;o<250;o++)for(i=0;i<250;i++);}unsigned char k,zhi,getzhi;unsigned int temp,aa,l; //定义变量void xianshi();void main(){TMOD=0X20; //工作方式2TH1=0XE7;TL1=0XE7; //设置波特率为625bpsTR1=1; //开T1中断IE=0X90;//开总中断,开串口SCON=0X50;//设置串口工作方式1 ,允许串口接收temp=300;//设置初始变量while(1){aa=temp;if(zhi==1){for(k=0;k<8;k++){P1=step[k];for(l=0;l<aa;l++);}}//当接收到0x00时执行正转if(zhi==3){for(k=0;k<8;k++){P1=step[8-k];for(l=0;l<aa;l++);}}//当接收到0xff时执行反转if(zhi==5){P1=0XFF;}//停止延时时间根据接收到0xfe的次数每次加20;满3000,清零xianshi();//显示}}void xianshi()//显示子程序{P2=0X80;P0=table[temp%10];//个位delay();P2=0X40;P0=table[temp/10%10];//十位delay();P2=0X20;P0=table[temp/100%10];//百位delay();P2=0X10;P0=table[temp/1000];//千位delay();}void recevied() interrupt 4 //接收程序{if(RI==1){RI=0;getzhi=SBUF;if(getzhi==0x00){P0=table[10];P2=0x8f;delayc();zhi=1;}//接收到0x00数码管显示Z,赋值执行正转if(getzhi==0xff){P0=table[11];P2=0x8f;delayc();zhi=3;}//接收到0xff数码管显示F,赋值执行反转if(getzhi==0xfe){temp=temp+30;if(temp==3000){temp=0;}}//接收到0xfe,每接收到一次,延时加30,加到3000重新赋值if(getzhi==0xfd){P0=table[12];P2=0xff;delayc();zhi=5;}//接收到0xfd数码管显示----,赋值执行停止}}四、调试1、按设计的电路图接线,启动KEIL3分别建立两个工程项目,把相应程序拷贝进去,设置好参数,编译。
步进电机的控制原理是什么?如何实现步进电机的控制?实验原理先来看一下(硬件)原理图,可看到控制(步进电机)的管脚分别为:GPIO6[2]、GPIO6[3]、GPIO6[4]和GPIO1[15]。
使用的是一路四相五线步进(电机),使用的电机驱动(芯片)是L9110。
四相五线步进电机的控制方法有两种,四相四拍和四相八拍。
本实验中使用的是四相四拍,称为全步控制。
四相:步进电机中有四组线圈。
四拍:步进电机A,B,C,D四组线圈的通电时序,四拍的驱动正转通电顺序为A-B-C-D-A-B-C-D-……循环往复,-A-B-C-D-四拍为一个循环周期。
五线:步进电机引出的接线数量为五根。
步进电机(工作原理)步进电机是利用(电磁铁)原理,将脉冲(信号)转换成线位移或角位移的电机。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载信号的影响。
每给电机加一个脉冲信号,电机就转过一个步距角,带动(机械)移动一小段距离。
步进电机的速度控制:通过输入的脉冲频率快慢实现的。
当发生脉冲的频率减小时,步进电机的速度就下降;当频率增加时,速度就加快。
还可以通过频率的改变而提高步进电机的速度或位置精度。
步进电机的位置控制:靠给定的脉冲数量控制的。
给定一个脉冲,转过一个步距角,当停止的位置确定以后,也就决定了步进电机需要给定的脉冲数。
程序流程程序流程设计中首先要进行(UART)2初始化和(DSP)中断初始化,接着进行矩阵键盘初始化和外设使能配置,然后进行管脚复用配置和(定时器)初始化,接着初始化定时器中断,最后进行矩阵键盘扫描并控制步进电机的转动。
管脚复用源码管脚复用配置GPIO复用配置操作直接封装成了函数,使用时,相关函数通过“gpio.h”文件引用。
Star(te)rWare A(PI)(接口):GPIOBank0Pin0PinMuxSetup(); 方向配置源码第一个参数时GPIO的基地址,第二个参数是GPIO的编号,第三个参数设置GPIO的方向管脚方向配置使用StarterWare 的库将GPIO 口配置为输出或输入。
直接用计算机串行口控制步进电机的方法摘要:介绍了计算机串行口经二次开发,用作步进电机控制器的新方法。
通过向串行口发送数据产生控制脉冲,实现对步进电机的控制。
关键词:串行口再开发;控制脉冲;步进电机控制
中图分类号: tp39 文献标识码: a 文章编号: 1009-8631(2012)08-0065-01
步进电机在数控机床、医疗器械、仪器仪表等自动或半自动设备中得到了广泛应用。
控制步进电机常用步进控制卡,卡中pulse、dir分别为控制电机的转换步数和旋转方向的信号;cwl、ccwl分别为电机顺、逆时针旋转的限位信号;org为定位信号。
这种方法不成本较高,不便于操作,在计算机扩展槽上安装控制卡,也很不方便。
将计算机串行口二次开发,用于控制步进电机,具有成本低、操作简单、兼容性好等优点。
1 rs232串行口及编程
计算机串行接口采用rs232标准,常用信号有8个(为db9m插座时,引脚号如表1所示),其中rxd、txd为收、发数据,可与rs232串行口设备直接进行通讯,rts、dtr、cd、dsr、cts、bell为控制与检测modem的信号,在通讯过程中起联络与控制作用。
数据格式有5、6、7、8位几种,1位起始位(逻辑0),1、1.5或2位停止位(逻辑1),可以选择奇校验、偶校验和无校验,串行口编程方法主要有三种:硬件编程法、文件操作法。
1.1 硬件编程法
直接使用端口的输入、输出(i/o)函数对串行口的控制电路进行编程。
适用于dos及windows平台,但在基于nt技术构建的操作系统中因不允许用户程序直接操作硬件而不适用。
常用的端口输入、输出函数(指令)有:汇编语言的in、out指令及软中断调用,c语言的inport()、outport()、inportb()、outportb(),c++的_inp()、_outp()等。
计算机串行口采用intel 8250异步串行通讯组件构成,com1、com2、com3、com4的基地址分别为03f8h、02f8h、03e8h、02e8h,波特率因子(dr)计算方法为:dr=1.8432×1000000/16b,
1.2 文件操作法
文件操作法是将串行口作为系统的一个文件来处理,通过对这个文件的读、写操作引发串口对数据进行收、发动作。
这种方法在dos、windows、windows nt、windows 2000及windows xp等平台下都能正常工作。
例如在basic语言中可用语句:open “com1,1200,n,8,1,rs,cs,ds,cd”as #1将串行口com1作为文件#1进行读写操作。
在vc++中,可用createfile()、buildcommdcb ()、read()、write()、escapecommfunction()等函数将串行口作为文件进行操作。
2 串行口步进电机控制器工作原理
2.1 串行口发送数据过程研究
在串行口发送数据的过程中,串行口先发送起始位(逻辑0)进
行同步,接着按规定的波特率(b)从低位到高位依次发送通讯数据的各二进制位,最后发送停止位(逻辑1)。
表示每个二进制位的逻辑电平在txd端的保持时间为1/b秒。
如果按8位数据位、1位停止位、无奇偶校验方式发送数据,所发送数据的二进制位是0、1交替的。
例如:数据取01010101(即55h),每发送一个字节,在txd端发出5个脉冲,周期t=2/b,即频率f=b/2。
改变发送数据的各二进制位,便可在txd端得到不同的波形。
2.2 串行口步进电机控制器工作原理
通过分析串行口发送数据的过程可知,从txd端所发出的脉冲完全满足控制步进电机的需要:
①改变发送的字节数及所发送的字节内容,可在txd端产生任意数量的脉冲;
②改变波特率可动态改变发送脉冲的频率。
所以,可用txd作为控制步进电机的脉冲信号(pulse)。
串行口的dtr、rts、cts、dsr、cd、ri虽然在串行通讯接口中被定义为不同功能的握手信号,但通过对8520/1的分析可知,它们均可作为一般的i/o量使用,而且不论采用哪种编程方法,都能很方便地对这些信号进行读写操作。
若以dtr(或rts)作为方向控制信号(dir),同时分别以cd、dsr、cts、ri作为状态检测信号(cwl、ccwl、org等),则仅用一个串行口就已提供了步进电机控制器需要的所有信号。
由于串行口已直接提供了控制步进电电机所需的所有信号,只需将各信号由rs232电平变成ttl电平即可。
常用的电平转换器件有ds1488、ds1489。
3 软件设计及计算
为避免电机失步和提高电机运行速度,将步进电机运行过程为分三个阶段:低速起动并加速、高速运行、减速并停止;相应地控制脉冲也分为:升频、高频、降频三段。
在用串行口发送数据产生控制脉冲时,虽然通过改变所发字节内容的办法能产生1~5中间任意个数的脉冲,但若发送一个字节所字节的脉冲少于5个,后面接着发送数据产生的脉冲时,两个字节衔接时所产生的脉冲频率和占空比均会产生波动。
为使电机运行的三个阶段能平滑过滤,需要对每个阶段的脉冲数量进行调整,使ⅰ、ⅱ两个阶段的步数均为5的整数倍(分别为n1×5、n2×5);将非5整数倍的步数安排在减速停车的ⅲ阶段,发出脉冲数为n3×5+δp,其中δp=(1~4)。
这可通过改变ⅲ阶段发送的最后一个字节内容实现任意数量的脉冲输出。
产生1~4个脉冲应发送的数据分别为0ffh、0fbh、0f5h、0d5h。
在电机运行过程中,控制脉冲的频率f应随时变化以满足电机低速起停及高速运行的需要。
脉冲频率由发送数据的波特率(b)决定,每发出一个脉冲需用两个二进制位1和0来构成其高、低电平,所以f=b/2,通过调整发送数据的波特率可改变所发出的控制脉冲的频率。
按常规则波特率系列发送数据时所产生的控制脉冲频率变化较大,不能满足电机正常起停及调速的要求,为此计算机需按非标准的滤特率发送数据以产生任意频率的控制脉冲。
一般在电
机起动及停止阶段(ⅰ、ⅲ)每发送一个字节调整一次波特率,以使电机起停得尽量平滑。
ⅰ、ⅲ阶段频率的调整量δf1、δf2分别为:
δf1=(fh-fl)/n1 (1)
δf2=(fh-fl)/n3+1 (2)
相应的波特率的调整量δb1、δb2分别为:
δb1=(bh-bl)/n1=(2fh-2fl)/n1 (3)
δb2=(bh-bl)/(n3+1)=(2fh-2fl)/(n3+1)
(4)
发送第i个字节的波特率bi为:
4 高级控制功能
对步进电机的高级控制,主要是指自动找零及多机联动差补。
找零功能是指控制步进电机驱动运行机构,完成定位的过程。
在找零时,电机一般以低速运行,当测到org信号进电机停止。
由于运行速度低,为简化程序设计,每发送一个字节,在txd端可以只输出一个脉冲,测到org信号则停止发送。
为保证输出脉冲的占空比为50%,发送字节定为0f0h。
差补是指控制两台或两台以上电机按规定的速比运行,进而控制执行机构沿规定的轨迹运行。
由于一般计算机只有两个串行口,这种方法只适用于二维差补控制。
通常两个串行口用相同的波特率进行发送,通过调整发送的字节数及发送每个字节所产生的脉冲个数的不同来调整两个电机的运行速度和位置。