单片机控制步进电机课程设计报告doc.docx
《单片机控制步进电机课程设计报告doc.docx》由会员分享,可在线阅读,更多相关《单片机控制步进电机课程设计报告doc.docx(21页珍藏版)》请在冰豆网上搜索。
单片机控制步进电机课程设计报告doc
2013~2014学年第1学期
《单片机原理及应用》
课程设计报告
题目:
单片机控制步进电机
专业:
电子信息工程
班级:
姓名:
指导教师:
电气工程学院
2013年10月20日
任务书
课题名称
单片控制步进电机
指导教师(职称)
执行时间
2013~2014学年第1学期第7周
学生姓名
学号
承担任务
1109121056
硬件部分
1109121058
电路图仿真与调试
1109121049
软件部分
1109121030
资料查找
1109121009
写Word文档
1109121052
电路图仿真与调试
1109121010
写Word文档
设计目的
1、掌握单片机芯片89C52的原理及相关接口电路的设计方法。
2、熟悉电路仿真软件protues的使用。
3、掌握单片机系统的设计步骤及基本方法。
4、熟悉KEIL软件的编程,加强C语言的能力。
5、掌握步进电机的控制方法。
6、掌握各个芯片的控制方法。
7、设计控制步进电机工作。
设计要求
(1)采用单片机控制一个四相单四拍的步进电机工作。
步进电机的旋转方向由正反转控制信号控制。
步进电机的步数由键盘输入,可输入的步数分别为3、6、9、12、15、18、21、24和27步,且键盘具有键盘锁功能,当键盘上锁时,步进电机不接受输入步数,也不会运转。
只有当键盘锁打开并输入步数时,步进电机才开始工作。
(2)电机运转的时候有正转和反转指示灯指示。
(3)电机在运转过程中,如果过热,则电机停止运转,同时红色指示灯亮,同时警报响。
(4)上机调试程序。
(5)写出设计报告。
单片机控制步进电机
摘要
步进电机是一种电脉冲转化为角位移的执行机构。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
结合对步进电机的了解,然后对步进电机的控制原理包括步进电机的控制方式和驱动方式作了系统的说明,采用89C51单片机来控制步进电机,用c程序来控制运行。
控制系统通过单片机存储器、I/O口、键盘、复位电路、晶振电路实现让步进电机正反转的功能。
并通过DS18B20测温来防止步进电机的温度过高。
单片机的控制系统由AT89C51单片机控制,具有抗干扰能力强,可靠性高而系统易扩展等优势。
本次课程设计着重于通过控制脉冲数来控制位移,实现准确定位。
基于步进电机本身的优越性和应用的广泛性,这正是用单片机控制步进电机课程设计的实际意义。
关键字:
步进电机;角位移;单片机;脉冲
第一章绪论1
1.1步进电机及其发展1
1.2步进电机的发展应用及前景1
1.3设备及工作环境1
第二章系统方案整体设计2
第三章硬件设计3
3.1系统硬件设计3
3.1.1单片机晶振电路3
3.1.2单片机复位电路3
3.1.3最小单片机系统4
3.1.4键盘设计4
3.1.5电机部分5
3.2系统工作原理论述6
第四章软件设计9
4.1分析论证9
4.1.1步进电机运行驱动模块9
4.1.2温度采集模块9
4.1.3主函数模块10
4.1.4整体功效10
4.2程序流程图10
参考文献17
第一章绪论
1.1步进电机及其发展
步进电机又称为脉冲电动机或阶跃电动机,它是基于最基本的电磁感应作用,将电脉冲信号转变为角位移或线位移的开环控制元件。
单片机控制的步进电机广泛地应用于工业自动控制、数控机床、组合机床、机器人、计算机外围设备、照相机,大型望远镜,卫星天线定位系统等等。
随着经济的发展,技术的进步和电子技术的发展,步进电机的应用领域更加广阔,同时也对步进电机的运行性能提出了更高的要求。
步进电机的原始模型起源于1830年至1860年,1870年前后开始以控制为目的的尝试,应用于氩弧灯的电极输送机构中,这被认为最早的步进电机。
1950年后期晶体管的发明也逐渐应用在步进电机上,对于数字化的控制变得更为容易。
到20世纪60年代后期,在步进电机本体方面随着永磁材料的发展,各种实用性步进电机应运而生。
步进电机往后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解能、高响应性、信赖性等灵活控制性高的机械系统中。
在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。
1.2步进电机的发展应用及前景
我国步进电机的研究及制造起始于本世界50年代后期,从50年代后期到60年代后期,主要是高等院校和科研机构为研究一些装置而使用或开发少量产品。
我国在文化大革命中开始大量生产和应用步进电机,例如江苏、浙江、北京、南京、四川等各地都有投入生产,而且都在各行业使用,其中的驱动电路所有半导体器件都是完全国产化的,当时是全分立元器件构成的逻辑运算电路,还有电容耦合输入的计数器,触发器,环形分配器。
中等耐压的大功率半导体器件也完全国产化。
70年代初期,步进电机的生产和研究都有所突破,除反映在驱动器设计方面的长足进步以外,对反应式步进电机本体的设计研究发展到一个较高的水平。
70年代中期至80年代中期为成品发展阶段,新品种高性能电动机不断被开发。
至80年代中期以来,由于步进电机精确模型做了大量研究工作,各种混合式步进电机及驱动器作为产品广泛利用。
目前,生产步进电机的厂家的确不少,但具有专业技术人员,能够自行开发,研制的厂家却非常少,大部分的厂家只一、二十人,连最基本的设备都没有。
仅仅处于一种盲目的仿制阶段。
这就给户在产品选型、使用中造成许多麻烦。
虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。
它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。
因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。
1.3设备及工作环境
(1)硬件:
AT89C51单片机一片、28BYJ48步进电机一台、温度传感器DS18B20芯片。
(2)软件:
Windows操纵系统、KeilC51软件、Proteus软件。
第二章系统方案整体设计
步进电机28BYJ-48简介:
图2—1步进电机28BYJ-48
28BYJ-48-5VDC步进电机是四相五线制电机,中间部分是转子,由一个永磁体组成,边上的是定子绕组。
当定子的一个绕组通电时,将产生一个方向的电磁场,如果这个磁场的方向和转子磁场方向不在同一条直线上,那么定子和转子的磁场将产生一个扭力将定子扭转。
依次改变绕组的磁场,就可以使步进电机正转或反转(比如通电次序为A->B->C->D正转,反之则反转)。
而且按照通电顺序的不同,可分为单四拍(A-B-C-D)、双四拍(AB-BC-CD-DA)、单双八拍(A-AB-B-BC-C-CD-D-DA)三种工作方式。
单四拍与双四拍的步距角相等,但单四拍的转动力矩小。
八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。
第三章硬件设计
3.1系统硬件设计
3.1.1单片机晶振电路
对于89C51一般的晶振可以在1.2MHZ—12MHZ之间选择,这是电容C可以对应的选择10pf-30Pf。
对于本设计的电容C用30pF,晶振选用12MHZ。
晶振电路解法图3-2,一条引脚接在XTAL1,另一条接在XTAL2。
电路图如图2-1所示:
图3-1晶振电路
3.1.2单片机复位电路
复位是单片机的初始化工作,复位后中央处理器CPU和单片机内的其它功能部件都处在一定的初始状态,并从这个状态开始工作。
为了防止程序执行过程中失步或运行紊乱,此处我们采用了上电复位及手动复位电路,电路图如图2-2所示:
图3-2复位电路
3.1.3最小单片机系统
图3—3单片机最小系统
5V电源:
给系统供电。
EA接高电平:
表示运行内部程序存储器下载的程序。
P0口接排阻:
P0口开漏结构,使用时一般接排阻拉高电平。
3.1.4键盘设计
图3—4键盘电路
该电路中采用独立键盘工作方式,共设有12个按键,左图分别由上到下分别为S1~S8,S1~S9分别提供3、6、9、12、15、18、21、24、27步选择功能。
S10为键盘锁,S11反转,S12正转。
其中有程序决定起作用。
3.1.5电机部分
图3—5电机控制电路
该电路左边4B~5B分别接P0.4~P0.7,分别驱动步进电机的A,B,C,D相。
从而使电机转动。
因单片机的输出电流小,所以用ULN2003增大电流。
ULN2003简介如下:
ULN2003是高耐压、大电流复合晶体管阵列,由七个硅NPN复合晶体管组成。
ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。
可直接驱动继电器等负载。
输入5VTTL电平,输出可达500mA/50V。
ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。
图3—6ULN2003芯片引脚图
该电路的特点如下:
ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。
ULN2003工作电压高,工作电流大,灌电流可达500mA,并能在关态时承受50V的电压,输出还可以在高负载电流并行运行。
3.2系统工作原理论述
图3—7总原理图
该系统的工作核心CPU为ATMEL公司生产的AT89C51芯片将多种功能的8位CPU与FPEROM(快闪可编程/擦除只读存储器)结合在一个芯片上,是一种低功耗、高性能的CMOS控制器,为很多嵌入式控制应用提供了非常灵活而又价格适宜的方案,其性能价格比远高于同类芯片。
它与89C51指令系统兼容,片内FPEROM允许对程序存储器在线重复编程,也可用常规的EPROM编程器编程,可循环写入/擦除1000次。
89C51内含4KB的FPEROM,一般的EEPROM的字节擦除时间和写入时间基本上均为10ms,对于任一个实时控制系统来说,这样长的时间是不可能在线修改程序的。
CPU为Atmel公司生产的89C51/89C52/89C55等。
出厂所配晶振频率为11.0592MH,每个机器周期为1.085us,用户更换晶振以提高速度;
存贮器为64K,前4K/8K20K在CPU内部,其它程序在EPR0M27512中;
数据存贮器为32K(62256),地址为8000—FFFFH;
A口地址∶21O1HB口地址:
2102HC口地址:
2103H;
T低八位∶2104HT高八位∶2105H;
多路模拟开关的使用∶
IN0∶P1=0F8HIN4:
P1=0FCHIN1∶P1=0F9HIN5:
P1=OFDH
IN2∶P1=0FAHIN5:
P1=0FEHIN3∶P1=0FBHIN7:
P1=0FFH
不掉电数据存贮器为∶500EH-507FH;
控制板∶160x1O9(mm)供电∶+5V300mA+12V100mA-12V100mA;
AT89C1是一种低功耗、高性能的片内含有4KB快闪可编程/擦除只读存储器(FPEROM-FlashProgrammableandEraseableReadOnlyMemory)的8位CMOS微控制器,使用高密度、非易失存储技术制造,并且与80C51引脚和指令系统完全兼容;
主要性能:
与89C51微控制器产品系列兼容;
片内有4KB可在线重复编程的快闪擦写存储器。
引脚简介:
图3—889C51引脚介绍
整体介绍:
该系统采用的芯片还有:
DS18B20温度传感器、ULN2003A以及28BYJ48四相五线步进电机,并且步进电机在单四拍的方式下工作,步矩为5.625°,步进电机的旋转方向由正反转控制信号控制。
步进电机的步数由键盘输入,可通过独立键盘S1~S9输入的步数分别为3、6、9、12、15、18、21、24和27步对应的角度为16.875°、33.725°、……、151.875°,且键盘S10具有键盘锁功能,当键盘上锁时,步进电机不接受输入步数,也不会运转。
只有当键盘锁打开,选择运转方向并且输入步数时,步进电机才开始工作。
电机运转的时候有正转指示灯D2和反转指示灯D3指示。
电机在运转过程中用温度传感器采集步进电机外表温度(可设置),如果过热,则电机停止运转,同时红色指示灯亮,同时蜂鸣器警报响。
第四章软件设计
4.1分析论证
此步进电机控制电路设计与实现,主要采用了ULN2003A驱动芯片,温度传感器芯片DS18B20芯片,独立键盘等,包含步进电机运行驱动,温度采集,主函数三大功效模块。
4.1.1步进电机运行驱动模块
由于该系统中没有完全使用I/O端口,所以采用了独立键盘的工作方式,系统工作时,键盘控制的I/O口处于高电平状态,当按键按下时触发低电平,驱动程序实时监测并立即响应执行相应工作。
判断电机步数
步进电机正转
开始
键盘是否锁住
正反转判断
步进电机反转
否
正转
反转
图4-1步进电机控制流程图
4.1.2温度采集模块
该模块的重要功效是对步进电机的外表采集温度,并且对已设定好的数值进行比较,从而确定机身温度是否过高,正常时电机正常转动,当温度过高时电机不再转动,并且蜂鸣器报警,红灯点亮。
图4-2ds18b20控制流程图
4.1.3主函数模块
该模块重要功效是调动温度采集函数、步进电机函数中函数,实现模块化编程。
4.1.4整体功效
AT89C52芯片控制ULN2003A芯片驱动步进电机,扫描键盘输入运行状态以及运转步数,当电机外表温度超过40℃是电机停止转动,并且报警!
4.2程序流程图
主程序流程图如图所示:
开始
初始化程序
判断步进电机温度是否过高?
锁键盘
确定输入步数
步进电机运转
电机高温?
等待开键盘
报警,红灯点亮,步进电机停转
是
否
是
否
否
图4—3程序流程图
程序清单
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineM100
sbitk1=P1^0;
sbitk2=P1^1;
sbitk3=P1^2;
sbitk4=P1^3;
sbitk5=P1^4;
sbitk6=P1^5;
sbitk7=P1^6;
sbitk8=P1^7;
sbitk9=P0^0;
sbitk10=P0^1;
sbitk11=P0^2;
sbitk12=P0^3;
sbitDQ=P2^7;
sbitD3=P2^0;
sbitD2=P2^3;
sbitD1=P2^5;
sbitbel=P2^6;
uchara[]={0x10,0x20,0x40,0x80};
ucharb[]={0x80,0x40,0x20,0x10};
ucharx=0,T,tempL,tempH;
voiddelay(uinti)
{
while(i--);
}
voidbell(void)
{uchari;
for(i=0;i<50;i++)
{
bel=0;
delay(10000);
bel=1;
delay(10000);
}
}
voidzj(ucharzj)
{uinti,j;
D2=1;
for(j=0;jfor(i=0;i<4;i++)
{
P0=a[i];
delay(800);
}
D2=0;
}
voidfj(ucharfj)
{uinti,j;
D3=1;
for(j=0;jfor(i=0;i<4;i++)
{
P0=b[i];
delay(800);
}
D3=0;
}
voidaj(void)
{
if(k1==0)
{delay(M);
if(k1==0)x=3;
}
if(k2==0)
{
delay(M);
if(k2==0)x=6;
}
if(k3==0)
{
delay(M);
if(k3==0)x=9;
}
if(k4==0)
{
delay(M);
if(k4==0)x=12;
}
if(k5==0)
{
delay(M);
if(k5==0)x=15;
}
if(k6==0)
{
delay(M);
if(k6==0)x=18;
}
if(k7==0)
{
delay(M);
if(k7==0)x=21;
}
if(k8==0)
{
delay(M);
if(k8==0)x=24;
}
if(k9==0)
{
delay(M);
if(k9==0)x=27;
}
}
voidmotorstart(void)
{
if(k10==0)
{
delay(M);
if(k10==0)P0=0x0f;
}
if(k11==1&&k12==0&&k10==1)
{
delay(M);
if(k11==1&&k12==0&&k10==1)zj(x);
}
if(k11==0&&k12==1&&k10==1)
{
delay(M);
if(k10==1&&k11==0&&k12==1)fj(x);
}
}
voidds18b20init(void)
{
uchards=0;
DQ=1;
delay(8);
DQ=0;
delay(80);
DQ=1;
delay(5);
ds=DQ;
delay(20);
}
voidWriteOneChar(uchardat)
{
uchari=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay(5);
DQ=1;
dat>>=1;
}
delay(4);
}
ucharReadOneChar(void)
{
unsignedchari=0;
unsignedchardat=0;
for(i=8;i>0;i--)
{
DQ=1;
delay
(1);
DQ=0;
dat>>=1;
DQ=1;
if(DQ)
dat|=0x80;
delay(4);
}
return(dat);
}
voidReadTemperature(void)
{
ds18b20init();
WriteOneChar(0xcc);
WriteOneChar(0x44);
delay(125);
ds18b20init();
WriteOneChar(0xcc);
WriteOneChar(0xbe);
tempL=ReadOneChar();
tempH=ReadOneChar();
}
voidworktemp(void)
{
T=((tempL&0xf0)>>4)+((tempH&0x07)<<4);
}
voidmain()
{T=0;
P1=0XFF;
P0=0X0F;
P2=0X00;
while
(1)
{
ds18b20init();
WriteOneChar(0XCC);
WriteOneChar(0X44);
ReadTemperature();
worktemp();
aj();
if(T<50)
{
D1=0;
bel=1;
motorstart();
}
if(T>=50)
{
P0=0;
D1=1;
bell();
delay(1000);
D1=0;
}
}
}
参考文献
【1】张毅刚编著,《单片机原理及应用》高等教育出版社2010。
【2】郭天祥编著,《AltiumDesigner6.9PCB设计视频教程》2007。
【3】楼然苗等编著,《51系列单片机设计实例》北京航空航天大学出版社2006。
【4】汪道辉编著,《单片机系统设计与实践》电子工业出版社2005。
【5】谭浩强编著,《C程序设计(第三版)》清华大学出版社2005。
【6】王港元编著,《电工电子实践指导》江西科学技术出版社2008。
【7】周润景编著,《PROTEUS入门实用教程》机械工业出版社2011。
【8】林立编著,《单片机原理及应用:
基于Proteus和KeilC》电子工业出版社2011。
【9】阎石编著,《数字电子技术基础》高等教育出版社2006。
【10】李朝青编著,《单片机原理及接口技术》北京航空航天大学出版社2005
附录:
答辩记录及评分表
课题名称
单片机控制步进电机
答辩教师(职称)
崔雪英
答辩时间
2012——2013学年第1学期第7周
答
辩
记
录
评分表
学生姓名
学号
评分
陈营营
1109121056
方苹
1109121058
张树朋
1109121049
陶轮
1109121030
高文韬
1109121009
朱德强
1109121052
葛自立
1109121010