单片机三相单三拍步进电机

上传人:ni****g 文档编号:572709733 上传时间:2024-08-13 格式:PDF 页数:33 大小:1.59MB
返回 下载 相关 举报
单片机三相单三拍步进电机_第1页
第1页 / 共33页
单片机三相单三拍步进电机_第2页
第2页 / 共33页
单片机三相单三拍步进电机_第3页
第3页 / 共33页
单片机三相单三拍步进电机_第4页
第4页 / 共33页
单片机三相单三拍步进电机_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《单片机三相单三拍步进电机》由会员分享,可在线阅读,更多相关《单片机三相单三拍步进电机(33页珍藏版)》请在金锄头文库上搜索。

1、 单片机原理与应用 课程设计报告 主题名称 单片机控制步进电机 姓名 学生卡 专门 导师 任务书 单片机控制步进电机 步进电机是工业过程控制和仪表中的主要控制元件之一。它可以在机械结构中将丝杠的角度变成线性位移, 也可以用它来驱动丝杠电位器来调节电压和电流,从而实现对执行器的控制。在数字控制系统中,由于可以直接接受计算机输出的数字信号,无需进行 D/A 转换,使用起来非常方便。步进电机具有启停速度快、精度高的显着特点,已广泛应用于定位场合。 步进电机实际上是一个数角转换器和一个串行数模转换器。 因此,需要将并行二进制转换为串行脉冲序列,实现方向控制。每当步进电机脉冲输入线得到一个脉冲,它就会向

2、特定方向迈出一步。 设计要求: 单片机用于控制三相单三拍步进电机的工作。 步进电机的旋转方向由正反转控制信号控制。步进电机的步数由键盘输入,可输入的步数分别为 3、6、9、12、15、18、21、24、27 步。并且键盘具有键盘锁功能。键盘锁定时,步进电机不接受输入的步数,不运行。只有打开键盘锁并输入步数后,步进电机才会开始工作。电机运转时,有正反转指示灯指示。电机运行时,若过热,电机停止运行,红色指示灯亮,同时报警。 目录 一、简介 4 2. 方案论证(策划、选择) 7 3. 方案说明(设计) 7 4、硬件方案设计 8 5. 软件方案设计 12 6. 调试 13 七、技术总结(结束语) 14

3、 8. 参考文献. . 15 9. 附录(源码、电路图等) 16 1 简介 1.1 步进电机采用电脉冲信号控制,实现生产过程或设备的数字化控制。它是过程控制中非常重要和常用的动力执行装置。可将脉冲信号转换成角位移,可用作电磁制动轮、电磁微分器或角位移发生器等。近年来,由于计算机应用技术的飞速发展,步进电机往往形成高精度的数字控制系统和电脑一起。由于采用数字脉冲控制,非常适合单片机控制。基于此,本设计 89C 以 AT 51 型单片机为核心,结合外围电路,以步进电机为控制对象的控制系统。 1.2 单片机控制步进电机的原理 步进电机不同的驱动方式都在运行, 脉冲信号按一定的顺序依次加到三相绕组上,

4、从而达到不同的工作状态。由于通电顺序不同,工作模式有三相单三相拍、三相双三拍、三相单拍和双六拍(注: “三相上述“三相单三拍”中有三相绕组; “拍”是指定子绕组改变一次通电方式; “三拍”表示功率为通电 3 次完成一个周期。 “三相双三拍”中的“双”表示两相绕组同时通电) 。 1.2.1 三相单三拍运行方式:下图为无功步进电机的工作原理。如果脉冲分配器输出的第一个脉冲使 A 相绕组通电,则 B、C 相绕组不通电,A 相绕组不通电。相绕组通电时产生的磁场会在转子上产生一个反转矩,转子的第 1 和第 3 齿将与定子磁极对齐,如图(a)所示。第二个脉冲到达给 B 相绕组通电,而 A、C 相绕组不通电

5、; B相绕组产生的磁场将使转子的 2、4 齿与 B 相磁极对齐,如图(b)所示,与图(a)相比,转子旋转一圈逆时针角度。第三个脉冲到来后,C 相绕组通电, 而 A、 B 相不通电。 此时, 转子的第 1、 3 齿将与 C 组对齐。转子位置如图(c)所示,与图(b)相同。 ),然后逆时针转动一个角度。 图 1.1 反应式步进电机工作原理图 通过分配器按 A 相-B-相-C-相-A-相.规律连续接通和断开。 此时,步进电机的转子是连续连接的。逐步逆时针转动。如果改变步进电机的旋转方向,只要改变定子各绕组的通电顺序为 A 相-C 相-B 相-A 相,转子旋转方向就变为顺时针方向. 在单三拍分配方式中

6、,步进电机由 A 相通电切换到 B 相通电,步进电机的转子转动一个角度,称为步进。此时转子的旋转角度为 30 度。步进电机每一步转动的角度称为步距角。 1.2.2 三相双三拍运行方式三相双三拍运行方式:每次通电两个绕组,通电方式为 AB-BC-CA-AB . ,如果通电顺序更改为 AB-CA- -BC-AB . 步进电机反转。在双三拍分配方式中,步进电机的步距角也是 30 度。 1.2.3 三相单双六拍运行模式:三相六拍配电模式是指每个周期有六个 通 电 状 态 。 这 六 种 电 状 态 的 顺 序 可 以 使A-AB-B-BC-C-CA-A .或 A- CA-C-BC-B-AB- A 六拍

7、通电方式中,存在两个绕组同时通电的瞬间,转子齿的位置会处于通电两相的中间。在三相六拍分配方式下,每步转子的旋转角度仅为三相三拍方式的一半,步距角为 15 度。 单三拍运行的突出问题是一次只能通电一相绕组。转换过程中,一相绕组断电,另一相绕组通电,容易出现失步;不好,在平衡位置附近容易震荡,所以少用。 双三拍运行的特点是每次两相绕组通电, 转换过程中始终通电一相绕组,因此运行平稳,步距角与单相绕组相同- 三拍操作。 转换六拍工作方式时,始终只有一相绕组通电,步距角小,工作稳定性好,但供电较复杂,实际应用较多。 2、方案论证 2.1 本设计中,由于需要实现 9 个不同部件的输入等功能,可以通过键盘

8、输入来实现步进电机的步数由键盘输入,并具有键盘锁定功能。本实验中单片机的端口数量足够,最终决定直接使用键盘输入。 2.2 步进电机方面,由于本次设计的软件采用 proteus,所以本软件中只有一款四相步进电机型号,再考虑到步进电机控制方式的难度,四相八拍最后采用控制方法。 , 由于单片机不能直接驱动步进电机,所以控制电压是由芯片放大的。 2.3 测温方面,最初计划用温度感应开关监测电机温度,温度过高时断开开关; 但考虑到系统的可操作性、 精度、 编程难度和仿真软件,最终决定用 DS18B20 代替电机的测量系统, 这样如果电机在运动过程中过热, 电机就会停止运行, 红色指示灯亮, 同时报警。

9、在转向方面,使用不同的指示器来指示正向和反向旋转。当温度超过安全温度时,报警灯亮,警铃鸣响,电机停止运转,键盘锁定。 三、节目说明 步进电机与普通电机的区别在于步进电机是由脉冲信号控制的。 也就是说,步进电机是将电脉冲信号转换为机械角位移的执行元件。步进电机的控制可以通过单片机硬件或软件实现。 硬件方法是使用脉冲分配器芯片进行一般换相控制; 软件方式是利用单片机产生控制脉冲来控制步进电机的运行状态,可以简化电路,降低成本。 使用软件控制时,主要设计要点如下: 确定旋转方向; 根据相序确定控制字; 依次输入控制字; 确定控制步骤的数量和每个步骤的延迟时间。 因为单片机的驱动电流一般比较小,不能直

10、接驱动电机工作,所以单片机的 I/O 口的输出必须接驱动电路,即动力驱动,从而控制电机正常工作。控制框图如下图所示: 当它开始启动时,单击它停止旋转,并使用键盘按键控制键盘锁定、步数、正转和反转。使用 80c 51 作为总控芯片。 ULN2003 用于步进电机的驱动控制。其中,键盘扫描程序是在控制键盘时使用的。 图 3.1 总体方案图 C51 单 片 机 驱动电路 三相步进电电源与时钟电路 状态显示电路 正 反 转 与指示电路 键 盘 控 制电路 4.硬件方案设计 系统硬件设计 4.1 最小 MCU 系统 5V 电源:给系统供电。 复位电路:当程序跑掉时,复位电路可以使程序重新执行,相当于重新

11、启动计算机。 晶体振荡器:为微控制器的操作提供时钟。 EA 接高电平:表示从运行部门的程序存储器中下载的程序。 P0 接排阻:P0 口为开漏结构,使用时一般接排阻拉高电平。 4.2 键盘设计 电路采用独立键盘工作方式,共有十二个按键,分别为 3、6、9、12、15、18、21、24、27 布局选择功能,键盘锁定功能与旋转方向有关的步进电机。选择功能。有一些程序性决定开始发挥作用。 4.3 步进电机 步进电机驱动采用 ULN2003,接单片机 P1.0P1.3 ,如步进电机驱动与单片机接线图。 4.4 正反转显示灯及警铃 4.5 温度传感器模块 5. 软件设计 主程序流程图如下: 判断电机是否温

12、度确定输入步等 待 开 键盘 电机高温? 报警, 红灯点亮,步进电机停转 开始 步进电机运转 是 锁键盘 否 是 初始化程序 否 6.调试 6.1Proteus 仿真软件 Proteus 是全球知名的 EDA 工具(仿真软件) ,从原理图布局、代码调试到单片机及外围电路协同仿真,一键切换到 PCB 设计,真正实现从概念到产品的完整设计。是全球唯一集电路仿真软件、PCB 设计软件、虚拟模型仿真软件于一体的设计平台。其处理器型号支持8051、HC11、PIC 10/12/16/18/24/30/DsPIC33、AVR、ARM、8086 和MSP430 等。2010 年增加了 Cortex 和 DS

13、P 系列处理器,并继续增加其他系列处理器型号。在编译方面,还支持 IAR、Keil、MPLAB 等多种编译器。 6.2 调试步骤和方法 电路经调试达到课题要求,各项技术指标均达到设计目的。具体操作控制方法如下: 1、当电机按下启动按钮时,步进电机按默认状态开始转动; 2、当电机按下停止按钮时,步进电机停止转动; 3、电机按下正转按钮时,步进电机正转; 4、当电机按下反转按钮时,步进电机反转; 5、当电机按下步数按钮时,步进电机按照步数旋转。 七、技术总结 为期一周的 MCU 课程设计即将结束。经过这么多天的努力,终于完成了本次课程设计的基本设计要求,在充实中也学到了很多知识,就是将所学的知识真

14、正应用在实践中。非常好的体验,让人们受益匪浅。因为这次控制要求不是很高,所以选择了 51 系列 80C51。接下来是硬件接口分配以及如何驱动电机的问题。 之前没有接触过步进电机,所以在网上查了很多关于步进电机的资料,知道了它的基本工作原理以及如何实现它的控制运行和驱动。 下一个主要问题是如何编程来控制它。这个程序的编写和调试对我来说是一个很大的挑战,因为我之前只写过一些简短的小程序, 这对大程序的整体方面非常重要。还是不能很好的把握。经过反复尝试和调试,采用找问题解决问题的方法,参考别人的一些经验和方法,编写了程序。这对我以后写程序来说是一个很好的经验积累。通过这次课程设计,我也了解到了自己的

15、不足。以前学单片机的时候,往往只看懂别人写的程序,以为看懂了就知道怎么写了,但事实并非如此,虽然这次是课程设计程序大功告成,但是花样繁多,编程也没有之前想象的那么简单。所以,以后的学习,不能高高在低,一定要脚踏实地,一步一个脚印,自己动手,这样才能真正学到知识。本次课程设计能够顺利完成,也感谢毛老师的指导,我的感受非常深刻,是一次很好的经验积累和设计经验。 8 参考文献 1.易纲主编, 单片机原理与应用高等教育,2010。 2. 楼然淼等主编, 51 系列单片机设计实例 ,航空航天大学,2006。 3. 王道辉, 单片机系统设计与实践电子工业2005。 4.谭浩强主编, C 程序设计(第三版)

16、 清华大学 2005 年。 5. 王港着, 电气电子实务指导科技2008。 6. 周润景主编, PROTEUS 入门实用教程机械工业2011。 7.林立主编, 单片机原理与应用:基于Proteus 和 Keil C电子工业 2011。 8. 严石主编, 数字电子技术基础高等教育,2006。 9 附录 实验设备 姓名 模型 数量 评论 单片机 AT89C51 1 MCU 基础 1 微动开关 9 自锁开关 3 发光二极管 引领 3 驱动芯片 ULN2003A 1 步进电机 28BYJ42 1 电源 1 温度感应器 18B20 1 蜂鸣器 1 三极管 NPN 1 晶体振荡器 12MHZ 1 电容 各

17、种大小 一些 反抗 各种大小 一些 排除 1 仿真图 程序 #include #define uchar 无符号字符 #define uint 无符号整数 #define led P0/数码管段选择 #define 哈哈 P2 位 s1 = P01; sbit s2 = P02;/密钥定义,s1 为正向,s2 为反向 sbit s3 = P03;/键定义,停止 sbit 扬声器 = P04; 位 LED1 = P05; 位 LED2 = P06; 位 LED3 = P07; 位 a = P23; 位 b = P22; 位 c = P21; sbit d = P20;/脉冲信号输入端子定义 sb

18、it _key3 =P10; /3 步 sbit _key6 =P11; /6 步 sbit _key9 =P12; /9 步 sbit _key12 =P13; /12 步 sbit _key15 =P14; /15 步 sbit _key18 =P15; /18 步 sbit _key21 =P16; /21 步 sbit _key24 =P17; /24 步 sbit _key27 =P00; /27 步 unsigned char code dofly_DuanMa10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/显示段码值 0

19、9 unsigned char code dofly_WeiMa=0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f;/对应数码管亮,即位码 无符号字符临时数据8; /存储显示值的全局变量 /*- DS18B20 端口定义 -*/ sbit DQ=P27;/ds18b20 端口 bit ReadTempFlag;/定义读取时间标志 /*- 函数声明 -*/ 无符号整数 ReadTemperature(void); 位初始化_DS18B20(无效); 无符号字符 ReadOneChar(void); 无效 WriteOneChar(无符号字符数据); 无

20、效 DelayUs2x(无符号字符 t); void DelayMs(unsigned char t); 无效_18b20(无效); /DS18B20 定义 /*- -* / uchar code display11=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;/共阳数码管驱动信号 0-9,不显示 uchar 码 time_counter102=0xda,0x1c,0xde,0xe4,0xe1,0xec,0xe5,0xd4,0xe9,0xbc, /9.7 -1ms 0xed,0xa4,0xf1,0x8c,0xf5,0x74,0x

21、f9,0x5c,0xfc,0x18; uchar num1 = 0;/控制取激励信号变量 uchar num2 = 8; uchar 灌木 = 0; uchar k=1;/加减档控制,1 为最小档 bit flag1 = 0;/初始正转,正反转标志 uchar buf4=0,10,10,1;/数码管显示缓存,正转,不显示,不显示,显示1 档,高-低(不能去掉) 无效键(无效); 无效键扫描(无效); /= 定时器 0/1 初始化函数= = = 无效 T0_T1_init() TMOD = 0x11;/定时器 0/1 都工作在模式 1,16 位定时模式 TH0 = (65536 - 4000)/

22、256; TL0 = (65536 - 4000)%256;/定时器 0,数码管扫描显示定时 4ms TH1 = time_counterk-10; TL1 = time_counterk-11;/定时器 1,步进电机调速定时 10ms TR0 = 1; TR1 = 1; ET0 = 1; ET1= 1;/开启定时器中断 EA = 1;/开启总中断 /=ms 级延时函数= = = 无效延迟 1m(uint x) uint i,j; for(i=0;ix;i+) /连续 x 次,约 x ms for(j=0;j 0; m-) if(flag1 = 0)/正转 LED3 = 1;扬声器 =1; L

23、ED1 = 0; LED2 = 1; 开关(num1) 情况 0:a = 1;b = 0;c = 0;d = 0;中断; 情况 1:a = 1;b = 1;c = 0;d = 0;中断; 情况 2:a = 0;b = 1;c = 0;d = 0;中断; 情况 3:a = 0;b = 1;c = 1;d = 0;中断; 情况 4:a = 0;b = 0;c = 1;d = 0;中断; 情况 5:a = 0;b = 0;c = 1;d = 1;中断; 案例 6:a = 0;b = 0;c = 0;d = 1;中断; 情况 7:a = 1;b = 0;c = 0;d = 1;中断; 数字 1+; 如

24、果(num1 = 8)num1 = 0; else /功率 LED3 = 1;扬声器 =1; LED1 = 1; LED2 = 0; 开关(num2) 情况 0:a = 1;b = 0;c = 0;d = 1;中断; 情况 1:a = 0;b = 0;c = 0;d = 1;中断; 情况 2:a = 0;b = 0;c = 1;d = 1;中断; 情况 3:a = 0;b = 0;c = 1;d = 0;中断; 情况 4:a = 0;b = 1;c = 1;d = 0;中断; 情况 5:a = 0;b = 1;c = 0;d = 0;中断; 案例 6:a = 1;b = 1;c = 0;d =

25、 0;中断; 情况 7:a = 1;b = 0;c = 0;d = 0;中断; 数字 2+; 如果(num2 = 8)num2 = 0; 无效键() if(s3 = 1) /这里开关关闭,表示键盘锁打开。如果开关未闭合,则表示已锁定,电机不转动 延迟 1m(100); 如果(s3 = 1) if(_key27=0) 布什=27; /步数较高者优先,即同时打开多个步数开关,运行步数较多 否则 if(_key24=0) bushu=24; 否则如果(_key21=0)bushu=21; 否则如果(_key18=0)bushu=18; 否则 if(_key15=0) bushu=15; 否则如果(_

26、key12=0)bushu=12; 否则 if(_key9=0) bushu=9; 否则 if(_key6=0) bushu=6; 否则 if(_key3=0) bushu=3; /以下是 18B20 程序 /*- 18b20 初始化 -*/ 位初始化_DS18B20(无效) 位数据=0; DQ = 1; /DQ 复位 延迟 Us2x(5); /稍微延迟 DQ = 0; /MCU 拉低 DQ 延迟 Us2x(200); /精确延迟大于 480us 小于 960us 延迟 Us2x(200); DQ = 1; / 将总线拉高 延迟 Us2x(50); /1560us 后接收 60-240us 存

27、在脉冲 数据=DQ; /如果 x=0,初始化成功,如果 x=1,初始化失败 延迟 Us2x(25); / 稍等片刻后返回 返回数据; /*- 读取一个字节 -*/ 无符号字符 ReadOneChar(void) 无符号字符 i=0; 无符号字符 dat = 0; 对于 (i=8;i0;i-) DQ = 0; / 给出脉冲信号 数据=1; DQ = 1; / 给出脉冲信号 如果(DQ) 数据|=0x80; 延迟 Us2x(25); 返回(数据); /*- 写一个字节 -*/ 无效 WriteOneChar(无符号字符数据) 无符号字符 i=0; 对于 (i=8; i0; i-) DQ = 0;

28、DQ = dat&0x01; 延迟 Us2x(25); DQ = 1; 数据=1; 延迟 Us2x(25); /*- 读取温度 -*/ 无符号整数 ReadTemperature(void) 无符号字符 a=0; 无符号整数 b=0; 无符号整数 t=0; 初始化_DS18B20(); WriteOneChar(0xCC); / 跳过读取序列号列号的操作 WriteOneChar(0x44); / 开始温度转换 延迟毫秒(10); 初始化_DS18B20(); WriteOneChar(0xCC); /跳过读取序列号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(一共可

29、以读取 9 个寄存器)前两个是温度 a=ReadOneChar(); /低阶 b=ReadOneChar(); /高位 b4; TempL=温度&0x0F; TempL=TempL*6/10;/十进制逼近处理 如果(温度/100=0) 临时数据1=0; 别的 TempData1=dofly_DuanMaTempH/100; /十位数温度 if(TempH/100=0)&(TempH%100)/10=0)/消隐 临时数据2=0; 别的 TempData2=dofly_DuanMa(TempH%100)/10; /十位数温度 TempData3=dofly_DuanMa(TempH%100)%10|0x80; /单位温度,带小数点 TempData4=dofly_DuanMaTempL; 临时数据6=0x39; /显示 C 符号 if(TempH/100) = 3 & (TempH%100) = 1) LED3 = 0; 扬声器 = 0; EA = 0; 导师 注释 课程设计 分数 导师 签名 年月日

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号