四相步进电机单片机课程设计.docx
- 文档编号:10500118
- 上传时间:2023-02-14
- 格式:DOCX
- 页数:21
- 大小:227.51KB
四相步进电机单片机课程设计.docx
《四相步进电机单片机课程设计.docx》由会员分享,可在线阅读,更多相关《四相步进电机单片机课程设计.docx(21页珍藏版)》请在冰豆网上搜索。
四相步进电机单片机课程设计
编号
课程设计<论文)
相关资料
题目:
基于单片机的四相步进电机控制
学院
专业
学号
学生姓名
指导教师
二〇一二年六月二十五日
目录
第1章概述2
第2章设计内容的介绍3
2.1步进电机原理3
2.2步进电机的分类和选择4
2.3设计目标…………………………………………………………………………………5.
第3章设计思路具体内容6
3.1设计思路6
3.2总体设计框图及电路原理图6
3.3单片机及其最小系统7
3.4按键电路7
3.5步进电机状态显示电路8
3.6步进电机驱动电路9
第四章程序设计9
4.1程序设计思路9
4.2主程序设计10
第五章总结10
参考文献10
附录………………………………………………………………………………………………11
第1章概述
步进电机最早是在1920年由英国人所开发。
1950年后期晶体管的发明也逐渐应用在步进电机上,这对于数字化的控制变得更为容易。
以后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解性能、高响应性、信赖性等灵活控制性高的机械系统中。
在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。
步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。
随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。
步进电机是将电脉冲信号变换成角位移或直线位移的执行部件。
步进电机可以直接用数字信号驱动,使用非常方便。
一般电动机都是连续转动的,而步进电动机则有定位和运转两种基本状态,当有脉冲输入时步进电动机一步一步地转动,每给它一个脉冲信号,它就转过一定的角度。
步进电动机的角位移量和输入脉冲的个数严格成正比,在时间上与输入脉冲同步,因此只要控制输入脉冲的数量、频率及电动机绕组通电的相序,便可获得所需的转角、转速及转动方向。
在没有脉冲输入时,在绕组电源的激励下气隙磁场能使转子保持原有位置处于定位状态。
因此非常适合于单片机控制。
步进电机还具有快速启动、精确步进和定位等特点,因而在数控机床,绘图仪,打印机以及光学仪器中得到广泛的应用。
步进电动机已成为除直流电动机和交流电动机以外的第三类电动机。
传统电动机作为机电能量转换装置,在人类的生产和生活进入电气化过程中起着关键的作用。
步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%>的特点,广泛应用于各种开环控制。
第2章设计内容的介绍
2.1步进电机原理
步进电机的工作就是步进转动,其功用是将脉冲电信号变换为相应的角位移或是直线位移,就是给一个脉冲信号,电动机转动一个角度或是前进一步。
步进电机的角位移量与脉冲数成正比,它的转速与脉冲频率(f>成正比,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
如下所示的步进电机为一四相步进电机,采用单极性直流电源供电。
只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。
图1是该四相反应式步进电机工作原理示意图。
图2-1四相步进电机步进示意图
开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。
当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。
而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。
依次类推,A、B、C、D
四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。
单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图2-2所示:
图2-2步进电机工作时序波形图
2.2步进电机的分类与选择
现在比较常用的步进电机包括反应式步进电机 反应式步进电动机采用高导磁材料构成齿状转子和定子,其结构简单,生产成本低,步距角可以做的相当小,一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。 反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩,但动态性能相对较差。 永磁式步进电机转子采用多磁极的圆筒形的永磁铁,在其外侧配置齿状定子。 用转子和定子之间的吸引和排斥力产生转动,它的出力大,动态性能好,但步距角一般比较大。 一般为两相,转矩和体积较小,步进角一般为7.5度或15度。 混合式步进电机是指混合了永磁式和反应式的优点。 它又分为两相和五相: 两相步进角一般为1.8度而五相步进角一般为0.72度。 这种步进电机的应用最为广泛,它是PM和VR的复合产品,其转子采用齿状的稀土永磁材料,定子则为齿状的突起结构。 此类电机综合了反应式和永磁式两者的优点,步距角小,出力大,动态性能好,是性能较好的一类步进电动机,在计算机相关的设备中多用此类电机。 步进电机有步距角<涉及到相数)、静转矩、及电流三大要素组成。 一旦三大要素确定,步进电机的型号便确定下来了。 1、步距角的选择 电机的步距角取决于负载精度的要求,将负载的最小分辨率<当量)换算到电机轴上,每个当量电机应走多少角度<包括减速)。 电机的步距角应等于或小于此角度。 目前市场上步进电机的步距角一般有0.36度/0.72度<五相电机)、0.9度/1.8度<二、四相电机)、1.5度/3度<三相电机)等。 2、静力矩的选择 步进电机的动态力矩一下子很难确定,我们往往先确定电机的静力矩。 静力矩选择的依据是电机工作的负载,而负载可分为惯性负载和摩擦负载二种。 单一的惯性负载和单一的摩擦负载是不存在的。 直接起动时<一般由低速)时二种负载均要考虑,加速起动时主要考虑惯性负载,恒速运行进只要考虑摩擦负载。 一般情况下,静力矩应为摩擦负载的2-3倍内好,静力矩一旦选定,电机的机座及长度便能确定下来<几何尺寸)。 3、电流的选择 静力矩一样的电机,由于电流参数不同,其运行特性差别很大,可依据矩频特性曲线图,判断电机的电流<参考驱动电源、及驱动电压)。 4、力矩与功率换算 步进电机一般在较大范围内调速使用、其功率是变化的,一般只用力矩来衡量,力矩与功率换算如下: P=Ω•MΩ=2π•n/60P=2πnM/60 其P为功率单位为瓦,Ω为每秒角速度,单位为弧度,n为每分钟转速,M为力矩单位为牛顿•M P=2πfM/400(半步工作) 其中f为每秒脉冲数<简称PPS) 2.3设计目标 <1)一个正反转开关控制正转和反转; <2)一个速度开关控制高速和低速<高速和低速只要有明显差别); <3)一个半圈按钮,按一下时转半圈,一个一圈按钮,按一下时转一圈; <4)一个连续转动按钮,按一下时连续转动,再按一下时停止转动; <5)深入理解步进电机工作原理,设计系统方案; <6)用protel画出系统原理图,要求是一个完整的单片机控制系统,电源为220V交流电 在单片机实验室调试。 第3章设计思路与具体内容 3.1设计思路 本系统主要由供电电源模块、单片机最小系统、按键电路、步进电机驱动电路以及步进电机等几部分组成。 本系统采用两个独立开关三个独立按钮,分别进行高低速、正反转、半圈、一圈以及连动的控制。 驱动电路采用ULN2003A实现步进电机的驱动。 步进电机的供电采用独立12V供电。 3.2总体设计框图及电路原理图 总体设计框图如图3.1所示。 图3.1总体设计框图 3.3单片机最小系统及按键部分 最小系统主要是为了单片机的正常工作。 51单片机是一种低功耗/低电压、高性能的8位单片机,它采用CMOS和高密度非易失性存储器技术,而且其输出引脚和指令系统都与MCS-51兼容;片内的FlashROM允许在系统内改编程序或用常规的非易失性编程器来编程,内部除CPU外,还包括256字节RAM,4K字节的ROM,4个8位并行I/O口,5个中断源,2个中断优先级,2个16位可编程定时计数器。 89S51单片机是一种功能强、灵活性高且价格合理的单片机,且支持在线编程,完全满足本系统设计需要。 单片机最小系统包括单片机和复位电路,振荡电路。 3.4按键电路 采用2个开关3个按键来控制步进电机,即“高低速切换”、“正反转切换”、“半圈”、“一圈”和“连动切换”。 当波动开关或按下其中一个按键时,电源通过上拉电阻和按键到地形成通路,使相应输入管脚接地,即给单片机送入一个低电平,此低电平即为有效电平。 按键电路及单片机最小系统部分如图3.2所示。 图3.1最小系统及按键电路 3.5步进电机驱动电路 步进电机的驱动电路如图3.3所示,驱动芯片采用ULN2003A。 图3.2步进电机的驱动电路 第四章程序设计 4.1程序设计思路 根据单片机外围电路的设计,单片机的P2.0、P2.1、P2.2、P2.3、P3.2为按键输入,P1.0、P1.1、P1.2、P1.3与电机驱动IC相连。 单片机采用扫描按键方式<其中连动切换按键采用外部中断方式),程序根据键值结果进行相应的操作。 步进电机的正反转利用给步进电机送入与原来相反的脉冲即可,步进电机的加减速控制是主要控制步进电机送脉冲的时间。 4.2程序设计 程序中首先进行两个切换开关的检测,确定电机转速及方向,然后进行按键扫描,确定点动和电动方式或者连动,其中连动切换用外部中断0控制。 图4.1程序流程图 第五章总结 通过此次课程设计,使我更加扎实的掌握了有关单片机应用方面的知识,在设计过程中尤其是自己动手编制程序时,遇到了很多困难,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。 实践出真知,通过亲自动手制作,使我掌握的知识不再是纸上谈兵,而是学以致用。 同时,这次课程设计让我感受到了我对所学习的内容是多么的不熟练,在设计过程中总是需要翻书,还总是会出现问题,同时这些问题也提醒了我那些地方没学好,加深了对这部分知识的印象。 课程设计不仅仅是一门专业课,使我学到很多专业知识以及提升了专业技能上,同时又是一门提升自我综合能力的课程,给了我莫大的发展空间,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高;更重要的是,在课程设计中,我们学会了很多学习的方法,而这些都将为日后做准备,会使我们终身都受益匪浅。 面对社会的挑战,只有不断的学习、实践,再学习、再实践,才能在最大程度上发掘自己。 这对于我们的将来也有很大的帮助。 以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。 参考文献 [1]丁元杰著.单片微机原理及应用[M].机械工业出版社,2018年1月 [2]李秀霞PROTELdxp2004电路设计与仿真教程[M].北京: 北京航空航天大学出版社,2007年11月 附录 电路原理图 程序代码: #include //uchar,uint,宏定义 #defineucharunsignedchar #defineuintunsignedint //开关,位定义 sbitDirection=P2^0。 //正反转方向切换 sbitSpeed=P2^1。 //高低速切换 //按键,位定义 sbitHalf=P2^2。 //转半圈 sbitCircle=P2^3。 //转一圈 sbitSwitch=P3^2。 //连续转动/停止切换 //步进电机连接端口,位定义 sbitA1=P1^0。 sbitB1=P1^1。 //B相,因头文件已定义'B',故用B1 sbitC1=P1^2。 sbitD1=P1^3。 //通电方式,宏定义 #defineCoil_A1{A1=1。 B1=0。 C1=0。 D1=0。 } //A相通电,其他相断电 #defineCoil_B1{A1=0。 B1=1。 C1=0。 D1=0。 } //B相通电,其他相断电 #defineCoil_C1{A1=0。 B1=0。 C1=1。 D1=0。 } //C相通电,其他相断电 #defineCoil_D1{A1=0。 B1=0。 C1=0。 D1=1。 } //D相通电,其他相断电 #defineCoil_OFF{A1=0。 B1=0。 C1=0。 D1=0。 } //全部断电 //全局变量定义 uintv1=10。 //高速转速 uintv2=5。 //低速转速 uinti=512。 //转动一圈 uintj=8。 //转动半圈 bitFlag=1。 //子函数声明 voidDelayUs2x(uchart>。 voidDelayMs(uchart>。 voidInit_Time0(void>。 //voidTime0_isr(void>interrupt1 //voidForward(uinta>。 //正转子函数 //voidReverse(uintb>。 //反转子函数 //uS延时函数,晶振使用12M,大致延时T=(tx2+5>uS voidDelayUs2x(uchart> { while(--t>。 } //mS延时函数,晶振使用12M,大致延时T=tmS voidDelayMs(uchart> { while(t--> { DelayUs2x(245>。 DelayUs2x(245>。 } } //正转,a=i或j,b=v voidForward(uinta,uintb> { Coil_OFF while(a--> { Coil_A1 DelayMs(b>。 Coil_B1 DelayMs(b>。 Coil_C1 DelayMs(b>。 Coil_D1 DelayMs(b>。 } } //反转,a=i或j,b=v1或v2 voidReverse(uinta,uintb> { Coil_OFF while(a--> { Coil_D1 DelayMs(b>。 Coil_C1 DelayMs(b>。 Coil_B1 DelayMs(b>。 Coil_A1 DelayMs(b>。 } } //连续转动,正转b=v1或v2 voidCon1(uintb> { Coil_OFF if(! Flag> { Coil_A1 DelayMs(b>。 Coil_B1 DelayMs(b>。 Coil_C1 DelayMs(b>。 Coil_D1 DelayMs(b>。 } } //连续转动,反转b=v1或v2 voidCon2(uintb> { Coil_OFF if(! Flag> { Coil_D1 DelayMs(b>。 Coil_C1 DelayMs(b>。 Coil_B1 DelayMs(b>。 Coil_A1 DelayMs(b>。 } } voidISR_INT0(void>interrupt0 { if(! INT0> { DelayMs(10>。 if(! INT0> { while(! INT0>。 Flag=! Flag。 } } } //主函数 intmain(void> { EA=1。 //开全局中断 EX0=1。 //开外部中断0 IT0=1。 //边沿触发 while(1> { Coil_OFF { if(Speed&&Direction> //高速(v1>,正转(Forward> //开关,故无需消抖环节 { if(Flag&&! Half> //转半圈 { while(! Half>。 //等待按键释放 Forward(j,v1>。 //半圈,高速 } elseif(Flag&&! Circle>//转一圈 { while(! Circle>。 Forward(i,v1>。 } elseif(! Flag>//连续转动 { Con1(v1>。 } elseif(Flag&&Half&&Circle> Coil_OFF else Coil_OFF } elseif(! Speed&&Direction> //低速(v2>,正转(Forward> { if(Flag&&! Half> //转半圈 { while(! Half>。 //等待按键释放 Forward(j,v2>。 / /半圈,高速 } elseif(Flag&&! Circle>//转一圈 { while(! Circle>。 Forward(i,v2>。 } elseif(! Flag>//连续转动 { Con1(v2>。 } elseif(Flag&&Half&&Circle> Coil_OFF else Coil_OFF } elseif(Speed&&! Direction> //高速(v1>,反转(Reverse> { if(Flag&&! Half>//转半圈 { while(! Half>。 //等待按键释放 Reverse(j,v1>。 //半圈,高速 } elseif(Flag&&! Circle>//转一圈 { while(! Circle>。 Reverse(i,v1>。 } elseif(! Flag>//连续转动 { Con2(v1>。 } elseif(Flag&&Half&&Circle> Coil_OFF else Coil_OFF } elseif(! Speed&&! Direction> //低速(v2>,反转(Reverse> { if(Flag&&! Half>//转半圈 { while(! Half>。 //等待按键释放 Reverse(j,v2>。 //半圈,高速 } elseif(Flag&&! Circle>//转一圈 { while(! Circle>。 Reverse(i,v2>。 } elseif(! Flag>//连续转动 { Con1(v2>。 } elseif(Flag&&Half&&Circle> Coil_OFF else Coil_OFF } else Coil_OFF } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 步进 电机 单片机 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)