基于单片机的步进电机控制单片机课程设计.doc_第1页
基于单片机的步进电机控制单片机课程设计.doc_第2页
基于单片机的步进电机控制单片机课程设计.doc_第3页
基于单片机的步进电机控制单片机课程设计.doc_第4页
基于单片机的步进电机控制单片机课程设计.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

单片机课程设计江南大学物联网工程学院课程设计报告课程名称: 单片机原理及应用 设计题目: 班 级: 姓 名: 学 号: 指导教师: 评 分: 年 月 日目录一、设计要求目的2二、设计要求及任务2三、仪器设备2四、硬件线路图及芯片说明21、总体设计框图32、主要硬件线路图33、ULN2003芯片说明5五、系统工作原理51、步进电机工作原理52、采样原理73、按键和显示处理74 、中断处理9六、程序框图9七、程序清单10八、设计总结13一、 设计目的通过具体小型测试系统设计,实践单片机系统设计、上机调试及再设计的全过程,以加深对单片机内部结构、原理功能和指令系统的进一步理解,并进一步学习单片机开发系统的原理与应用以及一些外围芯片的接口和编程调试方法与技巧,初步掌握单片机系统的硬、软件设计技术及调试技巧。二、 设计要求及任务1. 电机转速可以平稳控制2. 通过键盘和显示器可以设置电机的转速3. 显示电机的速度趋势4. 具体任务(1) 编写程序,通过单片机的P1 口控制步进电机的控制端,使其按一定的控制方式进行转动。(2) 分别采用双四拍(ABBCCDDAAB)方式、单四拍(ABCDA)方式和单双八拍(AABBBCCCDDDAA)方式 编程,控制步进电机的转动方向和转速。(3) 观察不同控制方式下,步进电机转动时的振动情况和步进角的大小,比较这几种控制方式的优缺点。三、 仪器设备(1)、PC机一台;(2)、51单片机开发系统一块;(3)、步进电机一个;(4)、Usb转串口线、电源线。四、 硬件线路图及主要芯片说明本系统主要由按键电路、拨码开关、单片机最小系统、AT89c52单片机、步进电机、驱动电路以及步进电机等几部分组成。本系统采用两个独立开关三个独立按钮,分别进行启动、停止、正反转以及高低速的控制。驱动电路采用ULN2003实现步进电机的驱动。步进电机的供电采用独立12V供电。.1. 总体设计框图与传统步进控制器相比较有以下优点:1. 用微型机代替了步进控制器把并行二进制码转换成串行脉冲序列,并实现方向控制;2. 只要负载是在步进电机允许的范围之内,每个脉冲将使电机转动一个固定的步距角度。3. 根据步距角的大小及实际走的步数,只要知道初始位置,便可知道步进电机的最终位置。2.主要硬件线路图(1)单片机最小系统的硬件原理接线图:A、 接电源:VCC(PIN40)、GND(PIN20)。加接退耦电容0.1uFB、 接晶体:X1(PIN18)、X2(PIN19)。注意标出晶体频率(选用12MHz),还有辅助电容20pFC、 接复位:RES(PIN9)。接上电复位电路,以及手动复位电路,分析复位工作原理D、 接配置:EA(PIN31)。说明原因。(2)单片机内部I/O部件A、 四个8位通用I/O端口,对应引脚P0、P1、P2和P3; B、 两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1)C、 一个串行通信接口;(SCON,SBUF)D、 一个中断控制器;(IE,IP)3. ULN2003芯片说明ULN2003 是高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成。ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。当输入5V TTL电平时,输出可达500mA/50V。如果ULN2003的达林顿管输入端输入低电平使其截止,其驱动的元件是感性元件,则电流不能突变,此时会产生一个高压;如果没有二极管,达林顿管会被击穿,所以这个二极管主要起保护作用。由于ULN2003是集电极开路输出,为了让这个二极管起到续流作用,必须将COM引脚(pin9)接在负载的供电电源上,只有这样才能够形成续流回路。五、 系统工作原理1.步进电机工作原理步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图所示:(a) (b) (c)步进电机的工作方式时序图步进电机的驱动电路根据控制信号工作,控制信号由单片机产生,其基本原理作用如下:(1)控制换相顺序通电换相这一过程称为脉冲分配。例如:四相步进电机的八拍工作方式,其各相通电顺序为AABBBCCCDDDA,通电控制脉冲必须严格按照这一顺序分别控制A,AB,B,BC,C,CD,D,DA相的通断。(2)控制步进电机的转向如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。(3)控制步进电机的速度如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。2.采样原理步进电机根据单片机发出的脉冲序列来决定其工作方式为单四拍、双四拍和八拍,并能将脉冲信号转换成角位移。根据步进电机接收到的脉冲序列的不同,决定其自身的通电相序。3.数据存放单元安排单片机将立即数存放到相应的工作寄存器中,不同的延时子程序里,将不同的立即数存放到相应的工作寄存器中,以实现不同长度的延时,进而控制电机运行速度,具体数据分配如下表:工作寄存器十进制立即数十六进制立即数R44028HR5(低速)250FAHR5(中速)12078HR5(高速)5032H4.按键和显示处理键盘在单片机应用系统中能实现向单片机输入数据、传送命令等功能,是人工干预单片机的主要手段。键盘实质是一组按键开关的集合。键盘所用开关为机械弹性开关,利用了机械触点的合、断作用。一个电压信号在机械触点的断开、闭合过程中,都会产生抖动,一般为510ms;两次抖动之间为稳定的闭合状态,时间由按键动作所决定;第一次抖动前和第二次抖动后为断开状态。系统采用4个拨码开关用来控制步进电机状态转换,分别是总开关、转向控制、中速档和高速档,拨码开关接通时,电源通过上拉电阻和开关到单片机I/O口形成通路,给单片机送入一个高电平,高电平即为有效电平。状态指示采用6个发光二极管分别表示步进电机的启动停止、正转、反转、低速运行、中速运行和高速运行状态,发光二极管正极接电源,负极接单片机I/O口,同时,每个发光二极管需要接限流电阻起保护作用。为了确保单片机对一次按键动作只确认一次按键,必须消除抖动的影响。消除按键抖动通常采用硬件、软件两种方法。由于硬件消抖电路设计复杂,本设计中没有采用,在此不再详细叙述;软件消抖适合按键较多的情况,方便简单。其原理是在第一次检测到有键按下时,执行一段延时10ms的子程序后在确认该键电平是否仍保持闭合状态电平,如果保持闭合状态电平则确认为真正有键按下,从而消除了抖动的影响。其原理图如图所示:键盘控制模块原理图采用LED数码管动态显示数据与个项参数,方法简单,容易控制,成本低。设计如下图 P00P01P02P03P04P05P06P07P25P26P27AT89C51StcP24IN 1IN 2IN 3IN 4OUT 4OUT 3OUT 2OUT 1ULN2803abfcgdeLED1aabbcfdcegfdgeabfcgdeabfcgdehLED2LED3LED4hhhh5.中断处理(定时器中断0服务程序流程图)当CPU检测到与拨码开关相连引脚电平的变化时,停止当前执行的程序,转而跳至标号处去执行中断请求所对应的程序,当执行完中断程序后,CPU跳回先前所执行的程序。开始设置T0时间参数判断转动方向控制位的值有控制位查询输出脉冲退出改变方向控制变量值是六、 程序框图七、 程序清单根据单片机外围电路的设计,单片机的P00、P01作为开关输入,P02、P03、P04为按键输入,主程序根据键盘扫描的结果进行相应的操作,并由定时器0产生定时中断,输出控制步进电机的正反转(利用给步进电机送入与原来相反的脉冲即可)、步进电机的高低速控制(修改T0的初值)。#include /头文件 程序定义及变量声明#define uint unsigned int /宏定义#define uchar unsigned char /宏定义uchar code ZF8=0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09; /正转编码表uchar code FF8=0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01; /反转编码表uchar code SM10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /数码表sbit k1=P32;/定义K1为启动/停止按键sbit k2=P33;/定义K2为加速按键sbit k3=P34; /定义K3为减速按键sbit k4=P35; /定义K4为正/反转按键uchar j=0;uint time=12000;/time /为每两拍之间的间隔时间uint temp2;uchar temp1,h,w,p,q,f; /1ms延时函数(12M晶振下)void delay(uchar z) /延时函数 uchar s,v; for(s=0;sz;s+)for(v=0;v125;v+); /一个for循环8个机器周期(125*8*1us=1ms) void display(uchar a,uchar b,uchar c,uchar d) /显示函数if(f%2)P2=0xfe; P0=0xbf;/f为奇数时代表反转,则第一个数码管显示“-”,否则不显示delay(1); P0=0xff; /消隐P2=0xfd; P0=SMa; /显示十位delay(1); P0=0xff; /消隐P2=0xfb; P0=SMb&0x7f; /显示个位(带小数点)delay(1); P0=0xff; /消隐P2=0xf7;P0=SMc; /显示小数点后第一位小数delay(1); P0=0xff;/消隐P2=0xef;P0=SMd; /显示小数点后第二位小数delay(1); P0=0xff; /消隐void dispose() /数值处理函数 temp1=14648/time; h=temp1/10; /十位 w=temp1%10; /个位 temp2=14648%time; p=temp2/1000;/ 小数点后第一位小数 q=temp2%1000*10/1000;/小数点后第二位小数void main() /主函数 uchar k; TMOD=0x01; /定义定时器0工作方式1 EA=1; / 开总中断 ET0=1; /开定时器0中断 TH0=(65536-time)/256; TL0=(65536-time)%256; /装定时器初值 TR0=1; /开定时器0 while(1) if(k1=0)delay(5); /延时消抖 if(k1=0) TR0=TR0;k+;/启动/停止 while(!k1); / 等待按键释放 if(k2=0)delay(5); /延时消抖 if(k2=0) time=time-150; / 加速 while(!k2); / 等待按键释放 if(k3=0)delay(5); /延时消抖 if(k3=0)time=time+150; /减速 while(!k3); / 等待按键释放 if(k4=0)delay(5); /延时消抖 if(k4=0)f+; / 正/反转 while(!k4); / 等待按键释放 dispose(); if(k%2) display(0,0,0,0); /停止时显示00.00 else display(h,w,p,q); /正常运转时调用显示函数 void timer0() interrupt 1 /定时器0中断处理函数 if(f%2 )if(j=8) j=0;P1=FFj+; / f为奇数时代表反转,则送反转编码到P1口else if(j=8) j=0;P1=ZFj+; / 否则送正转编码到P1口 TH0=(65536-time)/256; TL0=(65536-time)%256; / 重新装初值八、 设计体会这一学期我们学习了单片机原理及其应用这门课程,作为一名自动化专业的大三学生,我觉得做单片机课程设计是十分有意义的,而且是十分必要的。 在课程设计环节中,我觉得最困难的是程序设计,首先要理解原理,然后进行流程设计,转化为程序,进行调试,我们在调试的时候出现很多错误,改错的过程是非常痛苦的,好在我们耐心的一一克服了,最后敲定了合理的程序。但问题并没有因此结束,当我们装上步进电机后,转速等级之间的转速差别,是否能够带动电机,显示闪

温馨提示

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

评论

0/150

提交评论