完美版单片机控制步进电机Word下载.docx
《完美版单片机控制步进电机Word下载.docx》由会员分享,可在线阅读,更多相关《完美版单片机控制步进电机Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
5.3步进电机转动原理-----------------------------------------------------------------11
第六章系统调试与存在的问题----------------------------------------------------12
6.1硬件调试-----------------------------------------------------------------------------12
6.2软件调试-----------------------------------------------------------------------------12总结--------------------------------------------------------------------------------13
参考文献--------------------------------------------------------------------------------13
附录--------------------------------------------------------------------------------------14
第一章绪论
1.1课题简介
步进电机是一种将电脉冲转换成角位移或线位移的电磁机械装置,也是一种能把输出解析为唯一增量和输入数字脉冲对应的驱动器件。
步进电机具有快速启动、停止的能力,精度高、控制方便,因此,在工业上得到了广泛应用。
单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。
在工业生产中。
单片微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
本课题就是充分利用了MCS-51芯片的I/O引脚。
课题以采用MCS-51系列单片机AT98S52为中心器件来控制步进电机,实现了电机在不同控制下的正转、反转并停止转动。
1.2设计目的
通过本次课题设计,应用《单片机原理及其接口技术》等所学相关知识及查阅资料,完成简易单片机控制两相四线步进电机的设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。
通过本次设计的训练,可以使我们在基本思路和基本方法上对基于MCS-51单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。
1.3设计任务
利用单片机控制一个两相四线步进电机,而且要满足如下技术指标:
(1)开始通电时,步进电机停止转动。
(2)单片机分别接按键开关K1、K2和K3,用来控制步进电机的转向,要求如下:
当按下K1时,步进电机正转;
当按下K2时,步进电机反转;
当按下K3时,步进电机停止转动;
步进电机的工作方式采用1相激磁、1—2相激磁。
1.4设计方法
L298N为双全桥步进电机专用驱动芯片,内部包含4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动。
价格便宜、使用方便,因此我们选用此芯片来驱动步进电机。
单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。
单片机系统的复位方式有:
手动按钮复位和上电复位。
手动按钮复位需要人为在复位输入端RST上加入高电平(图1)。
一般采用的办法是在RST端和正电源Vcc之间接一个按钮。
当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。
考虑到操作方便,我们选用手动按钮复位的方式。
单片机时钟电路是用来配合外部晶体实现振荡的电路,这样可以为单片机提供运行时钟,如果运行时钟为0的话,单片机就不工作,当然超出单片机的工作频率的时钟也会导致单片机不工作。
因此我们采用目前较为常见的12MHz的晶振来构成振荡电路。
第二章设计内容与所用器件
2.1.基本功能:
利用AT89S52单片机作为主控器来控制一个两相四线步进电机的正转、反转和停止。
2.2.所用器件:
硬件:
(1)AT89S52单片机最小系统
(2)L298N驱动器
(3)TM10—20S001两相四线步进电机
软件:
(1)KeiluVision4
(2)progisp
2.3.系统图:
图一系统原理框图
第三章方案论证与比较
3.1.对步进电机的控制和驱动方案:
方案一:
使用多个功率放大器件驱动电机,通过使用不同的放大电路和不同参数的器件,可以达到不同的放大要求,放大后能够得到较大的功率。
但是由于使用的是四相的步进电机,就需要对四路信号分别放大,由于放大电路很难做到完全一致,当电机的功率较大时运行起来会不稳定,而且电路的制作也比较复杂。
方案二:
使用ULN2003芯片驱动步进电机,可以直接用单片机的Y/O口提供信号;
而且电路简单,使用比较方便。
方案三:
L298N芯片是一种高电压、大电流双H桥功率集成电路,可用来驱动继电器、线圈、直流电机和步进电机等感性负载。
它具有两抑制输入来使器件不受输入信号影响。
每桥的三极管的射级是连接在一起的,相应的外接线端可用来连接外设传感电阻。
可安置另一输入电源,使逻辑能在低电压下工作,使用比较方便。
综上所述,再考虑到我们已有L298N芯片,所以我们本次采用L298N作为步进电机的驱动芯片。
3.2步进电机的选择
步进电机按照电机结构分为三种:
永磁式(PM)反应式(VR)和混合式(HB)。
永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;
多半用于价格低廉的消费性产品。
反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。
混进合式步进是指混合了永磁式和反应式的优点,它又分为两相、三相和五相:
两相步距角一般为1.8度,三相步距角为0.9度,而五相步距角一般为0.72度。
混进合式步进是工业运动控制应用最常见的电机。
综上,我们选择性能比较好,且目前较为常见的混合式的步进电机。
为了简化设计,选用TM10-S001型号的两相四线步进电机。
第四章硬件系统设计
4.1步进电机的工作方式
步进电机,顾名思义,就是一步步走的电动机,所谓“步”指的是转动角度,一般每步为1.8度,若转一圈,需要200步才能完成。
步进电机每走一步,就要加一个脉冲信号,也称激磁信号,无脉冲信号输入时,转自保持一定的位置,维持静止状态。
若加入适当的脉冲信号时,转自则会以移动的步数转动。
如果加入连续的脉冲信号,步进电机就连续转动,转动的角度与脉冲频率成正比,正反转可由脉冲的顺序来控制。
步进电机的激磁方式有1相激磁、2相激磁和1—2相激磁。
以下是步进电机的接线示意图:
图二步进电机连线示意图
4.2驱动芯片L298N
L298N是ST公司生产的一种高电压、大电流电机驱动芯片。
该芯片采用15脚封装。
主要特点是工作电压高最高工作电压可达46V输出电流大瞬间峰值电流可达3A持续工作电流为2A额定功率25W。
内含两个H桥的高电压大电流全桥式驱动器可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载采用标准逻辑电平信号控制具有两个使能控制端在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端使内部逻辑电路部分在低电压下工作可以外接检测电阻将变化量反馈给控制电路。
使用L298N芯片驱动电机该芯片可以驱动一台两相步进电机或四相步进电机也可以驱动两台直流电机。
以下是L298N的引脚分配:
图三L298N的引脚分配
L298N引脚的功能如下所示:
1、15引脚=SEN1、SEN2分别为两个H桥的电流反馈脚,不用时可以直接接地;
2、3引脚=1Y1、1Y2输出端;
13、14引脚=2Y1、2Y2输出端;
4引脚=VS驱动电压,最小值须比输入的低电平电压高2.;
5、7引脚=1A1、1A2输入端,TTL电平兼容;
10、12引脚=2A1、2A2输入端,TTL电平兼容;
6、11引脚=ENA、ENB使能端,低电平禁止输出;
8引脚=GND地;
9引脚=Vss逻辑电源。
L298N与两相四线步进电机的连接图如下:
图四L298N与两相四线步进电机的连接
4.3AT89S52单片机时钟电路
时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。
在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。
此电路采用12MHz的石英晶体。
时钟电路如下图:
图五步进电机的时钟电路
4.4AT89S52单片机的复位电路
复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误是系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。
RST引脚是单片机复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即2个机器周期)以上,若使用频率为12MHz的晶振,则复位信号持续时间应超过4
s才能完成复位操作。
复位操作有上电自动复位和按键手动复位两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的。
按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的。
在本设计中采用了按键电平复位方式,其复位电路如下图:
图六步进电机的按键复位电路
4.5系统总连接图
图七单片机控制步进电机系统连接图
第五章软件设计
5.1汇编语言和C语言的特点及选择
本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。
在单片机的应用系统程序设计时,常用的是汇编语言和C语言。
机器语言啊,程序可读性和可移植性比较差。
虽然C语言执行语言简洁,使用方便,灵活程序设计自由度大,有很好的可重用性,可移植性。
但是汇编语言效率明显高于C语言,且由于课堂上在学习汇编语言,我们都已有一定的汇编基础,所以在本设计中采用汇编言编写软件程序,主程序的设计详见附录一。
5.2主程序流程
键扫程序的过程为:
开始时,先判断是否有键闭合,无键闭合时,返回继续判断;
有键闭合时,先去抖动,然后确定是否有键按下,若无键按下,则返回继续判断是否有键闭合,若有键按下,则判断键号,然后释放,若释放按键完毕,则返回,若没有释放按键,则返回继续释放。
主程序的过程为:
程序开始时,先判断按键是否符合,有按键的话则跳转到相应的子程序执行正转、反转或停止。
图八主程序流程图
5.3步进电转动原理
其中:
1相激磁法:
在每一瞬间只有一个线圈导通,其他线圈在休息。
其特点是激磁方法简单、消耗电力小、精确度良好。
但是转矩小、震动较大,每送一次激磁信号可走1.8度。
2相激磁法:
在每一瞬间只有两个线圈导通,特点是转矩大、震动较小,每送一次激磁信号可走1.8度。
1—2相激磁法:
1相与2相轮流交替导通,精确度高,且运转平滑。
但每送一次激磁信号只走0.9度,又称半步驱动。
1相激磁、2相激磁和1—2相激磁方式如表4—1所示。
表4—1
1相激磁2相激磁1—2相激磁
步
A
B
1
2
3
4
5
6
7
8
改变线圈激磁的顺序可以改变步进电机的转动方向。
每送一次激磁信号后要经过一小段的时间延时,让步进电机有足够的时间建立磁场及转动。
为了充分学习步进电机的激磁方式,我们在设计时,正传采用1相激磁方式,反转采用1—2相激磁方法。
第六章系统调试与存在的问题
6.1硬件调试
按照上面的设计方案,我们对电路进行了实际的连接测试。
将程序下载到单片机没有问题,关键是一开始,步进电机与驱动器的连线接反了,给系统通电后只看到电机在震动,但是转轴没有转动。
经过交换接线,本电路经调试符合题目要求,各项技术指标均达到设计的目的。
具体操作控制方法如下:
1、当电机启动按钮时,步进电机根据制定默认状态开始转动;
2、当电机停止按钮时,步进电机停止转动;
3、当电机正转按钮时,步进电机以1相激磁方式正转;
4、当电机反转按钮时,步进电机1—2相激磁方式反转。
6.2软件调试
在编写控制步进电机转动的程序时,由于变成经验不多,且对步进电机的工作原理不是特别的熟悉,所以我们先参考了一些课外书上的正转程序,实现了单片机的正转。
接着,为了锻炼自己的编程能力,我们在学会正转程序的基础上,自己编写控制电机反转的程序,经过KeiluVision调试及其错误提示,最终成功完成了反转的程序。
其次,我们还自己尝试通过改变电机每一步的延时来改变控制电机的转速,此部分没有做详细介绍,具体源程序见附录二。
最后在接入按键控制并实现正反转时,我们先自己尝试编写程序,但最终页没有修改成功。
没有更好办法的情况下,就参考了书上的程序,同时我们也认真讨论并弄明白这些程序。
总结
通过单片机课程设计,我们不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我们还学会了如何去培养我们的团队合作意识,取他人之长,不自己之短。
实践,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事。
使之不断地战胜别人,超越前人。
同时,更重要的是,我们在这一设计过程中,学会了坚持不懈,不轻易言弃。
设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。
这个设计过程中,我们遇到过许多次失败的考验,就比如,自己对实际电机工作原理的不了解给整个设计带来的困扰,好多次做着做着就不想做了。
然而,就在想要放弃的那一刻,我们明白了,其实结果并不那么重要,我们更应该注重的是这一整个过程。
于是,我们坚持了下来。
当然最终,这个设计很成功,我们通过本次试验,不但加强了同组人之间的合作意识,并且也真正对单片机这门课有了更为深刻的认识。
我们通过对所设计系统的具体实现,也提高了动手能力,关键在动手方面胆子大了一些,以前总是怕把元件、芯片烧坏导致不敢随便动手操作,这次可谓是完全自学,电路连线也试了好多遍才达到最终的成功。
总之,这次试验无论从知识上还是实践上都让我们收获不少。
参考文献
[1]王守中、聂元铭著.51单片机开发入门与典型实例.人民邮电出版社,2009.10
[2]杨恢先黄辉先著.单片机原理与应用.人民邮电出版,2009.7
[3]胡汉才著.单片机原理及接口技术.清华大学出版社,2008.10
附录
附录一:
源程序
ORG0000H
AJMPSTOP
ORG1000H
K1EQUP3.2
K2EQUP3.3
K3EQUP3.4
STOP:
MOVP2,#0FFH;
步进电机停止
LOOP:
JNBK1,Z_M2
JNBK2,F_M2
JNBK3,STOP1
JMPLOOP
STOP1:
ACALLDELAY
JNBK3,$
LCALLDELAY
AJMPSTOP
Z_M2:
JNBK,$
ACALLDELAY
AJMPZ_M
F_M2:
JNBK2,$
AJMPF_M
;
正转子程序
Z_M:
MOVR0,#00H
Z_M1:
MOVA,R0
MOVDPTR,#TABLE
MOVCA,@A+DPTR
JZZ_M
MOVP2,A
INCR0
AJMPZ_M1
RET
反转子程序
F_M:
MOVR0,#05H
F_M1:
MOVDPTR,#TABLE
MOVCA,@A+DPTR
JZF_M
JNBK1,Z_M2
AJMPF_M1
DELAY:
MOVR6,#40;
延时时间20ms
D1:
MOVR7,#248
DJNZR7,$
DJNZR6,D1
RET
控制码表
TABLE:
DB0FCH,0F9H,0F3H,0F6H;
正转
DB00H;
正转结束码
DB0F7H,0F3H,0FBH,0F9H;
反转
DB0FDH,0FCH,0FEH,0F6H
反转结束码
END
附录二:
改变电机转速的源程序
AJMPMAIN
MAIN:
;
主程序
ACALLZ_M
ACALLF_M
MOVR5,#250
JMPMAIN
;
MOVR0,#20
MOVA,#11001100B
MOVP0,A
MOVR5,#50
ACALLDELAY
RLA
DJNZR0,LOOP
MOVR1,#200
MOVA,#00110011B
LOOP1:
MOVP0,A
MOVR5,#5
RRA
DJNZR1,LOOP1
延时程序
DLY1:
MOVR6,#100
MOVR7,#100
DJNZR6,DLY2
DJNZR5,DLY1
END