单片机两种方式控制步进电机旋转资料.docx
《单片机两种方式控制步进电机旋转资料.docx》由会员分享,可在线阅读,更多相关《单片机两种方式控制步进电机旋转资料.docx(16页珍藏版)》请在冰豆网上搜索。
单片机两种方式控制步进电机旋转资料
单片机课程设计说明书
设计题目两种方式控制步进电机控制
指导教师:
设计者:
系别:
机械工程学院
班级:
学号:
序言……………………………………………………………………3
1、步进电机介绍……………………………………………………4
1.1步进电机的概念……………………………………………4
1.1步进电机的特点……………………………………………4
2、设计要求及任务…………………………………………………6
3、设计目的及原理…………………………………………………6
3.1设计目的………………………………………………………6
3.2设计原理………………………………………………………6
3.3步进电机工作原理……………………………………………7
四、所需设备…………………………………………………………8
五、设计思路…………………………………………………………8
5.1提出方案………………………………………………………8
5.2方案论证………………………………………………………9
六、调试程序…………………………………………………………10
七、设计程序…………………………………………………………15
八、总结………………………………………………………………18
九、参考文献…………………………………………………………19
序言
单片机技术是计算机技术发展的一个重要分支。
由于单片机具有集成度高、体积小、可靠性高、价格便宜等特点,在机电一体化、工业控制、仪器仪表、家用电器、信息和通信产品、军事装备等领域均得到了广泛的应用。
而步进电机就是其中的一小部分。
步进电机是把电脉冲信号变换成角位移以控制转子转动的微特电机。
在自动控制装置中作为执行元件。
每输入一个脉冲信号,步进电动机前进一步,故又称脉冲电动机。
步进电动机多用于数字式计算机的外部设备,以及打印机、绘图机和磁盘等装置。
步进电动机的驱动电源由变频脉冲信号源、脉冲分配器及脉冲放大器组成,由此驱动电源向电机绕组提供脉冲电流。
步进电动机的运行性能决定于电机与驱动电源间的良好配合。
主要用于数字控制系统中,精度高,运行可靠。
如采用位置检测和速度反馈,亦可实现闭环控制。
步进电动机已广泛地应用于数字控制系统中,如数模转换装置、数控机床、计算机外围设备、自动记录仪、钟表等之中,另外在工业自动化生产线、印刷设备等中亦有应用。
第一章设计要求及任务
用P1.0-P1.3口控制一台步进电机,用两种方法实现单双八拍控制。
晶振频率12Mhz
第二章所需设备
1、电脑一台
2、52单片机开发系统一块
3、步进电机一个
4、usb转串口线,电源线
第三章设计思路
5.1 提出方案
方案一:
电机的运转一般由脉冲信号和方向信号来控制的,脉冲的频率控制电机的转速,脉冲的个数控制电机的转角,用单片机控制步进电机,可以用一个输出口发送脉冲:
高电平->延时->低电平->延时->......延时的长短控制脉冲的频率,电平的转换次数就是脉冲个数。
因为步进电机的控制室通过脉冲信号来控制的,经电脉冲信号转变为角位移或线位移的开环控制元件,所以怎样产生这个脉冲信号和产生怎样的脉冲信号是电机控制的关键。
5.2 方案论证
用单片机来产生着个脉冲信号,通过单片机的P1口输出脉冲信号,因为所选电机是四相的,所以只需要P1口的低四位P1.0~P1.3分别接到电机的四根电线上。
调试好程序之后转盘转动。
单片机的引脚功能:
1)VCC(40):
电源+5V。
2)VSS(20):
接地,也就是GND。
3)XTL1(19)和XTL2(18):
振荡电路。
4)PSEN(29):
片外ROM选通信号,低电平有效。
5)ALE/PROG(30):
地址锁存信号输出端/EPROM编程脉冲输入端。
6)RST/VPD(9):
复位信号输入端/备用电源输入端。
7)EA/VPP(31):
内/外部ROM选择 端
8)P0口(39-32):
双向I/O口。
9.P1口(1-8):
准双向通用I/0口。
9)P2口(21-28):
准双向I/0口。
步进电机驱动和单片机连线图
第四章调试程序
1、打开Keil软件,建立一个新工程,单机【Project】在下拉菜单中找到【Newproject...】选项,如图1所示
图1建立新的工程组
2、选择工程要保存的路径,并且输入工程文件名。
Keil的一个工程里通常含有很多小文件,为了方便管理,一般将一个工程放在一个独立的文件夹下,并且给文件命名,如图2所示。
图2定义工程文件名
3、单击保存后会弹出一个对话框,要求选择单片机的机型,可以根据使用的单片机来选择。
KeilC51几乎支持所有的51内核的单片机,在这里选择Atmel的AT89C52,如下图所示,选择后单机保存,如图3所示。
图3选择单片机的型号
4、完成上一步骤后,窗口界面如图4所示。
图4工程组界面
到此为止,还没建好一个完整的工程,虽然工程名有了,但工程当中还没有任何文件及代码,接下来就是添加文件及代码。
5、单击【File】菜单中的【new】菜单项,或者单机界面上的快捷图标,如图5所示。
图5新建文件
6、新建文件后的窗口如图6所示。
图6文件界面
7、此时光标在编辑窗口中闪烁,可以输入用户的应用程序,但此时这个新建文件与刚刚建立的工程还没有直接的联系,单机“保存”图标,窗口界面如图7所示。
图7文件保存到工程组
输入要保存的文件名,同时必须输入正确的扩展名“.a”,然后单击【保存】按钮。
8、回到编辑界面,单机【Target1】前面的“+”号,然后在【SourceGoup1】单击右键,弹出如图8所示的菜单。
图8添加程序至工程
然后选择【AddFilestoGroup‘SourseGroup1’】菜单项弹出图9对话框
图9选择文件
9、选中【Text1】,单击【Add】按钮,再单击【Close】按钮,然后再单击左侧【SourseGroup1】前面的“+”,屏幕窗口如图10所示。
图10程序编写界面
10、编写好程序就要进行程序的编译,单机工具栏上的“编译”,在编译的过程中,如果出现错误,修改程序直到没有错误为止,然后一次点击“编译”“调试”,在此过程中出现错误的,也要修改程序直到没有错误为止,编译过程中出现警告一般不必考虑,但特殊时期也要通过修改程序消除警告。
第五章设计程序
第一种方式
ORG0000H
LJMPMAIN(跳转到主程序)
ORG0100H(主程序存放地址0100H)
MAIN:
MOVSP,#60H;设置堆栈指针(设置堆栈的长度为60Hbyte,首先SP是堆栈指针指令,将立即数60H送SP,SP=(60H),即定义栈顶位置为内部RAM的60H单元)
ACALLDELAY(调用delay子程序)
SMRUN:
;电机控制方式为单双八拍
MOVP1,#08H;A
ACALLDELAY
MOVP1,#0CH;AB
ACALLDELAY
MOVP1,#04H;B
ACALLDELAY
MOVP1,#06H;BC
ACALLDELAY
MOVP1,#02H;C
ACALLDELAY
MOVP1,#03H;CD
ACALLDELAY
MOVP1,#01H;D
ACALLDELAY
MOVP1,#09H;DA
ACALLDELAY
SJMPSMRUN;循环转动
DELAY:
;延时程序
MOVR4,#10
DELAY1:
MOVR5,#250
DJNZR5,$
DJNZR4,DELAY1(总延时时间:
t=2*250*10=5000μs))
RET
;
END
第二种方式
ORG0000H(程序起始位置)
AJMPSTART(系统复位后跳转向主程序start)
ORG000BH(start的起始地址为00BH)
AJMPTT1(跳转到TT1)
ORG0030H(TT1起始地址0030H)
START:
MOVP1,#0FFH(P1口置1)
MOVTMOD,#01H(设置定时器0工作方式为1即16位定时器)
MOVR2,#08H08H赋值给R2
MOVR1,#02H02H赋值给R1
MOVTH0,#0D8H定时器0高八位初值
MOVTL0,#0F0H低八位初始值
ORLIE,#82H开启中断
MOVR0,#00H00H赋值给R0
SETBTR0启动定时器
LOOP:
MOVA,R0R0的内容给定时器A
MOVDPTR,#NUMDPTR为间址寄存器
MOVCA,@A+DPTR
CJNER1,#00H,LOOP寄存器R1的内容与0比较,不等则跳loop
MOVP1,A累加器A中的数据传送到p1寄存器,也就是p1端口
MOVR1,#02H
INCR0加一指令
DJNZR2,LOOP(R2)-1放入R2,R2-1≠0
SJMPSTART跳转到start
NUM:
DB0f1h,0f3h,0f2h,0f6h,0f4h,0fch,0f8h,0f9h
TT1:
定时中断程序
CLRTR0复位定时器T0
DECR1寄存器R1减一再放入到R1中
MOVTH0,#0D8H}定时器高八位初值
MOVTL0,#0F0H定时器低八位初值
SETBTR0启动定时器T0
RETI中断返回
END
图4.1主程序流程图
如图所示,在主程序中ADC0809将采集到模拟数据(即电压值,通过改变电位器来获得不同的电压值)转换为数字量,再将此数字量传给单片机处理。
单片机处理后送给数码管显示。
4.2显示程序设计
图4.2显示程序流程图
如图所示,ADC转换后的数据经过单片机处理后送给数码管显示,单片机首先输出位选指令,选中要显示的那们数码管。
然后输出段码指令,输出要显示的数字。
依次输出各位要显示的数字、直到各位数字显示完为止。
总结
通过这一学期单片机原理及其应用这门课程和本次课程设计,作为一名大四的学生,我们觉得做单片机的课程设计是十分有意义的,而且是十分必要的。
在课程设计环节中,我们觉得最困难的是程序设计,首先要理解原理,然后进行流程设计,转化为程序,进行调试,我们在调试的时候出现了很多错误,改错的过程是非常痛苦的,好在我们耐心地一一克服了,最后敲定了合理的程序。
但问题并没有因此结束,当我们装上步进电机后,能否带动步进电机转起来等等一些列问题让我们感到手足无措,但是在老师的指导下也一一克服了,最后得到了较为满意的结果,在此感谢老师的悉心指导。
还有一点体会就是要养成注释程序的好习惯,一个程序的完美与否不仅是实现功能,而应该让人一看就明白你的思路,这样也为资料的保存和交流提供了方便。
通过这次的课程设计,我们懂得了学习的重要性,了解到了理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,相信这些对我们今后的工作与学习都会有很大的帮助。
一个团队的合作是完成这次设计的关键,我们通过讨论,研究最佳方案,合理分工,使得这次设计能够较好的完成,在合作中,互相学习,在一起设计中发现自己的不足和缺陷,并一起进步,这也为我们今后的工作积累经验。
参考文献
[1]赵巍冯娜.单片机基础及应用(第二版),清华大学出版社,2014.
[2]张毅刚.单片机原理及应用,高等教育出版社,2003.
[3]陈理壁.步进电机及其应用.上海科学技术出版社,1989.
[4]刘保延等.步进电机及其驱动控制系统.哈尔滨工业大学出版社,1997.
[5]王福瑞.单片微机测控系统设计大全.北京:
北京航空航天大学出版社,1998.