2022年步进电机控制系统方案设计书03112 .pdf
湖南工程学院课程设计课程名称 微机原理与应用课题名称 步进电机控制系统设计专业班级学号姓名指导教师湖南工程学院课 程 设 计 任 务 书精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 28 页课程名称微机原理与应用课题步进电机控制系统设计专业班级学生姓名学号指导老师审批任务书下达日期任务完成日期目录第 1章 目的与要求3 第 2章 步进电机的原理介绍4 2.1 步进电机的工作原理4 2.2 步进电机的基本术语5 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 28 页2.2.1 相数 5 2.2.2 拍数 5 2.2.3 步距角 5 2.2.4 信号分配6 第 3章设计总体思路6 3.1 方案与思路6 3.2 总框图 7 第 4章程序设计7 4.1 主程序 7 4.2 显示子程序8 4.3 键盘扫描子程序9 第 5章 硬件设计10 5.1 硬件的 设计与 选取 10 5.1.1步进电机的特点10 5.1.2 步进电机的分类11 5.1.3步进电机的注意点11 5.2 单片机的选取12 5.3 四位 LED数码管的选取13 5.4 其他零件根据实际情况选取14 5.5 硬件的焊接14 第 6章 调试与故障分析15 6.1 软件部分16 6.2 硬件部分16 6.3 故障分析及解决17 第 7章总结 18 第 8章参考文献19 附件 20 系统原理图20 元器件清单21 源程序清单21 第 1 章 目的与要求综合运用所学的单片机原理与应用理论知识,通过实践加强对所学知识的理解,具备设计单片机应用系统的能力,以单片机为核精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 28 页心设计一个步进电机控制系统,要求能够通过键盘设置步进电机的转向和转速,并在LED显示器上显示步进电机转速或工作状态。本课题以单片机为核心,设计并制作出步进电机控制系统,设计要求:1、按下不同的键,分别使步进电机实现顺时针和逆时针旋转。2、电机运转状态可以是正反转,加速减速,五种不同速度的各种组合。3、通过 LED数码管显示电机运行状态。第 2 章 步进电机的原理介绍2.1 步进电机的工作原理步进电机是纯粹的数字控制电动机。它将电脉冲信号转变为角位移或线位移的开环控制元件,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 28 页一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。如下图所示,驱动方式为二相四拍方式各线圈通通电顺序如下表:相顺序A B AB0 1 1 0 0 1 0 1 1 0 2 0 0 1 1 3 1 0 0 1 表 1-1 电机正反转控制和速度控制:当电机绕组通电时序为AB-BA -AB-BA-AB 时为正转,通电时序为AB-BA-AB-BA -AB 时为反转。步进电机的驱动电路,微电脑向步进电机输入端传送1 或 0 信息,则可实现上述操作。通过不同长度的延时来得到不同频率的步进电机输入脉冲,从而得到多种步进速度,也就是改变电机的转动速度。2.2 步进电机的基本术语2.2.1 相数产生不同对极 N、S磁场的激磁线圈对数,常用m 表示。2.2.2 拍数完成一个磁场周期性变化所需脉冲数或导电状态用n 表示,或指电机转过一个齿距角所需脉冲数,以两相电机为例,有两相四拍运行方式即 AB- BA -AB -BA -AB ,两相八拍运行方式 AB-B- BA -A -AB -B -BA -A-AB 。2.2.3 步距角精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 28 页对应一个脉冲信号,电机转子转过的角位移用 表示。 =360度(转子齿数J*运行拍数),以常规二相,转子齿为50 齿电机为例。四拍运行时步距角为=360度/(50*4 )=1.8 度(俗称整步),八拍运行时步距角为=360度/(50*8 )=0.9 度(俗称半步)。2.2.4 信号分配二相步进电机,工作方式有二相四拍和二相八拍二种,具体分配如下:二相四拍为, 步距角为 1.8 度;二相八拍为, 步距角为 0.9 度。两相四拍为 AB-BA -A B -BA-AB , 步距角为 1.8 度;两相八拍为AB-B-BA -A -A B -B -BA -A-AB , 步距角为 0.9 度。这里选取四拍的的工作方式。第 3 章设计总体思路3.1 方案与思路因为步进电机的控制是通过脉冲信号来控制的,将电脉冲信号转变为角位移或线位移的开环控制元件。所以怎样产生这个脉冲信号和产生精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 28 页怎样的信号是电机控制的关键。用单片机来产生这个脉冲信号,通过单片机的 P1 口输出脉冲信号,因为所选电机是两相的,所以只需要P1 口的低四位P1.0P1.3分别接到电机的四根电线上。定时器定时来调整电机的转速,通过键盘的按钮,就可以改变定时初值从而改变了电机的转速,P0 口接 LED数码管,可以显示当前的电机转速和按钮状态,具体结构见3.2 框图3.2 总框图图 3-1 第 4 章程序设计4.1 主程序进入主程序显示初始化状态,主程序由键盘程序、显示程序、步进电机驱动程序三部分组成,主程序首先初始化各变量,步进电机驱动的各引p0.0p0.7 AT89C51 单片机p2.0p2.3 p1.0p1.3 p3.0p3.4 步进电四位数码显示管复位、 正转 、反转加速、减速按钮精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 28 页脚均输出高电平,然后调用键盘程序,并作判断,有键按下,则调用键盘程序,并显示出状态。图 4-14.2 显示子程序转速的显示是给用户最直观的概念,知道电机的转的快慢,知道电机当前的转速,而需要怎样的速度,再对它进行加减速。而这个显示是调用显示子程序。具体流程图如下:开始显示初始化状态“00”按键检测Flag=0 Flag=1 Flag=2 以初始速度正向旋转“ 010”以初始速度反向旋转“ 110”加速减速减速加速是否为极限速度是否为极限速度保持速度显示上限速度加 /减显示改变保持速度显示上限速度加 /减显示改变结束N Y N Y N Y N Y 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 28 页图 4-24.3 键盘扫描子程序键盘是我们唯一和电机沟通的桥梁,通过键盘的输入从而改变电机的运行状态,这里所需要的键盘数量不多,可以根据学习板做成独立式显示Flag=0? 第一个数码管显示“ 0”(正Y Flag=2?N 第一个数码管显示“ 1”(反N 复位显示“ 00”Y 第二位显示“”第 3、4 位显示转速。第三位显示转速/10,第四位显示转速%10 NEXT 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 28 页键盘,键盘的焊接是行线接单片机P3 口的 p3.0p3.4,通过调用KEY扫描键盘,调用延时程序,再判断是否有键按下,如果无键按下就返回继续扫描,如果有键按下,则调用delay延时去抖动,再读键值,等待键释放,具体流程如下图:图 4-3 第 5 章 硬件设计5.1 硬件的设计与选取5.1.1 步进电机的特点键盘扫描复位是否按下正转是否按下Flag=0 转速为 10 反转是否按下Flag=1 转速为 10 减?为最高速度?速度加 1 保持 20 加?为最低速度?速度减 1 保持 1 返回Flag=2 转速 =0 N Y Y N N Y Y N N Y Y N Y N 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 28 页感应子式步进电机与传统的反应式步进电机相比,结构上转子加有永磁体,以提供软磁材料的工作点,而定子激磁只需提供变化的磁场而不必提供磁材料工作点的耗能,因此该电机效率高,电流小,发热低。因永磁体的存在,该电机具有较强的反电势,其自身阻尼作用比较好,使其在运转过程中比较平稳、噪音低、低频振动小。感应子式步进电机某种程度上可以看作是低速同步电机。一个四相电机可以作四相运行,也可以作二相运行。(必须采用双极电压驱动),而反应式电机则不能如此。5.1.2 步进电机的分类感应子式步进电机以相数可分为:二相电机、三相电机、四相电机、五相电机等。以机座号(电机外径)可分为:42BYG ( BYG 为感应子式步进电机代号)、57BYG 、86BYG 、110BYG 、(国际标准),而像 70BYG 、90BYG 、130BYG 等均为国内标准。5.1.3 步进电机的注意点步进电机应用于低速场合- 每分钟转速不超过1000 转,( 0.9 度时6666PPS) ,最好在1000-3000PPS (0.9 度)间使用,可通过减速装置使其在此间工作,此时电机工作效率高,噪音低。这里规定电机转速 120 转每分钟。步进电机最好不使用整步状态,整步状态时振动大。这里要求不高,使用整步状态。于历史原因,只有标称为12V 电压的电机使用12V 外,其他电机的电压值不是驱动电压伏值,可根据驱动器选择驱动电压(建议:57BYG 采用直流24V-36V ,86BYG 采用直流 50V, 110BYG 采用高于直流80V),当然12V 的电压除12V恒压驱动外也可以采用其他驱动电源,不过要考虑温升。应遵循先选电机后选驱动的原则。综上所述,电机选取42BYG 系列感应子式步精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 28 页进电机,两相四拍整步状态。选用后建立起模块如下:图 5-1 5.2 单片机的选取MCS-51 系列单片机是目前应用最为广泛的单片机,MCS-51 单片机的两个子系列,下表是两个子系列的比较:子系列ROM 容量RAM 容量寻址范围I/O 特性中断源定时器并行口串行口51 子系列4KB 128B 2 64KB 2 16 4 8 1 5 52 子系8KB 256B 3 64KB 3 16 4 8 1 6 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 28 页表 5-251 子系列 :有 8031/8051/8751和80C31/80C51/87C5152 子系列 :有 8032/8052/8752和80C32/80C52/87C52由于单片机的种类繁多,又因为我们的要求不高,所以选取单片机是很快的 ,所以这里选用AT89C51 单片机。根据设计方案的分析,可以选择带有EPROM 的单片机,应用程序直接存储在片内,不用在外部扩展程序存储器,电路可以简化。ATMEL公司生产 的 AT89CXX系 列 单 片 机 ,AT89CXX 系列与 MCS-51系列单片 机 相 比 , 有 两 大 优 势 : 第一,片内程序存储器采用闪速存储器,使程序的写入更方便;第二,提供了更小尺寸的芯片,使整个硬件电路的体积更小。它以较小的体积、良好的性能价格比倍受青睐。本次课程设计采用 89C52单片机。AT89C52单片机的接口图如图所示:图 5-3 5.3 四位 LED数码管的选取数码管选用7 段共阳 4 位 LED 列精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 28 页图 5-4 5.4 其他零件根据实际情况选取晶振选 11.0592MHZ 普通按钮 Button 电阻 RES 1K 电机驱动芯片 ULN2803 5.5 硬件的焊接步进电机的四线接法P1.0A 、P1.1B P1.2A 、P1.3B精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 28 页图 5-5 第 6 章 调试与故障分析精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 28 页6.1 软件部分将程序写入 keil程序编辑界面进行调试。调试步骤如下1、定义各个变量 uchar maichong 。uchar zhuansu 。uchar flag。2、定义正反转、加减速端口Sbit key_z=P31。sbit key_f=P32。sbit key_jia=P33。sbit key_jian=P34。3、调用显示子程序。4、调用键盘扫描子程序。5、执行主程序6.2 硬件部分根据原理图将硬件焊接好,用Proteus软件下载keil软件生成的HEX文件到单片机中,再给单片机上电,程序就开始运行。显示初始化如下:图 6-1按下正转按钮从P1 口输出脉冲,步进电机正转,显示如下:图 6-2 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 28 页按下反转按钮从P1 口输出脉冲,步进电机反转,显示如下:图 6-3 按下加速按钮电机速度增加,按下减速按钮电机速度减少显示如下:图 6-4 6.3 故障分析及解决由于步进电机的相序位置与单片机的P1口的 4 个输出口连接不对电机转动方向不正确,解决方法,首先先用四个发光二极管模拟电机四个相序通过观察发光二极管闪亮的顺序就可以判断是否输出正确,电机相序A、A 、B、B 与 P1口低四位一一相对应接好,就可以使电机正常旋转了。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 28 页第 7 章总结两周的单片机课程设计已经结束了,虽然时间不是很长,但我从中得到的却还是很多,通过这次的单片机课程设计,使我更深入的了解的单片机的重要性,也从中学到了很多,通过做步进电机这个课题,使我全面地的,系统的又重新学习了一遍单片机,同时又了解到不同电机不同的工作状态,对其中的原理更加地的熟悉,对我以后的学习有了极大的帮助,虽然在做课程设计的过程中,我还有很多的东西是不知道的,但通过检阅资料,在老师的细心指导下,再加上自己的不断努力,最终是完成了自己的课程设计,在调试的过程中,依然会有不少的问题,在细心总结查阅下还是被我一个一个的解决了,最终得到正确的结果。因为我们所学的都是单片机方面的理论知识,应用到实践中去还比较少,而且学到了很多在书本上所没有学到过的知识。在第一周由于考试原因没有花费太多精力,不过在周末的时候,抓紧时间去查阅和收集资料。去了图书馆借一些参考书,上网找一些相关资,通过不断努力,终于把步进电机的原理,工作状态,控制结构有所掌握,把思路和方案定了下来,然后通过分析与软硬件的设计,在电脑上仿真完成。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟是一次全面的设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。在此也要感谢李晓秀老师的指导,在老师耐心指导下很多问题都得到了解决!精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 18 页,共 28 页第 8 章参考文献1 王迎旭 . 单片机原理及及应用 . 北京:机械工业出版社2 张迎新 . 单片微型计算机原理、应用及接口技术. 北京:国防工业出版社3 周向红 .51系列单片机应用与实践教程. 北京:北京航天航空大学出版社4 郭天祥 . 新概念 51 单片机 C语言教程 . 北京:电子工业出版社精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 19 页,共 28 页附件系统原理图图附 -1 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 20 页,共 28 页元器件清单AT89C52 单片机 1片11.0592MHZ的晶振 1片四位 LED显示器 1个电阻 4个ULN2803 1个步进电机 1个按钮 BUTTON 5个源程序清单#include #define uchar unsigned char #define uint unsigned int unsignedcharcode table=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90 ,0 x3f,0 x83,0 xc6,0 xa1,0 x86,0 x8e。unsignedcharcode table1=0 x03,0 x06,0 x0c,0 x09,0 x09,0 x0c,0 x06,0 x03。uchar table_begin 。uchar maichong 。uchar zhuansu。uchar flag 。sbit key_fuwei=P30。sbit key_z=P31 。sbit key_f=P32 。sbit key_jia=P33 。sbit key_jian=P34 。void delay(uchar x) uchar i,j 。for(i=0 。i0。j-) 。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 21 页,共 28 页void fuwei(void) flag=2 。zhuansu=0。 void display() uchar A1,A2,A3,A4。 if(flag=0) A1=0 。else A1=1 。if(flag=2) A1=10 。 A2=0 x3f 。 A3=zhuansu/10 。 A4=zhuansu%10 。P0=tableA1 。delay(5) 。P2=0 x01。delay(5) 。P2=0 x00。delay(5) 。P0=A2。delay(5) 。 P2=0 x02 。 delay(5) 。P2=0 x00。delay(5) 。P0=tableA3 。 delay(5) 。P2=0 x04。delay(5) 。P2=0 x00。 delay(5) 。P0=tableA4 。 delay(5) 。P2=0 x08。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 22 页,共 28 页 delay(5) 。P2=0 x00。delay(5) 。 void key() if(key_fuwei=0) delay(5) 。if(key_fuwei=0) fuwei() 。display() 。 if(key_z=0) delay(5) 。if(key_z=0) flag=0 。zhuansu=10。while(key_z=0) 。 if(key_f=0) delay(5) 。if(key_f=0) flag=1 。zhuansu=10。while(key_f=0)。 if(key_jia=0) delay(5) 。if(key_jia=0) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 23 页,共 28 页zhuansu+。if(zhuansu=21) zhuansu=20。while(key_jia=0)。 if(key_jian=0) delay(5) 。if(key_jian=0) zhuansu-。if(zhuansu=1) zhuansu=2。while(key_jian=0)。 void dispose() switch(zhuansu) case 0: break。case 1: maichong=300 。break。case 2: maichong=150 。break。case 3: maichong=100 。break。case 4: maichong=75 。break。case 5: maichong=60 。break。case 6: 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 24 页,共 28 页maichong=50 。break。case 7: maichong=43 。break。case 8: maichong=37 。break。case 9: maichong=33 。break。case 10: maichong=30 。break。case 11: maichong=27 。break。case 12: maichong=25 。break。case 13: maichong=23 。break。case 14: maichong=21 。break。case 15: maichong=20 。break。case 16: maichong=19 。break。case 17: maichong=18 。break。case 18: maichong=17 。break。case 19: 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 25 页,共 28 页maichong=16 。break。case 20: maichong=15 。break。 if(flag=0) table_begin=0 。 else if(flag=1) table_begin=8 。 void zhuandong(void) uchar i,j 。if(zhuansu0&zhuansu=20) for(j=0+table_begin。j8+table_begin 。j+) P1=table1j 。for(i=0 。imaichong 。i+) delay(1) 。 void main() fuwei() 。display() 。while(1) key() 。display() 。dispose()。zhuandong() 。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 26 页,共 28 页电气与信息工程系课程设计评分表项目评价优良中及格差设计方案的合理性与创造性(10%) 开发板焊接及其调试完成情况*(10%) 硬件设计或软件编程完成情况(20%) 硬件测试或软件调试结果*(10%) 设计说明书质量(20%) 设计图纸质量 (10%) 答辩汇报的条理性和独特见解(10%) 答辩中对所提问题的回答情况(10%) 完成任务情况 (10%) 独立工作能力 (10%) 出勤情况( 10% )综 合 评 分指导教师签名: _ 日期:_ 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 27 页,共 28 页注:表中标 * 号工程是硬件制作或软件编程类课题必填内容;此表装订在课程设计说明书的最后一页。课程设计说明书装订顺序:封面、任务书、目录、正文、评分表、附件(非16K 大小的图纸及程序清单)。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 28 页,共 28 页