步进电机的控制与测速.docx

上传人:b****7 文档编号:10418814 上传时间:2023-02-11 格式:DOCX 页数:10 大小:135.03KB
下载 相关 举报
步进电机的控制与测速.docx_第1页
第1页 / 共10页
步进电机的控制与测速.docx_第2页
第2页 / 共10页
步进电机的控制与测速.docx_第3页
第3页 / 共10页
步进电机的控制与测速.docx_第4页
第4页 / 共10页
步进电机的控制与测速.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

步进电机的控制与测速.docx

《步进电机的控制与测速.docx》由会员分享,可在线阅读,更多相关《步进电机的控制与测速.docx(10页珍藏版)》请在冰豆网上搜索。

步进电机的控制与测速.docx

步进电机的控制与测速

步进电机的控制与测速

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

步进电机控制与测速

 

姓名:

竹玉书

学号:

02008513

指导老师:

李超彪

 

一、实践环节任务与要求

选题:

步进电机控制与测速

设备:

可编程并行接口8255,可编程定时计数器8253,控制开关,步进电机,光耦合器

要求:

1.通过开关K0~K6设置不同的转速,开关K7设置电机的转向。

2.利用定时器8253计数,测速。

二、实验原理

1.步进电机的控制原理:

步进电机驱动原理是通过对每相线圈中的电流的顺序切换使电机作步进式旋转驱动电路由脉冲信号来控制,所以调节脉冲信号频率便可改变步进电机的转速。

如图所示:

本实验使用的步进电机用直流+5V电压,电机线圈由四相成:

φ1(BA);φ2(BB);φ3(BC);φ4(BD)

 

8253定时器0确定脉冲改变的频率(工作方式3,控制字00110110,CLK0=1MHZ,初值=200则OUT0输出周期为200μs的脉冲),由8255(工作方式0,控制字10001011)查询定时时间是否到,输出相应的脉冲,以实现转速控制。

2.步进电机的测速原理:

在电机转动时,光电传感器每转输出6个脉冲,8253的定时器1负责计数,以测速。

设计程序当OUT0出现高电平则计数一次,当计数达到50000次则计算并显示一次速度。

显示间隔时间=100μs

50000=5s

三、硬件接线图

四、程序框图

主函数:

测速子函数:

五、源程序

程序源代码如下:

(含注解)

/******************/

/*步进电机*/

/******************/

#include

#include

#include"ApiEx.h"

#pragmacomment(lib,"ApiEx.lib")

#define8255A0x290

#define8255B0x291

#define8255C0x292

#define8255CTL0x293

#define825300x280

#define825310x281

#define825320x282

#define8253CTL0x283

staticunsignedintc=0;

staticunsignedinta=0,b;

voidPayoff(intd)//延时测速

{

staticBYTEx=0,y=0;

staticBYTEz;

while(d)

{

do

{

PortReadByte(8255B,&y);//读OUT0输出状态即PB0状态

y&=0x01;

}while((x^y)==0);

x=y;

c++;//每当出现高电平则计数一次

if(c==50000)

{

PortReadByte(82531,&z);//读8253计时器1记录的脉冲数低八位

b=z;

PortReadByte(82531,&z);//读8253计时器1记录的脉冲数高八位

b=b+z*256;

if(b

%fr/min\n",(-b+a)/2.0);

//计算速度(初值未减完)

elseprintf("thespeedis:

%fr/min\n",(-b+a+1024)/2.0);

//计算速度(初值已减完)

a=b;

c=0;

}

d--;

}

}

voidmain()

{

BYTEdata,x;

intbuf=0x33,d;//设置buff则表示线圈初始相为0011

printf("--------------------EXP27_19_BJDJ---------------------\n");

printf("1.8255(PA0-PA3)===BJDJ(BA-BD)\n");

printf("2.I/O(288-28F)===8255(CS)\n");

printf("3.8255(PC0-PC7)===TPC(K0-K7)\n");

printf("4.BJDJ(J5)===(BJDJ)\n");

printf("Pressanykeytobegin!

\n\n");

getch();

printf("K0-K6arespeedcontrol\n");

printf("K0isthelowestspeed\n");

printf("K6isthehighestspeed\n");

printf("K7isthedirectcontrol\n");

printf("pressanykeytoreturn!

\n");

if(!

Startup())/*打开设备*/

{

printf("ERROR:

OpenDeviceError!

\n");

return;

}

PortWriteByte(8255CTL,0x8b);/*设置8255工作方式,C口输入,A口输出*/

PortWriteByte(8253CTL,0x16);//设置8253计数器0控制字00010110

PortWriteByte(8253CTL,0x76);//设置8253计数器1控制字01110110

PortWriteByte(82530,200);//设置8253计数器0初值为200

PortWriteByte(82531,00);//设置8253计数器1初值低八位

PortWriteByte(82531,0x04);//设置8253计数器1初值高八位

while(!

kbhit())

{

PortReadByte(8255C,&data);//判断8255C口状态

if(data&1)d=1200;//设置K0延时时间

elseif(data&2)d=100;//设置K1延时时间

elseif(data&4)d=900;//设置K2延时时间

elseif(data&8)d=800;//设置K3延时时间

elseif(data&16)d=700;//设置K4延时时间

elseif(data&32)d=500;//设置K5延时时间

elseif(data&64)d=300;//设置K6延时时间

elsed=0;

if(d!

=0)

{

Payoff(d);//调用延时测速程序

if(data&128)//判断K7状态

buf=((buf&1)<<7)|(buf>>1);//线圈相位变为1001,顺时针转动

else

buf=((buf&128)>>7)|(buf<<1);//线圈相位变为0110,顺时针转动

PortWriteByte(8255A,buf);//从8255A口输出

}

else

PortWriteByte(8255A,0xff);

}

Cleanup();/*关闭设备*/

}

 

六、结论

实验实现了步进电机的控制和测速,通过开关k0-k5设置不同的转速,K7设置电机的转向,8253定时器0确定脉冲改变的频率,由8255查询定时时间是否到,输出相应的脉冲,以实现转速控制。

在电机转动时,光电传感器每转输出6个脉冲,8253的定时器1,2负责计数,以测速。

通过8255的C口输入不同的延时从而得到不同的脉冲频率,从8255A口输出来实现步进电机的转速。

初始的的脉冲频率由8253的计数器0来决定,其输入的时钟脉冲为1MHZ。

同时实验中的测速部分由光耦合器来输出脉冲(每转输出6个脉冲),8253的计数器1来计数。

由速度计算公式来计算速度。

七、心得体会

经过一个星期的实验,小组很成功地把课程设计完成,让我对C++语言更深入的了解,以及对可编程并行接口8255,可编程定时计数器8253在实际应用中的作用有了一定的认识,在程序的编写、电路的搭接方面得到了很大的锻炼。

团队的协作能力也有了很大的提高,但是在C++跟汇编语言的转换上还有很大的缺陷,希望以后更进一步。

八、意见与建议

以后可以多进行类似的实验型课程的学习这样更有利于我们将理论与实践结合起来,对知识的理解可能会更加深刻。

九、存在的问题

1.实验中的遇到的困难莫过于程序的编写,初次调试使用的是汇编语言,然而对于汇编语言的掌握程度还不够熟练,所以当整合控制和测速程序时,没有成功。

于是小组决定改成C++语言进行编写,这次的C++程序一部分由自己编写,一部分借鉴了网上程序,比如其中的速度计算公式的由来初步认为是

,计算速度的时间为5s。

当然借鉴的同时,大家也对其进行了仔细的分析,完全弄清程序逻辑,然后再对本次设计进行思想类似编写。

2.同样的程序,同样的线路,电脑没有正常运行,换到别的电脑上就可以了,不知道问题出在哪里。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1