目 录
摘要:........................... 3
1 引言........................... 3
2 系统设计....................... 3
2.1系统的基本方案.............. 3
2.2 各模块的方案的选择和功能简述. 3
2.3 最终总体方案................ 4
2.4系统各模块的最终方案图....... 4
2.5 步进电机的工作原理.......... 4
2.6 8255的应用设计............. 5
2.7 转速的控制.................. 6
2.8 软件程序流程图.............. 7
2.9 系统的总体硬件原理图........ 8
3总结与致谢...................... 8
附件............................. 9
步进电机的微机控制
微机原理是自动化专业和计算机专业的基础专业课,是对计算机系统和微处理器以及汇编语言、外围芯片的研究和学习。本设计就是基于8086CPU的微机控制,利用汇编语言,外围芯片8255的综合应用实例,连上硬件驱动电机电路,实施对步进电机的控制。通过此课程设计巩固了所学的知识,以及对汇编、C语言的温习和升华,同时是对我们动手、创新、独立思考问题能力的培养,为将来的计算机知识的进一步学习打下坚实的基础。
关键字:8086CPU 汇编程序 8255 驱动
在数控系统中,电机是控制系统的控制终端,所有的控制工作的目的就是为了控制电机的转速和方向。本文主要介绍一种控制步进电机的简单的系统搭建,和对电机的控制方法进行了论述。包括硬件接口的设计,汇编控制程序的编写,此方法简单,方便,通俗易懂。
PC机的控制模块,转速控制模块,转向控制模块,驱动模块
由于本设计是基于星研环境下的汇编,以及给定实验室的实验仪器,PC机部分已经给定,可以直接利用。
转向控制模块:在设计当中,利用《微机原理和接口技术》所学知识,用8255外围接口芯片,通过对PC口的输出操作,实现对电机正反转的控制。
转速控制模块:在做8255并口实验的时候,利用对8255 A口或B口进行输入操作,检测各个开关的状态,而每个开关代表不同的速度,可以加速和减速。
驱动电路部分:经过查询,有两种方案可以进行驱动。
方案一:利用驱动芯片L297/L298芯片。SGS公司的L297单片步进电机控制集成电路适用于双极性两相步进电机或四相单极性步进电机的控制,与两片H桥式驱动芯片L298组合,组成完整的步进电机固定斩波频率的PWM恒流斩波驱动器。采用L297和L298实现的步进电机驱动,该电路为固定斩波频率的PWM恒流斩波驱动方式,适用两相双极性步进电机,最高电压46V,每相电流可达2A。采用此设计的步进电机驱动系统,在驱动二相或四相混合式步进电机时运动平稳,速度快,噪音低,控制精高,而且可选整步半步驱动。外观采用铝镁合金,散热性好,价格低廉,可广泛应用于需要驱动电流小于2A的混合式两相或四相步进电机的系统中。
方案二:利用驱动芯片ULN2003A。ULN2003A是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。 输入5VTTL电平,是高耐压、大电流、内部由七个硅NPN 达林顿管组成的驱动芯片,灌电流可达500mA,并且能够在关态时承受 50V 的电压,输出还可以在高负载电流并行运行。伺服电机、步进电机驱动等电路中。
最终我选择了方案二。这两种驱动电路的不同之处在于驱动能力的不同,ULN2003的驱动电路只有500mA,可以驱动一些小型的电机,而298,297可以带动2A以上的电机。因为虽然方案一有很多的优点,但是要控制PWM斩波,调节占空比,对我来说有点困难,而且在实验仪器上的步进电机的功率不大,且仪器上用的ULN2003A驱动,用方案二完全可以完成实验,鉴于时间问题,只能在实验仪器上搭建硬件电路,综合以上考虑,选择了方案二。
以PC机为信息处理的核心,设计一块以可编程外围芯片8255为主体的硬件电路另加上驱动电机部分的ULN2003A芯片驱动,配合PC机对软件的控制处理,实现对电机转速、方向、加速和减速的控制。
系统设计方案结构如图1所示
图1 系统设计总体方案
步进电机是将电脉冲信号转换成角位移或线位移的机电式元件,结构图如图2。这次试验仪上的电机是四相六线的。分A、B、C、D四相,其工作方式分为单四拍(A→B→C→D→A)、双四拍(AB→BC→CD→DA→AB)和单双八拍(A→AB→B→BC→C→CD→D→DA→A)。根据对各个相组合进行依次通电,便可以获得相应的节拍。本文采用的是双四拍的节拍信号。如图2所示为电机内部结构.
图2 电机内部链接
正转控制模型
反转控制模型
可编程外围接口芯片8255有三个8位的输入输出端口A、B、C,有两种控制字:一类是定义各端口输入输出的工作方式,叫方式选择控制字。另一种是控制端口C的任一位的置位或复位操作,叫置位复位控制字。
本设计利用8255的方式选择控制字对其进行操作,A作输入端,C作输出端,工作于方式0:基本输入输出方式。A接在控制转速的开关上,C作输出操作A输入的各种响应。K0~K7为不同的速度控制键,其中K0为最低速度,K6为最高速度,K7控制电机的正反转,K7为0是反转,为1代表正转。硬件设计如图3所示
图3 8255硬件连接设计
控制步进电机的速度,实际上是对控制系统发出的脉冲频率或换相的周期,即在升速的过程中使输出的脉冲频率逐渐增加;在减速的过程中使输出的脉冲频率逐渐减少。脉冲信号的频率可有软件控制和硬件控制。本文中采用了软件控制法,利用时间延迟的方法,利用不同的开关,写入不同的的延迟时间,表示不同的速度,可以加速,可以减速。
部分程序如下:
;定义延时子程序:延时程序是由两曾循环程序构成的BL是外曾循环的次数 CX是内层循环的次数延迟时间长则脉冲频率小转速慢
DELAY PROC NEAR ;
DELAY1: MOV CX,0FFH
MOV BL,10H
DELAY2: LOOP DELAY2
DEC BL
JNZ DELAY1
RET
DELAY ENDP
图4软件流程图
微机原理这门课程学完后我有很大的收获,对汇编语言有了初步的了解。并且通过本实验让我对汇编语言产生很大的兴趣,让我掌握了汇编编程的总体思路,本实验利用微机控制步进电机的调速,在实验过程中遇到的问题告诉我可以通过改变CX的赋值来控制电们理论的编程要结合实际的电动机技术指标调试延迟时间和实验箱的电机的转动速度。CX越小电动机的转动速度越大。也可以通过改变BL的值来改变单个开关的速度。我们把CX称为总开关,BL成为分开关。从而达到从K0到K6 速度逐渐变快,而K7控制电动机的反转。当K7闭合时 电动机反转。从这次实验中并让我进一步的学习到了8255的应用和掌握了8255 的初始化和其编程。对我们以后的工作和学习起到的积极的作用。
这次设计同时督促我查了许多的资料,让我学到了很多的知识,
部分汇编程序
DATA SEGMENT
COM_ADD DW 00F3H ;控制口偏移量
PA_ADD DW 00F0H ;PA口偏移量
PB_ADD DW 00F1H ;PB口偏移量
PC_ADD DW 00F2H ;PC口偏移量
BUF DB 0 ;定义一个字节数据(用来存入开关的状态)
MES DB 'K0-K6 ARE SPEED CONTYOL',0AH,0DH;写入一些文字用来描述
DB 'K6 IS THE HIGHEST SPEED ',0AH,0DH ;各个开关所代表的速度
DB 'K0 IS THE LOWEST SPEED',0AH,0DH ;K0为最低速,K6为最高速
DB 'K7 IS THE DIRECTION CONTROL',0AH,0DH,'$';K7为方向键
DATA ENDS
;2.代码段代码
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX ;程序的初始化
MOV DX,OFFSET MES
MOV AH,09
INT 21H ;显示各个开关的信息
MOV DX,COM_ADD
MOV AL,92H ;(92H=10010010B,为控制字)
OUT DX,AL ; C口做输出,A口做输入
;送33H到A口输出 给后面电机的正反转提供初只 调用BIOS功能的INT16的1号功能,判断是否按下 如果有则返回DOS 如果没有判断开关的状态。
MOV BUF,33H
OUT1: MOV AL,BUF
MOV DX,PC_ADD
OUT DX,AL ;间接寻址获得AL的值
PUSH DX
MOV AH,06h
MOV D1,0ffh
INT 21H ;检查是否有键按下
POP DX
JE IN1 ;有键按下就停止,没有则转向IN1去执行
MOV AH,4CH
INT 21H
IN1: MOV DX,PA_ADD
IN AL,DX ;获得各个开关的状态
TEST AL,01H
JNZ K0
TEST AL,02H
JNZ K1
TEST AL,04H
JNZ K2
TEST AL,08H
JNZ K3
TEST AL,10H
JNZ K4
TEST AL,20H
JNZ K5
TEST AL,40H
JNZ K6 ;检查各个开关的状态,分别转向相应的程序
STOP: MOV DX,PA_ADD
MOV AL,0FFH
JMP OUT1 ;置停止信息并转向OUT1
;判断完状态则跳转到执行的程序 献给BL复制 实现岩石时间 控制转速 然后判断K7 的状态是1 还是0 。
K0: MOV BL,10H
SAM: TEST AL,80H;继续判断K7是否为0
JZ ZX0 ;为0就转向ZX0(循环右移程序)
JMP NX0 ;为1就转向NX0(循环左移程序)
K1: MOV BL,2FH ;BL为延时子程序的内层循环计数器
JMP SAM
K2: MOV BL,4FH
JMP SAM
K3: MOV BL,6FH
JMP SAM
K4: MOV BL,8FH
JMP SAM
K5: MOV BL,0AFH
JMP SAM
K6: MOV BL,0CFH
JMP SAM
ZX0: CALL DELAY ;调用延时子程序
MOV AL,BUF
ROR AL,1
MOV BUF,AL
JMP OUT1 ;循环右移
NX0: CALL DELAY;调用延时子程序
MOV AL,BUF
ROL AL,1
MOV BUF,AL
JMP OUT1 ;循环左移
;延时程序是由两曾循环程序构成的 BL 是外曾循环的次数 CX是内层循环的次数严实时间长则脉冲频率小 转速慢
DELAY PROC NEAR ;定义延时子程序
MOV CX,0FFH
DELAY2: LOOP DELAY2
DEC BL
JNZ ST
ST: RET
DELAY ENDP
CODE ENDS
END START
安徽电子信息职业技术学院
计算机科学系
《ARM嵌入式系统教程》课程设计报告
题目: 步进电机控制
指导老师: 郭志勇
学生姓名: 张迎兴 学 号: 100201131
专 业: 计算机控制
班 级:
20xx年 12 月 22 日
《ARM嵌入式系统教程》课程设计任
务书
题目: 步进电机控制
任务与要求:
步进电动机以最常用的三相六拍通电方式工作,并要求步进电动机
至 12 学生姓名: 张迎兴 学 号:100201131
专业: 计算机控制
指导教师: 郭志勇
- 1 -
摘 要:
随着微电子和计算机技术的发展,步进电机的要求量与日俱增,它广泛用于打印机、电动玩具等消费类产品以及数控机床、工业机器人、医疗器械等机电产品中,其在各个国名经济领域都有应用。研究步进电机的控制系统,对提高控制精度和响应速度、节约能源等都具有重要意义。
本控制系统的设计,有硬件设计和软件设计两部分组成。其中,硬件设计主要包括单片机最小系统、键盘控制模块、步进电机驱动模块、数码显示模块等功能模块的设计,以及硬件电路在电路板上的实现。软件设计包括主程序以及各个模块的控制程序,最总实验对步进电机转动方向及转动速度的控制,并且将步进电机的转动速度动态显示在LED数码管上。本系统具有智能性、实用性及可靠性的特点。
关键词: 步进电机;单片机;转速控制;方向控制;角度控制
- 2 -
目 录
摘要………………………………………………………………错误!未定义书
签。
关键词………………………………………………………2
一、设计目的………………………………………………………… 3
二、 课程设计计划表…………………………………………………………3 三、系统设计………………………………………………………………4
3.1步进电机电路图计
3.2步进电机程序设计设计四、 结束语………………………………………………………………6
五、参考文献…………………………………………………………
7
- 3 -
一、设计目的 1)了解步进电机的结构和工作原理。2)掌握步进电机控制系统的设计方 法及其调试技术。3)能够使用电路仿真软件进行电路调试。 步进电机驱动控制 系统设计内容二、课程设计进度计划表日 期12 月 8 号 至 12 月 11 号 12 月 12 号 至 16 号工 作 内 容上网收集资料,查阅相关内容执 行 情 况良好指导教师 签 字上机对步进电机电路图进行设 计及代码编写良好12 月 17 至 12 月 20 号上机调试对代码进行修改良好12 月 21 至 12 月 22 号对课程设计文档进行排版及制 作良好-4-
教师对进 度计划实 施情况总 评 签名 年 月 日三、系统设计3.1 步进电机电路图 如图 1-13.3VU111 12 XTAL1 XTAL2 P0.0/TxD0/PWM1 P0.1/RxD0/PWM3 P0.2/SCL/CAP0.0 P0.3/SDA/MAT0.0 P0.4/SCK/CAP0.1 P0.5/MISO/MAT0.1 P0.6/MOSI/CAP0.2 P0.7/SSEL/PWM2 P0.8/TxD1/PWM4 P0.9/RxD1/PWM6 P0.10/RTS1/CAP1.0 P0.11/CTS1/CAP1.1 P0.12/DSR1/MAT1.0 P0.13/DTR1/MAT1.1 P0.14/DCD1/EINT1 P0.15/RI1/EINT2 P0.16/EINT0/MAT0.2 P0.17/CAP1.2/TRST P0.18/CAP1.3/TMS P0.19/MAT1.2/TCK P0.20/MAT1.3/TDI P0.21/PWM5/TDO P0.22/TRACECLK P0.23/PIPESTAT0 P0.24/PIPESTAT1 P0.25/PIPESTAT2 P0.26/TRACESYNC P0.27/TRACEPKT0/TRST P0.28/TRACEPKT0/TMS P0.29/TRACEPKT2/TCK P0.30/TRACEPKT3/TDI P0.31/EXTIN0/TDO 13 14 18 21 22 23 24 28 29 30 35 36 37 41 44 45 46 47 48 1 2 3 32 33 34 38 39 8 9 10 15 16R2100RD1LED-BLUE D23.3VR4100RR910kR810kR710kR5FX UP DOWN 100RLED-BLUE D3 FX LED-BLUE D4R6100RUP3.3V 27 DBGSELLED-BLUE 9 5 7 10 12 6 11 1 15 IN1 IN2 IN3 IN4 ENA ENB VCC 4 VS OUT1 OUT2 OUT3 OUT4 GND 8DOWNR110k26RTCKU22 3 13 14 -146R310k 1.8V6 3.3V 40 17 5RSTV3 V3 V18 VSS VSS VSS VSS LPC2106C11uF43 31 19 7SENSA SENSBL298图 1-1-5-
3.2 步进电机控制程序设计如下:
#include "config.h"
#define KEY 0x00001c00
//uint16 speed=0;
uint16 speed=200;
uint8 flag=0;
uint8 round[8]={0x1,0x3,0x2,0x6,0x4,0xc,0x8,0x9}; uint8 back[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};
void delay(uint16 dly)
{ uint32 i;
for(; dly>0; dly--)
for(i=0; i<500; i++);
}
int main (void)
{
uint16 temp;
- 6 -
PINSEL0=0x00000000; PINSEL1=0x00000000;
IODIR=0x0000000f;
while(1)
{ if((IOPIN&KEY)!=KEY) { delay(10); } - 7 - if((IOPIN&KEY)!=KEY) { } //delay(20); if((IOPIN&KEY)==0x00001800) flag=~flag; if((IOPIN&KEY)==0x00001400) speed=speed-10; if((IOPIN&KEY)==0x00000c00) speed=speed+10; while((IOPIN&0x00001c00)!=0x00001c00);
} IOCLR=0x0f; if(flag==0) IOSET=round[temp]; else IOSET=back[temp]; temp++; if(temp>7) temp=0; delay(speed);
return 0;
}
四、结束语
经过这个学期对ARM的深入学习,并且在老师的悉心指导下和严格要求下,我们总于完成了步进电机设计课程。从书本上的知识到自己亲手的课程设计,每一步对我们来说无疑是巨大设为尝试和挑战。也成就了我们目前在大学期间完成的最大项目。
五、参考文献: 吴红星.《电机驱动与控制专用集成电路及应用》.北京:中国电力出版社,20xx年 董桂花.《步进电机控制系统的研究》.《农机化研究》. 20xx年03期。
- 8 -
微机原理课程设计设计报告姓名朱文斋班级学号30905020xx教师张荣标20xx年1月5日微机原理课程设计一目的结合微型计算机原理…
河北科技大学课程设计报告学生姓名学号专业班级课程名称学年学期指导教师年月课程设计成绩评定表目录一课程设计的目的1二设计题目1三设计…
接口技术基础实验报告学院计算机科学与技术学院班级计091学号09130220xx姓名曹恒楼指导老师顾晖时间20xx616接口技术课…
微机原理课程设计报告设计名称:LED七段数码管数字钟学院:电子信息学院班级:电科091提交时间:20##年6月15日一:设计内容设…
南京航空航天大学微机原理课程设计数据采集系统中断法微机原理课程设计数据采集系统中断法南京航空航天大学微机原理课程设计数据采集系统中…
湖南工程学院课程设计课程名称单片机原理与应用课题名称步进电机的控制专业测控技术与仪器班级0801学号20xx0120xx24姓名徐…
课程设计报告课程设计题目步进电机控制器学专班姓院名称业级电子与信息工程学院电气工程及其自动化名唐大伟学号导教师指日期20xx122…
江汉大学数字电子技术课程设计报告学院班级B110720xx自动化一学号11220xx01138学生姓名刘红指导教师涂昌培设计时间2…
成绩汇编及接口技术课程设计题目步进电机控制系统班级100602学号100602122姓名张春东时间20xx12251目录1设计任务…
专业课程设计题目一步进电机控制系统设计院系动化学院专业班级智能0801班小组成员指导教师王曙光日期20xx052320xx0603…
目录一.任务解析…………………………………………………………………1二.系统方案论证………………………………………………………………