步进电机驱动调速显示.doc

上传人:PIYPING 文档编号:11779005 上传时间:2021-09-07 格式:DOC 页数:22 大小:24.17KB
返回 下载 相关 举报
步进电机驱动调速显示.doc_第1页
第1页 / 共22页
步进电机驱动调速显示.doc_第2页
第2页 / 共22页
步进电机驱动调速显示.doc_第3页
第3页 / 共22页
步进电机驱动调速显示.doc_第4页
第4页 / 共22页
步进电机驱动调速显示.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《步进电机驱动调速显示.doc》由会员分享,可在线阅读,更多相关《步进电机驱动调速显示.doc(22页珍藏版)》请在三一文库上搜索。

1、步进电机驱动调速显示 步进电机驱动控制实验 目录 第一章 绪论 . 2 1.1 步进电机分类 . 2 1.2 步进电机工作原理 . 2 1.3 步进电机主要特点 . 3 第二章 硬件系统设计 . 4 2.1 永磁步进电机的控制原理 . 4 2.2 步进电机控制系统的组成 . 4 第三章 软件设计 . 6 3.1 主程序流程图 . 6 3.2 定时器中断程序流程图 . 6 第四章 调试与改进 . 7 4.1 调试 . 7 4.2 运行结果 . 7 附录一 源程序 . 7 1 第一章 绪论 步进电机又称为脉冲电动机或阶跃电动机,它是基于最基本的电磁感应作用,将电脉冲信号转变为角位移或线位移的开环控

2、制元件。单片机控制的步进电机广泛地应用于工业自动控制、数控机床、组合机床、机器人、计算机外围设备、照相机,大型望远镜,卫星天线定位系统等等。随着经济的发展,技术的进步和电子技术的发展,步进电机的应用领域更加广阔,同时也对步进电机的运行性能提出了更高的要求。 步进电机是一种感应电机,它的工作原理是利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电的,多相时序控制器。 虽然步进电机已被广泛地应用,但步进电机并不能像普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用

3、好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。 1.1 步进电机分类 步进电机在构造上有三种主要类型:反应式(Variable Reluctance,VR)、永磁式(Permanent Magnet,PM)和混合式(Hybrid Stepping,HS)。 反应式:定子上有绕组、转子由软磁材料组成。结构简单、成本低、步距角小,可达1.2、但动态性能差、效率低、发热大,可靠性难保证。 永磁式:永磁式步进电机的转

4、子用永磁材料制成,转子的极数与定子的极数相同。其特点是动态性能好、输出力矩大,但这种电机精度差,步矩角大(一般为7.5或15)。 混合式:混合式步进电机综合了反应式和永磁式的优点,其定子上有多相绕组、转子上采用永磁材料,转子和定子上均有多个小齿以提高步矩精度。其特点是输出力矩大、动态性能好,步距角小,但结构复杂、成本相对较高。 按定子上绕组来分:共有二相、三相和五相等系列。 1.2 步进电机工作原理 通常电机的转子为永磁体,当电流流过定子绕组时,定子绕组产生一矢量磁场。该磁场会带动转子旋转一角度,使得 转子的一对磁场方向与定子的磁场方向一 致。当定子的矢量磁场旋转一个角度。转 子也随着该磁场转

5、一个角度。每输入一个 电脉冲,电动机转动一个角度前进一步。 它输出的角位移与输入的脉冲数成正比、 转速与脉冲频率成正比。改变绕组通电的 顺序,电机就会反转。所以可用控制脉冲 数量、频率及电动机各相绕组的通电顺序 2 来控制步进电机的转动。 1)控制换相顺序 通电换相这一过程称为脉冲分配。例如:四相步进电机的四拍工作方式,其各相通电顺序为ABCD,通电控制脉冲必须严格按照这一顺序分别控制A、 B、C、D相的通断。 2)控制步进电机的转向 如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。 3)控制步进电机的速度 如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,

6、它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。 1.3 步进电机主要特点 1、一般步进电机的精度为步进角的3-5%,且不累积。 2、步进电机外表允许的最高温度。 步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在摄氏130度以上,有的甚至高达摄氏200度以上,所以步进电机外表温度在摄氏80-90度完全正常。 3、步进电机的力矩会随转速的升高而下降。 当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动

7、势越大。在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。 4、步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。 步进电动机以其显著的特点,在数字化制造时代发挥着重大的用途。伴随着不同的数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。 3 第二章 硬件系统设计 2.1 永磁步进电机的控制原理 本实验以常用的永磁式步进电机为例,实验采用四相步进电机,用单片机控制步进电机。其接线图如图所示: 从图中可以看出,电机共有四组线圈,四 组线圈的一个端点连在一起引出,这样一共有 5根引出线。要使用步进电机转动,只要轮流 给各引出端通

8、电即可。将 COM 端标识为C,只 要 AC、BC或/AC、/BC,轮流加电就能驱动步 进电机运转,加电的方式可以有多种,如果将 COM 端接正电源,那么只要用开关元件(如三 极管) ,将 A、B或/A、/B轮流接地。 2.2 步进电机控制系统的组成 步进电机控制系统共分为五个模块:单片 机最小系统模块、键盘控制模块、液晶显示模块、步进电机驱动模块和电源模块。 1)单片机最小系统主要由复位电路和时钟电路组成。复位电路为单片机系统提供可靠复位,使单片机能正常启动。时钟电路采用外部时钟方式,保证单片机个功能部件都是以时钟频率为基准,有条不紊地一拍一拍地工作。 2)键盘控制模块包括方向控制键、加速键

9、和减速键、启停键,分别与单片机的P3.4、P3.5、P3.6和P3.7相连。实现对步进电机的控制。并且键盘上连接有发光二极管,以指示键盘状态。 3)液晶显示模块采用LCD1602来动态显示步进电机的转动速度。 4)步进电机驱动模块选用七个NPN达林顿连接晶体管ULN2003为步进电机提供脉冲信号,驱动步进电机转动。该模块与单片机的P2.4P2.7相连。 5)电源模块是通过将市电220V转变交流9V后再转变为直流5V分别供给驱动模块和单片机模块。 原理图如下: 4 5 第三章 软件设计 步进电机控制系统的软件需要同时完成读取键盘、处理键盘、控制步进电机转动、控制数码管动态显示等任务,这就必须通过

10、中断技术来实现。 主程序采用查询方式扫描键盘端口,检测按键动作是否发生,若有按键动作则处理键盘,根据按键值修改相应参数值,实现键盘的实时处理功能。定时器0中断服务程序控制步进电机的转动。 3.1 主程序流程图 步进电机控制系统的主程序在对整个系统初始化后主要完成读键盘和处理键盘的功能,控制液晶显示,如下图所示: 3.2 定时器中断程序流程图 定时器中断0服务程序的中断时间为500us。进入中断程序后,首先要重装初值,设置TH0和TL0的值。然后判断根据转速档位判断中断次数,达到计时目的。当判断为多次中断的时间满足当前档位时,判断旋转方向。每一次满足条件的中断,依次给A-AB-B-BC-C-CD

11、-D-DA输出脉冲,实现定时步进。 定时器中断0服务程序流程图如下图所示: 6 第四章 调试与改进 4.1 调试 在系统完成后测试系统,检查硬件和软件是否能够协调运行,并对系统出现的情况进行分析,看是否能够达到系统创作之初所设想的效果,如达不到则重新修改系统的硬件结构或者修改软件的程序部分,直到达到实验需要为止。 本系统的设计思路为:首先从整体上划分出各功能模块,然后硬件和软件同时进行依次完成各个功能模块,最后将各个模块联系起来完成整个系统。 4.2 运行结果 连接好硬件电路,上电复位,程序开始运行。 此时电机处于待机状态,按下开始按钮,点击开始转动,然后每按下加速键一次,LCD液晶显示器显示

12、数值加1档位,步进电机转动速度相应增加;此时每按下减速键一次,LCD液晶显示器显示数值减1档位,步进电机转动速度相应减少;此时若按下方向控制键,步进电机立即向相反方向转动,转动速度保持不变,顺时针时LCD显示为“+”,逆时针时LCD显示为“-”;此时若按下启停键,步进电机停止转动,LCD液晶显示器停止显示为“OFF”。 附录一 源程序 #include <reg52.h> #include<intrins.h> sbit A1=P24; /定义步进电机连接端口 sbit B1=P25; sbit C1=P26; sbit D1=P27; sbit RS = P20; /

13、定义LCD1602端口 sbit RW = P21; sbit EN = P22; sbit WEI=P27; sbit DUAN=P26; sbit Plus=P34; /定义键盘 加速 sbit Slow=P35; /减速 sbit Switch=P36;/开关 sbit Direction=P37;/方向按键 #define DataPort P1 #define RS_CLR RS=0 7 #define RS_SET RS=1 #define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0 #define EN_SET EN=1

14、 #define Coil_AB1 A1=1;B1=1;C1=0;D1=0;/AB相通电,其他相断电 #define Coil_BC1 A1=0;B1=1;C1=1;D1=0;/BC相通电,其他相断电 #define Coil_CD1 A1=0;B1=0;C1=1;D1=1;/CD相通电,其他相断电 #define Coil_DA1 A1=1;B1=0;C1=0;D1=1;/D相通电,其他相断电 #define Coil_A1 A1=1;B1=0;C1=0;D1=0;/A相通电,其他相断电 #define Coil_B1 A1=0;B1=1;C1=0;D1=0;/B相通电,其他相断电 #def

15、ine Coil_C1 A1=0;B1=0;C1=1;D1=0;/C相通电,其他相断电 #define Coil_D1 A1=0;B1=0;C1=0;D1=1;/D相通电,其他相断电 #define Coil_OFF A1=0;B1=0;C1=0;D1=0;/全部断电 char i; unsigned char temp,num,dire,ti,times; unsigned char code table=0123456789; unsigned char code Speed5=1,2,3,4,5; unsigned char code rad5=13,8,6,5,4; void dela

16、y(unsigned int z) unsigned int x,y; for(x=z;x>0;x-) for(y=120;y>0;y-); /*- uS延时函数 -*/ void DelayUs2x(unsigned char t) while(-t); /*- mS延时函数 -*/ void DelayMs(unsigned char t) while(t-) DelayUs2x(245); DelayUs2x(245); 8 /*- 判忙函数 -*/ bit LCD_Check_Busy(void) DataPort= 0xFF; RS_CLR; RW_SET; EN_CLR

17、; _nop_(); EN_SET; return (bit)(DataPort & 0x80); /*- 写入命令函数 -*/ void LCD_Write_Com(unsigned char com) while(LCD_Check_Busy(); /忙则等待 RS_CLR; RW_CLR; EN_SET; DataPort= com; _nop_(); EN_CLR; /*- 写入数据函数 -*/ void LCD_Write_Data(unsigned char Data) while(LCD_Check_Busy(); /忙则等待 RS_SET; RW_CLR; EN_SET

18、; DataPort= Data; _nop_(); EN_CLR; /*- 清屏函数 -*/ 9 void LCD_Clear(void) LCD_Write_Com(0x01); DelayMs(5); /*- 写入字符串函数 -*/ void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) if (y = 0) LCD_Write_Com(0x80 + x); else LCD_Write_Com(0xC0 + x); while (*s) LCD_Write_Data( *s); s +; /*- 初

19、始化函数 -*/ void LCD_Init(void) LCD_Write_Com(0x38); /*显示模式设置*/ DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); LCD_Write_Com(0x08); /*显示关闭*/ LCD_Write_Com(0x01); /*显示清屏*/ LCD_Write_Com(0x06); /*显示光标移动设置*/ DelayMs(5); LCD_Write_Com(0x0C); /*显示开及光标设置*/

20、/*- 10 显示变量 -*/ void display_var(unsigned char x) unsigned char shi,ge; shi=x%10000%1000%100/10; ge=x%10; LCD_Write_Data(tableshi); LCD_Write_Data(tablege); /*- 接后写入字符串函数 -*/ void LCD_Write_String_Follow(unsigned char *s) while (*s) LCD_Write_Data( *s); s +; /*- 定时器初始化子程序 -*/ void Init_Timer0(void)

21、TMOD |= 0x01; /使用模式1,16位定时器 TH0=0x00; /给定初值 TL0=0x00; EA=1; /总中断打开 ET0=1; /定时器中断打开 TR0=1; /定时器开关打开 PT0=1; /优先级打开 void zz() switch(ti) case 0:Coil_A1;ti+;break; case 1:Coil_AB1;ti+;break; case 2:Coil_B1;ti+;break; case 3:Coil_BC1;ti+;break; case 4:Coil_C1;ti+;break; case 5:Coil_CD1;ti+;break; case 6:

22、Coil_D1;ti+;break; 11 case 7:Coil_DA1;ti=0;break; default:break; void fz() switch(ti) case 0:Coil_A1;ti+;break; case 1:Coil_DA1;ti+;break; case 2:Coil_D1;ti+;break; case 3:Coil_CD1;ti+;break; case 4:Coil_C1;ti+;break; case 5:Coil_BC1;ti+;break; case 6:Coil_B1;ti+;break; case 7:Coil_AB1;ti=0;break; d

23、efault:break; void keyscan() if(Plus=0) delay(5); if(Plus=0) while(!Plus); if(i<4) i+; if(Slow=0) delay(5); if(Slow=0) while(!Slow); if(i>0) i-; if(Switch=0) delay(5); if(Switch=0) 12 while(!Switch); if(ET0) ET0=0; P1=0xff; else ET0=1; if(Direction=0) delay(5); if(Direction=0) while(!Direction

24、); dire=!dire; /*- 主函数 -*/ main() i=0; times=0; ti=0; Init_Timer0(); Coil_OFF WEI=0; /位锁存置0电平,防止LED亮的时候数码管亮 DUAN=1; P0=0; DUAN=0; /段锁存置0电平,防止LED亮的时候数码管亮 LCD_Init(); P3=0xff; dire=0; ET0=0; while(1) keyscan(); LCD_Clear(); LCD_Write_String(0,0,SPD:); if(ET0) if(!dire) LCD_Write_String_Follow(+); 13 e

25、lse LCD_Write_String_Follow(-); display_var(radi); LCD_Write_String_Follow(r/min); else LCD_Write_String_Follow(OFF); LCD_Write_Com(0xC0 + 5); DelayMs(250); /*- 定时器中断子程序 -*/ void Timer0_isr(void) interrupt 1 TH0=(65536-500)/256; TL0=(65536-500)%256; if(times=Speedi) times=0; if(dire) zz(); else fz(); else times+; 14

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1