步进电机控制试验
一、 实验目的
1、掌握keilc51软件与protues软件的联合仿真调试的方法
2、掌握步进电机的工作原理及控制方法
3、掌握步进电机的不同编程方法
二、 实验内容
1、用protues设计一四相六线步进电机控制电路。要求利用p1口做为步进电机的控制接口,通过达林顿阵列ULN2003A。参考电路给出。
2、编写程序,实现步进电机的正反转控制。正反转时间分别持续10秒时间。如此循环。
3、设计一可调速度步进电机控制电路。P3.0~P3.2分别接按键K1~K3,其中K1为正反转控制按键,K2为加速按键,K3为减速按键,要求速度7档可调,加减速各设三档,复位时位于4档,要求每档速度变化明显。
三、 实验仪器与设备
1、微机一台 2、keilC51 集成开发环境 3、Proteus仿真软件
四、实验说明
1、步进电机控制原理;
(1) 步进电机是利用电磁铁的作用原理,将脉冲信号换为线位移或角位移的电机。每来一个脉冲,步进电机转动一定的角度,带动机械移动一小段距离。特点:来一个脉冲,转动一个步距角。控制脉冲频率,可控制电机转速。改变脉冲顺序,可改变转动方向。
2、ULN2003A:七达林顿阵列
ULA2003A是集成达林顿管反向驱动电路,内部还集成了一个消线圈反电动势的二极管,可以用来驱动电机、继电器等功率器件。它是双列16脚封装、NPN晶体管矩阵,最大驱动电压50v,输入电压5v。
五、 实验步骤
1、用proteus设计电路
2、在keilc51中编写键盘识别程序,编写通过后,与proteus联合调试
3、观察1602是否能正确显示
六、实验程序及电路图
1、正反转控制
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
char code foreward[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
sbit A1=P1^0;
sbit B1=P1^1;
sbit C1=P1^2;
sbit D1=P1^3;
bit flag;
void delay(uchar c)
{uchar a,b;
for(;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);}
void time0() interrupt 1
{ uchar count;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==200)
{count=0;
flag=!flag;}
}
void main()
{ uchar i;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;ET0=1;TR0=1;
while(1)
{
for(i=0;i<8&&flag==0;i++)
{ P1=foreward[i];
delay(100);}
for(i=0;i<8&&flag==1;i++)
{ P1=foreward[7-i];
delay(100);}
} }
2.可调速控制
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
char code foreward[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
char code speed[]={125,110,90,70,50,40,30};
uchar code table[]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};
sbit A1=P1^0;
sbit B1=P1^1;
sbit C1=P1^2;
sbit D1=P1^3;
sbit k1=P3^0;
sbit k2=P3^1;
sbit k3=P3^2;
bit flag,flag1;
uchar i,j;
void delay(uint c)
{uchar a,b;
for(;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);}
void main()
{ TMOD=0x01;
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
EA=1;ET0=1;TR0=1;
P2=table[j];j=3;
while(1)
{
for(i=0;i<8&&flag1==0;i++)
{ P1=foreward[i];
delay(speed[j]);}
for(i=0;i<8&&flag1==1;i++)
{ P1=foreward[7-i];
delay(speed[j]);}
}
}
void time0() interrupt 1
{ TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
P2=table[j];
if(P3!=0xff&&flag==0)
{ flag=1;
switch(P3)
{case 0xfe:flag1=!flag1;break;
case 0xfd:{if(j>=6){j=6;}else{ j++;}break;}
case 0xfb:{if(j<=0){j=0;}else {j--;}break; }
}
}
if(P3==0Xff) flag=0;
}
电路图
四、 实验总结
按键检测时,要设置标志位,防止按键没被检测到。
第二篇:步进电机控制实验报告
实 验 报 告
实验内容:步进电机控制实验 20xx年11月18日 院系:物科院 班级:085 学号:07080518 姓名:陈实
一 . 实验目的
1.掌握步进电机的软硬件环形分配控制方法。
2.了解步进电机硬件升降速控制电路原理。
3.测定空载运行下的步进电机启动频率及最高速运行频率。
二 . 实验设备
1.PC机及相应调试软件。
2.电机控制实验系统一台
三、 实验内容
1. 步进电机硬件环形分配器单步、连续控制。
2.步进电机硬件环形分配器下,升降速控制。
3.步进电机空载情况下最高启动频率、最高运行频率的测定.
4. 步进电机软件环形分配器程序编写。
四、实验步骤
1. 步进电机硬件环形分配器单步控制
(1)连线
单脉冲输出模块RSQ与环形分配器模块CLK1相连;
环形分配器模块的OUTA、OUTB、OUTC、OUTD分别与电机驱动模块的A、 B、
C、D相连;
环形分配器模块的输出A0、B0、C0、D0分别再与发光二极管显示模块的L1_in、L2_in、L3_in、L4_in相连。
(2) 环行分配器模块的DIR 接地或接电源(GND或VCC).
(3) 环形分配器的S3开关拨向整步方式(4相单四拍或双4拍)
(4) 不断触发单脉冲模块输入按钮,产生单脉冲,观察ABCD四相对应LED小灯的变化情况。
(5) 测定步进电机旋转一周走过的步数,计算步距角。
2. 步进电机硬件环形分配器连续控制。
(1)连线
脉冲振荡模块的脉冲输出CLK与环形分配器模块的脉冲输入CLK1相连; 环形分配器模块的A0、B0、C0、D0分别与电机驱动模块的A、B、C、D相连; 环形分配器模块的A0、B0、C0、D0分别再与发光二极管显示模块的L1_in、L2_in、L3_in、L4_in相连。
(2)环形分配器设为整步模式;
(3)测定步进电机转盘转速的霍尔开关输出端HALL1连接到单片机模块的INT0引脚,以测量转速。
(4)连接PC机串口(机箱上的DB9芯插座)与实验箱的电机控制部分的串口。
(5)运行PC机端的“电机控制实验”,打开串口1,并选连续测量。
(6)调节脉冲振荡模块电位器R6,改变输出振荡频率。观察步进电机运行情况,记录测定步进电机不失步情况下的最高运行速度。
3. 步进电机硬件环形分配器下,升降速控制。
(1)连线
单片机P1.7与升降速模块CLK_NORM相连(在该实验中,单片机的P1.7程序产生脉冲,作为信号源);
升降速模块CLK_ACC与环形分配器模块CLK1相连;
环形分配器模块的A0、B0、C0、D0分别与电机驱动模块的A、B、C、D相连;
(2)测定步进电机转盘转速的霍尔开关输出端HALL1连接到单片机模块的INT0引脚,以测量转速。
(3)运行PC机“电机控制实验”,打开串口1,并选连续测量。
(4)步进电机速度设定为“800”,并按“确认”,此时,P1.7即输出均匀的时钟脉冲。
(5)按下数控实验箱中升降速模块的S1键,使步进电机缓慢地从静止开始运行,运行到最高速并平稳时再松开按键,步进电机逐渐停止运行,描绘出步进电机升降速动态曲线图。
4. 步进电机空载情况下最高启动频率、最高运行频率的测定
(1)连线
单片机P1.7与环形分配器模块CLK1相连;
环形分配器模块的A0、B0、C0、D0分别与电机驱动模块的A、B、C、D相连;
(2)运行桌面上“电机控制实验”,打开串口1,并连续测量。
(3)以50为单位不断增加步进电机速度设定值。观察步进电机运行情况,测定步进电机的不失步情况下的最高运行速度。
(4)以50为单位不断增加步进电机速度设定值。使步进电机从静止到设定值,测定最大不失步下的启动频率。