基于51单片机的步进电机的课程设计.docx
《基于51单片机的步进电机的课程设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的步进电机的课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
基于51单片机的步进电机的课程设计
单片机课程设计
题目:
步进电机操纵系统的设计
编号:
学生姓名:
同组者:
指导教师:
2020年11月18日
摘要…………………………………………………………………4
第一章绪论…………………………………………………………5
关于步进电机……………………………………………5
选题的目的和意义…………………………………………6
第二章元器件的介绍…………………………………………………8
步进电机………………………………………………8
89C51…………………………………………………9
第三章步进电机控制系统硬件电路设计………………………………11
操纵电路………………………………………………10
最小系统………………………………………………12
驱动电路………………………………………………13
显示电路………………………………………………14
整体电路………………………………………………14
第四章软件的设计………………………………………………16
方案论证………………………………………………16
主程序设计………………………………………………17
按时中断设计…………………………………………18
外部中断设计…………………………………………19
第五章仿真与调试……………………………………………25
Proteus软件介绍……………………………………25
keil软件介绍…………………………………………25
仿真进程………………………………………………25
心得体会……………………………………………………………27
附录PCB板图及其三视图……………………………………………28
摘要
能够实现步进电机操纵的方式有多种,能够采纳前期的模拟电路、数字电路或模拟与数字电路相结合的方式。
最近几年来随着科技的飞速进展,单片机的应用正在不断深切,同时带动传统操纵检测日新月异更新。
本文介绍一种用AT89C51作为核心部件进行逻辑操纵及信号产生的单片机技术和汇编语言编程设计的步进电机操纵系统,步进电机背景与现状、硬件设计、软件设计及其仿真都做了详细的介绍,使咱们不仅对步进电机的原理有了深切的了解,也对单片机的设计研发进程有了加倍深刻的体会。
本操纵系统采纳单片机操纵,通过人为按动开关实现步进电机的开关,复位。
该系统还增加了步进电机的加速及减速功能。
具有灵活方便、适用范围广的特点,大体能够知足实践需求。
关键字:
步进电机单片机
Abstract
Steppermotorcontrolcanbeachievedindifferentways,canbeusedearlyanalogcircuits,digitalcircuitsoracombinationofanaloganddigitalcircuitmeans.Withtherapiddevelopmentofscienceandtechnologyinrecentyears,theapplicationofSCMisagrowing,whiletraditionalcontroltestdriverapidupdates.ThispaperdescribesacorecomponentoftheAT89C51,asthesignalgeneratedbylogiccontrolandmicrocontrollertechnologyandassemblylanguageprogrammingdesignedsteppermotorcontrolsystem,steppingmotorbackgroundandpresent,hardwaredesign,softwaredesignandsimulationhavemadeadetailedintroduction,sowenotonlyhaveasteppermotor-depthunderstandingoftheprinciples,butalsothedesignofmicrocontrollerdevelopmentprocesshaveamoreprofoundexperience.
ThecontrolsystemusesSCMcontrol,pressingtheswitchthroughtherealizationofhumansteppermotorswitch,reset.Thesystemalsoincreasedthesteppermotoraccelerationanddeceleration.Hastheflexibilityforawiderangeoffeatures,thebasicpracticetomeetthedemand.
Keywords:
steppermotormicrocontroller
第一章绪论
关于步进电机
步进电机是将电脉冲信号转变成角位移或线位移的开环操纵元步进电机件。
在非超载的情形下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载转变的阻碍,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。
能够通过操纵脉冲个数来操纵角位移量,从而达到准确信位的目的;同时能够通过操纵脉冲频率来操纵电机转动的速度和加速度,从而达到调速的目的。
步进电机的相关参数:
相数
产生不同对极N、S磁场的激磁线圈对数,是指电机内部的线圈组数,目前经常使用的有二相、三相、四相、五相步进电机。
电机相数不同,其步距角也不同,一样二相电机的步距角为°/°、三相的为°/°、五相的为°/°。
在没有细分驱动器时,用户要紧靠选择不同相数的步进电机来知足自己步距角的要求。
若是利用细分驱动器,那么‘相数’将变得没成心义,用户只需在驱动器上改变细分数,就能够够改变步距角。
目前应用最普遍的是两相和四相,四相电机一样用作两相,五相的本钱较高。
拍数
完成一个磁场周期性转变所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即A-AB-B-BC-C-CD-D-DA-A.
固有步距角
对应一个脉冲信号,电机转子转过的角位移用θ表示。
θ=360度(转子齿数J*运行拍数),以常规二、四相,转子齿为50齿电机为例。
四拍运行时步距角为θ=360度/(50*4)=度(俗称整步),八拍运行时步距角为θ=360度/(50*8)=度(俗称半步)。
那个步距角能够称之为‘电机固有步距角’,它不必然是电机实际工作时的真正步距角,真正的步距角和驱动器有关。
定位转矩
电机在不通电状态下,电机转子自身的锁定力矩(由磁场齿形的谐波和机械误差造成的),DETENTTORQUE在国内没有统一的翻译方式,容易使大伙儿产生误解;由于反映式步进电机的转子不是永磁材料,因此它没有DETENTTORQUE。
最大静转矩
也叫维持转矩(HOLDINGTORQUE),电机在额定静态电作用下(通电),电机不作旋转运动时,电机转轴的锁定力矩,即定子锁住转子的力矩。
此力矩是衡量电机体积(几何尺寸)的标准,与驱动电压及驱动电源等无关。
通常步进电机在低速时的力矩接近维持转矩。
由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而转变,因此维持转矩就成了衡量步进电机最重要的参数之一。
比如,当人们说的步进电机,在没有特殊说明的情形下是指维持转矩为的步进电机。
步距角精度
步进电机每转过一个步距角的实际值与理论值的误差。
用百分比表示:
误差/步距角*100%。
不同运行拍数其值不同,四拍运行时应在5%之内,八拍运行时应在15%之内。
失步
电机运转时运转的步数,不等于理论上的步数。
称之为失步。
失调角
转子齿轴线偏移定子齿轴线的角度,电机运转必存在失调角,由失调角产生的误差,采纳细分驱动是不能解决的。
最大空载启动频率
电机在某种驱动形式、电压及额定电流下,在不加负载的情形下,能够直接起动的最大频率。
最大空载运行频率
电机在某种驱动形式,电压及额定电流下,电机不带负载的最高转速频率。
运行矩频特性
电机在某种测试条件下测得运行中输出力矩与频率关系的曲线称为运行矩频特性,这是电机诸多动态曲线中最重要的,也是电机选择的全然依据。
选题的目的和意义
通过这次课程设计,把握51单片机的原理,了解步进电机的工作原理,提高动手能力和排除故障的能力。
同时通过本次设计与调试,调高自己的动手能力,巩固已学的理论知识,成立单片机理论和实践的结合,了解步进电机操纵系统中电路之间的关系及彼此阻碍,从而能正确设计各个单元电路。
初步把握步进电机操纵系统的测试方式。
提高动手能力和排除故障的能力。
第二章元器件的介绍
步进电机
步进电机是数字操纵电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此超级适合于单片机操纵。
步进电机区别于其他操纵电机的最大特点是:
它是通过输入脉冲信号来进行操纵的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。
步进电机分三种:
永磁式(PM),反映式(VR)和混合式(HB),步进电机又称为脉冲电机,是工业进程操纵和仪表中一种能够快速启动,反转和制动的执行
89C51
单片机
复位电路
键盘控制电路
ULN2803
启动电路
步进
电机
状态显示电路
电源及时钟电路
图1总体设计方框图
元件,其功用是将电脉冲转换为相应的角位移或直线位移,由于开环下就能够实现精准定位的特点,使其在工业操纵领域取得了普遍应用。
步进电机的运转是由电脉冲信号操纵的,其角位移量或线位移量与脉冲数成正比,每一个一个脉冲,步进电机就转动一个角度(不距角)或前进、倒退一步。
步进电机旋转的角度由输入的电脉冲数确信,因此,也有人称步进电机为数字/角度转换器。
1四相步进电机的工作原理
该设计采纳了20BY-0型步进电机,该电机为四相步进电机,采纳单极性直流电源供电。
只要对步进电机的各相绕组按适合的时序通电,就能够使步进电机转动。
当某一相绕组通电时,对应的磁极产生磁场,并与转子形成磁路,这时,若是定子和转子的小齿没有对齐,在磁场的作用下,由于磁通具有力图走磁阻最小途径的特点,那么转子将转动必然的角度,使转子与定子的齿彼此对齐,由此可见,错齿是促使电机旋转的缘故。
2步进电机的静态指标及术语
相数:
产生不同队N、S磁场的激磁线圈对数,经常使用m表示。
拍数:
完成一个磁场周期性转变所需脉冲用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB→BC→CD→DA→AB,四相八拍运行方式即A→AB→B→BC→C→CD→D→DA→A。
步距角:
对应一个脉冲信号,电机转子转过的角位移用θ表示。
Θ=360度(转子齿角运行拍数),以常规二、四相,转子齿角为50齿角电机为例。
四相运行时步距角为θ=360度/(50*4)=度,八拍运行时步距角为θ=360度/(50*8)=度。
定位转矩:
电机在不通电的状态下,电机转子自身的锁定力矩(由磁场齿形的谐波和机械误差造成的)。
静转矩:
电机在额定静态作业下,电机不做旋转运动时,电机转轴的锁定力矩。
此力矩是衡量电机体积的标准,与驱动电压及驱动电源等无关。
尽管静态转矩与电磁激磁匝数成正比,与定子和转子间的气隙有关。
但过度采纳减小气隙,增加励磁匝数来提高静转矩是不可取的,如此会造成电机的发烧及机械噪音。
3四相步进电机的脉冲分派规律
目前,对步进电机的操纵要紧有分散器件组成的环形脉冲分派器、软件环形脉冲分派器、专用集成芯片环形脉冲分派器等。
本设计利用单片机进行操纵,主若是利用软件进行环形脉冲分派。
四相步进电机的工作方式为四相单四拍,双四拍和四相八拍工作的方式。
各类工作方式在电源通电时的时序与波形别离如图1a、b、c所示。
本设计的电机工作方式为四相单四拍,依照步进电机的工作的时序和波形图,总结出其工作方式为四相单四拍时的脉冲分派规律,四相双四拍的脉冲分派规律,在每一种工作方式中,脉冲的频率越高,其转速就越快,但脉冲频率高到必然程度,步进电机跟不上频率的转变后电机遇显现失步现象,因此脉冲频率必然要操纵在步进电机许诺的范围内。
89C51单片机
Atmel公司生产的89C51单片机是一种低功耗/低电压‘高性能的8位单片机,它采纳CMOS和高密度非易失性存储技术,而且其输出引脚和指令系统都与MCS-51兼容;片内的FlashROM许诺在系统内改编程序或用常规的非易失性编程器来编程,内部除CPU外,还包括256字节RAM,4个8位并行I/O口,5个中断源,2个中断优先级,2个16位可编程按时计数器,89C51单片机是一种功能强、灵活性高且价钱合理的单片机,完全知足本系统设计需要。
第三章步进电机原理及硬件设计
本设计的硬件电路只要包括操纵电路、最小系统、驱动电路、显示电路四大部份。
最小系统只若是为了使单片机正常工作。
操纵电路只要由开关和按键组成,由操作者依照相应的工作需要进行操作。
显示电路主若是为了显示电机的工作状态和转速。
驱动电路主若是对单片机输出的脉冲进行功率放大,从而驱动电机转动。
操纵电路
依照系统的操纵要求,操纵输入部份设置了启动操纵,换向操纵,加速操纵和减速操纵按钮,别离是K一、K二、S二、S3,操纵电路如图2所示。
通过K一、K2状态转变来实现电机的启动和换向功能。
当K一、K2的状态转变时,内部程序检测和的状态来挪用相应的启动和换向程序,发觉系统的电机的启动和正反转操纵。
依照步进电机的工作原理能够明白,步进电机转速的操纵主若是通过操纵通入电机的脉冲频率,从而操纵电机的转速。
关于单片机而言,要紧的方式有:
软件延时和按时中断在此电路中电机的转速操纵主若是通过按时器的中断来实现的,该电路操纵电机加速度主若是通过S二、S3的断开和闭合,从而操纵外部中断依照按键次数,改变速度值存储区中的数据(该数据为按时器的中断次数),如此就改变了步进电机的输出脉冲频率,从而改变了电机的转速。
图2操纵电路原理图
最小系统
单片机最小系统或称为最小应用系统,素养用最少的元件组成的单片性能够工作的系统,对51系列单片机来讲,最小系统一样应该包括:
单片机、复位电路、晶振电路。
复位电路:
利用了独立式键盘,单片机的P1口键盘的接口。
该设计要求只需4个键对步进电机的状态进行操纵,但考虑到对操纵功能的扩展,利用了6路独立式键盘。
复位电路采纳手动复位,所谓手动复位,是指通过接通一按钮开关,使单片机进入复位状态,晶振电路用30PF的电容和一12M晶体振荡器组成为整个电路提供时钟频率。
如图3示。
晶振电路:
8051单片机的时钟信号通经常使用两种电路形式电路取得:
内部震荡方式和外部中断方式。
在引脚XTAL1和XTAL2外部接晶振电路器(简称晶振)或陶瓷晶振器,就组成了内部晶振方式。
由于单片机内部有一个高增益反相放大器,当外接晶振后,就组成了自激振荡器并产生振荡时钟脉冲。
内部振荡方式的外部电路如图5示。
其电容值一样在5~30pf,晶振频率的典型值为12MHz,采纳6MHz的情形也比较多。
内部振荡方式所得的时钟信号比较稳固,有效电路有效较多。
图3复位及时钟振荡电路
驱动电路
通过ULN2803组成比较多的驱动电路,电路图如图4所示。
通过单片机的~输出脉冲到ULN2803的1B~4B口,经信号放大后从1C~4C口别离输出到电机的A、B、C、D相。
图4步进电机驱动电路
显示电路
在该步进电机的操纵器中,电性能够正反转,能够加速、减速,其中电机转速的品级分为七级,为了方便明白电机的运行状态和电机的转速的品级,那个地址设计了电机转速和电机的工作状态的显示电路。
在显示电路中,主若是利用了单片机的P0口和P2口。
采纳两个共阳数码管作显示。
第一个数码管接的a、b、c、d、e、f、g、h别离接~口,用于显示电机正反转状态,正转时显示“1”,反转时显示“一”,不转时显示“0”。
第二个数码管的a、b、c、d、e、f、g、h别离接~口,用于显示电机的转速级别,共七级,即从1~7转速依次递增,“0”表示转速为零。
电路如图5所示。
图5显示电路
整体电路图
把各个部份的电路图组合成总电路图,如图6所示。
图6整体电路图
第四章软件的设计
方案论证
从该系统的设计要求可知,该系统的输入量为速度和方向,速度应该有增减转变,通经常使用加减按钮操纵速度,如此只要2根口线,再加上一根方向线和一根启动信号线共需要4根输入线。
系统的输出线与步进电机的绕组数有关。
那个地址选
进电机,该电机共有四相绕组,工作电压为+5V,能够个单片机共用一个电源。
步进电机的四相绕组用P1口的~操纵,由于P1口驱动能力不够,因此用一片2803增加驱动能力。
用P0口操纵第一数码管用于显示正反转,用P2口操纵第二个数码管用于显示转速品级。
数码管采纳共阳的。
通过度析能够看出,实现系统功能能够采纳多种方式,由于随时有可能输入加速、加速信号和方向信号,因此采纳中断方式效率最高,如此总共要完成4个部份的工作才能知足课题要求,即主程序部份、按时器中断部份、外部中断0和外部中断1部份,其中主程序的要紧功能是系统初始参数的设置及启动开关的检测,假设启动开关合上那么系统开始工作,反之系统停止工作;按时器部份操纵脉冲频率,它决定了步进电机转速的快慢;两个外部中断程序要做的工作都是为了完成改变速度这一功能。
下面分析主程序与按时器中断程序及外部中断程序。
主程序设计
主程序中要完成的工作要紧有系统初始值的设置、系统状态的显示和各类开关状态的检测判定等。
其中系统初始状态的设置内容较多,该系统中,需要初始化按时器、外部中断;对P1口送初值以决定脉冲分派方式,速度值存储区送初值决定步进电机的启动速度,对方向值存储区送初值决定步进电机旋转方向等内容。
假设初始化P1=11H、速度和方向初始值均设为0,就意味着步进电机按四相单四拍运行,系统上电后在没有操作的情形下,步进电机不旋转,方向值显示“0”,速度值显示“0”,主程序流程图如图7所示。
开始
初始化
速度值为0?
启动开关为0?
停止计时器
显示
启动计时器
延时
停止计时器
图7主程序流程图
Y
N
Y
N
按时中断设计
步进电机的转动主若是给电机各绕组按必然的时刻距离持续不断地按规律通入电流,步进电机才会旋转,时刻距离越短,速度就越快。
在那个系统中,那个时刻距离是用按时重视复中断必然次数产生的,即调剂时刻距离确实是调剂按时器的中断次数,因此在按时器中断程序中,要做的工作主若是判定电机的运行方向、发下一个脉冲,和保留当前的各类状态。
程序流程图如图8所示。
中断返回
T0中断入口
发速度脉冲
读方向指示
重送相关状态
恢复现场
保护现场
中断次数-1=0?
N
Y
图8定时中断程序流程图
外部中断设计
外部中断所要完成的工作是依照按键次数,改变速度值存储区中的数据(该数据为按时器的中断次数),如此就改变了步进电机的输出脉冲频率,也确实是改变了电机的转速。
速度增加按钮S2为INT0中断,其程序流程为原数据,当值等于7时,不改变原数值返回,小于7时,数据加1后返回;速度减少按钮S3,当原数据不为0,减1保留数据,原数据为0那么维持不变。
程序流程图如图9所示。
外部中断入口
保护现场
延时去抖
中断返回
速度值±1
恢复现场
速度=上或限值?
按钮是否弹起?
N
N
N
Y
Y
图9外部中断程序流程图
C语言程序如下:
#include<>
#defineuintunsignedint
sbitk1=P3^4;//启动开关
sbitk2=P3^5;//换向开关
sbits2=P3^2;//加速按钮
sbits3=P3^3;//减速按钮
voidisr_int0(void);//外部中断0中断效劳函数声明
voidisr_int1(void);
voidzd_t0ist(void);
uintspeed,count,r1,i,t,k;
main()
{k=0;
t=0;
r1=0x11;
speed=0;
count=1;
TMOD=0x01;
ET0=1;
EA=1;
EX0=1;
EX1=1;
TH0=0xcf;
TL0=0x2c;
for(;;)
{if(k1==0)
{P0=0xff;
P2=0xff;
speed=0;
TR0=0;
}
else
{
if(k2==0)
P0=0xbf;
elseP0=0xf9;
if(speed==0)
{P2=0xc0;
TR0=0;
}
elseTR0=1;
}
}
}
voidisr_int0(void)interrupt0
{
if(speed<7)
speed=speed+1;
while(s2==0)
{for(i=0;i<10;i++);}
}
voidisr_int1(void)interrupt2
{
if(speed>0)
speed=speed-1;
while(s3==0)
{for(i=0;i<10;i++);}
}
voidzd_t0ist(void)interrupt1
{
TH0=0xd8;
TL0=0xf0;
switch(speed)
{
case0:
P2=0xc0;count=0;break;
case1:
P2=0xf9;count=60;break;
case2:
P2=0xa4;count=40;break;
case3:
P2=0xb0;count=35;break;
case4:
P2=0x99;count=30;break;
case5:
P2=0x92;count=28;break;
case6:
P2=0x82;count=25;break;
case7:
P2=0xf8;count=21;break;
default:
break;
}
if(t==0)
t=count;
if(t>0)
t=t-1;
if(k2==0)
{
if(t==0)
{
switch(k)
{
case0:
P1=0x01;break;
case1:
P1=0x02;break;
case2:
P1=0x04;break;
case3:
P1=0x08;break;
default:
break;
}
k=k+1;
if(k==4)
k=0;
}
}
else
{
if(t==0)
{
switch(k)
{
case0:
P1=0x08;break;
case1:
P1=0x04;break;
case2:
P1=0x02;break;
case3:
P1=0x01;break;
default:
break;
}
k=k+1;
if(k==4)
k=0;
}
}
}
第五章仿真与调试
软件介绍
Proteus软