步进电机控制系统设计报告Word文档格式.docx
《步进电机控制系统设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《步进电机控制系统设计报告Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
本控制系统的设计采用实验室中的试验箱单片机控制,通过人为按动各开关实现步进电机的开关,以及电机的加速及减速功能,另外还增加可设正反转的功能,具有灵活方便、适应范围广易懂的特点,能够满足实现自身实践动手能力提高的需求。
一、设计任务与要求
本设计的目的是以单片机为核心设计出一个单片机控制步进电机的控制系统。
本系统采用8279作为控制单元,通过键盘实现对步进电机转动方向及转动速度的控制,并且将步进电机的转动速度动态显示在LED数码管上。
设计的步进电机控制系统应具有以下功能:
1.步进电机的启停控制;
2.步进电机的正反转控制;
3.步进电机的加速控制;
4.步进电机的减速控制;
5.步进电机转速的动态显示。
二、硬件设计
1、硬件电路框图
图2.1
2、电路分析
2.1单片机最小电路
图2.1.1
单片机最小电路由电源电路、复位电路、晶振电路组成:
(1)电源电路(如图2.1.1)中C1(0.1uF的电容)、C2(47.uF的电容)起滤波作用,C1过滤高频信号,C2过滤低频信号。
图2.1.2
(2)复位电路(如图2.1.2),当VCC上电时,C充电,在10K电阻上出现电压,使得单片机复位;
几个毫秒后,C充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。
工作期间,K1闭合时,C放电;
K1断开时,C又充电,在10K电阻上出现电压,使得单片机复位。
图2.1.3
(3)在晶振电路(如图3.1.3)中,晶振采用12M的晶振,实现1us的机器周期。
图2.1.4
2.2步进电机驱动电路
图2.2
ULN2003A资料:
ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
003工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。
它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于TTLCOMS,由达林顿管组成驱动电路。
ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,它的输出端允许通过电流为200mA,饱和压降VCE约1V左右,耐压BVCEO约为36V。
用户输出口的外接负载可根据以上参数估算。
采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。
通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。
2.3键盘显示电路
图2.3
8279特点:
(1)可同时进行键盘扫描及文字显示;
(2)键盘扫描模式;
(3)传感器扫描模式;
(4)激发输入模式;
(5)8乘8键盘FIFO(先进先出);
(6)具有接点消除抖动,2键锁定及N键依此读出模式;
(7)双排8位数或双排16位数的显示器;
(8)右边进入或左边进入。
16位字节显示存储器。
8279引脚说明 <
1>
DB0~DB7:
双向数据总线。
在CPU与8279间做数据与命令传送。
<
2>
CLK:
8279的系统时钟,100KHz为最佳选择。
3>
RESET:
复位输入线。
输入HI时可复位8279。
4>
CS:
芯片选择信号线。
当这个输入引脚为低电平时,可将命令写入8279或读取8279的数据。
5>
A0:
缓冲器地址选择线。
A0=0时,读写一般数据;
A0=1时,读取状态标志位或写入命令。
6>
RD:
读取控制线。
RD=0时,8279输送数据到外部总线。
7>
WR:
写入控制线。
WR=0时,8279从外部总线接收数据。
8>
IRQ:
中断请求。
平常IRQ为LO,在键盘模式下,每次读取FIFO/SENSORRAM的数据时,IRQ变为HI,读取后转为LO;
在传感器模式下,只要传感器一有变化,就会使IRQ变为HI,读取后转为LO。
9>
SL0~SL3:
扫描按键开关或传感器矩阵及显示器,可以是编码模式(16对1)或解码模式(4对1)。
10>
RL0~RL7:
键盘/传感器的返回线。
无按键被按时,返回线为HI;
有按键被按时,该按键的返回线为LO。
在激发输入模式时,为8位的数据输入。
11>
SHIFT:
在键盘扫描模式时,引脚的输入状态会与其它按键的状态一同储存(在BIT6),内部有上拉电阻,未按时为HI,按时为LO。
12>
CNTL/STB:
在键盘扫描模式时,引脚的输入状态会与SHIFT以及其它按键的状态同一储存,内部有上拉电阻,未按时为HI,按时为LO。
在激发输入模式时,作为返回线8位数据的使能引脚。
13>
OUTA0~OUTA3:
动态扫描显示的输出口(高4位)。
14>
OUTB0~OUTB3:
动态扫描显示的输出口(低4位)。
15>
BD:
消隐输出线。
1、电路原理图与说明
图3.1
四、软件设计流程图与源程序清单及注解
4.1软件设计流程图
图4.1
图4.2
图4.3
4.2程序清单
Z8279EQU8701H;
8279状态口地址
D8279EQU8700H;
8279数据口地址
PIEQU8300H
DIREEQU30H;
转的形式
STASEQU31H;
相位
SPEDEQU32H;
速度指针0~3
SPEDED_VALEQU33H
KEY_VALEQU34H
DISPED_SBUF0EQU35H
DISPED_SBUF1EQU36H
DISPED_SBUF2EQU37H
ORG0000H
LJMPSTART
ORG000BH
LJMPINT0_P
ORG001BH
LJMPINT1_P
ORG0100H
START:
MOVSP,#60H
LCALLINTI8279
LCALLINT_T0
LCALLINT_T1
MOVDIRE,#02H
MOVSPED,#04H
MOVSTAS,#077H
SETBEA
INTI8279:
MOVDPTR,#Z8279;
MOVA,#0D3H
MOVX@DPTR,A
MOVDPTR,#Z8279;
MOVA,#000H;
MOVX@DPTR,A
MOVA,#038;
NOP
RET
INT_T0:
MOVTMOD,#011H
MOVTH0,#0FFH;
MOVTL0,#0FEH
CLRPT0
SETBET0
SETBTR0
INT_T1:
MOVTMOD,#011H
MOVTH1,#04CH;
定时时间为50mS
MOVTL1,#000H
SETBPT1
SETBET1
SETBTR1
RET
INT0_P:
PUSHACC;
堆栈
LCALLLP0;
步进电机控制程序
EXIT0:
MOVTH0,#0FFH;
重装定时初值
MOVTL0,#0FEH
POPACC
RETI
LP0:
MOVR7,SPEDED_VAL
LP1:
LCALLDELAY;
延时决定速度
DJNZR7,LP1;
相位转动
MOVA,DIRE
CJNEA,#00H,LP2;
顺时针转
MOVA,STAS
RLA
MOVSTAS,A
ANLA,#0FH
MOVP1,A;
相位输出
LJMPLP5
LP2:
CJNEA,#01H,LP3;
逆时针转
MOVA,STAS
RRA
MOVP1,A;
LJMPLP5
LP3:
CJNEA,#02H,LP5;
停转
LJMPLP5
LP5:
NOP
DELAY:
MOVR3,#20H;
延时子程序
DELAY1:
MOVR4,#04FH
DJNZR4,$
DJNZR3,DELAY1
INT1_P:
PUSHACC;
LCALLKD_KB;
键盘扫描处理
LCALLSBUF_DISPED0;
LED灯显示
LCALLLEDD_PROC0
EXIT1:
MOVTH1,#04CH;
POPACC
RETI
KD_KB:
MOVDPTR,#Z8279;
读状态字
MOVXA,@DPTR
ANLA,#0FH
JZKD_KB1;
表示有键按下
MOVA,#40H;
读FIFO/传感器RAM命令
MOVDPTR,#D8279
ANLA,#3FH;
键值最大为64,屏蔽不用位
MOVKEY_VAL,A
LCALLJP0
KD_KB1:
KEY0:
MOVA,KEY_VALU
CJNEA,#0AH,KEY1
LCALLKA0
LJMPKEY8
KEY1:
CJNEA,#0BH,KEY2
LCALLKEY0
LJMPKE