msp430控制步进电机实验报告.doc
计算机硬件应用课程设计 一、实验内容及要求题目:步进电机控制设计使用单片机为核心,设计一个步进电机控制器。基本要求:使用单片机为控制核心,编写程序并设计硬件结构,实现对步进电机 的控制。步进电机按固定方向连续转动。对电机的运行方向进行控制,如:要求按下A键时,能够控制步进电机正转;按下B键时,能够控制步进电机反转。提高要求(选作):用LED数码管显示步进电机的转动状态;增加启动、停止控制按键。二、 小组成员三、 实验软硬件环境简介硬件环境:MSP430G2553单片机一块,五线四相步进电机一个,驱动芯片ULN2003一块,开关三个,下载线一根。软件设计:仿真软件PROTEUS 8.0 Professional;代码编写软件IAR;WINDOWS操作系统。四、 设计方案分析 步进电机是一种能够将电脉冲信号转换成角位移或线位移的机电设备,它实际上是一种单相或多相同步的步进电机。单相步进电机由单路电脉冲驱动,输出功率一般很小,故需要加一个驱动电路。当向脉冲分配器输入一个脉冲时,电动机各相的通电状态就会发生改变,转子会转过一定的角度(称为步距角)。正常情况下,步进电机转过的总角度和输入法的脉冲数成正比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。 步进电机的不同驱动方式,都是在工作时,脉冲信号按一定顺序轮流加到三相绕组上,从而实现不同的工作状态。步进电机有三线式、五线式、六线式三种,但其控制方式均相同,都必须以脉冲电流来驱动。若每转一圈以20个励磁信号来计算,则每个励磁信号前进18°,其旋转角度与脉冲数成正比,正反转可以由脉冲顺序来控制。 步进电机的励磁方式可分为全部励磁及半步励磁,其中全部励磁又有1相励磁及2相励磁之分,而半步励磁又称为1-2相励磁。1相励磁法:在每一瞬间只有一个线圈导通。消耗电力小,精确度良好,但转矩小,振动较大,每一励磁信号可走18°。若以1相励磁法控制步进电机正转,其励磁顺序表如下。若以励磁信号反响传送,则步进电机反转。本实验中采用这个方法。2相励磁法:在每一瞬间会有2个线圈同时导通。因其扭矩大,振动小,故为目前使用最多的励磁方式,每送一个励磁信号可走18°,若以两相励磁法控制步进电机正转,其励磁顺序如下表。若以励磁信号反向传送,则步进电机反转。1-2相励磁法:为1-2相交替导通。因分辨率提高,且运转平顺,每送一励磁信号可走9°,故也被广泛采用。若以1相励磁法控制步进电机正转,其励磁顺序见表,若以励磁信号反向传送,则步进电机反转。步进电机的负载转矩与速度成反比,速度越快负载转矩越小,但速度快至极限时,步进电机将不再运转。所以每走一步后,程序必须延时一段时间。五、系统硬件结构1、硬件设计思路及芯片选择5.1.1 单片机系统P1.0-P1.3作为输出端口,控制步进电机的励磁信号,进而控制步进电机的运行状态。P2.0-P2.2作为输入端口,连接开关,决定开关的闭合状态。5.1.2 开关设计本实验中采用三个开关,分别控制电机的正转、反转、加速。其连接图如下所示:在开关未闭合的时候,连接电阻与电源,输出为高电平;在开关闭合的时候,连接GND,输出为地。5.1.3 驱动电路单相步进电机由单路电脉冲驱动,输出功率一般很小,故需要加一个驱动电路。本实验中采用驱动芯片ULN2003A(达林顿驱动芯片),与P1.0-P1.3相接。ULN是集成达林顿管IC,内部还集成了一个消线圈反电动势的二极管,可用来驱动继电器。它是双列16脚封装,NPN晶体管矩阵,最大驱动电压=50V,电流=500mA,输入电压=5V,适用于在使用TTL COMS,由达林顿管组成驱动电路。它的输出端允许通过电流为200mA,饱和压降VCE 约1V左右,耐压BVCEO 约为36V。用户输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,故可直接驱动继电器或固体继电器,也可直接驱动低压灯泡。通常单片机驱动ULN2003时,上拉2K的电阻较为合适,同时,COM引脚应该悬空或接电源。ULN2003是一个非门电路,包含7个单元,但独每个单元驱动电流最大可达350mA.资料的最后有引用电路,9脚可以悬空。ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。输入5VTTL电平,输出可达500mA/50V。ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。该电路的特点如下: ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器。ULN2003是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。ULN2003A引脚如下: 5.2系统框图 开关控制部分MSP430G2553芯片 驱动器及步进电机部分 六、 软件系统说明1. 软件设计思路由单片机的P1.0-P1.3端口来控制小型步进电机,步进每步为18°。直接采用ULN2003驱动电路。该电路使用两相步进电机,采用1相激磁法,正转的激磁信号时序为0FEH,0FDH,0FBH,0F7H。循环5次为20步,该步进电机每步为18°,20步为一圈。反转的激磁信号时序为0F7H,0FBH,0FDH,0FEH。当闭合加速开关时,通过变量的值来控制不同的延时时间,来达到调节转速的功能。2. 流程图正转?开始 正转,缩短延时时间加速?加速?是否反转反转,缩短延时时间正转是 否 是 否3. 各个模块说明6.3.1 延时函数void delayus(uint t) uint i; while(t-)for(i=1300;i>0;i-);延时参数为t,不同的t对应不同的延时时间,达到改变速度的目的。6.3.2 正转主程序if(P2IN&0X07)=0X06) while(P2IN&0X07)=0X06) P1OUT=0XFE; delayus(100); P1OUT=0XFD; delayus(100); P1OUT=0XFB; delayus(100); P1OUT=0XF7; delayus(100); 6.3.3 反转主程序if(P2IN&0x07)=0X05) while(P2IN&0X07)=0X05) P1OUT=0XF7; delayus(100); P1OUT=0XFB; delayus(100); P1OUT=0XFD; delayus(100); P1OUT=0XFE; delayus(100); 6.3.4 正转的加速主程序if(P2IN&0X07)=0X02) while(P2IN&0X07)=0X02) P1OUT=0XFE; delayus(m-); P1OUT=0XFD; delayus(m-); P1OUT=0XFB; delayus(m-); P1OUT=0XF7; delayus(m-); if(m<4) m=80; 通过m-使延时时间不断减小,但是当延时时间过短时,脉冲频率过大,使电机无法转动,故当m小于4时,恢复原来的速度。6.3.5 反转的加速主程序if(P2IN&0X07)=0X01) while(P2IN&0X07)=0X01) P1OUT=0XF7; delayus(m-); P1OUT=0XFB; delayus(m-); P1OUT=0XFD; delayus(m-); P1OUT=0XFE; delayus(m-); if(m<4) m=80; 6.3.6 其他情况下if(P2IN&0X07)=0X07) /其他情况下静止 P1OUT=0XFF;其他情况下时,电机处于静止不动的状态4.源程序#include <msp430g2553.h>#define uchar unsigned char#define uint unsigned int/*延迟函数*/void delayus(uint t) uint i; while(t-) for(i=1300;i>0;i-); /*主函数*/void main(void) WDTCTL=WDTPW+WDTHOLD; P1DIR=0xFF; P1SEL=0X00; P1OUT=0XFF; int m=80; while(1) if(P2IN&0X07)=0X06) /正转 while(P2IN&0X07)=0X06) P1OUT=0XFE; delayus(100); P1OUT=0XFD; delayus(100); P1OUT=0XFB; delayus(100); P1OUT=0XF7; delayus(100); else if(P2IN&0x07)=0X05) /反转 while(P2IN&0X07)=0X05) P1OUT=0XF7; delayus(100); P1OUT=0XFB; delayus(100); P1OUT=0XFD; delayus(100); P1OUT=0XFE; delayus(100); else if(P2IN&0X07)=0X02) /正转加速 while(P2IN&0X07)=0X02) P1OUT=0XFE; delayus(m-); P1OUT=0XFD; delayus(m-); P1OUT=0XFB; delayus(m-); P1OUT=0XF7; delayus(m-); if(m<4) m=80; else if(P2IN&0X07)=0X01) /反转加速 while(P2IN&0X07)=0X01) P1OUT=0XF7; delayus(m-); P1OUT=0XFB; delayus(m-); P1OUT=0XFD; delayus(m-); P1OUT=0XFE; delayus(m-); if(m<4) m=80; else if(P2IN&0X07)=0X07) /其他情况下静止 P1OUT=0XFF; 七 系统设计结果1. 正转的仿真图2. 反转的仿真图八 实验改进1. 在激磁法上,可以使用1-2相励磁,可以增加更大的扭矩。2. 此实验还可以增加减速,以及数码管显示功能。