单片机课程设计报告单片机控制步进电机_第1页
单片机课程设计报告单片机控制步进电机_第2页
单片机课程设计报告单片机控制步进电机_第3页
单片机课程设计报告单片机控制步进电机_第4页
单片机课程设计报告单片机控制步进电机_第5页
已阅读5页,还剩17页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 单片机原理及应用课程设计报告设计题目:单片机控制步进电机 目录TOC o 1-3 h z u HYPERLINK l _Toc326398742 目录 PAGEREF _Toc326398742 h 1 HYPERLINK l _Toc326398743 1设计任务书 PAGEREF _Toc326398743 h 2 HYPERLINK l _Toc326398744 1.1基本设计要求 PAGEREF _Toc326398744 h 2 HYPERLINK l _Toc326398745 1.2选为项目 PAGEREF _Toc326398745 h 2 HYPERLINK l _Toc

2、326398746 2设计说明 PAGEREF _Toc326398746 h 3 HYPERLINK l _Toc326398747 2.1设计内容 PAGEREF _Toc326398747 h 3 HYPERLINK l _Toc326398748 2.2设计要求 PAGEREF _Toc326398748 h 3 HYPERLINK l _Toc326398749 2.3设备及工作环境 PAGEREF _Toc326398749 h 3 HYPERLINK l _Toc326398750 3系统方案总体设计 PAGEREF _Toc326398750 h 4 HYPERLINK l _

3、Toc326398751 3.1设计理念 PAGEREF _Toc326398751 h 4 HYPERLINK l _Toc326398752 4硬件设计 PAGEREF _Toc326398752 h 6 HYPERLINK l _Toc326398753 4.1系统硬件设计 PAGEREF _Toc326398753 h 6 HYPERLINK l _Toc326398754 4.1.1最低 MCU 系统 PAGEREF _Toc326398754 h 6 HYPERLINK l _Toc326398755 4.1.2键盘设计 PAGEREF _Toc326398755 h 6 HYPE

4、RLINK l _Toc326398756 4.2系统工作原理探讨 PAGEREF _Toc326398756 h 7 HYPERLINK l _Toc326398757 5软件设计 PAGEREF _Toc326398757 h 9 HYPERLINK l _Toc326398758 5.1分析论证 PAGEREF _Toc326398758 h 9 HYPERLINK l _Toc326398759 5.1.1步进电机运行驱动模块 PAGEREF _Toc326398759 h 9 HYPERLINK l _Toc326398760 5.1.2温度采集模块 PAGEREF _Toc3263

5、98760 h 9 HYPERLINK l _Toc326398761 5.1.3主要功能模块 PAGEREF _Toc326398761 h 9 HYPERLINK l _Toc326398762 5.1.4总体疗效 PAGEREF _Toc326398762 h 9 HYPERLINK l _Toc326398763 5.2程序流程图 PAGEREF _Toc326398763 h 10 HYPERLINK l _Toc326398764 5.3程序清单 PAGEREF _Toc326398764 h 11 HYPERLINK l _Toc326398765 6调试过程及分析 PAGERE

6、F _Toc326398765 h 18 HYPERLINK l _Toc326398766 7设计总结 PAGEREF _Toc326398766 h 19 HYPERLINK l _Toc326398767 参考 PAGEREF _Toc326398767 h 201 设计任务书1.1 基本设计要求(1 )使用万能板,主芯片AT89S52,35BYJ412步进电机,BLN2003,配合周边其他原厂芯片完成实验设计。( 2)程序的首地址要让目标机直接运行,即从0000H开始。必须在主程序的开头设置一个合适的栈底。程序放置的地址必须是连续的、高级的,中间不要留下大量的空间地址,这样目标机器可以

7、使用更少的硬件资源。(3)采用单片机控制三相单三拍步进电机的工作。步进电机的旋转方向由正反转控制信号控制。步进电机的步数由键盘输入。可输入的步数为3、6、9、12、15、18、21、24、27步,键盘具有键盘锁定功能。当键盘锁定时,步数输入电机不接受输入的步数,不会运行。只有打开键盘锁并输入步数后,步进电机才开始工作。(4)电机运转时,有正反转指示灯指示。(5)电机运行过程中,如果电机过热,电机将停止运行,红色指示灯亮,同时报警。本主题的症结在于:如何生成控制步进电机的脉冲序列。1.2 选定项目1、以单片机(AT89S52)为主芯片,设计控制步进电机的电路。2、设置三个自锁按钮,分别用于开关键

8、盘、左转和右转控制。3、设置9个触电按键,分别控制3、6、9、12、15、18、21、24、27步的输入步长。4、设置LCD12864显示器,实时显示步进电机的工作状态,提示用户进行步进操作。2设计说明2.1设计内容采用ZY15MCU12BD型集成单片机实验箱模拟控制步进电机集中采集的过程。2.2设计要求(1)单片机用于控制三相单三拍步进电机的工作。步进电机的旋转方向由正反转控制信号控制。步进电机的步数由键盘输入。可输入的步数为3、6、9、12、15、18、21、24、27步,键盘具有键盘锁定功能。当键盘锁定时,步数输入电机不接受输入的步数,不会运行。只有打开键盘锁并输入步数后,步进电机才开始

9、工作。(2)电机运转时,有正反转指示灯指示。(3)电机运行过程中,若出现过热现象,电机停止运转,红色指示灯亮,同时报警。( 4 )在机器上调试程序。( 5 )撰写设计报告。2.3设备及工作环境(1)硬件: AT89S52单片机1个,35BYJ412步进电机1个,ISP下载器1个,LCD12864显示屏,18B20温度传感器芯片。(2)软件:Windows操作系统,Keil C51软件。3 系统方案总体设计3.1设计思路步进电机不同的驱动方式都在运行,脉冲信号按一定的顺序依次加到三相绕组上,从而达到不同的工作状态。由于通电顺序不同,工作模式有三相单三相拍、三相双三拍、三相单拍和双六拍(注:“三相

10、上述“三相单三拍”中有三相绕组; “拍”是指定子绕组改变一次通电方式; “三拍”表示功率为通电3次完成一个周期。 “三相双三拍”中的“双”表示两相绕组同时通电)。(1) 三相单三拍运行方式:下图为无功步进电机的工作原理。如果用脉冲分配器输出的第一个脉冲给A相绕组通电,B、C相绕组不通电,A相绕组通电后产生的磁场会引起反作用力矩产生在转子上,转子的 1 和 3 齿将与定子磁极对齐,如图(a)所示。第二个脉冲到达给B相绕组通电,而A、C相绕组不通电; B相绕组产生的磁场将使转子的2、4齿与B相磁极对齐,如图(b)所示,与图(a)相比,转子旋转一圈逆时针角度。第三个脉冲到来后,C相绕组通电,而A、B

11、相不通电。此时,转子的第 1、3 齿将与 C 组对齐。转子位置如图(c)所示,与图(b)相同。 ),然后逆时针转动一个角度。反应式步进电机工作原理图通过分配器按A相-B-相-C-相-A-相.规律连续接通和断开。此时,步进电机的转子是连续连接的。逐步逆时针转动。如果改变步进电机的旋转方向,只要改变定子各绕组的通电顺序为A相-C相-B相-A相,转子旋转方向就变为顺时针方向.在单三拍分配方式下,步进电机从A相切换到B同点,步进电机的转子转动一个角度,称为一步。此时转子的旋转角度为30度。步进电机每一步转动的角度称为步距角。(2) 三相双三拍运行方式 三相双三拍运行方式:每次通电两个绕组,通电方式为A

12、B-BC-CA-AB . ,如果通电顺序更改为 AB- -CA-BC-AB .步进电机反转。在双三拍分配方式中,步进电机的步距角也是30度。(3)三相单双六拍运行模式:三相六拍配电模式是指每个周期有六个通电状态。这六种电状态的顺序可以使A-AB-B-BC-C-CA-A .或A- CA-C-BC-B-AB- A 在六拍通电方式中,有两个绕组同时通电的时刻,也就是转子齿的位置将处于通电两相的中间位置。在三相六拍分配方式下,每步转子的旋转角度仅为三相三拍方式的一半,步距角为15度。单三拍运行的突出问题是一次只能通电一相绕组。转换过程中,一相绕组断电,另一相绕组通电,容易出现失步;不好,在平衡位置附近

13、容易震荡,所以少用。双三拍运行的特点是每次两相绕组通电,转换过程中始终通电一相绕组,因此运行平稳,步距角与单相绕组相同- 三拍操作。转换六拍工作方式时,始终只有一相绕组通电,步距角小,工作稳定性好,但供电较复杂,实际应用较多。4 硬件设计4.1 系统硬件设计4.1.1最小的单片机系统5V电源:给系统供电。复位电路:当程序跑掉时,复位电路可以使程序重新执行,相当于重新启动计算机。晶体振荡器:为微控制器的操作提供时钟。比如电脑的2.2GHz频率。EA接高电平:表示从运行部门的程序存储器中下载的程序。P0口接排阻:P0口为开漏结构,使用时一般接排阻拉高电平。4.1.2键盘设计电路采用独立键盘工作方式

14、,共有12个按键,分别提供3、6、9、12、15、18、21、24布局选择功能、键盘锁定功能和步进电机旋转方向选择功能。有一些程序性决定开始发挥作用。4.2系统工作原理探讨系统的核心CPU是ATMEL公司生产的AT89S52芯片,将多功能8位CPU和FPEROM(闪存可编程/可擦写只读存储器)结合在一个芯片上。它是一种低功耗、高性能的 CMOS 控制器,为许多嵌入式控制应用提供了非常灵活且价格合理的解决方案,其性能价格比远高于同类芯片。兼容MCS-51指令系统,芯片F PEROM允许程序存储器在线重新编程。也可以用传统的EPROM编程器进行编程,可以写/擦1000次。 89S52包含4KB的F

15、PEROM,一般EEPROM的字节擦除时间和写入时间基本都是10ms。对于任何实时控制系统来说,长时间在线修改程序是不可能的。CPU为Atmel公司生产的89C51/89C52/89C55等。厂家提供的晶振频率为11.0592MH,每个机器周期为1.085us。用户可更换晶振提高速度;内存为64K,前4K/8K20K在CPU部分,其他程序在EPR0M27512;数据存储器为32K(62256),地址为8000-FFFFH;I/O扩展8155,RAM地址:200O-20FFH;8155命令端口地址为:2100H;A端口地址:21O1H B端口地址:2102H C端口地址:2103H;T 低八位:

16、2104H T 高八位:2105H;多路模拟开关的使用:P1=0F8H IN4:P1=0FCH IN1:P1=0F9H IN5:P1=OFDH=0FAH IN5 : P1=0FEH IN3: P1=0FBH IN7: P1=0FFH不掉电数据存储:500EH-507FH;控制板:160 x1O9(mm) 电源:+5V300mA +12V100mA -12V100mA;AT89C51 是一款低功耗、高性能的 8 位 CMOS 微控制器,带有 4KB Flash Programmable/Erasable Read Only Memory(FPEROM-Flash Programmable and

17、 Eraseable Read Only Memory),采用高密度、非易失性存储技术和完全兼容80C51引脚和指令系统;主要性能:兼容MCS-51微控制器产品系列;该芯片具有 4KB 的在线可重新编程闪存。引脚介绍:总体介绍:本系统采用的芯片有:DS18B20温度传感器,ULN2003A和MP28GA四相五线步进电机,步进电机工作在双八拍模式,步进力矩5.625,步进旋转方向电机由正反转控制信号控制。步进电机的步数由键盘输入。通过独立键盘S1S9可输入的步数为3、6、9、12、15、18、21、24、27,对应角度为16.875、33.725、.、151.875 ,键盘S10具有键盘锁定功能

18、。当键盘锁定时,步进电机不接受输入的步数,不会运行。只有打开键盘锁,选择运行方向并输入步数,步进电机才会开始工作。电机运转时,有正转指示灯D2和反转指示灯D3指示。电机运行过程中,温度传感器用于采集步进电机外部温度(可设置)。若过热,电机停止运转,红色指示灯亮,蜂鸣器响。5软件设计5.1分析论证本步进电机控制电路的设计与实现主要采用ULN2003A驱动芯片、温度传感器芯片DS18B20芯片、独立键盘等,包括步进电机运行驱动、温度采集、主要功能三大功能模块。5.1.1步进电机运行驱动模块由于系统中没有充分利用I/O口,所以使用了独立键盘。系统工作时,键盘控制的I/O口处于高电平状态。当按键按下时

19、,触发一个低电平,驱动程序实时监控并立即响应,执行相应的工作。5.1.2温度采集模块该模块的重要功能是采集步进电机表面的温度,并比较设定值来判断体温是否过高。温度过高时电机正常转动。当温度过高时,电机不再转动。 ,蜂鸣器报警,红灯亮。5.1.3主要功能模块该模块的重要功能是调动温度采集功能和步进电机功能中的功能,实现模块化编程。5.1.4整体疗效_AT89S52芯片控制ULN2003A芯片驱动步进电机,扫描键盘输入运行状态匹配运行步数,当电机外部温度超过32时,电机停止转动并报警!5.2程序流程图主程序流程图如图所示:开始初始化程序报警,红灯点亮,步进电机停转判断步进电机温度是否过高?是的不锁

20、键盘等待开键盘是的不确定输入步数电机高温?步进电机运转不图2 程序流程图5.3项目清单步进电机驱动功能:/BJDJ.h#ifndef _BJDJ_H_#define _BJDJ_H_#include #include #define uchar 无符号字符#define uint 无符号整数位 k1=P10;位 k2 = P11;位 k3 = P12;位 k4=P13;位 k5=P14;位 k6 = P15;位 k7=P16;位 k8=P17;位 k9 = P00;sbitk10=P01;位 k11=P02;位 k12=P03;无效键扫描();无效电机转();无效电机停止();万一/BJDJ.

21、c#include BJDJ.huchar 代码 FFW 8 = 0 xfe, 0 xfc, 0 xfd, 0 xf9,0 xfb, 0 xf3,0 xf7,0 xf6;uchar 代码 REV 8 = 0 xf6,0 xf7,0 xf3,0 xfb, 0 xf9,0 xfd, 0 xfc, 0 xfe;碳化率;外部uchar i = 0;/* * */* 延迟/* * */无效延迟(uchar x)uchar i,j;for(i=0;ix;i+);for(j = 0 ; j110 ; j+) ;/* * */*步进电机正转/* * */void motor_ffw(uchar x)uchar

22、 i,j;for (j=0; jx; j+) / 转 1*n 圈for (i=0; i8; i+) /一个周期转45度P2 = FFWi; /获取数据延迟(150); /调整速度/* * */*/* 步进电机反转/* * */无效电机转速(uchar x)uchar i,j;for (j=0; jx; j+) / 转 1*n 圈/ 退出这个循环for (i=0; i8; i+) /一个周期转45度P2 = REVi; /获取数据延迟(150); /调整速度/* * *键盘扫描* * */无效键扫描()我=0;如果(k1=0)延迟(5);如果(k1=0)i=24;如果(k2=0)延迟(5);如果

23、(k2=0)i=46;如果(k3=0)延迟(5);如果(k3=0)i=72;如果(k4=0)延迟(5);如果(k4=0)i=96;如果(k5=0)延迟(5);如果(k5=0)i=120;如果(k6=0)延迟(5);如果(k6=0)i=144;如果(k7=0)延迟(5);如果(k7=0)i=168;如果(k8=0)延迟(5);如果(k8=0)i=192;如果(k9=0)延迟(5);如果(k9=0)i=216;/* *电机舵机* */无效电机转()如果(k10=0)延迟(5);如果(k10=0)P2=P2&0 xf0;如果(k11=0&k12=1&k10=1)延迟(5);如果(k11=0&k12=

24、1&k10=1)motor_ffw(i);如果(k12=0&k11=1&k10=1)延迟(5);如果(k12=0&k11=1&k10=1)电机转速(i);无效电机停止()电机转速(0);温度传感器18B20驱动功能:/DS18B20.h#ifndef _DS18B20_H_#define _DS18B20_H_#include#include #define uint 无符号整数#define uchar 无符号字符外部 uchar T;位 DQ=P27; /温度输入端口sbit 钟=P04;sbit led1=P07;无效延迟2(uint t);无效 ow_reset(无效);无效写入字节(

25、uchar val);无效读临时();无效工作临时();万一/DS18B20.c#include“DS18B20.h”extern uchar 数据 temp_data2=0 x00,0 x00;uchar 标志;字符存在=1;uchar T;/*11微秒课*/无效延迟2(单位吨)for(;t0;t-);/*18B20重复功能*/无效 ow_reset(无效)存在=1;同时(在场)同时(在场)DQ=1;_nop_();_nop_();DQ=0; /延迟2(50); / 550usDQ=1; /延迟2(6); / 66us存在=DQ; /presence=0 继续下一步 延迟2(45); /延迟

26、500us存在=DQ;DQ=1;/*18B20写命令函数*/无效写入字节(uchar val)uchar我;对于 (i=8; i0; i-)DQ=1;_nop_();_nop_();DQ = 0;_nop_();_nop_();_nop_();_nop_();_nop_();/5usDQ = val&0 x01; /最低位出延迟2(6); /66usval=val/2; /右移一位DQ = 1;延迟2(1);/*18B20 读取 1 字节函数 */uchar read_byte(void)uchar我;uchar 值 = 0;对于 (i=8;i0;i-)DQ=1;_nop_();_nop_()

27、;值=1;DQ = 0; /_nop_();_nop_();_nop_();_nop_(); /4usDQ = 1;_nop_();_nop_();_nop_();_nop_(); /4us如果(DQ)值|=0 x80;延迟2(6); /66usDQ=1;返回(值);/*读取温度函数*/无效读临时()ow_reset(); /总线复位写字节(0 xCC); / 发送跳过 ROM 命令写字节(0 xBE); / 发送读命令temp_data0=read_byte(); /温度低8位temp_data1=read_byte(); /温度高8位ow_reset();写字节(0 xCC); /跳过ROMwrite_byte(0 x44); / 发送转换命令/*温度数据处理函数*/无效工作临时()T=(temp_data0&0 xf0)4)|(temp_data1&0 x07)31)电机停止();led1=0;铃=1;延迟2(1000);别的led1=1;钟=0; 电机转();6调试过程及分析准备好的源程序在Keil编译后出现很

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论