利用ARM控制步进电机实验.ppt

上传人:人*** 文档编号:576063214 上传时间:2024-08-19 格式:PPT 页数:54 大小:8.46MB
返回 下载 相关 举报
利用ARM控制步进电机实验.ppt_第1页
第1页 / 共54页
利用ARM控制步进电机实验.ppt_第2页
第2页 / 共54页
利用ARM控制步进电机实验.ppt_第3页
第3页 / 共54页
利用ARM控制步进电机实验.ppt_第4页
第4页 / 共54页
利用ARM控制步进电机实验.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《利用ARM控制步进电机实验.ppt》由会员分享,可在线阅读,更多相关《利用ARM控制步进电机实验.ppt(54页珍藏版)》请在金锄头文库上搜索。

1、ARM 板控制步进电机杜建军 张国庆2008年5月 【单片机与嵌入式系统实验三单片机与嵌入式系统实验三】实验要求实验要求利用提供的ARM板编程控制步进电机的起停和正反转。转速要求在20100转/分。有能力的同学可以考虑实现步进电机的T形加减速。实验目的实验目的了解步进电机的工作原理了解步进电机驱动器的内部结构及工作原理熟悉ADS集成开发环境。了解使用ARM技术进行开发的基本流程熟悉ARM GPIO功能模块第一章第一章 步进电机步进电机 步进电机是一种作为控制用的特种电机,它的旋转是以固定的角度(称为“步距角”)一步一步运行的,其特点是没有积累误差(精度为 100% ),所以广泛应用于各种开环控

2、制。步进电机的运行要有一电子装置进行驱动,这种装置就是步进电机驱动器,它是把控制系统发出的脉冲信号转化为步进电机的角位移,或者说:控制系统每发一个脉冲信号,通过驱动器就使步进电机旋转一步距角。所以步进电机的转速与脉冲信号的频率成正比。虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。 右图是常州泽明自动化设备有限公司生产的57BYG型两相混合式步进电机。步进角: 相数:2电流:3AA 绿/A白B 红/B黑步进电机内部结构图步进电

3、机内部结构图步进电机转子步进电机转子为什么两部分的齿不对齐?步进电机的内部原理图步进电机的内部原理图怎样计算步距角?两个基本概念两个基本概念 步距角步距角:指每给一个电脉冲信号电动机转子所应转过的角度的理论值,步距角式中: 转子齿数 运行拍数,通常等于相数或相数的整数倍 即 电动机相数齿距角齿距角:相邻两齿中心线间的夹角,通常定子和转子具有相同的齿距角。齿距角第二章第二章 步进电机驱动器步进电机驱动器 步进电机不能直接接到直流电源上工作,而必须使用专用设备步进电动驱动器。步进电机驱动系统的性能,除与电机自身的性能有关外,也在很大程度上取决于驱动器的优劣。步进电机驱动器的主要构成如下图所示,一般

4、由环形分配器、信号处理级、推动级、驱动级等各部分组成,用于功率步进电机的驱动器还要有多种保护线路.环形分配器环形分配器 环形分配器用来接受来自控制器的CP脉冲,并按步进电机状态转换表要求的状态顺序产生各相导通或截止的信号。每来一个CP脉冲,环形分配器的输出转换一次。因此,步进电动机转速的高低、升速或降速、起动或停止都完全取决于CP脉冲的有无或频率。同时,环形分配器还必须接受控制器的方向信号,从而决定其输出的状态转换是按正序或者按反序转换,于是就决定了步进电动机的转向。接受CP脉冲和方向电平是环形分配器的最基本劝能。信号放大处理级信号放大处理级 从环形分配器输出的各相导通或截止的信号送入信号放大

5、处理级。信号放大的作用是将环形分配器输出信号加以放大变成足够大的信号送入推动级,这中间一般既需电压放大,也需电流放大。信号处理是实现信号的某些转换合成等功能,产生斩波、抑制等特殊功能的信号,从而产生特殊功能的驱动。本级还经常与各种保护电路、各种控制电路组合在一起,形成较高性能的驱动输出。推动级和保护级推动级和保护级 推动级的作用是将较小的信号加以放大.变成足以推动驱动级输入的较大信号。有时,推动级还承担电平转换的作用。 保护级的作用是保护驳动级的安全。一般可根据需要设置过电流保护,过热保护、过压保护、欠压保护等,有时还需要对输入信号进行监护,发现输入异常也提供保护动作, 实验中,我们使用的是常

6、州泽明自动化设备有限公司的WZM-2H057M型步进电机驱动器如右图。WZM-2H057MWZM-2H057M驱动器特点驱动器特点每相最大驱动器电流为3.0安培,且电流八档可调。细分数可选(1/2,1/5,1/10,1/20,1/40)。所有输入信号都经过光电隔离。电机的相电流为正弦波。电源:DC(24-40V)/3ACP: 步进脉冲信号DIR:方向信号,不接或接正顺时针转,接地逆时针。FREE:脱机电平信号OPTO:接开发板的输出电压正端A绿/A白B红/B黑 本驱动器是用驱动器上的拔盘开关来设定细分数及相电流的,根据面板的标注设定即可;请您在控制器频率允许的情况下,尽量选用高细分数;具体设置

7、方法请参考下表:拔盘开关设定up=0,down=1细分设定(位1、2、3)以0.9/1.8电机为例位123细分数步距角00020.900150.36010100.18011200.09100400.045位4,5 请保持在down位置! 电机相电流设定(位6,7,8)位678电流位678电流0000.5A1001.7A0011.0A1012.0A0101.3A1102.4A0111.5A1113.0A脱机电平信号脱机电平信号FREE: 当驱动器上电后,步进电机处于锁定状态(未施加CP脉冲时)或运行状态(施加CP脉冲时),但用户想手动调整电机而又不想关闭驱动器电源,怎么办呢?这时可以用到此信号。

8、当此信号起作用时(低电平有效),电机处于自由无力矩状态;当此信号为高电平或悬空不接时,取消脱机状态。此信号用户可选用,如果不需要此功能,此端不接即可。控制信号输入连接图控制信号输入连接图 本驱动器的输入信号共有三路,它们是:步进脉冲信号CP、方向电平信号DIR、脱机信号FREE。它们在驱动器内部分别通过270欧的限流电阻接入光耦的负输入端,且电路形式完全相同。OPTO端为三路信号的公共正端(三路光耦的正输入端),三路输入信号在驱动器内部接成共阳方式,所以OPTO端须接外部系统的VCC,如果VCC是+5V则可直接接入;如果VCC不是+5V则须外部另加限流电阻R,保证给驱动器内部光耦提供8-15m

9、A。如果输入电压超过5V,请参照表1,加装外接电阻R 限流。输入信号电压外部电阻(R)阻值直流5V不加外部电阻直流12V680欧姆直流24V1.8k驱动器控制信号内部接口示意图步进电机的微步(细分)控制步进电机的微步(细分)控制 步进电机在正常情况下,一个脉冲走1.8的样子,但是这个在低速的时候抖动就比较厉害,走走停停。于是便出现了带有细分功能的步进电机驱动器,有的细分值达到上万步,也就是给一个脉冲走1.810000度,非常精确。 要理解细分的原理首先要明白步进电机的工作原理:它是靠线圈的合成磁场把转子磁铁“吸”过去的。比如两个垂直的线圈(相差90度),分别通电可以依次得到相差90度角的磁场,

10、转子也就会被吸到对应的角度如果我们设计复杂些,给两个线圈同时通电,那就可以得到相差45度的磁场了再考虑得更复杂,一个通10,另一个通90,就会合成一个以9度为间隔的磁场了。 两个步进之间的角度不是按电流比例的,而是按cos,sin比例的。假设你需要让电机停在某步和下一步之间80%的地方,你需要给当前线圈通cos(0.8*/2)*I的电流,给下一步的线圈通sin(0.2*/2)*I 的电流。第三章第三章 ARMARM开发板简介开发板简介 EasyARM2131开发板是广州周立功公司设计的EasyARM系列开发套件之一,采用了PHILIPS公司基于ARM7TDMI-S 核、单电源供电、LQFP64

11、封装的LPC2131,具有JTAG仿真调试、ISP编程等功能。 EasyARM2131开发板功能框图EasyARM2131开发板元件布局图EasyARM2131EasyARM2131开发板跳线一览表开发板跳线一览表E Ea as sy yA AR RM M2 21 13 31 1 连连接接器器一一览览表表第四章第四章 ADSADS集成开发环境集成开发环境 ADS集成开发环境是ARM公司推出的ARM核微控制器集成开发工具。英文全称为ARM Developer Suite,成熟版本为ADS1.2。ADS1.2支持ARM10之前的所有ARM系列微控制器,支持软件调试及JTAG硬件仿真调试,支持汇编、

12、C、C+源程序,具有编译效率高、系统库功能强等特点,可以在Windows98、Windows XP、Windows2000以及RedHat Linux上运行。 ADS 1.2使用了CodeWarrior IDE集成开发环境,并集成了ARM汇编器、ARM的C/C+编译器、Thumb的C/C+编译器、ARM连接器,包含工程管理器、代码生成接口、语法敏感(对关键字以不同颜色显示)编辑器、源文件和类浏览器等等。CodeWarrior IDE集成开发环境的启动使用工程模版CodeWarriorCodeWarrior开发环境开发环境 生成生成HexHex文件文件 首先,选用工程的生成目标为DebugInF

13、LASH或RelIn FLASH,这样工程连接时将会使用mem_c.scf或mem_a.scf分散加载描述文件,生成可固化到FLASH中的二进制代码。 然后,打开工程的DebugInFLASH Settings窗口,在Target Settings项中设置Post-linker选取ARM fromELF如下图所示。 接着,在ARM formELF项中设置输出文件类型,如设置为Intel 32 bit Hex,然后设置输出文件名,也可指定目录,若不指定目录,则生成文件存放在当前工程的目录中(如下图所示)。重新编译连接,编译通过即会生成指定的输出文件(比如:leddisp.hex)。用用ISPIS

14、P软件下软件下载载 生成HEX文件后,接下来使用串口延长线连接PC串口(如COM1)和EasyARM2131开发板(UART0),并将开发板上的ISP(JP1)跳线短接。打开LPC2000 Flash Utility软件,并设置串口、波特率、系统晶振(注意,晶振频率项单位为kHz)等,如下图所示。 设置好参数后,点击Read Device ID按钮,读取芯片ID号,若读取成功(状态栏显示“Read Part ID Successfully! ”),则表明ISP连接成功。否则,当出错提示为复位LPC2000信息时, 首先按EasyARM2131开发板上的RST键复位,然后再确定提示,如下图所示。

15、 连接成功后,先使用Erase按钮擦除选定扇区的FLASH,然后在Filename项中输入要下载的HEX文件全名,点击Upload to Flash按钮即开始下载程序。程序固化后,将ISP(JP1)跳线断开,重新复位系统即可运行程序。第五章第五章 GPIOGPIO LPC2131具有多达47个通用I/O口(GPIO,General Purpose I/O ports),分别为P031:0、P131:16,其中,P0.24未用,P0.31仅为输出口。由于口线与其它功能复用,因而需要进行相关的管脚连接模块(PINSEL0、PINSEL1、PINSEL2)选择连接GPIO,然后通过IODIR进行输入

16、/输出属性设置后才能操作。 当管脚选择GPIO功能时,有3个寄存器用于控制GPIO的使用,IOSET、IOCLR和IOPIN。IOSET用于口线置1,而IOCLR则用于口线清零,IOPIN则反映当前IO口的状态,读回IOSET则反映当前IO口设定状态。特性:特性:单个位的方向控制; 单独控制输出的置位和清零; 所有I/O口在复位后默认为输入。 将相应管脚的PINSELn位设置为00即选择GPIO功能;大部分管脚复位后默认为GPIO LPC2131有2个32位的通用I/O口。PORT0使用了30个管脚,PORT1有多达16个管脚可用作GPIO功能。PORT0和PORT1由2组(4个)寄存器控制,

17、如下表所示。1 1GPIOGPIO管脚值寄存器管脚值寄存器GPIO Pin Value Register GPIO Pin Value Register (IO0PIN - 0xE0028000,IO1PIN IO0PIN - 0xE0028000,IO1PIN 0xE0028010 0xE0028010) IOPIN寄存器提供GPIO管脚的值,它反映了外部环境对管脚的影响,不能反映非GPIO配置管脚的活动,因此不能使用IOPIN寄存器来监控非GPIO配置管脚。2 2GPIOGPIO输出置位寄存器输出置位寄存器GPIO Output Set Register GPIO Output Set R

18、egister (IO0SET - 0xE0028004IO0SET - 0xE0028004,IO1SET IO1SET 0xE0028014 0xE0028014) 当管脚配置为GPIO输出模式时,可使用该寄存器从管脚输出高电平。写入1使对应管脚输出高电平,写入0无效。如果一个管脚被配置为输入或第二功能,写IOSET无效。 读IOSET寄存器返回GPIO输出寄存器中的值。该值由前一次对IOSET和IOCLR(或IOPIN)的写操作决定,不反映任何外部环境对管脚的影响。3 3GPIOGPIO输出清零寄存器输出清零寄存器GPIO Output Clear GPIO Output Clear R

19、egister Register (IO0CLR - 0xE002800CIO0CLR - 0xE002800C,IO1CLR IO1CLR 0xE002801C0xE002801C) 当管脚配置为GPIO输出模式时,可使用该寄存器从管脚输出低电平。写入1使对应管脚输出低电平并清零IOSET寄存器中相应的位,写入0无效。如果一个管脚被配置为输入或第二功能,写IOCLR无效。4 4 GPIOGPIO方向寄存器方向寄存器GPIO Direction Register GPIO Direction Register (IO0DIR - 0xE0028008IO0DIR - 0xE0028008,IO

20、1DIR IO1DIR 0xE00280180xE0028018) 当管脚配置为GPIO模式时,可使用该寄存器控制管脚的方向。 只有当管脚选择GPIO时,IODIR设置才有意义。使用示例使用示例 将管脚用作GPIO,需要先设置管脚连接(PINSEL),然后再根据应用设置方向(IODIR),流程如下图 所示。1. 1. 设置设置P0.0P0.0口为输出模口为输出模式式如程序清单所示为设置P0.0口为GPIO输出模式的代码。 程序清单:设置P0.0为输出模式PINSEL0 = 0x00000000; / P0.0选择GPIO功能IO0DIR = 0x00000001; / 设置P0.0为输出模式2

21、. GPIO2. GPIO读写操作读写操作 如程序清单所示,程序将会读取P0.7P0.4脚值,然后从P0.3P0.0输出。程序清单: GPIO读写操作 bak = IO0PIN; / 读取引脚上的值IO0CLR = 0x0000000F; / 将P0.0P0.3输出0 IO0SET = (bak & 0x000000F0) 4; / 设置P0.0P0.3输出(为 1的位输 出1) 3. 3. 取反取反P0.0P0.0的输的输出出 如程序清单所示,程序先从IO0SET读取当前输出寄器的值,而不是去读引脚上的电平值(即读IO0PIN),然后判断P0.0的输出是高电平还是低电平,再控制输出相反。 程

22、序清单:取反P0.0的输出 if(IO0SET&0x00000001) = 0) IO0SET = 0x00000001; else IO0CLR = 0x00000001;GPIOGPIO输出实验蜂鸣器控制输出实验蜂鸣器控制 在EasyARM2131开发板上,接有一个蜂鸣器,由P0.7控制,通过跳线JP11选择连接。蜂鸣器控制电路如图所示。 电路参数请参考硬件原理部分的说明,如果跳线JP11选择蜂鸣器,当P0.7输出低电平时,蜂鸣器鸣叫,当P0.7输出高电平则停止鸣叫。 实验利用P0.7的输出功能,控制蜂鸣器鸣叫。程序设置PINSEL0使P0.7连接GPIO,并通过IO0DIR将其设置为输出状态,然后通过IO0CLR和IO0SET清零和置位P0.7口,控制蜂鸣器,流程图见下图 ,代码如程序清单所示。#include config.h #define BEEP 1 7 / P0.7控制蜂鸣器,低电平蜂鸣 /* 函数名称 :DelayNS() * 函数功能:长软件延时 * 入口参数 :dly 延时参数,值越 大,延时越久 * 出口参数 :无*/参考资料参考资料深入浅出ARM7LPC213x_214x(上册)ARM嵌入式系统开发-软件设计与优化步进电机及其驱动控制系统

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号