利用ARM控制步进电机实验_第1页
利用ARM控制步进电机实验_第2页
利用ARM控制步进电机实验_第3页
利用ARM控制步进电机实验_第4页
利用ARM控制步进电机实验_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

ARM板控制步进电机杜建军张国庆2008年5月【单片机与嵌入式系统实验三】实验要求·利用提供的ARM板编程控制步进电机的起停和正反转。转速要求在20~100转/分。·有能力的同学可以考虑实现步进电机的T形加减速。实验目的了解步进电机的工作原理了解步进电机驱动器的内部结构及工作原理熟悉ADS集成开发环境。了解使用ARM技术进行开发的基本流程熟悉ARM

GPIO功能模块第一章

步进电机步进电机是一种作为控制用的特种电机,它的旋转是以固定的角度(称为“步距角”)一步一步运行的,其特点是没有积累误差(精度为100%),所以广泛应用于各种开环控制。步进电机的运行要有一电子装置进行驱动,这种装置就是步进电机驱动器,它是把控制系统发出的脉冲信号转化为步进电机的角位移,或者说:控制系统每发一个脉冲信号,通过驱动器就使步进电机旋转一步距角。所以步进电机的转速与脉冲信号的频率成正比。虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。右图是常州泽明自动化设备有限公司生产的57BYG型两相混合式步进电机。步进角:相数:2电流:3AA——绿/A——白B——红/B——黑步进电机内部结构图步进电机转子为什么两部分的齿不对齐?步进电机的内部原理图怎样计算步距角?两个基本概念步距角:指每给一个电脉冲信号电动机转子所应转过的角度的理论值,步距角式中: ——转子齿数——运行拍数,通常等于相数或相数的整数倍即——电动机相数齿距角:相邻两齿中心线间的夹角,通常定子和转子具有相同的齿距角。齿距角第二章

步进电机驱动器步进电机不能直接接到直流电源上工作,而必须使用专用设备——步进电动驱动器。步进电机驱动系统的性能,除与电机自身的性能有关外,也在很大程度上取决于驱动器的优劣。步进电机驱动器的主要构成如下图所示,一般由环形分配器、信号处理级、推动级、驱动级等各部分组成,用于功率步进电机的驱动器还要有多种保护线路.环形分配器环形分配器用来接受来自控制器的CP脉冲,并按步进电机状态转换表要求的状态顺序产生各相导通或截止的信号。每来一个CP脉冲,环形分配器的输出转换一次。因此,步进电动机转速的高低、升速或降速、起动或停止都完全取决于CP脉冲的有无或频率。同时,环形分配器还必须接受控制器的方向信号,从而决定其输出的状态转换是按正序或者按反序转换,于是就决定了步进电动机的转向。接受CP脉冲和方向电平是环形分配器的最基本劝能。信号放大处理级从环形分配器输出的各相导通或截止的信号送入信号放大处理级。信号放大的作用是将环形分配器输出信号加以放大变成足够大的信号送入推动级,这中间一般既需电压放大,也需电流放大。信号处理是实现信号的某些转换合成等功能,产生斩波、抑制等特殊功能的信号,从而产生特殊功能的驱动。本级还经常与各种保护电路、各种控制电路组合在一起,形成较高性能的驱动输出。推动级和保护级推动级的作用是将较小的信号加以放大.变成足以推动驱动级输入的较大信号。有时,推动级还承担电平转换的作用。保护级的作用是保护驳动级的安全。一般可根据需要设置过电流保护,过热保护、过压保护、欠压保护等,有时还需要对输入信号进行监护,发现输入异常也提供保护动作,实验中,我们使用的是常州泽明自动化设备有限公司的WZM-2H057M型步进电机驱动器如右图。WZM-2H057M驱动器特点每相最大驱动器电流为3.0安培,且电流八档可调。细分数可选(1/2,1/5,1/10,1/20,1/40)。所有输入信号都经过光电隔离。电机的相电流为正弦波。电源:DC(24-40V)/3ACP:步进脉冲信号DIR:方向信号,不接或接正顺时针转,接地逆时针。FREE:脱机电平信号OPTO:接开发板的输出电压正端A——绿/A——白B——红/B——黑本驱动器是用驱动器上的拔盘开关来设定细分数及相电流的,根据面板的标注设定即可;请您在控制器频率允许的情况下 方法请参考下表:拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置拔,盘尽开关量设选定u用p=0,高dow细n=1分数;具体设置电机相电流设定(位6,7,8)位678电流位678电流0000.5A1001.7A0011.0A1012.0A0101.3A1102.4A0111.5A1113.0A脱机电平信号FREE:当驱动器上电后,步进电机处于锁定状态(未施加CP脉冲时)或运行状态(施加CP脉冲时),但用户想手动调整电机而又不想关闭驱动器电源,怎么办呢?这时可以用到此信号。当此信号起作用时(低电平有效),电机处于自由无力矩状态;当此信号为高电平或悬空不接时,取消脱机状态。此信号用户可选用,如果不需要此功能,此端不接即可。控制信号输入连接图本驱动器的输入信号共有三路,它们是:步进脉冲信号CP、方向电平信号DIR、脱机信号FREE。它们在驱动器内部分别通过270欧的限流电阻接入光耦的负输入端,且电路形式完全相同。OPTO端为三路信号的公共正端(三路光耦的正输入端),三路输入信号在驱动器内部接成共阳方式,所以OPTO端须接外部系统的VCC,如果VCC是+5V则可直接接入;如果VCC不是+5V则须外部另加限流电阻R,保证给驱动器内部光耦提供8-15mA。·如果输入电压超过5V,请参照表1,加装外接电阻R限流。输入信号电压外部电阻(R)阻值直流5V不加外部电阻直流12V680欧姆直流24V1.8k驱动器控制信号内部接口示意图步进电机的微步(细分)控制步进电机在正常情况下,一个脉冲走1.8°的样子,但是这个在低速的时候抖动就比较厉害,走走停停。于是便出现了带有细分功能的步进电机驱动器,有的细分值达到上万步,也就是给一个脉冲走1.8÷10000度,非常精确。要理解细分的原理首先要明白步进电机的工作原理:它是靠线圈的合成磁场把转子磁铁“吸”过去的。比如两个垂直的线圈(相差90度),分别通电可以依次得到相差90度角的磁场,转子也就会被吸到对应的角度如果我们设计复杂些,给两个线圈同时通电,那就可以得到相差45度的磁场了再考虑得更复杂,一个通10%,另一个通90%,就会合成一个以9度为间隔的磁场了。· 两个步进之间的角度不是按电流比例的,而是按cos,sin比例的。假设你需要让电机停在某步和下一步之间80%的地方,你需要给当前线圈通cos(0.8*π/2)*I的电流,给下一步的线圈通sin(0.2*π/2)*I的电流。第三章ARM开发板简介EasyARM2131开发板是广州周立功公司设计的EasyARM系列开发套件之一,采用了PHILIPS公司基于ARM7TDMI-S核、单电源供电、LQFP64封装的LPC2131,具有JTAG仿真调试、ISP编程等功能。EasyARM2131开发板功能框图EasyARM2131开发板元件布局图EasyARM2131开发板跳线一览表ARM2131连接器一览表第四章ADS集成开发环境ADS集成开发环境是ARM公司推出的ARM核微控制器集成开发工具。英文全称为ARMDeveloperSuite,成熟版本为ADS1.2。ADS1.2支持ARM10之前的所有ARM系列微控制器,支持软件调试及JTAG硬件仿真调试,支持汇编、C.C++源程序,具有编译效率高、系统库功能强等特点,可以在Windows98、WindowsXP、Windows2000以及RedHatLinux上运行。ADS1.2使用了CodeWarriorIDE集成开发环境,并集成了ARM汇编器、ARM的C/C++编译器、Thumb的C/C++编译器、ARM连接器,包含工程管理器、代码生成接口、语法敏感(对关键字以不同颜色显示)编辑器、源文件和类浏览器等等。CodeWarrior

IDE集成开发环境的启动使用工程模版CodeWarrior开发环境生成Hex文件首先,选用工程的生成目标为DebugInFLASH或RelInFLASH,这样工程连接时将会使用mem_c.scf或mem_a.scf分散加载描述文件,生成可固化到FLASH中的二进制代码。然后,打开工程的DebugInFLASHSettings窗口,在TargetSettings项中设置Post-linker选取ARMfromELF如下图所示。接着,在ARMformELF项中设置输出文件类型,如设置为Intel32bitHex,然后设置输出文件名,也可指定目录,若不指定目录,则生成文件存放在当前工程的目录中(如下图所示)。重新编译连接,编译通过即会生成指定的输出文件(比如:leddisp.hex)。用ISP软件下载生成HEX文件后,接下来使用串口延长线连接PC串口(如COM1)和EasyARM2131开发板(UART0),并将开发板上的ISP(JP1)跳线短接。打开LPC2000FlashUtility软件,并设置串口、波特率、系统晶振(注意,晶振频率项单位为kHz)等,如下图所示。设置好参数后,点击ReadDeviceID按钮,读取芯片ID号,若读取成功(状态栏显示“ReadPartIDSuccessfully!”),则ISP连接成功。否则,当出错提示为复位LPC2000信息时,首先按EasyARM2131开发板上的RST键复位,然后再确定提示,如下图所示。连接成功后,先使用Erase按钮擦除选定扇区的FLASH,然后在Filename项中输入要下载的HEX文件全名,点击UploadtoFlash按钮即开始下载程序。程序固化后,将ISP(JP1)跳线断开,重新复位系统即可运行程序。第五章GPIOLPC2131具有多达47个通用I/O口(GPIO,GeneralPurposeI/Oports),分别为P0[31:0]、P1[31:16],其中,P0.24未用P0.31仅为输出口。由于口线与其它功能复用,因而需要进行相关的管脚连接模块(PINSEL0、PINSEL1.PINSEL2)选择连接GPIO,然后通过IODIR进行输入/输出属性设置后才能操作。当管脚选择GPIO功能时,有3个寄存器用于控制GPIO的使用,IOSET、IOCLR和IOPIN。IOSET用于口线置1,而IOCLR则用于口线清零,IOPIN则反映当前IO口的状态,读回IOSET则反映当前IO口设定状态。特性:单个位的方向控制;单独控制输出的置位和清零;所有I/O口在复位后默认为输入。将相应管脚的PINSELn位设置为00即选择GPIO功能;大部分管脚复位后默认为GPIOLPC2131有2个32位的通用I/O口。PORT0使用了30个管脚,PORT1有多达16个管脚可用作GPIO功能。PORT0和PORT1由2组(4个)寄存器控制,如下表所示。1.GPIO管脚值寄存器-GPIOPinValueRegister(IO0PIN-0xE0028000,IO1PIN–0xE0028010)IOPIN寄存器提供GPIO管脚的值,它反映了外部环境对管脚的影响,不能反映非GPIO配置管脚的活动,因此不能使用IOPIN寄存器来监控非GPIO配置管脚。2.GPIO输出置位寄存器-GPIOOutputSetRegister(IO0SET-0xE0028004,IO1SET–0xE0028014)当管脚配置为GPIO输出模式时,可使用该寄存器从管脚输出高电平。写入1使对应管脚输出高电平,写入0无效。如果一个管脚被配置为输入或第二功能,写IOSET无效。读IOSET寄存器返回GPIO输出寄存器中的值。该值由前一次对IOSET和IOCLR(或IOPIN)的写操作决定,不反映任何外部环境对管脚的影响。3.GPIO输出清零寄存器-GPIOOutputClearRegister(IO0CLR-0xE002800C,IO1CLR–0xE002801C)当管脚配置为GPIO输出模式时,可使用该寄存器从管脚输出低电平。写入1使对应管脚输出低电平并清零IOSET寄存器中相应的位,写入0无效。如果一个管脚被配置为输入或第二功能,写IOCLR无效。4.GPIO方向寄存器-GPIODirectionRegister(IO0DIR-0xE0028008,IO1DIR–0xE0028018)当管脚配置为GPIO模式时,可使用该寄存器控制管脚的方向。只有当管脚选择GPIO时,IODIR设置才有意义。使用示· 将例管脚用作GPIO,需要先设置管脚连接(PINSEL),然后再根据应用设置方向(IODIR),流程如下图所示。1.设置P0.0口为输出模式如程序清单所示为设置P0.0口为GPIO输出模式的代码。程序清单:设置P0.0为输出模式PINSEL0

=

0x00000000;IO0DIR

=

0x00000001;//P0.0选择GPIO功能//设置P0.0为输出模式2.GPIO读写操作如程序清单所示,程序将会读取P0.7~P0.4脚值,然后从P0.3~P0.0输出。程序清单:GPIO读写操作bak=IO0PIN;IO0CLR=0x0000000F;//读取引脚上的值//将P0.0~P0.3输出0IO0SET=(bak

&

0x000000F0)>>4;//设置P0.0~P0.3输出(为1的位输出1)3

温馨提示

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

评论

0/150

提交评论