1、实验九 步进电机控制实验1、实验目的 1、掌握 keil C51 软件与 proteus 软件联合仿真调试的方法;2、掌握步进电机的工作原理及控制方法;3、掌握步进电机控制的不同编程方法;二、实验内容 1、 用 Proteus 设计一四相六线步进电机控制电路。要求利用 P1 口作步进电机的控制端口,通过达林顿阵列 ULN2003A 驱动步进电机。基本参考电路见后面附图。2.、编写程序,实现步进电机的正反转控制。正反转时间分别持续 10S 时间,如此循环。3.、设计一可调速步进电机控制电路。P3.2P3.5 分别接按键 k1k4,其中 k1 为正反转控制按键,k2 为加速按键,k3 为减速按键,
2、k4 为启动/停止按键,要求速度 7 档(17 )可调,加减速各设 3 档,复位时位于 4 档,要求每档速度变化明显。该步进电机控制电路在以上电路的基础上自行修改。三、实验原理及步骤 1.步进电机控制原理:1) 步进电机是利用电磁铁的作用原理,步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。每来一个电脉冲,步进电机转动一定角度,带动机械移动一小段距离。特点 A.来一个脉冲,转一个步距角。B.控制脉冲频率,可控制电机转速。C.改变脉冲顺序,可改变转动方向。2) 以反应式步进电机为例说明步进电机的结构和工作原理。三相反应式步进电动机的原理结构图如下,定子内圆周均匀分布着六个磁极,磁极上有
3、励磁绕组,每两个相对的绕组组成一相。转子有四个齿。给 A 相绕组通电时,转子位置如图(a) ,转子齿偏离定子齿一个角度。由于励磁磁通力图沿磁阻最小路径通过,因此对转子产生电磁吸力,迫使转子齿转动,当转子转到与定子齿对齐位置时(图 b)因转子只受径向力而无切线力,故转矩为零,转子被锁定在这个位置上。由此可见:错齿是助使步进电机旋转的根本原因。3)三相反应式步进电动机的控制原理 三相单三拍:A 相 B 相 C 相 A 相 三相六拍:AAB B BC C CA A 三相双三拍:AB BC CAAB4)步距角计算公式:步距角=360/(转子齿数*每个通电循环周期的拍数)四、电路设计及调试1、实验电路X
4、TAL218XTAL119ALE3031PSN29RST9P0./AD0390.1/138P0.2/AD2370.3/336P0.4/AD4350.5/534P0.6/AD630.7/732P1.011.2P1.231.34P1.451.56P1.671.78P3.0/RXD103.1/T1P3.2/INT0123./IT113P3.4/T014P3.7/RD173.6/W163.5/T115P2.7/A1528P2.0/A8212.1/92P2./A10232.3/124P2.4/A12252.5/13262.6/1427U1AT89C51C12PF C22PFX1CRYSTALC320uF
5、RA1k+5VRB10+5V1B11C16 22215 3B33C14 44413 5B55C126661 7B77C10OM9U2ULN203A+8.8STEPER-MOTRD1DIODE2DIODE3DIODE2、程序设计及调试步进电机正反转:#include#define uchar unsigned char#define uint unsigned intsbit A1=P10; sbit B1=P11;sbit C1=P12;sbit D1=P13;sbit fangxiang=P30;sbit up=P31;sbit down=P32;uchar code table=0xc0,
6、0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8;int speed,count;bit flag; #define coil_A A1=1;B1=0;C1=0;D1=0;#define coil_B A1=0;B1=1;C1=0;D1=0;#define coil_C A1=0;B1=0;C1=1;D1=0;#define coil_D A1=0;B1=0;C1=0;D1=1;#define coil_AB A1=1;B1=1;C1=0;D1=0;#define coil_BC A1=0;B1=1;C1=1;D1=0;#define coil_CD A1=0;B1=0;C
7、1=1;D1=1;#define coil_DA A1=1;B1=0;C1=0;D1=1;void delay1ms(uint x)uint y,z;for(y=0;y=200)count=0;flag=flag;);void main()init();while(1)write_com(0x80+0x01);for(num=0;num#define uchar unsigned char#define uint unsigned intsbit A1=P10; sbit B1=P11;sbit C1=P12;sbit D1=P13;sbit fangxiang=P30;sbit up=P31
8、;sbit down=P32;uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8;int step,speed;int step=3;bit flag; #define coil_A A1=1;B1=0;C1=0;D1=0;#define coil_B A1=0;B1=1;C1=0;D1=0;#define coil_C A1=0;B1=0;C1=1;D1=0;#define coil_D A1=0;B1=0;C1=0;D1=1;#define coil_AB A1=1;B1=1;C1=0;D1=0;#define coil_BC A1=0;B1=1;C1=1;D1=0;#define coil_CD A1=0;B1=0;C1=1;D1=1;#define coil_DA A1=1;B1=0;C1=0;D1=1;void delay1ms(uint x)uint y,z;for(y=0;y=6)step=6;if(up=0)step-;if(step=0)step=0;