《嵌入式电机转动控制实验.pdf》由会员分享,可在线阅读,更多相关《嵌入式电机转动控制实验.pdf(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 嵌入式系统设计与实例开发(2011-2012 学年第 2 学期)实 验 报 告 实验五 电机转动控制实验-c 语言实现方法 电机转动控制实验C 语言实现方法 一、实验目的 1熟悉 ARM 本身自带的六路即三对 PWM,掌握相应寄存器的配置。2编程实现 ARM 系统的 PWM 输出和 I/O 输出,前者用于控制直流电机,后者用于控制步进电机。3 了解直流电机和步进电机的工作原理,学会用软件的方法实现步进电机的脉冲分配,即用软件的方法代替硬件的脉冲分配器。4掌握带有 PWM 和 I/O 的 CPU 编程实现其相应功能的主要方法。二、实验内容 学习步进电机和直流电机的工作原理,了解实现两个电机转动
2、对于系统的软件和硬件要求。学习 ARM 知识,掌握 PWM 的生成方法,同时也要掌握 I/O 的控制方法。1编程实现 ARM 芯片的一对 PWM 输出用于控制直流电机的转动,通过 A/D 旋钮控制其正反转及转速。2 编程实现 ARM 的四路 I/O 通道实现环形脉冲分配用于控制步进电机的转动,通过 A/D旋钮转角控制步进电机的转角。3通过超级终端来控制直流电机与步进电机的切换。三、预备知识 1、用 ARM SDT 或集成开发环境,编写和调试程序的基本过程。2、ARM 应用程序的框架结构。3、会使用 Source Insight 3 编辑 C 语言源程序。4、掌握通过 ARM 自带的 A/D 转
3、换器的使用。5、了解直流电机的基本原理。6、了解步进电机的基本原理,掌握环形脉冲分配的方法。四、实验设备及工具 硬件:ARM 嵌入式开发平台、用于 ARM7TDMI 的 JTAG 仿真器、PC 机 Pentium100 以上。软件:PC 机操作系统 win98、Win2000 或 WinXP、ARM SDT 或集成开发环境、仿真器驱动程序、超级终端通讯程序。五、实验原理 1直流电机 1)直流电动机的 PWM 电路原理 晶体管的导通时间也被称为导通角,若改变调制晶体管的开与关的时间,也就是说通过改变导通角的大小,如图 2-22 所示,来改变加在负载上的平均电压的大小,以实现对电动机的变速控制,称
4、为脉宽调制(PWM)变速控制。在 PWM 变速控制中,系统采用直流电源,放大器的频率是固定,变速控制通过调节脉宽来实现。构成 PWM 的功率转换电路或者采用H桥式驱动,或者采用 T式驱动。由于T式电路要求双电源供电,而且功率晶体管承受的反向电压为电源电压的两倍。因此只适用于小功率低电压的电动机系统。而H桥式驱动电路只需一个电源,功率晶体管的耐压相对要求也低些,所以应用得较广泛,尤其用在耐高压的电动机系统中。图 2-22 脉宽调制(PWM)变速原理 2)直流电动机的 PWM 等效电路 如图 2-23 所示,是一个直流电动机的 PWM 控制电路的等效电路。在这个等效电路中,传送到负载(电动机)上的
5、功率值决定于开关频率、导通角度及负载电感的大小。开关频率的大小主要和所用功率器件的种类有关,对于双极结型晶体管(GTR),一般为lkHz 至 5kHz,小功率时(100W,5A 以下)可以取高些,这决定于晶体管的特性。对于绝缘栅双极晶体管(IGBT),一般为 5kHz 至 l2kHz;对于场效应晶体管(MOSFET),频率可高达 2OkHz。另外,开关频率还和电动机电感有关,电感小的应该取得高些。a)等效电路 b)PWM 电路中电流和电压波讨论 图 2-23 直流电机 PWM 控制 当接通电源时,电动机两端加上电压 UP,电动机储能,电流增加,当电源中断时,电枢电感所储的能量通过续流二极管 V
6、D 继续流动,而储藏的能量呈下降的趋势。除功率值以外,电枢电流的脉动量也与电动机的转速无关,仅与开关周期、正向导通时间及电机的电磁时间常数有关。3)直流电动机 PWM 电路举例 图 2-24 为直流电动机 PWM 电路的一个例子。它属于H桥式双极模式 PWM 电路。图 2-24 直流电动机 PWM 电路举例 电路主要由四部分组成,即三角波形成电路、脉宽调制电路、信号延迟及信号分配电 路和功率电路。电路中各点波形如图 2-25 所示。其中信号延迟电路是为了防止共态直通而设置的。一般延迟时间调整在(1030)ps 之内,根据晶体管特性而定。其原理简单叙述如下:功率电路主要由四个功率晶体管和四个续流
7、二极管组成。四个功率晶体管分为两组,V1与 V4、V2 与 V3 分别为一组,同一组的晶体管同时导通,同时关断。基极的驱动信号 Ub1=Ub2,Ub3=Ub4。其工作过程为:在 t1t2 期间,Ub1 0 与 Ub4 0,V1 与 V4 导通,V2 与 V3 截止,电枢电流沿回路 l 流通。在 t2 T+t1期间,Ub1 0 与 Ub4 0 与 U b 3 0但此时由于电枢电感储藏着能量,将维持电流在原来的方向上流动,此时电流沿回路 2 流通;经过跨接于 V2 与 V3 上的续流二极管 VD4、VD5。受二极管正向压降的限制,V2 与 V3 不能导通。T+t1之后,重复前面的过程。反向运转时,
8、具有相似的过程。图 2-25 PWM 电路中各点波形 4)开发平台中直流电机驱动的实现 开发板中的直流电机的驱动部分如图 2-24 所示;由于 S3C44B0X 芯片自带六路 3 对 PWM定时器,所以控制部分省去了三角波产生电路、脉冲调制电路和 PWM 信号延迟及信号分配电路,取而代之的是 S3C44B0X 芯片的定时器 0、1 组成的双极性 PWM 发生器。PWM 发生器用到的寄存器主要有以下几个:(1)TCFG0 寄存器。(2)TCFG1 寄存器。(3)TCON 寄存器。(4)TCNTB0&TCMPB0 寄存器。(5)TCNTO0 寄存器,其地址和位描述如表 2-38 和 2-39 所示
9、。2步进电机 1)步进电机概述 步进电机是一种能够将电脉冲信号转换成角位移或线位移的机电元件,它实际上是一种单相或多相同步电动机。单相步进电动机有单路电脉冲驱动,输出功率一般很小,其用途为微小功率驱动。多相步进电动机有多相方波脉冲驱动,用途很广。使用多相步进电动机时,单路电脉冲信号可先通过脉冲分配器转换为多相脉冲信号,在经功率放大后分别送入步进电动机各相绕组。每输入一个脉冲到脉冲分配器,电动机各相的通电状态就发生变化,转子会转过一定的角度(称为步距角)。正常情况下,步进电机转过的总角度和输入的脉冲数成正比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和
10、负载变化的影响。由于步进电动机能直接接收数字量的输入,所以特别适合于微机控制。2)步进电机的种类 目前常用的步进电机有三类:反应式步进电动机(VR)。它的结构简单,生产成本低,步距角可以做的相当小,但动态性能相对较差。永磁式步进电动机(PM)。它的出力大,动态性能好;但步距角一般比较大。混合步进电动机(HB)。它综合了反应式和永磁式两者的优点,步距角小,出力大,动态性能好,是性能较好的一类步进电动机。3)步进电机的工作原理 现以反应式三相步进电机为例说明其工作原理。定子铁心上有六个形状相同的大齿,相邻两个大齿之间的夹角为 60 度。每个大齿上都套有一个线圈,径向相对的两个线圈串联起来成为一相绕
11、组。各个大齿的内表面上又有若干个均匀分布的小齿。转子是一个圆柱形铁心,外表面上圆周方向均匀的布满了小齿。转子小齿的齿距是和定子相同的。设计时应使转子齿数能被二整除。但某一相绕组通电,而转子可自由旋转时,该相两个大齿下的各个小齿将吸引相近的转子小齿,使电动机转动到转子小齿与该相定子小齿对齐的位置,而其它两相的各个大齿下的小齿必定和转子的小齿分别错开正负 1/3 的齿距,形成“齿错位”,从而形成电磁引力使电动机连续的转动下去。和反应式步进电动机不同,永磁式步进电动机的绕组电流要求正,反向流动,故驱动电路一般要做成双极性驱动。混合式步进电动机的绕组电流也要求正,反向流动,故驱动电路通常也要做成双极性
12、。4)开发板中步进电机控制的实现 本开发板中使用的步进电机为四相步进电机。转子小齿数为 64。系统中采用四路 I/O 进行并行控制,ARM 控制器直接发出多相脉冲信号,在通过功率放大后,进入步进电机的各相绕组。这样就不再需要脉冲分配器。脉冲分配器的功能可以由纯软件的方法实现。图2-26 四相步进电机在开发板中的接法 四相步距电机的控制方法有四相单四拍,四相单、双八拍和四相双四拍三种控制方式。步距角的计算公式为:bkmCZ360 (式 2-1)其中:m 为相数,孔制方法是四相单四拍和四相双四拍时 C 为 1,控制方法是四相单、双八拍时 C 为 2,Zk 为转子小齿数。本系统中采用的是四相单、双八
13、拍控制方法,所以步距角为 360/512。但步进电机经过一个 1/8 的减速器引出,实际的步距角应为 360/512/8。UP-NETARM300 开发平台中使用 EXI/O 的高四位控制四相步进电机的四个相。按照四相单、双八拍控制方法,电机正转时的控制顺序为 AABBBCCCDDDA。EXI/O 的高四位的值参见表 2-40。表2-40 电机正转时,EXI/O的高四位的值 十六进制 二进制 通电状态 1H 0001 A 3H 0011 AB 2H 0010 B 6H 0110 BC 4H 0100 C CH 1100 CD 8H 1000 D 9H 1001 DA 反转时,只要将控制信号按相
14、反的顺序给出即可。可以通过宏 SETEXIOBITMASK(bit,mask)()来设置扩展 I/O 口,其中 mask 参数为 0 xf0。六、实验步骤 1新建工程,将“Exp6 电机转动控制实验”中的文件添加到工程。2编写直流电机初始化函数(),其流程图如图 2-27 所示。设置寄存器TCFG0Dead zone length0prescaler value 2设置寄存器TCFG1divider value 2设置TCNTB0设置TCMPB0设置寄存器TCONmanual update Time0设置寄存器TCONDead zone enableauto reload onStart fo
15、r Timer 0 图 2-27 直流电机初始化数 :#include.startup#include#define MOTOR_SEVER_FRE 1000 rTCON=0 x19;Dead Zone void SetPWM(int value)rTCMPB0=MOTOR_MID+value;3控制直流电机的程序流程如图 2-28 所示。初始化开发板初始化直流电机初始化AD转换器采样AD值延时设置相应的脉冲宽度延时 图 2-28 控制直流电机程序流程图 4控制步进电机的程序流程如图 2-29 所示。:#include#include#include#include#include#inclu
16、de#include#pragma import(_use_no_semihosting_swi)ttPress any key to control step motor.n);for(;)ADData=GetADresult(0);Delay(10);SetPWM(ADData-512)*MOTOR_CONT/1024);Delay(10);if(rUTRSTAT0&0 x1)tPress any key to control DC motor.n);lastADData=GetADresult(0);Delay(10);for(;)loop:if(rUTRSTAT0&0 x1)/有输入,
17、则返回 *Revdata=RdURXH0();goto begin;Delay(10);ADData=GetADresult(0);if(abs(lastADData-ADData)=0)/转角大于零 for(j=0;jcount/8;j+)for(i=0;i=7;i+)SETEXIOBITMASK(stepdatai,0 xf0);Delay(200);else /转角小于零 count=-count;for(j=0;j=0;i-)SETEXIOBITMASK(stepdatai,0 xf0);Delay(200);lastADData=ADData;return 0;采样AD值延时采样AD值延时两次采样值差一定值?否是根据AD旋钮转角确定步数及转动方向发出步进电机控制命令保存本次采样值 图 2-29 控制步进电机的程序流程图 七、实验总结 实验中,我了解了 ARM 本身自带的六路即三对 PWM 和相应寄存器配置的相关知识。更是加深了对于直流电机和步进电机的工作原理的了解,学会用软件的方法实现步进电机的脉冲分配,掌握了带有 PWM 和 I/O 的 CPU 编程实现其相应功能的主要方法。
限制150内