武汉理工大学《数字电子技术基础》课程设计说明书
课程设计任务书
学生姓名: 专业班级: 指导教师: 工作单位: 信息工程学院 题 目: 步进电机的控制及驱动电路设计 初始条件:
本设计既可以使用集成移位寄存器、驱动器、555定时器和必要的门电路,以及所需电阻、电容、二极管、三极管、开关等元件。本设计也可以使用单片机系统构建步进电机的控制及驱动电路。
自行设计所需电源。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1、课程设计工作量:1周。 2、技术要求:
①设计一个方波发生器提供系统时钟;
②设计一个步进电机的驱动信号发生器,可以实现电机正转/反转控制和转速控制; ③要求驱动器有足够的输出电流以驱动小功率4相步进电机; ④要求可以实现步进电机的单相或双相激励;
⑤确定设计方案,按功能模块的划分选择元、器件和集成电路,设计分电路,阐述基本原理。 ⑥绘制总体电路原理图。
3、查阅至少5篇参考文献。按《武汉理工大学课程设计工作规范》要求撰写设计报告书。全文用A4纸打印,图纸应符合绘图规范。
时间安排:
1、 2008 年 7 月 5 日集中,作课设具体实施计划与课程设计报告格式的要求说明。 2、 2008 年 7 月 5 日,查阅相关资料,学习电路的工作原理。
2、 2008 年 7 月 6 日 至 2007 年 7 月 7 日,方案选择和电路设计。
2、 2008 年 7 月 8 日 至 2007 年 7 月 10 日,电路调试和设计说明书撰写。 3、 2008 年 7 月 11 日上交课程设计成果及报告,同时进行答辩。
课设答疑地点:鉴主14楼电子科学与技术实验室。
指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日
0
武汉理工大学《数字电子技术基础》课程设计说明书
目 录
1.步进电机原理.................................................2 1.1步进电机简介..............................................2 1.2步进电机原理及控制技术....................................2 1.3 步进电机驱动方法.........................................2 1.4总体设计方框图............................................3 1.5设计原理分析..............................................3
1.5.1元器件介绍.......................................................3 1.5.2方案论证.........................................................5
2硬件设计......................................................6 2.1控制电路..................................................6 2.2最小系统..................................................6 2.3驱动电路..................................................7 2.4显示电路.................................................7 2.5总体电路图...............................................8 3软件设计.....................................................9 4程序编写.....................................................9 5实验心得及体会...............................................17 参考文献......................................................17
1
武汉理工大学《数字电子技术基础》课程设计说明书
1.步进电机原理及硬件和软件设计
1.1步进电机简介
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
1.2步进电机基本原理
通常电机的转子为永磁体,当电流流过定子绕组时,定子绕组产生一矢量磁场。该磁场会带动转子旋转一角度,使得转子的一对磁场方向与定子的磁场方向一致。当定子的矢量磁场旋转一个角度。转子也随着该磁场转一个角度。每输入一个电脉冲,电动机转动一个角度前进一步。它输出的角位移与输入的脉冲数成正比、转速与脉冲频率成正比。改变绕组通电的顺序,电机就会反转。所以可用控制脉冲数量、频率及电动机各相绕组的通电顺序来控制步进电机的转动。
1.3 步进电机驱动方法
步进电机不能直接接到工频交流或直流电源上工作,而必须使用专用的步进电动机驱动器,如下图所示。它由脉冲发生控制单元、功率驱动单元、保护单元等组成。图中点划线所包围的二个单元可以用微机控制来实现。驱动单元与步进电动机直接耦合,也可理解成步进电动机微机控制器的功率接口。
2
武汉理工大学《数字电子技术基础》课程设计说明书
1.4总体设计方案框图
键盘 状态选择 51单片机 数码管 状态显示 反向驱动 电源 步进电机
1.5设计原理分析
1.5.1元器件介绍
(1)步进电机
步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机区别于其他控制电机的最大特点是:它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。
步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB),步进电机又称为脉冲电机,是工业过程控制和仪表中一种能够快速启动,反转和制动的执行元件,其功用是将电脉冲转换为相应的角位移或直线位移,由于开环下就能实现精确定位的特点,使其在工业控制领域获得了广泛应用。步进电机的运转是由电脉冲信号控制的,其角位移量或线位移量与脉冲数成正比,每个一个脉冲,步进电机就转动一个角度或前进、倒退一步。步进电机旋转的角度由输入的电脉冲数确定。 ① 四相步进电机的工作原理
该设计采用了20BY-0型步进电机,该电机为四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机转动。当某一相绕组通电时,对应的磁极产生磁场,并与转子形成磁路,这时,如果定子和转子的小齿
3
武汉理工大学《数字电子技术基础》课程设计说明书
没有对齐,在磁场的作用下,由于磁通具有力图走磁阻最小路径的特点,则转子将转动一定的角度,使转子与定子的齿相互对齐,由此可见,错齿是促使电机旋转的原因。 ② 步进电机的静态指标及术语
相数:产生不同队N、S磁场的激磁线圈对数,常用m表示。 拍数:完成一个磁场周期性变化所需脉冲用n表示,
定位转矩:电机在不通电的状态下,电机转子自身的锁定力矩(由磁场齿形的谐波以及机械误差造成的)。
静转矩:电机在额定静态作业下,电机不做旋转运动时,电机转轴的锁定力矩。此力矩是衡量电机体积的标准,与驱动电压及驱动电源等无关。虽然静态转矩与电磁激磁匝数成正比,与定子和转子间的气隙有关。但过分采用减小气隙,增加励磁匝数来提高静转矩是不可取的,这样会造成电机的发热及机械噪音。 ③ 四相步进电机的脉冲分配规律
对步进电机的控制主要有分散器件组成的环形脉冲分配器、软件环形脉冲分配器、专用集成芯片环形脉冲分配器等。本设计利用单片机进行控制,主要是利用软件进行环形脉冲分配。四相步进电机的工作方式为四相单四拍,双四拍和四相八拍工作的方式。各种工作方式在电源通电时的时序与波形分别如图所示。
本设计的电机工作方式为四相单四拍,根据步进电机的工作的时序和波形图,总结出其工作方式为四相单四拍时的脉冲分配规律,四相双四拍的脉冲分配规律,在每一种工作方式中,脉冲的频率越高,其转速就越快,但脉冲频率高到一定程度,步进电机跟不上频率的变化后电机会出现失步现象,所以脉冲频率一定要控制在步进电机允许的范围内。
(2)C51单片机
C51单片机是一种低功耗、低电压、高性能的8位单片机,它采用CMOS和高密度非易失性存储技术,而且其输出引脚和指令系统都与MCS-51兼容;片内的Flash ROM
4
武汉理工大学《数字电子技术基础》课程设计说明书
允许在系统内改编程序或用常规的非易失性编程器来编程,内部除CPU外,还包括256字节RAM,4个8位并行I/O口,5个中断源,2个中断优先级,2个16位可编程定时计数器,C51单片机是一种功能强、灵活性高且价格合理的单片机,完全满足本系统设计需要。
1.5.2方案论证
从课程设计要求可知,该系统的输入量为速度和方向,速度应该有增减变化,通常用加减按钮控制速度,由于设置八个键盘功能,采用P1口间接八个按键。系统的输出线与步进电机的绕组数有关。这里选5线4相步进电机制。该电机共有四相绕组,工作电压为+5V,可以个单片机共用一个电源。步进电机的四相绕组用P1口的P1.0~P1.3控制,由于P1口驱动能力不够,因而用一片2803增加驱动能力。用P0口控制液晶显示转动状态及速度。
5
武汉理工大学《数字电子技术基础》课程设计说明书
2硬件设计
本设计的硬件电路只要包括控制电路、最小系统、驱动电路、显示电路四大部分。最小系统只要是为了使单片机正常工作。控制电路只要由开关和按键组成,由操作者根据相应的工作需要进行操作。显示电路主要是为了显示电机的工作状态和转速。驱动电路主要是对单片机输出的脉冲进行功率放大,从而驱动电机转动。
2.1控制电路
据系统的控制要求,控制输入部分设置了启动控制,换向控制,加速控制和减速控制按钮,分别是K1、K2、K3、K4、K5、K6、 K7、K8,控制电路如下图所示。通过K1、K2、K3选择单相、二相、一二相驱动;通过K4、K5选择正转、反转;通过K6、K7控制转速,K8控制系统回复初始状态或重置状态。
根据步进电机的工作原理可以知道,步进电机转速的控制主要是通过控制通入电机的脉冲频率,从而控制电机的转速。对于单片机而言,主要的方法有:软件延时和定时中断在此电路中电机的转速控制主要是通过定时器的中断来实现的,该电路控制电机加速度主要是通过K6、K7的断开和闭合,从而控制外部中断根据按键次数,改变速度值存储区中的数据(该数据为定时器的中断次数),这样就改变了步进电机的输出脉冲频率,从而改变了电机的转速。
2.2最小系统
单片机最小系统或者称为最小应用系统,素质用最少的元件组成的单片机可以工作的系统,对51系列单片机来说,最小系统一般应该包括:单片机、复位电路、晶
6
武汉理工大学《数字电子技术基础》课程设计说明书
振电路。
2.3驱动电路
通过ULN2803构成驱动电路,电路图如下图所示。通过单片机的P1.0~P1.3输出脉冲到ULN2803的1B~4B口,经信号放大后从1C~4C口分别输出到电机的A、B、C、D相。
2.4显示电路
在该步进电机的控制器中,电机可以正反转,可以加速、减速,其中电机转速的等级分为七级,为了方便知道电机的运行状态和电机的转速的等级,这里设计了电机转速和电机的工作状态的显示电路。在显示电路中,主要是利用了单片机的P0口,采用1602液晶作显示。第一行根据键盘控制显示“Mode:Single +”/ “Mode: Single –” /
7
武汉理工大学《数字电子技术基础》课程设计说明书
“Mode: Double +” / “Mode: Double _”/ “Mode: Mixed +”/ “Mode: Mixed -”,分别代表一相正转/一相反转/二相正转/二相反转/一二相正转/一二相反转。第二行根据键盘控制显示“Speed:10”,初始数字为10,数字代表速度等级,共有20级,即数字可显示从0到20,数字越小即周期越短速度越快。
2.5实物电路图
各个部分的电路图组合成失误电路图,如下图所示。
8
武汉理工大学《数字电子技术基础》课程设计说明书
3软件设计
通过分析可以看出,实现系统功能可以采用多种方法,由于随时有可能输入加速、加速信号和方向信号,因而采用中断方式效率最高,这样总共要完成2个部分的工作才能满足课题要求,即主程序部分、定时器中断部分,其中主程序的主要功能是系统初始参数的设置及启动开关的检测,若启动开关合上则系统开始工作,反之系统停止工作;定时器部分控制脉冲频率,它决定了步进电机各个状态确定设置。下面分析主程序与定时器中断程序及外部中断程序。 (1)主程序设计
主程序中要完成的工作主要有系统初始值的设置、系统状态的显示以及各种开关状态的检测判断等。其中系统初始状态的设置内容较多,该系统中,需要初始化定时器、外部中断,液晶屏。当上电时,液晶屏第一行显示“Mode:”,第二行显示“Speed:”,由于未设置步进电机工作状态,步进电机未工作,且液晶未显示步进电机有关状态。 (2)定时中断设计
步进电机的状态设置由键盘的按下松开确定。K1~K8的按下就会对数组进行赋值,通过对数组的判断确定我们所设置的工作状态。由于我们需要实时地调节步进电机的转速,因此采用定时中断程序,每当扫描键盘时,K6、K7的按下会对数组的值进行加减,通过数组值的大小的改变控制步进电机的转动频率从而调节步进电机的转速,数字值最大为20最小为0,超出范围时数组值不可改变。由于对每一按键定义了一种功能,当按下某些按键组合时会产生一些错误的设定,对于这种情况我们设定了K8作为初始化/复位按键,按下K8会使系统回到初始状态,这时我们可以对系统进行重新正确的设定或者转换另一种工作状态。
4程序编写
#include sbit rs=P2^4; //定义液晶使能控制端口 sbit rw=P2^5; sbit en=P2^6; sbit A1=P1^0; //定义反向驱动端口 sbit B1=P1^1; sbit C1=P1^2; sbit D1=P1^3; 9 武汉理工大学《数字电子技术基础》课程设计说明书 unsigned char n[5]; unsigned char T=10,Y=0; unsigned char mode[]=\"mode:\d\ #define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;} //对步进电机进行编码 #define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;} #define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;} #define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;} #define Coil_A1 {A1=1;B1=0;C1=0;D1=0;} #define Coil_B1 {A1=0;B1=1;C1=0;D1=0;} #define Coil_C1 {A1=0;B1=0;C1=1;D1=0;} #define Coil_D1 {A1=0;B1=0;C1=0;D1=1;} #define Coil_OFF {A1=0;B1=0;C1=0;D1=0;} void DelayMs(unsigned char t) //定义延时 { int x,y; for(x=t;x>0;x--) for(y=110;y>0;y--); } void write_com(unsigned char com)//液晶显示状态控制程序 { rs=0; rw=0; en=0; LCD=com; DelayMs(5); en=1; DelayMs(5); en=0; } void write_date(unsigned char date)//液晶数据显示程序 { rs=1; rw=0; en=0; LCD=date; DelayMs(5); en=1; DelayMs(5); 10 武汉理工大学《数字电子技术基础》课程设计说明书 en=0; } void init_LCD()//液晶初始化程序 { int a; write_com(0x38); write_com(0x06); write_com(0x01); write_com(0x0c); write_com(0x80); for(a=0;a<5;a++) { write_date(mode[a]); } write_com(0x80+0x40); for(a=0;a<6;a++) { write_date(speed[a]); } } void Init_Timer0()//定时器初始化 { TMOD=0x01; TH0=0x00; TL0=0x00; EA=1; ET0=1; TR0=1; PT0=1; } void display()//显示程序 { char a,b,c,d,e; if(n[0]==1&&n[1]==0&&n[2]==0) { write_com(0x80+6); for(a=0;a<6;a++) { write_date(one[a]); 11 武汉理工大学《数字电子技术基础》课程设计说明书 } } if(n[0]==0&&n[1]==1&&n[2]==0) { write_com(0x80+6); for(a=0;a<6;a++) { write_date(two[a]); } } if(n[0]==0&&n[1]==0&&n[2]==1) { write_com(0x80+6); for(a=0;a<5;a++) { write_date(mixed[a]); } } if(n[3]==1&&n[4]==0) { write_com(0x80+13); write_date('+'); } if(n[3]==0&&n[4]==1) { write_com(0x80+13); write_date('-'); } b=T/10; c=T%10; write_com(0x80+0x40+6); write_date(0x30+b); write_com(0x80+0x40+7); write_date(0x30+c); d=n[0]+n[1]+n[2]; e=n[3]+n[4]; if(d>1||e==2) { init_LCD(); write_com(0x80+6); for(a=0;a<5;a++) { write_date(er[a]); } 12 武汉理工大学《数字电子技术基础》课程设计说明书 } } unsigned char KeyScan(void)//键盘扫面 { unsigned char keyvalue; if(KeyPort!=0xff) { DelayMs(10); if(KeyPort!=0xff) { keyvalue=KeyPort; while(KeyPort!=0xff); switch(keyvalue) { case 0xfe:return 1;break; case 0xfd:return 2;break; case 0xfb:return 3;break; case 0xf7:return 4;break; case 0xef:return 5;break; case 0xdf:return 6;break; case 0xbf:return 7;break; case 0x7f:return 8;break; default:return 0;break; } } } return 0; } void danxiang_0()//步进电机单相正转 { Coil_A1 DelayMs(T); Coil_B1 DelayMs(T); Coil_C1 DelayMs(T); Coil_D1 DelayMs(T); } void danxiang_1()//步进电机单相发转 { 13 武汉理工大学《数字电子技术基础》课程设计说明书 Coil_D1 DelayMs(T); Coil_C1 DelayMs(T); Coil_B1 DelayMs(T); Coil_A1 DelayMs(T); } void erxiang_0() //步进电机二相正转{ Coil_AB1 DelayMs(T); Coil_BC1 DelayMs(T); Coil_CD1 DelayMs(T); Coil_DA1 DelayMs(T); } void erxiang_1()//步进电机二相反转 { Coil_DA1 DelayMs(T); Coil_CD1 DelayMs(T); Coil_BC1 DelayMs(T); Coil_AB1 DelayMs(T); } void yi_er_0()//步进电机一二相正转 { Coil_A1 DelayMs(T); Coil_AB1 DelayMs(T); Coil_B1 DelayMs(T); Coil_BC1 DelayMs(T); 14 武汉理工大学《数字电子技术基础》课程设计说明书 Coil_C1 DelayMs(T); Coil_CD1 DelayMs(T); Coil_D1 DelayMs(T); Coil_DA1 DelayMs(T); } void yi_er_1()//步进电机一二相反转{ Coil_DA1 DelayMs(T); Coil_D1 DelayMs(T); Coil_CD1 DelayMs(T); Coil_C1 DelayMs(T); Coil_BC1 DelayMs(T); Coil_B1 DelayMs(T); Coil_AB1 DelayMs(T); Coil_A1 DelayMs(T); } void run()//步进电机控制程序 { if(n[0]==1&&n[3]==1&&n[4]==0) danxiang_0(); if(n[0]==1&&n[3]==0&&n[4]==1) danxiang_1(); if(n[1]==1&&n[3]==1&&n[4]==0) erxiang_0(); if(n[1]==1&&n[3]==0&&n[4]==1) erxiang_1(); if(n[2]==1&&n[3]==1&&n[4]==0) yi_er_0(); if(n[2]==1&&n[3]==0&&n[4]==1) yi_er_1(); 15 武汉理工大学《数字电子技术基础》课程设计说明书 } void Reset()//初始化/复位程序 { int a; T=10; n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0; init_LCD(); write_com(0x80+6); for(a=0;a<10;a++) { write_date(re[a]); } } void main() { Coil_OFF init_LCD(); Init_Timer0(); EX0=1; IT0=1; while(1) { if(Y==2) { run(); display(); } } } void Timer0_isr(void) interrupt 1 //定时器 { unsigned char num; TH0=(65536-1000)/256; TL0=(65536-1000)%256; num=KeyScan();//扫描键盘确定步进电机运行状态 switch(num) { case 1:n[0]=1;break; case 2:n[1]=1;break; case 3:n[2]=1;break; 16 武汉理工大学《数字电子技术基础》课程设计说明书 case 4:n[3]=1;break; case 5:n[4]=1;break; case 6:if(T<20) T++;break; case 7:if(T>1) T--;break; case 8:Reset();break; } Y=n[0]+n[1]+n[2]+n[3]+n[4]; } 5实验心得及体会 通过本次课程设计我们学习到了许多书本上没有的知识,通过自己查资料和互相讨论,对系统进行整体设计后基本达到了要求,对本次设计,有以下结论: (1)采用单片机为控制核心,利用其强大的功能,把键盘和显示电路有机的结合起来,组成一个操作方便、交互性强的控制系统。而且整个系统所包含的技术几乎包括了现本科学校控制专业所要求的知识,有利于实践教学取得最大效果。 (2)键盘电路和显示电路采用了动态扫描技术,节约了单片机资源。 (3)系统软件采用结构化设计,具有易维护性,根据用户新的要求,对软件系统进行少量的修改,使系统功能得到一定程度的提高。 在此衷心感谢老师的指导。 参考文献 [1]伍时和.数字电子技术基础.北京:清华大学出版社,2009.4. [2]宋嘉玉,孙丽霞.EDA实用技术.北京:人民邮电出版社,2006.12. [3]齐洪喜,陆颖.VHDL电路设计实用技术.北京:清华大学出版社,2004.5. [4]刘艳萍,高振斌,李志军.EDA实用技术及应用.北京:国防工业出版社,2006.1. [5]章彬宏.EDA应用技术.北京:北京理工大学出版社,2007.7. [6]谭会生.EDA技术基础.长沙:湖南大学出版社,2004.8. 17
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务