单片机课程设计 步进电机.docx
《单片机课程设计 步进电机.docx》由会员分享,可在线阅读,更多相关《单片机课程设计 步进电机.docx(24页珍藏版)》请在冰点文库上搜索。
单片机课程设计步进电机
一、课程设计基本要求:
微型步进电机控制系统设计要求:
要求掌握模/数转换电路的应用、掌握8279数码显示电路的应用、掌握步进电机的工作原理和控制方法。
通过了解各个子模块功能单元构筑完整的微机控制系统的能力,掌握单片机控制系统的设计方法。
①、通过图书馆和Internet广泛检索和阅读自己要设计的题目方向的文献资料。
②、建立8031单片机与各功能单元的连接,画出系统原理图。
并给出必要的文字说明。
③、系统软件设计,包括主程序设计、AD采样子程序、数码显示子程序、步进电机驱动子程序,并给出流程图。
④、根据二相四拍步进电机说明和根据驱动控制电路说明,画出步进电机控制模块原理图。
⑤、驱动电路的设计。
⑥、画出完整的主电路原理图和控制电路原理图。
⑦、列出系统所用元器件的明细表。
课程设计报告基本格式要求:
课程设计用纸和格式统一:
参考有关学校和系部的课程设计格式规定。
封面:
严格按照武汉工程大学课程设计封面填写。
目录内容:
1.设计的基本要求(给出所要设计的装置的主要技术数据和设计装置要达到的要求(包括性能指标),最好简述所设计装置的主要用途)
2.总体方案的确定
原则:
达到性能要求
经济性好
追求高性能价格比
高可靠性
维护维修方便
3.具体电路设计(系统构成、主电路设计、控制电路设计等)
4.软件设计
5.附录(电路图、软件代码和元器件明细表等)
6.参考文献
指导教师签字:
教研室主任签字:
月 日 年 月 日
二、进度安排:
第一天布置课题、落实任务、确定课题及组织形式、收集课题相关的技术资料。
第二天方案论证、分析、讨论。
第三、四天电路设计、设计各模块程序框图。
第五天软件设计。
第六天软件调试、调试。
第七天调试。
第八天调试、整理资料、写课程设计报告。
第九天写课程设计报告。
第十天递交课程设计报告、总结。
三、应收集资料及主要参考文献:
1.《MCS-51单片机原理及应用》秦实宏,徐春晖。
华中科技大学出版社
2.《单片微机应用系统设计及实用技术》高峰。
机械工业出版社
3.《电动机的单片机控制》王晓明。
北京航空航天大学出版社
4.《单片机课程设计指导》楼然苗,李光飞。
北京航空航天大学出版社
5.《单片机原理与程序设计实验教程》于殿泓,王新年。
西安科技大学出版社
6.《电子技术基础》康华光。
高等教育出版社
7.《单片机原理、接口及应用—嵌入式系统技术基础》李群芳,肖看。
清华大学出版社
四、课程设计(学年论文)摘要(中文):
单片机自问世以来,以极其高的性能价格比受到人们的关注和重视,应用很广发展很快。
特别是51单片机是各单片机中最为典型的一种。
本课程设计基于单片机原理和接口技术,以8031为控制核心,通过0809对电位器的电压信号采样转换,实现对步进电机的控制,使电位器转过的角度与步进电机的步数成线性关系。
关键字:
单片机步进电机A/D转换
五、课程设计(学年论文)摘要(英文):
Abstract
Sincetheadventofsinglechip,highperformanceandlowcostwithgreatconcernandattentionbypeople,iswidelyusedrapiddevelopment.Inparticular,theSCM51singlechipisthemosttypicalone.Thecoursedesignisbasedonsinglechipprinciplesandinterfacetechnology,to8031forthecontrolofthecore,throughthe0809pairspotentiometervoltagesignalsamplingconversion,thesteppermotorcontrol,sothattheangleofturnpotentiometerandthesteppermotorstepsintoLinearrelationship
Keywords:
singlechipSteppermotorA/Dconversion
六、成绩评定:
指导教师评语:
指导教师签字:
200年 月 日
项目
评价
项目
评价
调查论证
工作量、工作态度
实践能力
分析、解决问题能力
质量
创新
得分
总评成绩:
(教师评分×75%+答辩成绩×25%)
课程设计评审标准(指导教师用)
评价内容
具 体 要 求
权重
调查论证
能独立查阅文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获得新知识的能力。
0.1
实践能力
能正确选择研究(实验)方法,独立进行研究工作。
如装置安装、调试、操作。
0.2
分析解决问题能力
能运用所学知识和技能去发现与解决实际问题;能正确处理实验数据;能对课题进行理论分析,得出有价值的结论。
0.2
工作量、工作态度
按期圆满完成规定的任务,工作量饱满,难度较大,工作努力,遵守纪律;工作作风严谨务实。
0.2
质量
综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学;文字通顺,技术用语准确,符号统一,编号齐全,书写工整规范,图表完备、整洁、正确;论文结果有应用价值。
0.2
创新
工作中有创新意识;对前人工作有改进或独特见解。
0.1
目录
引言
1.硬件设计
1.1电位器信号采样——A/D转换电路…………………………………….6
1.2LED显示——8279显示电路…………………………………………...7
1.3二相四拍步进电机——步进电机驱动电路……………………………..8
1.4单片机及扩展电路……………………………………………………….8
2软件设计
2.1程序流程图……………………………………………………………...9
2.2汇编程序代码…………………………………………………………..12
3调试及心得体会………………………………………………………………16
4附录
4.1元器件明细表……………………………………………………………17
4.2整体电路图
引言
步进电机是纯粹的数字控制电动机。
它能接受步进脉冲(数字信号)的控制一步一步地旋转。
它是计算机应用项目中的主要执行元件之一,尤其在精确定位场合中得到了广泛的应用。
开环控制适用于步进电机,将这学期所学的单片机知识用于步进电机的控制可以将课本知识运用于实际同时加深对单片机的掌握。
步进电机的控制相对简单且便于观察控制结果,在课程设计的过程中发现问题解决问题,可以增强解决实际问题的能力。
通过这次课程设计掌握对步进电机的基本控制将为以后更熟练地控制步进电机奠下基础。
步进电机控制课程设计目的:
掌握A/D转换电路的应用、掌握8279数码显示电路的应用、掌握步进电机的工作原理和控制方法;锻炼和培养由各个子模块功能单元构筑完整的微机控制系统的能力,掌握单片机控制系统的设计方法。
课程设计任务:
用数码管来指示电位器所在的位置,用电位器来控制步进电机的转动:
当电位器正向旋转时,步进电机正传;当电位器反向旋转时,步进电机反转;当电位器不动时,步进电机停转;而且,步进电机转动的角度与电位器旋转的角度成线性关系。
1硬件设计
要实现课程设计的要求,首先要对电位器的电压信号进行采样并转换成数字信号供单片机处理,电位器输出的电压在0~5V范围,故可以选用ADC0809型模数转换芯片。
因只有1路模拟信号,输入通道只用选用IN-0。
ADC0809的8路输出信号送到单片机8031的P0口。
单片机将输入来的信号转换成相应的电压数值通过8279显示在数码管上,将控制步进电机的脉冲按照一定的顺序通过驱动电路控制步进电机。
系统的组成原理如图1所示。
图1
1.1电位器信号采样——A/D转换电路
电位器的位置信号转换成相应的电压信号并通过IN-0口输入给模数转换芯片,ADD-A、ADD-B、ADD-C分别接单片机的P0.0、P0.1、P0.2口,选中模拟通道0,转换后的8位数字信息通过D7~D0送给单片机的P0口。
对0809的控制通过ALE、ENABLE、START实现,具体电路如图二所示,图中1接单片机的
,2接单片机的
,3接0809的有效地址,根据试验箱的接线知CFA0H是其有效位,再根据8279的地址有效位为了将两者区分且简单起见,分配给0809的地址为XXAX,具体电路见总原理图。
图2
1.2LED显示——8279显示电路
8279是一种通用可编程键盘、显示器接口芯片,它能完成键盘输入和显示控制两种功能。
在这次课程设计中只用到显示控制功能。
是片选信号,只有当
时,8279才被选通,单片机才能对其进行读写操作。
、
来自单片机的读写控制信号。
A0用于区别信息的特性,当A0=0时,表示输入的信息均为数据;当A0=1时,表示输入的信息是指令,而输出的信息是状态字。
分配给8279的数据口的地址为CFE8H,控制口为CFE09H。
在原理图中省去其他未用到模块,给数据口的地址为XXE8H,控制口为XXE9H。
模块电路如图3所示
图3
1.3二相四拍步进电机——步进电机驱动电路
1.3.1步进电机的工作原理
本模块中使用的二相四拍步进电机共有50个齿,齿距角为7.2°;每转一个齿距角需走四步,因而步距角为1.8°。
另外必须按照一定的次序给每个相通电,才能正常完成四步一个齿距的动作。
电机每相电流为0.2A,相电压为5V。
通电次序如图4所示:
图4
1.3.2控制电路如图5所示:
步进电机有四根引出线。
红、绿为一组,红线接A’,绿线接A;黄、蓝为一组,黄线接B’,蓝线接B。
图5
现就其中一相进行分析,当控制信号为高时,经反向器后变为低电平,低电平使上面的三极管导通下面的三极管关断,从而使输出给电机的电压为VCC即为高电平。
当控制信号为低时,同样可分析得上面的三极管关断下面的三极管导通,输给电机的的电压为0即低电平,保持了控制信号与经驱动后的信号的一致性。
1.4单片机及扩展电路
选用的为51系列的8031型单片机,因8031单片机没有内部程序存储器
故需要扩展外部程序存储器,
,设计中用2716芯片为单片机扩展2K的外部程序存储器,2K=211故需要11根地址线对其选址,其中A0~A7接单片机的P0口相应位,A8~A10分别接到单片机的P1.0~P1.2。
因P0口数据地址分时复用所以要在P0口和2716间加一锁存器74LS373锁存低八位地址信号。
并通过ALE信号对锁存器进行控制。
电路如图6所示。
图6
硬件电路总体设计和连线如附图所示。
2软件设计
2.1程序流程图
程序开始后首先初始化,经0809采样后将电位器的电压通过显示子程序显示,并将两次采样值进行比较并得到脉冲数,调用步进电机控制子程序控制步进电机的正反转与步数。
图7主程序流程图
主程序流程图如图7所示。
关键在于当有借位即反转时,两次采样差值并不是脉冲数,要经过响应处理的到实际脉冲数。
图8步进电机控制子程序
步进电机控制子程序流程图如图8所示
图98279显示子程序
8279显示子程序流程图如图9所示,将得到的8位二进制值转换成对应的电压值是关键。
2.1汇编程序代码
采样差值每一个单位步进电机前进一步
ORG0000H
LJMPMAIN
ORG4100H
MAIN:
MOVDPTR,#0CFA0H
MOVP1,#00H
MOV30H,#0CH;写正反转控制脉冲表
MOV31H,#06H
MOV32H,#03H
MOV33H,#09H
MOV34H,#09H
MOV35H,#03H
MOV36H,#06H
MOV37H,#0CH
MOVX@DPTR,A;启动0809转换
MOVR0,#0FFH;延时等待0809转换结束
LOP:
DJNZR0,LOP
MOVXA,@DPTR;读入转换值送R4保存
MOVR4,A
LCALLDISP;调用显示子程序显示电压值
MOVA,R4
MOVR3,A
MOVR2,A
LOOP1:
MOVX@DPTR,A;启动0809转换
MOVR0,#0FFH;延时等待0809转换结束
LOP1:
DJNZR0,LOP1
MOVXA,@DPTR;读入转换值送R4保存
MOVR4,A
LCALLDISP;调用显示子程序显示电压值
MOVA,R4
MOV3AH,R2;R2值送R3,即K-1次采样值送R3
MOVR3,3AH
MOVR2,A;K次采样值送R2
CLRCY;CY清零为减法做准备
SUBBA,R3;(K)—(K-1)送R1
MOVR1,A
LCALLCONTROL;调用步进电机子程序
LJMPLOOP1
;电机控制程序
CONTROL:
MOVA,R1;脉冲数为0则结束
JZLOOP7
JCLOOP2;有借位则跳入反转
SUBBA,#5
JCLOOP7;脉冲数小于5则结束
MOVR0,#30H;正转控制表首地址给R0
LOOP3:
MOVA,@R0;写P1口,给控制脉冲
MOVP1,A
LCALLDLY;调用延时
INCR0;地址+1
CJNER0,#34H,LOOP4;地址超出范围则赋首地址值
MOVR0,#30H
LOOP4:
DJNZR1,LOOP3;脉冲数-1为0则结束,否则给下一脉冲
LJMPLOOP7
;反转
LOOP2:
MOVR0,#34H;反转控制表首地址给R0
MOVA,R1;求脉冲数
CPLA
JNZLOOP8
INCA
LOOP8:
MOVR1,A
CLRCY
SUBBA,#5;脉冲数小于5则结束
JCLOOP7
LOOP5:
MOVA,@R0;写P1口,给反转控制脉冲
MOVP1,A
LCALLDLY;调用延时
INCR0;地址+1
CJNER0,#38H,LOOP6;地址超出范围则赋首地址值
MOVR0,#34H
LOOP6:
DJNZR1,LOOP5;脉冲数-1为0则结束,否则给下一脉冲
LOOP7:
CLRA;子程序返回
RET
;8279显示子程序
DISP:
PUSHDPH;入栈保护
PUSHDPL
PUSHPSW
MOVDPTR,#0CFE9H;显示RAM显示方式,8字符左入口显
MOVA,#00H
MOVX@DPTR,A
MOVA,#0D0H;;清除显示RAM
MOVX@DPTR,A
QCZ:
MOVXA,@DPTR
JBACC.7,QCZ
MOVB,#51
MOVA,R4;要显示的8位2进制代码送入A
DIVAB;A除以51,商A,余B
MOVR0,A;个位存入R0
MOVA,B
CLRCY
SUBBA,#26;判断余数是否大于26
JCOOP
MOVB,A;大于26,求得十分位存入R1
MOVA,#10
MULAB
MOVB,#51
DIVAB
ADDA,#5
MOVR1,A
AJMPOOP2;小于26,十分位存入R1
OOP:
MOVA,#10
MULAB
MOVB,#51
DIVAB
MOVR1,A
OOP2:
MOVDPTR,#0CFE9H;写显示RAM命令字
MOVA,#90H
MOVX@DPTR,A
MOVDPTR,#0CFE8H
MOVA,R0;个位显示驱动代码送入8279显示RAM中0000B单元
ACALLTABLE1
MOVX@DPTR,A
MOVA,R1;十分位显示驱动代码送入8279显示RAM中0001B单元
ACALLTABLE2
MOVX@DPTR,A
LCALLDLY;延时使显示稳定
POPPSW;出栈恢复
POPDPL
POPDPH
RET
TABLE1:
INCA;个位译码子程序
MOVCA,@A+PC
RET
DB0BFH,86H,0DBH,0CFH,0E6H,0EDH
TABLE2:
INCA;十分位译码子程序
MOVCA,@A+PC
RET
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
;延时子程序
DLY:
MOVR7,#100
DLY1:
MOVR6,#100
NOP
DLY2:
DJNZR6,DLY2
DJNZR7,DLY1
RET
END
3调试及心得体会
这次课程设计虽然历时不是很长,实现的功能也不是很复杂但在整个过程还是让我感触颇深同时也学到了许多课本上学不到的知识。
我们选择了步进电机的控制这个题目,因为我们组的组员一致认为在今后的学习和深造的过程中对步进电机以及其它类型的电机的控制肯定会非常多,现在掌握一些电机控制的基本知识并实现所规定的简单控制功能,能为将来打下牢固基础,而且步进电机的控制容易观察到控制的效果,激起组员的兴趣。
在整个设计过程中我们小组五名组员根据具体情况合理分工,最大可能的发挥各自的特长,在最短的时间内完成了设计调试任务。
我主要负责了主程序和电机控制程序的编写,而8279显示程序,硬件连线,查资料均由其他同学完成。
在编写程序之前,我们讨论了总体方案,编写了各个部分的流程图,在后来编程的过程中我认识到流程图对于汇编编程是非常重要的,特别是在编写跳转程序的时候。
汇编语言虽然相对比较复杂,但逻辑性很强,让我加深了对单片机硬件结构的理解。
程序调试时我们采用了分块调试的方法,先完成了0809模数转换和8279显示部分的调试,让数码管能够同步显示电位器的电压。
而后对步进电机控制部分的程序进行了调试,起初问题很大,电机一直反转不受控制,按照程序的设计不应该这样且找不出程序的错误,在用了单步调试并观察寄存器内存的变化后发现在求步数即求脉冲时,若有借位,两次采样的差值并不像我们所想象的不数,因为有借位,被减数加了256,经演算发现若有借位时,差值各位去反加一后才得到脉冲数。
这一问题解决后,步进电机电机基本受控制,但最后左右两边不断震动无法停止。
我们分析认为可能是因为0809的精度不高使得采样值不断变化而无法稳定,于是我们采取了如果不属小于3就认为电位器无变化,不给步进电机脉冲,但调试的结果仍然不理想。
在讨论后我们决定先加入8279显示程序。
加入程序后无法正常显示,电机也无法正常转动,这让人很费解。
可能是主程序和原先的8279显示程序对单片机资源的分配有冲突。
后分析发现原来是单独编写的时候没有采用8279自动显示其内存内容的显示方式而要不断受单片机的控制,这与单片机对步进电机的控制相冲突。
于是我们改变了8279显示方式,单片机对其进行一次操作将要显示的内容写入后,8279就可以自行显示相应内容而不再占用单片机。
这样改进后显示成功。
最后就剩下步进电机最后不稳定的问题,有了数码管显示,我们发现当电位器不旋转的时候数码管小数点后一位即十分位也不稳定,这也说明步进电机最后不稳定是正常的。
从数码管的显示我发现其值最多跳变0.1,因为我们按采样值变化1则输出一个脉冲,即5V对应255,则0.1V对应5.1,于是当两次采样值小于等于5则认为电位器位置无变化,在改动程序后达到了理想结果。
在调整延时程序的响应参数选择合适速度后完成了相应要求,至此,我们完成了程序调试。
调试的过程不是一气呵成的,在调试的过程中不断发现问题并想办法解决问题,考验了我们的应变能力和活学活用的能力。
调试让我们爱上这个过程,对程序编写产生了浓厚的兴趣。
我们组没有扩展功能,我们将重点放在了程序的优化上。
课程设计后我认为C语言更适合于实际应用的复杂编程。
滤波电路在实际中也十分重要。
4附录
4.1元器件明细表
器件
型号
数目
作用
模数转换器
ADC0809
1
将电压转换成数字信号
单片机
8031单片机
1
控制温度调节
译码器
74LS138
1
译码
锁存器
74LS273
1
锁存地址
显示器通用接口
Intel8279
1
自动向LED显示器输出显示字符的段选码和位选码,实现动态扫描
数显管
7段数码显示器
2
显示数据
驱动电路
74LS245
1
程序存储器
2716
1
作为8031的程序存储器
两相四拍步进电机
1
控制对象