本科毕业设计基于单片机原理的步进电机的正反转程设计报告书.docx
- 文档编号:30560181
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:27
- 大小:492.16KB
本科毕业设计基于单片机原理的步进电机的正反转程设计报告书.docx
《本科毕业设计基于单片机原理的步进电机的正反转程设计报告书.docx》由会员分享,可在线阅读,更多相关《本科毕业设计基于单片机原理的步进电机的正反转程设计报告书.docx(27页珍藏版)》请在冰豆网上搜索。
本科毕业设计基于单片机原理的步进电机的正反转程设计报告书
成绩
电机控制课程设计报告书
题目基于单片机原理的步进电机的正反转
院部名称龙蟠学院
专业电气工程及其自动化
班级M12电气工程及其自动化
组长姓名黄霈霈
同组学生侯婧芸
学号1221109009
设计地点工科楼C103
设计学时1周
指导教师周洪
金陵科技学院教务处制
目录
目录1
摘要1
1.概述2
1.1课程设计的任务和要求2
1.2设计思路框架3
1.3设计方案的模块解释3
2.系统硬件设计3
2.1单片机最小系统原理介绍3
2.1.1AT89C51的工作原理4
2.1.2复位电路的工作原理7
2.1.3晶振电路的工作原理8
2.2电机驱动电路原理介绍9
3.系统软件设计10
3.1系统流程图10
3.2系统程序分析11
4.调试过程与结果19
5.总结与体会20
6.参考资料21
7.附录22
摘要
介绍了步进电机正反转控制原理及其接口驱动控制电路,编制了基于MCS-51单片机的步进电机正反转控制的子程序,并应用wave软件进行了仿真。
证明在并行口控制中,可以利用软件实现环行脉冲分配,实现程序较简单,同时还可以节省硬件投资。
结合单片机控制步进电动机的实际工作环境,从提高控制系统运行的可靠性角度,讨论了实际应用的软件抗干扰技术。
关键词单片机;步进电机;正反转控制
1.概述
1.1课程设计的任务和要求
电机控制课程设计是考察学生利用所学过的电机控制专业知识,进行综合的电机控制系统设计并最终完成实际系统连接,能够使学生对电气与自动化的专业知识进行综合应用,培养学生的创新能力和团队协作能力,提高学生的动手实践能力。
最终形成一篇符合规范的设计说明书,并参加综合实践答辩,为后期的毕业设计做好准备。
本次设计考核的能力主要有:
专业知识应用能力,包括电路分析、电子技术、单片机、检测技术、电气控制、电机与拖动、微特电机及其驱动、计算机高级语言、计算机辅助设计、计算机办公软件等课程,还包括本专业的拓展性课程如变频器、组态技术、现场总线技术、伺服电机等课程。
项目设计与运作能力,团队协作能力,技术文档撰写能力,PPT汇报与口头表达能力。
电气与自动化系统的设计与实际应用能力。
要求完成的工作量包括:
制作实际成品,并现场演示效果。
学生结合课题进行PPT演讲与答辩。
学生上交课题要求的各类设计技术文档。
1.2设计思路框架
1.3设计方案的模块解释
本系统主要由电源模块、控制模块、电机驱动模块、按键中断模块等四个模块组成。
电源模块的功能是将交流220V电源经过整流转化为直流+5V电源,以供给控制、显示、驱动等模块供电。
控制模块是系统的主导作用,即51单片机的最小系统,用来发送信号以控制电机及显示。
电机驱动模块使用的是ULN2003芯片。
ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的直流工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
按键模块则分为启动按键和中断按键,启动按键使用的是单片机普通的I/O口。
用来控制系统启动。
中断按键则是使用的外部中断口(P3.2,P3.3)。
在系统运行时则可以随时控制电机的加减速。
2.系统硬件设计
2.1单片机最小系统原理介绍
该电路工作原理:
本项目中选用了最基础的C51单片机做为其控制核心,单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统,本设计采用AT89C51单片机,最小系统一般应该包括:
单片机、晶振电路、复位电路、电源电路。
单片机最小系统复位电路的极性电容C3的大小直接影响单片机的复位时间,一般采用10~30uF,51单片机最小系统容值越大需要的复位时间越短。
51单片机最小系统晶振X1也可以采用6MHz或者12MHz,在正常工作的情况下可以采用更高频率的晶振,51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。
单片机最小系统起振电容C2、C3一般采用15~33pF,并且电容离晶振越近越好。
P0口为开漏输出,作为输出口时需加上拉电阻RP1,阻值一般为10k。
设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。
计数值N乘以机器周期Tcy就是定时时间t.
设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。
在每个机器周期的S5P2期间采样T0、T1引脚电平。
当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。
由于检测一个从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。
当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2ms。
图2-1最小系统电路图
2.1.1AT89C51的工作原理
AT89C51是一个低电压,高性能CMOS8位单片机带有4K字节的可反复擦写的程序存储器(PENROM)。
和128字节的存取数据存储器(RAM),这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS-51系列的单片机兼容。
片内含有8位中央处理器和闪烁存储单元,有较强的功能的AT89C51单片机能够被应用到控制领域中。
本设计采用AT89C51,它提供以下的功能标准:
4K字节闪烁存储器,128字节随机存取数据存储器,32个I/O口,2个16位定时/计数器,1个5向量两级中断结构,1个串行通信口,片内震荡器和时钟电路。
另外,AT89C51还可以进行0HZ的静态逻辑操作,并支持两种软件的节电模式。
闲散方式停止中央处理器的工作,能够允许随机存取数据存储器、定时/计数器、串行通信口及中断系统继续工作。
掉电方式保存随机存取数据存储器中的内容,但震荡器停止工作并禁止其它所有部件的工作直到下一个复位。
VCC:
电源电压
GND:
地
P0口:
P0口是一组8位漏极开路双向I/O口,即地址/数据总线复用口。
作为输出口时,每一个管脚都能够驱动8个TTL电路。
当“1”被写入P0口时,每个管脚都能够作为高阻抗输入端。
P0口还能够在访问外部数据存储器或程序存储器时,转换地址和数据总线复用,并在这时激活内部的上拉电阻。
P0口在闪烁编程时,P0口接收指令,在程序校验时,输出指令,需要接电阻。
P1口:
P1口一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL电路。
对端口写“1”,通过内部的电阻把端口拉到高电平,此时可作为输入口。
因为内部有电阻,某个引脚被外部信号拉低时输出一个电流。
闪烁编程时和程序校验时,P1口接收低8位地址。
P2口:
P2口是一个内部带有上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL电路。
对端口写“1”,通过内部的电阻把端口拉到高电平,此时,可作为输入口。
因为内部有电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器时,P2口线上的内容在整个运行期间不变。
闪烁编程或校验时,P2口接收高位地址和其它控制信号。
P3口:
P3口是一组带有内部电阻的8位双向I/O口,P3口输出缓冲故可驱动4个TTL电路。
对P3口写如“1”时,它们被内部电阻拉到高电平并可作为输入端时,被外部拉低的P3口将用电阻输出电流。
P3口除了作为一般的I/O口外,更重要的用途是它的第二功能,如下表2-1所示:
端口引脚
第二功能
P3.0
RXD
P3.1
TXD
P3.2
INT0
P3.3
INT1
P3.4
T0
P3.5
T1
P3.6
WR
P3.7
RD
表2-1
P3口还接收一些用于闪烁存储器编程和程序校验的控制信号。
RST:
复位输入。
当震荡器工作时,RET引脚出现两个机器周期以上的高电平将使单片机复位。
ALE/:
当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE以时钟震荡频率的1/16输出固定的正脉冲信号,因此它可对输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲时,闪烁存储器编程时,这个引脚还用于输入编程脉冲。
如果必要,可对特殊寄存器区中的8EH单元的D0位置禁止ALE操作。
这个位置后只有一条MOVX和MOVC指令ALE才会被应用。
此外,这个引脚会微弱拉高,单片机执行外部程序时,应设置ALE无效。
PSEN:
程序储存允许输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器读取指令时,每个机器周期两次PSEN有效,即输出两个脉冲。
在此期间,当访问外部数据存储器时,这两次有效的PSEN信号不出现。
EA/VPP:
外部访问允许。
欲使中央处理器仅访问外部程序存储器,EA端必须保持低电平。
需要注意的是:
如果加密位LBI被编程,复位时内部会锁存EA端状态。
如EA端为高电平,CPU则执行内部程序存储器中的指令。
闪烁存储器编程时,该引脚加上+12V的编程允许电压VPP,当然这必须是该器件是使用12V编程电压VPP。
XTAL1:
片内振荡器反相放大器和时钟发生线路的输入端。
使用片内振荡器时,连接外部石英晶体和微调电容。
XTAL2:
片内振荡器反相放大器的输出端。
当使用片内振荡器时,外接石英晶体和微调电容。
2-2AT89C51引脚
2.1.2复位电路的工作原理
单片机在启动运行时需要复位,使CPU以及其他功能部件处于一个确定的初始状态,并从这个状态开始工作,另外,在单片机工作过程中,如果出现死机时,也必须对单片机进行复位,使其重新开始工作。
电路中C1(电解电容)、R2组成复位电路,它的作用是将单片机内部特殊功能寄存器和端口寄存器恢复到初始状态,从内部FLASH存储器的初始状态开始执行。
如图所示,当要对晶片重置时,只要按此开关就能完成LED和开关的重置。
复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
单片机的RST管脚为主机提供了一个外部复位信号输入口。
复位信号是高电平有效,高电平有效的持续时间为2个机器周期以上。
单片机的复位方式可由手动复位方式完成。
RST引脚是复位信号输入端,复位信号为高电平有效,其有效时间应持续24个振荡周期以上才能完成复位操作,若使用6MHz晶振,则需持续4μS以上才能完成复位操作。
在通电瞬间,由于RC的充电过程,在RST端出现一定宽度的正脉冲,只要该正脉冲保持10ms以上,就能使单片机自动复位。
CPU在第二个机器周期内执行内部复位操作,以后每个机器周期重复一次,直至RST端电平变低。
在单片机复位期间,AlE和
信号都不产生。
复位操作将对部分专用寄存器产生影响。
上电瞬间由于电容C上无储能,其端电压近似为零,RST获得高电平,随着电容器C的充电,RST引脚上的高电平将逐渐下降,当RST引脚上的电压小于某一数值后,单片机就脱离复位状态,进入正常工作模式。
只要高电平能保持复位所需要的时间(约两个机器周期),单片机就能实现复位。
图2-3复位电路
2.1.3晶振电路的工作原理
晶振分为有源晶振和无源晶振两种,其作用是在电路产生震荡电流,发出时钟信号。
它是时钟电路中最重要的部件,它的作用是向IC等部件提供基准频率,它就像个标尺,工作频率不稳定会造成相关设备工作频率不稳定,自然容易出现问题。
一般的晶振振荡电路都是在一个反相放大器,两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容,一般IC的引脚都有等效输入电容。
图2-4晶振电路
2.2电机驱动电路原理介绍
该电路工作原理:
步进电机是一种将电脉冲转化为角位移的执行机构。
解释说明:
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进脚)。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
本次系统采用的是四相八拍电机,电压为DC5V-DC12V。
当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。
每一个脉冲信号对应步进电机的某一相或者两相绕组的通电状态转变一次,也就对应转子转过一定的角度(一个步距角)。
当通电状态的改变完成一个循环时,转子转过一个齿距。
四相步进电机可以在不同的通电方式下运行,通常的通电方式有单(单相绕组通电)四拍(A-B-C-D-A…)双(双相绕组通电)四拍(AB-BC-CD-DA-AB-..)八拍(A-AB-B-BC-C-CD-D-DA-A..)。
步进电机必须加驱动才可以运转,驱动信号必须为脉冲信号,没有脉冲的时候,步进电机静止,如果加入适当的脉冲信号,就会以一定的角(称为步角)转动。
转动的速度和脉冲的频率成正比。
本系统的28BYJ485V驱动的4相5线的步进电机,而且是减速步进电机,减速比为1:
64,步进角为5.625/64度。
如果需要转动1圈,那么需要360/5.625*64=4096个脉冲信号。
图2-5驱动电路
3.系统软件设计
3.1系统流程图
图3-1系统流程图
3.2系统程序分析
如流程图所示,系统主要是电机控制部分,以及两个外部中断,下面将一一阐述。
1.电机控制部分
电机控制主要是靠的ULN2003驱动电路。
本次系统采用的是四相八拍电机,电压为DC5V-DC12V。
当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地运转。
每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。
当通电状态改变完成一个循环时,转子转过一个齿距,而八拍(A-AB-B-BC-C-CD-D-DA-A..)。
UcharF_Rotation[8]={0xE2,0xE6,0Xe4,0Xec,0Xe8,0Xf8,0xf0.0xf2};
//正转表格,0111,0011,1011,1001,1101,1100,1110,0110
//a--ab-b-bc-c-cd-d-da四相八拍方式
voidzheng()
{uinti,j;
for(j=0;j<64*8;j++)
//步距角5.625/64减速比1/64,8拍,这个循环为一圈。
{
for(i=0;i<8;i++)
{
dianji=B_Rotation[i];
delay_50us(speed);
}
}
}
2.中断程序
本文中断只要使用的两个外部中断(int0,int1),使用的是下降沿出发方式,所以,让其中的引脚接地,即可得到一个下降沿,系统就会执行中断程序,由于两个中断是独立的,所以不需要考虑优先级问题。
//主程序打开中断
voidmain()
{
EA=1;
//全局中断开
EX0=1;
//外部中断0开
EX1=1;
IT0=1;
//中断程序
voidint0()interrupt0
{
delay(500);
zdup();
speed-=5;
}
4.系统总程序
#include
#defineucharunsignedchar
#defineuintunsignedint
#definedianjiP2
ucharliushui[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff};
ucharF_Rotation[8]={0xE2,0xE6,0xE4,0xEC,0xE8,0xF8,0xF0,0xF2};
//正转表格,0111,00111011,10011101,1100,1110,0110
//a--ab-b-bc-c-cd-d-da四相八拍方式
ucharB_Rotation[8]={0xF2,0xF0,0xF8,0xE8,0xEC,0xE4,0xE6,0xE2};
//反转表格
voiddelay_50us(uintt)
{
ucharj;
for(;t>0;t--)
{
for(j=19;j>0;j--);
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidwrite_com(ucharcom)
{
lcdrs=0;
P0=com;
delay(60);
//stc12型MCU,延时乘以12倍
lcden=1;
delay(60);
lcden=0;
}
voidwrite_data(uchardate)
{
lcdrs=1;
P0=date;
delay(60);
lcden=1;
delay(60);
lcden=0;
}
voidinit()
{
lcden=0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
}
voidxianshi1()
{uinti;
//for(i=0;i<2;i++)
{init();
write_com(0x82+0x10);
for(num=0;num<13;num++)
{
write_data(xs11[num]);
delay(300);
}
for(num=0;num<16;num++)
{
write_com(0x18);
delay(2000);
}
delay(5000);
write_com
(1);
write_com(0x82+0x50);
for(num=0;num<13;num++)
{
write_data(xs11[num]);
delay(300);
}
for(num=0;num<16;num++)
{
write_com(0x18);
delay(2000);
}
delay(8000);
}
}
voidxszheng()
{
init();
write_com(0x80);
for(num=0;num<16;num++)
{
write_data(xsz[num]);
delay(300);
}
write_com(0x80+0x43);
for(num=0;num<9;num++)
{
write_data(xsz1[num]);
delay(300);
}
delay(1000);
write_data(0x00);
delay(2000);
}
voidxsfan()
{
init();
write_com(0x80);
for(num=0;num<16;num++)
{
write_data(xsz[num]);
delay(500);
}
write_com(0x80+0x43);
for(num=0;num<10;num++)
{
write_data(xsz2[num]);
delay(500);
}
delay(1000);
write_data(0x00);
delay(2000);
}
voidzdup()
{
init();
write_com(0x82);
for(num=0;num<12;num++)
{
write_data(zd1[num]);
delay(500);
}
delay(1000);
write_data(0x00);
delay(1000);
}
voidzddown()
{
init();
write_com(0x82);
for(num=0;num<12;num++)
{
write_data(zd2[num]);
delay(500);
}
delay(2000);
write_data(0x00);
delay(1000);
}
voidzheng()
{uinti,j;
for(j=0;j<64*8;j++)
//步距角5.625/64减速比1/64,8拍,这个循环为一圈
{
for(i=0;i<8;i++)
{
dianji=B_Rotation[i];
delay_50us(speed);
}
}
}
voidfan()
{uinti,j;
for(j=0;j<64*8;j++)
//步距角5.625/64减速比1/64,8拍,这个循环为一圈
{
for(i=0;i<8;i++)
{
dianji=F_Rotation[i];
delay_50us(speed);
}
}
}
voidstop()
{
dianji=0x00;
}
voidliushui1()
{uintm;
for(m=0;m<9;m++)
{
delay(200);
P0=liushui[m];
P1=liushui[m];
P2=liushui[m];
//P3=liushui[m];
delay(2000);
}
//P1=0xff;
delay(8000);
}
voidmain()
{
EA=1;
//全局中断开
EX0=1;
//外部中断0开
EX1=1;
IT0=1;
IT1=1;
speed=150;
//delay(10000);
//while
(1)
{
if(!
zz){
delay(20);
if(!
zz){
liushui1();
xianshi1();
delay(200);
xszheng();
while
(1)
{
zheng();}}}
if(!
fz)
{delay(20);
if(!
fz)
{
liushui1();
xianshi1();
delay(200);
xsfan();
while
(1){
fan();}
}}
}
}
voidint0()interrupt0
{
delay(500);
zdup();
speed-=5;
}
voidint1()interrupt2
{delay(500);
zddown();
speed+=5;
}
4.调试过程与结果
调试过程主要分为硬件调试以及软件调试两大部分。
其中硬件调试主要是指将电路接好之后,对其是否虚焊,短路进行检查,主要依靠万用表的电阻档。
看连接的焊点是否都导通
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 本科 毕业设计 基于 单片机 原理 步进 电机 反转 设计 报告书