步进电机转速控制系统.docx

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

步进电机转速控制系统.docx

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

步进电机转速控制系统.docx

步进电机转速控制系统

 

课程设计报告

 

题目:

步进电机转速控制显示系统

 

学生姓名:

陶宁

学生学号:

0908020132

系别:

电气信息工程

专业:

自动化

届别:

2013届

指导教师:

苗磊

电气信息工程学院制

2012年5月

步进电机转速控制显示系统

学生:

陶宁

指导教师:

苗磊

电气信息工程学院自动化系

1课程设计的任务与要求

1.1课程设计的任务

对于步进电机的进行转速控制,包括正转与反转,并且通过LCD显示。

1.2课程设计的要求

该设计要求通过程序实现单片机对电动机进行控制。

共包含五个键盘,分别操控正转、反转、停止、加速、减速。

并且讲电动机的转动状态反映在LCD上。

1.3课程设计的研究基础

2步进电机转速控制显示系统方案制定

2.1方案提出

方案一:

使用开关直接控制电动机的正反转以及转速控制,此种设计非常简便易操作,共两个开关控制。

图1方案一

方案二:

使用四个五个开关分别控制电机的正转、反转、停止、加速、减速。

图2方案二

2.2方案比较

方案一:

本方案十分简单,除了实现正常的正转反转,只能实现步进电机的正转加速,还有反转减速,并不能实现正转减速或者反转加速等功能。

程序设计上比较简单,实用性不大。

方案二:

本方案较方案一复杂些,并且成功的实现了电机的正转加速和减速,反转的加速和减速,简单明了,控制范围更大,实用性更强。

但是由于复杂性增加,程序的编写难度上就增加了。

2.3方案论证

对于以上两个方案比较分析得出:

方案二成功的实现了方案一所有的功能,而且其他功能上更加全面。

使用上也更加易操作。

方案一对于简单的应用可以适用,但局限性很大,有时无法实现必要的功能。

2.4方案选择

根据以上的比较论证,选择方案二。

3步进电机转速控制显示系统方案设计

3.1各单元模块功能介绍及电路设计

该设计分为控制模块,驱动模块,显示模块。

控制模块:

五个开关控制单片机的输入高低电平,通过单片机的接口功能设计程序控制输出电平的高低最后达到控制电动机正反转的功能。

驱动模块:

通过单片机的P0.0到P0.3控制步进电机之前的放大噐ULN2003A,从而达到控制步进电机转速的效果。

显示模块:

通过单片机中的P3.0到P3.5和P2.7控制LCD12864,以显示目前电动机的状态。

3.2电路参数的计算及元器件的选择

12864液晶电源:

VDD:

+5V;LCD外接驱动电压为-5.0~-14.0V。

步进电机:

额定电压12V;额定电流0.5A。

ULN2003A输入额定电压为+12V。

3.3特殊器件的介绍

(1)AT89C51

AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

1)主要特性

a.与MCS-51兼容

b.4K字节可编程闪烁存储器

c.寿命:

1000写/擦循环

d.数据保留时间:

10年

e.全静态工作:

0Hz-24Hz

f.三级程序存储器锁定

g.128*8位内部RAM

k.可编程串行通道

l.低功耗的闲置和掉电模式

m.片内振荡器和时钟电路

2)管脚说明

a.VCC:

供电电压。

b.GND:

接地。

c.P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

d.P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

e.P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流。

f.P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流[3][4]。

(2)ULN2003A

ULN2003A是一个7路反向器电路,即当输入端为高电平时ULN2003A输出端为低电平,当输入端为低电平时ULN2003A输出端为高电平。

共16个端口,其中1~7

口为输入端口,相对应16~10口为输出端口。

8号口9号口为地与com端口[3]。

图3ULN2003A

(3)步进电机MOTOR-STEPPER

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。

可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速目的[3]。

3.4系统整体电路图

图4系统整体电路图

4步进电机转速控制显示系统仿真和调试

4.1仿真软件介绍

本设计主要采用Protues软件,Protues软件是英国Labcenterelectronics公司出版的EDA工具软件。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。

在编译方面,它也支持IAR、Keil和MPLAB等多种编译。

它具有丰富的元器件库,超过27000种元器件,可方便地创建新元件。

仿真元器件资源:

仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。

仿真仪表资源:

示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。

理论上同一种仪器可以在一个电路中随意的调用。

 

图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。

这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。

这些都尽可能减少了仪器对测量结果的影响。

还提供了比较丰富的测试信号用于电路的测试。

这些测试信号包括模拟信号和数字信号[1][2]。

4.2系统仿真实现

(1)打开仿真,出现如图界面,目前电动机为停止状态。

图5初始状态

(2)按下K1正转开关,电动机开始正转,LCD显示正转。

图6正转状态

(3)按下K4开关,电动机开始加速转动,显示屏显示正转加速。

图7正转加速状态

(4)随后转速达到稳定,LCD显示正转正常运行。

图8正转正常运行状态

(5)按下K6开关,使电动机减速,显示正转减速运行。

图9正转减速

(6)当步进电机转速达到稳定时,LCD显示正转低速运行。

图10正转低速运行

(7)此时按下K3,无需先按下K2停止,电动机实现反转运行,显示反转低速运行。

图11反转低速运行

(8)此时按下K4,与正转加速类似,加速过程后,显示反转正常运行。

图12反转正常运行状态

4.3系统测试

测试环境:

20℃

测试仪器:

XP系统计算机,protues仿真软件,keil程序编辑软件。

测量数据:

暂无数据。

4.4数据分析

由于本课程设计仅限于仿真阶段,实现其设计功能,未做出实体,所以暂时没有数据,有待以后深入研究发展。

5总结

5.1设计小结

本设计通过分析步进电机结构工作原理,查阅步进电机控制系统的相关科技文献,遵循实用、简单、可靠和低成本的原则,设计了一种既可用于精度要求不高,但控制需完备的场合,对本次设计,有以下结论:

(1)采用单片机为控制核心,利用其强大的功能,把开关和显示电路有机的结合起来,组成一个操作方便,交互性强的控制系统。

而且整个系统所包含的技术包括了很多现本科学校自动化专业所要求的知识,有利于实践教学取得最大效果。

(2)系统软件采用结构化设计,具有易维护性,根据用户新的要求,对软件系统进行少量的修改,使系统功能得到一定程度的提高。

5.1收获体会

通过对本设计的设计与研究,对于proteus有了更深层次的了解,对于软件操作也更加的熟练。

基于以前的对于单片机的知识的学习,没有十分系统的做过相应的实验,此软件的仿真功能很好的解决了这一问题。

使得对于单片机的各个接口,模块功能,程序的设计有了更深层次的理解。

我们深知做的工作还很不够,由于软件和硬件的各方面原因,系统的应用讨论不够,精度还有待于进一步提高。

5.2展望

随着技术的不断发展,步进电机的控制应用前景将越来越广阔,而其控制系统也将向着智能化和网络化的方向发展。

此课程设计还是比较基础部分,基本上在实用上没有太大用途,但是我们要在现在的基础上,不断吸收新的技术和方法,并将其应用于课题研究上来,为以后学习更多的电子类如嵌入式、微机原理等知识打下了坚实基础。

6参考文献

[1]侯玉宝,等.基于proteus的51系列单片机设计与仿真[M].电子工业出版社,2010.

[2]林志琦,等.基于proteus的单片机可视化软硬件仿真[M].科学出版社,2006.

[3]李全利,等.单片机原理及接口技术[M].北京航空航天大学出版社,2010.

[4]薛均义,等.MCS-51系列单片微型计算机及其应用[M].西安交通大学出版社,2009.

7附录

7.1系统主要功能展示图

图13系统展示

7.2器件清单

元件名称

元件个数

AT89C51

1

AMPIRE12864

1

AND_8

1

7074

4

BUTTON

5

CAP

2

ULN2003A

1

RESPACK-7

1

CRYSTAL

1

MOTOR-STEPPER

1

PHYC0402NP015P

1

POT-LIN

1

RES

6

10WATT1K

2

3WATT2K2

2

7.3C程序

#include

#include

#include

#defineucunsignedchar

#defineuiunsignedint

#defineLCDPAGE0xB8

#defineLCDLINE0x40

sbitp00=P0^0;

sbitp01=P0^1;

sbitp02=P0^2;

sbitp03=P0^3;

sbitE=P3^5;

sbitRW=P3^4;

sbitRS=P3^2;

sbitL=P3^1;

sbitR=P3^0;

sbitBusy=P2^7;

ucscan_key1,scan_key2;

ucstep1;step2;

staticstep_index;

uicount1,count2;

ucbutter;

staticspeed;

uccodeCHANG[]=

{

0x20,0x18,0x08,0x09,0xEE,0xAA,0xA8,0xAF,

0xA8,0xA8,0xEC,0x0B,0x2A,0x18,0x08,0x00,

0x00,0x00,0x3E,0x02,0x02,0x02,0x02,0xFF,

0x02,0x02,0x12,0x22,0x1E,0x00,0x00,0x00,

};

uccodeYUN[]=

{

0x40,0x41,0xCE,0x04,0x00,0x20,0x22,0xA2,

0x62,0x22,0xA2,0x22,0x22,0x22,0x20,0x00,

0x40,0x20,0x1F,0x20,0x28,0x4C,0x4A,0x49,

0x48,0x4C,0x44,0x45,0x5E,0x4C,0x40,0x00,

};

uccodeXING[]=

{

0x10,0x08,0x84,0xC6,0x73,0x22,0x40,0x44,

0x44,0x44,0xC4,0x44,0x44,0x44,0x40,0x00,

0x02,0x01,0x00,0xFF,0x00,0x00,0x00,0x00,

0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,

};

uccodeZHENG[]=

{

0x00,0x02,0x02,0xC2,0x02,0x02,0x02,0x02,

0xFE,0x82,0x82,0x82,0x82,0x82,0x02,0x00,

0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,

0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x00,

};

uccodeZHUAN[]=

{

0xC8,0xA8,0x9C,0xEB,0x88,0x88,0x88,0x40,

0x48,0xF8,0x4F,0x48,0x48,0x48,0x40,0x00,

0x08,0x08,0x04,0xFF,0x04,0x04,0x00,0x02,

0x0B,0x12,0x22,0xD2,0x0E,0x02,0x00,0x00,

};

uccodeCONTRARY[]=

{

0x00,0x00,0xFE,0x12,0x72,0x92,0x12,0x12,

0x12,0x11,0x91,0x71,0x01,0x00,0x00,0x00,

0x40,0x30,0x4F,0x40,0x20,0x21,0x12,0x0C,

0x0C,0x12,0x11,0x20,0x60,0x20,0x00,0x00,

};

uccodeTING[]=

{

0x80,0x40,0x20,0xF8,0x07,0x02,0x04,0x74,

0x54,0x55,0x56,0x54,0x74,0x04,0x04,0x00,

0x00,0x00,0x00,0xFF,0x00,0x03,0x01,0x05,

0x45,0x85,0x7D,0x05,0x05,0x05,0x03,0x00,

};

uccodeZHI[]=

{

0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,

0xFF,0x40,0x40,0x40,0x40,0x40,0x00,0x00,

0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,

0x7F,0x40,0x40,0x40,0x40,0x40,0x40,0x00,

};

uccodeJIA[]=

{

0x00,0x08,0x08,0x08,0xFF,0x08,0x08,0xF8,

0x00,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00,

0x40,0x20,0x18,0x07,0x00,0x20,0x40,0x3F,

0x00,0x7F,0x10,0x10,0x10,0x3F,0x00,0x00,

};

uccodeSU[]=

{

0x40,0x42,0xCC,0x00,0x04,0xE4,0x24,0x24,

0xFF,0x24,0x24,0x24,0xE4,0x04,0x00,0x00,

0x40,0x20,0x1F,0x20,0x48,0x49,0x45,0x43,

0x7F,0x41,0x43,0x45,0x4D,0x40,0x40,0x00,

};

uccodeJIAN[]=

{

0x00,0x02,0xEC,0x00,0xF8,0x28,0x28,0x28,

0x28,0x28,0xFF,0x08,0x8A,0xEC,0x48,0x00,

0x02,0x5F,0x20,0x18,0x07,0x00,0x1F,0x49,

0x5F,0x20,0x13,0x0C,0x13,0x20,0x78,0x00,

};

uccodeBAI[]=

{

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

uccodeDI[]=

{

0x40,0x20,0xF0,0x0C,0x07,0x02,0xFC,0x44,

0x44,0x42,0xFE,0x43,0x43,0x42,0x40,0x00,

0x00,0x00,0x7F,0x00,0x00,0x00,0x7F,0x20,

0x10,0x28,0x43,0x0C,0x10,0x20,0x78,0x00,

};

voidiniLCD(void);

voidchkbusy(void);

voidwcode(uccd);

voidwdata(ucdat);

voiddisrow(ucpage,uccol,uc*temp);

voiddisplay(ucpage,uccol,uc*temp);

voidground(step);

voidrun1();

voidrun2();

voidstop();

voiddelay(uitime);

voidiniLCD(void)

{L=1;R=1;

wcode(0x38);

wcode(0x0f);

wcode(0xc0);

wcode(0x01);

wcode(0x06);

}

voidchkbusy(void)

{

E=1;

RS=0;

RW=1;

P2=0xff;

while(!

Busy);

}

voidwcode(uccd)

{

chkbusy();

P2=0xff;

RW=0;

RS=0;

P2=cd;

E=1;

E=0;

}

voidwdata(ucdat)

{

chkbusy();

P2=0xff;

RW=0;

RS=1;

P2=dat;

E=1;

E=0;

}

voiddisrow(ucpage,uccol,uc*temp)

{

uci;

if(col<64)

{

L=1;R=0;

wcode(LCDPAGE+page);

wcode(LCDLINE+col);

if((col+16)<64)

{

for(i=0;i<16;i++)

wdata(*(temp+i));

}

else

{

for(i=0;i<64-col;i++)

wdata(*(temp+i));

L=0;R=1;

wcode(LCDPAGE+page);

wcode(LCDLINE);

for(i=64-col;i<16;i++)

wdata(*(temp+i));

}

}

else

{

L=0;R=1;

wcode(LCDPAGE+page);

wcode(LCDLINE+col-64);

for(i=0;i<16;i++)

wdata(*(temp+i));

}

}

voidground(step_index)

{

P0=0x00;

switch(step_index)

{

case0:

p00=1;

p01=0;

p02=0;

p03=0;

break;

case1:

p00=1;

p01=1;

p02=0;

p03=0;

break;

case2:

p00=0;

p01=1;

p02=0;

p03=0;

break;

case3:

p00=0;

p01=1;

p02=1;

p03=0;

break;

case4:

p00=0;

p01=0;

p02=1;

p03=0;

break;

case5:

p00=0;

p01=0;

p02=1;

p03=1;

break;

case6:

p00=0;

p01=0;

p02=0;

p03=1;

break;

case7:

p00=0;

p01=0;

p02=0;

p03=1;

}

}

voiddisplay(ucpage,uccol,uc*temp)

{

disrow(page,col,temp);

disrow(page+1,col,temp+16);

}

voidmain(void)

{

P2=0xff;

iniLCD();

step2=0;

step1=0;

P1=0xff;

P0=0x00;

EX1=1;

EA=1;

speed=2010;

while

(1)

{

if((scan_key1==1)&(scan_key2==0))

{

display(6,0x00,&ZHENG);

display(6,0x10,&ZHUAN);

ground(step_index);

delay(speed);

step_index++;

if(step_index>7)

step_index=0;

}

if((scan_key1==0)&(scan_key2==1))

{

ground(step_index);

display(6,0x00,&CONTRARY);

display(6,0x10,&ZHUAN);

delay(speed);

step_index--;

if(step_index<0)

step_index=7;

}

if(scan_key1==0&scan_key2==0)

{

display(6,0x00,&TING);

display(6,0x10,&ZHI);

display(6,0x20,&BAI);

display(6,0x30,&BAI);

P0=0xff;

}

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

当前位置:首页 > 表格模板 > 合同协议

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

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