步进电机驱动模块设计(共11页)_第1页
步进电机驱动模块设计(共11页)_第2页
步进电机驱动模块设计(共11页)_第3页
步进电机驱动模块设计(共11页)_第4页
步进电机驱动模块设计(共11页)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、电机驱动模块设计步进电机驱动(q dn)模块设计内容(nirng):1步进电机及其控制(kngzh)原理2 步进电机驱动电路设计(经Proteus测试)3 步进电机驱动程序设计附录 步进电机驱动程序1 步进电机及其控制原理步进电机是一种将电脉冲转化为角位移的数字控制执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角” ),它的旋转是以固定的角度逐步运行的【19】。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的,同时可以通过控制脉冲频率来控制电机转动速度和加速度,从而达到调速的目的。步进电机由于没有误差累积的特点而广泛应用于各种开环

2、控制。目前比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)等【20】。反应式步进电机一般为三相,可实现大转矩输出,步进角一般为1.5,但噪声和振动都很大。永磁式步进电机一般为两相,转矩和体积较小,步进角一般为7.5或15。混合式步进电机是混合了永磁式和反应式的优点。它又分为两相和五相,两相步进角一般为1.8而五相步进角一般为0.72。这种步进电机的应用最为广泛。步进电机必须使用步进电机驱动器才能工作。驱动器针对每一个步进脉冲,按一定的规律向电机各相绕组通电(励磁),以产生必要的转矩,驱动转子运动。步进电机系统的性能除与电机自身的性能有关外,还与驱动器

3、的性能有很大关系【21】。步进电机、驱动器和控制器构成了步进电机控制系统不可分割的三大部分,典型的步进电机控制系统如图4-1所示。微控制器功率放大器脉冲分配器步进电机图4-1 步进电机(dinj)控制系统微控制器产生控制信号和脉冲信号,脉冲分配器将微控制器产生的信号脉冲转换成有一定逻辑关系的环形脉冲,功率放大(fngd)器将脉冲分配器输出的环形脉冲放大,用于控制步进电机的转动。步进电机(dinj)的控制方案常用的有以下三种【22】:(1)分立控制方案所谓分立控制就是用电阻、电容、电感等一些元件的组合实现一定的控制功能。传统的控制方法采用电阻、电容等这些分立元件与单片机的直接相连接,而这样就有如

4、下弊端:a.整个开关系统的可靠性得不到保证,不利于长期反复使用。b.由分立元件设计的开关触点容易发生氧化,缩短了开关的使用寿命。c.过多使用分立元件,浪费大量的单片机I/O资源,降低了CPU的利用率。d.大量的使用分立元件,将影响整个系统的读取速度,不利于实时控制。(2)单个集成芯片控制方案随着制作工艺的发展,驱动电路部分已经做了很大的改进,开始由集成芯片代替分立元件的控制方案,较分立元件控制方案而言单个集成芯片的可靠性、读取速度、CPU的利用率都有了很大的提高,但是对于程序编写并没有太大方便性可言。(3)联合集成芯片控制方案使用联合集成电路芯片不仅可以避免分立元件控制方案的弊端,又可以大大减

5、化程序。经过以上的比较,本轮椅床的步进电机控制方案选择联合集成芯片控制。2 步进电机驱动电路设计 由1节步进电机驱动选择联合集成芯片控制方案,其抗干扰性强,非常适合作为小功率步进电机的专用驱动芯片。在本设计中,选用了L297和L298集成电路作为步进电机的驱动芯片。 L297和L298可以方便(fngbin)的组成步进电机驱动控制器,其中L297是步进电机(dinj)控制器(包括环形分配器)【23】。L297适用于双极性两相步进电机或单极性四相步进电机的控制。此器件的特性是只需要时钟、方向和模式输入信号,相位是由内部(nib)产生的,因此可以减轻微处理器和程序设计的负担。L298是一种专用的步

6、进电机驱动芯片,内部为双H桥结构,L298的H桥驱动器包含四个各自独立的推挽式驱动器(即四个半桥),可单独使用。用L297输出的信号可控制L298双H桥驱动集成电路,用来驱动电压为56V,每相电流为4A以下的步进电机。L297和L298组成的步进电机控制电路具有可靠性高、体积小、成本低和节约微处理器资源等优点。本设计的步进电机驱动原理图如图4-2所示。图4-2 步进电机驱动电路图 L297是具有20个引脚的双列直插式塑胶封装的器件,采用固定斩波频率的PWM恒流斩波方式工作。L297主要由译码器、两个固定斩波频率的PWM恒流斩波器及输出逻辑控制组成。L297的核心是脉冲分配器,它可产生三种相序,

7、对应三种不同的工作方式,即半步方式(HALF STEP);基本步距(FULL STEP,整步)一相激励方式;基本步距两相激励方式。译码器受L297的方向输入引脚信号/和半步方式/整部方式输入引脚信号/所控制。译码器内部是一个3bit的计数器,加上一些组合逻辑,可产生每周期8步的格雷码时序信号,三种方式的驱动相序都可以根据译码器输出的格雷码的顺序产生。格雷码的顺序直接与四相八拍(半步方式)相符,只要在19脚输入一个高电平即可得到半步方式相序。通过交替跳过八步顺序中的状态就可得到全步工作方式,此时在19脚输入一个低电平,即可根据译码器的状态得到单四拍或双四拍工作方式。图4-3 半步方式(fngsh

8、)相序图 步进电机(dinj)驱动器与ARM微处理器的接口(ji ku)如图4-2所示,采用ARM处理器的I/O口控制电机驱动器。GPG5端口接/引脚,控制电机的旋转方向。GPG6端口接引脚,控制步进时钟脉冲。GPG7端口接/引脚,当GPG7为高电平时,HALF有效,四相八拍;为低电平时,FULL有效,四相四拍。GPG8端口接引脚,当GPG8端口输出为低电平时,译码器恢复初始状态。在本设计中,轮椅床采用步进电机的型号为35BYJ46,为四相步进电机,并采用四相八拍的工作方式。利用Proteus对步进电机驱动电路进行测试,由于Proteus只支持ARM7系列的少数芯片(如LPC2124等),在这

9、里利用时钟激励源代替S3C2410的I/O口输出时钟控制信号CLOCK,其他控制信号的输入由按键完成,旨在测试该驱动电路设计的正确性。步进电机驱动电路仿真原理图4-4如所示,在半步工作模态下电机每周期完成8个动作如图4-5所示。图4-4 步进电机(dinj)驱动电路仿真原理图 图4-5 步进电机(dinj)工作状态图(半步顺时针)3 步进电机(dinj)驱动程序设计轮椅床的程序采用C语言编写,相对汇编语言编写具有程序清晰、可读性强、更易于模块化编写。整个轮椅床的程序分为主程序、步进电机驱动程序和传感器驱动程序三部分。其中主程序非常简单,只需调用目标板初始化程序sys_init(void)即可完

10、成目标板的初始化,并使用一个while循环语句等待。主程序流程图如图4-6所示。开始定时器1、外部中断0初始化驱动芯片初始设置WHILE (1)键盘操作配置、控制步进电机运行图4-6 主程序流程图目标(mbio)板初始化程序:void sys_init(void) MMU_Init( ); / 存储器管理(gunl)单元初始化 ChangeClockDivider(1,1); / FCLK:HCLK:PCLK=1:2:4 ChangeMpllValue(0 xa1,0 x3,0 x1); / FCLK=202.8MHz Port_Init( ); Timer1_init( ); Timer1I

11、NT_Init( ); ENT0_init( ); ENT0INT_Init( );由4.2节步进电机(dinj)驱动芯片与S3C2410的I/O口连接,可知GPG6须发送步进控制脉冲。方案采用定时中断的方法,即每半个周期产生一次中断,在中断服务子程序中使GPG6取反。定时器中断流程图如图4-7所示。在目标板初始化程序中已设定PCLK=1/4FCLK=50MHz,半个周期为1s.分割PCLK :rTCFK0=255;rTCFK1=04;rTCMPB1=0 x00; / 定时器比较(bjio)寄存器设置rTCNTB1=48828; / 定时器计数值(shz)缓冲寄存器设置,rTCNTB1=(50

12、000000/4/256)NOYES定时器1初始化100ms定时启动定时器1定时器1初始化100ms定时产生一个控制脉冲100ms定时是否到?图4-7 定时器中断(zhngdun)程序流程图步进电机的控制通过外部中断0服务子程序完成。步进电机运行控制程序流程图如图4-8所示。转向停止启动外部中断0初始化GPF0=0? GPF1=0? GPF2=0?停止发送脉冲发送脉冲GPG5取反外部中断0初始化图4-8 步进电机运行控制程序流程图附录(fl)步进电机(dinj)驱动程序:/引入头文件#include2410 ADDR.h#include2410 LIB.h#includedef.h#inclu

13、de/主程序void Main(void)sys_init();while(1);/定时器1初始化void Timer1_init(void)rGPGCON=rGPGCON & 0 xfff0ffff | 0 x00050000;/配置(pizh)GPG口为信号输出rGPGDAT=rGPFDAT | 0 x300;rTCFG0=255;rTCFG1=04;rTCNTB1=4883;/定时器计数值缓冲寄存器rTCMPB1=0 x00;/定时比较缓冲寄存器rTCON=(111)|(19)|(08);rTCON=(111)|(09)|(18);/定时器1中断(zhngdun)服务子程序int fla

14、g;void_irq Timer1_ISR(void)if(flag=0) rGPGDAT=rGPGDAT & 0 xeff | 0 x200;/GPG6输出(shch)一个高电平 flag=1; else rGPGDAT=rGPGDAT & 0 xdff | Ox100;/GPG输出(shch)一个低电平 flag=0; rSRCPND |=BIT_TIMER1;rINTPND |=BIT_TIMER1;/定时器1中断初始化程序void Timer1INT_Init(void)if(rINTPND & BIT_TIMER1) rSRCPND |=BIT_TIMER1; pISR_TIMER1

15、=(int)Timer_ISR;rINTMSK &=BIT_TIMER1;/开中断/外部中断0中断服务子程序void_irq Eint0_ISR(void)int status;rGPGCON=rGPGCON & 0 xfff0ffff | 0 x00050000;/配置(pizh)GPG口为信号(xnho)输出if(GPF1=0) status=1;/开启(kiq)if(GPF2=0) status=2;/停止if(GPF3=0) status=3;/换向switch(status)/判断步进电机控制状态 case1:/启动 Timer1_init();/定时器1初始化 Timer1INT_Init();/定时器1中断开启 break; case2:/停止 rGPGDAT=rGPGDAT & 0 xf7f | 0 x080; break; case3:/换向 rGPGDAT=rGPGDAT & 0 xfef | 0 x010; break;/初始化程序void sys_init(void)ChangeClockDivider(1,1);/FCLK:HCLK:PCLK=4:2:1ChangeMPllValue(0 xa1,0 x2,0 x1);/FCLK=202.8MHzTimer1

温馨提示

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

评论

0/150

提交评论