搜索
您的当前位置:首页正文

步进电机控制实验

来源:二三娱乐
步进电机控制试验

一、 实验目的

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

#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;

2.可调速控制

#include

#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;

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);} } }

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; }

C120uFC2X120uFU119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161712345678100CRYSTAL18XTAL29RSTR1C3220u500293031PSENALEEARN1161514131211109U2916151413121110COM1C2C3C4C5C6C7CULN2003A1B2B3B4B5B6B7B123456712345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51正反转控制加速减速+52.四、 实验总结

按键检测时,要设置标志位,防止按键没被检测到。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top