嵌入式电机转动控制实验

上传人:jin****ng 文档编号:169812160 上传时间:2022-11-17 格式:DOCX 页数:13 大小:161.10KB
返回 下载 相关 举报
嵌入式电机转动控制实验_第1页
第1页 / 共13页
嵌入式电机转动控制实验_第2页
第2页 / 共13页
嵌入式电机转动控制实验_第3页
第3页 / 共13页
点击查看更多>>
资源描述
嵌入式系统设计与实例开发(2011-2012学年第2学期)实验报实验五电机转动控制实验c语言实现方法电机转动控制实验一C语言实现方法一、实验目的1. 熟悉ARM本身自带的六路即三对PWM,掌握相应寄存器的配置。2编程实现ARM系统的PWM输出和I/O输出,前者用于控制直流电机,后者用于控制 步进电机。3. 了解直流电机和步进电机的工作原理,学会用软件的方法实现步进电机的脉冲分配, 即用软件的方法代替硬件的脉冲分配器。4掌握带有PWM和I/O的CPU编程实现其相应功能的主要方法。二、实验内容学习步进电机和直流电机的工作原理,了解实现两个电机转动对于系统的软件和硬件要 求。学习ARM知识,掌握PWM的生成方法,同时也要掌握I/O的控制方法。1 编程实现ARM芯片的一对PWM输出用于控制直流电机的转动,通过A/D旋钮控制其 正反转及转速。2. 编程实现ARM的四路I/O通道实现环形脉冲分配用于控制步进电机的转动,通过A/D 旋钮转角控制步进电机的转角。3. 通过超级终端来控制直流电机与步进电机的切换。三、预备知识1、用ARM SDT 2.5或ADS1.2集成开发环境,编写和调试程序的基本过程。2、ARM应用程序的框架结构。3、会使用Source Insight 3编辑C语言源程序。4、掌握通过ARM自带的A/D转换器的使用。5、了解直流电机的基本原理。6、了解步进电机的基本原理,掌握环形脉冲分配的方法。四、实验设备及工具硬件:ARM嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC机Pentium100以上。软件:PC机操作系统win98、Win2000或WinXP、ARM SDT 2.51或ADS1.2集成开发环 境、仿真器驱动程序、超级终端通讯程序。五、实验原理1. 直流电机1) 直流电动机的PWM电路原理晶体管的导通时间也被称为导通角a,若改变调制晶体管的开与关的时间,也就是说通 过改变导通角a的大小,如图2-22所示,来改变加在负载上的平均电压的大小,以实现对 电动机的变速控制,称为脉宽调制(PWM)变速控制。在PWM变速控制中,系统采用直流电源, 放大器的频率是固定,变速控制通过调节脉宽来实现。构成PWM的功率转换电路或者采用H桥式驱动,或者采用T式驱动。由于T式电路 要求双电源供电,而且功率晶体管承受的反向电压为电源电压的两倍。因此只适用于小功率 低电压的电动机系统。而H 桥式驱动电路只需一个电源,功率晶体管的耐压相对要求也低 些,所以应用得较广泛,尤其用在耐高压的电动机系统中。u-图2-22脉宽调制(PWM)变速原理2)直流电动机的PWM等效电路如图2-23所示,是一个直流电动机的PWM控制电路的等效电路。在这个等效电路中, 传送到负载(电动机)上的功率值决定于开关频率、导通角度及负载电感的大小。开关频率的大小主要和所用功率器件的种类有关,对于双极结型晶体管(GTR), 般为 lkHz至5kHz,小功率时(100W, 5A以下)可以取高些,这决定于晶体管的特性。对于绝缘栅 双极晶体管(IGBT), 般为5kHz至12kHz;对于场效应晶体管(MOSFET),频率可高达20kHz。 另外,开关频率还和电动机电感有关,电感小的应该取得高些。a)等效电路b) PWM电路中电流和电压波讨论图2-23直流电机PWM控制当接通电源时,电动机两端加上电压UP,电动机储能,电流增加,当电源中断时,电 枢电感所储的能量通过续流二极管VD继续流动,而储藏的能量呈下降的趋势。除功率值以外,电枢电流的脉动量也与电动机的转速无关,仅与开关周期、正向导通时 间及电机的电磁时间常数有关。3)直流电动机PWM电路举例图2-24为直流电动机PWM电路的一个例子。它属于H桥式双极模式PWM电路。三角波产生丽;6弋功率电跖1uizz4 皆图2-24直流电动机PWM电路举例电路主要由四部分组成,即三角波形成电路、脉宽调制电路、信号延迟及信号分配电 路和功率电路。电路中各点波形如图2-25所示。其中信号延迟电路是为了防止共态直通 而设置的。一般延迟时间调整在(1030)ps之内,根据晶体管特性而定。其原理简单叙述如 下:功率电路主要由四个功率晶体管和四个续流二极管组成。四个功率晶体管分为两组,VI 与V4、V2与V3分别为一组,同一组的晶体管同时导通,同时关断。基极的驱动信号Ub1 = Ub2,Ub3=Ub4。其工作过程为: 在1112期间,Ub1 0与Ub4 0, V1与V4导通,V2与V3截止,电枢电流 沿回路l流通。在 t2 T+ 11期间,Ub1 0 与 Ub4 0 与 U b 3 0 但此时由于电枢电感储藏着能量,将维持电流在原来的方向上流动,此时电流沿回 路2流通;经过跨接于V2与V3上的续流二极管VD4、VD5。受二极管正向压降的 限制,V2与V3不能导通。 T+ 11之后,重复前面的过程。 反向运转时,具有相似的过程。图2-25 PWM电路中各点波形4)开发平台中直流电机驱动的实现开发板中的直流电机的驱动部分如图2-24所示;由于S3C44B0X芯片自带六路3对PWM 定时器,所以控制部分省去了三角波产生电路、脉冲调制电路和PWM信号延迟及信号分配电 路,取而代之的是S3C44B0X芯片的定时器0、1组成的双极性PWM发生器。PWM发生器用到的寄存器主要有以下几个:(1)TCFG0寄存器。(2)TCFG1寄存器。(3)TC0N寄存器。(4)TCNTB0& TCMPB0 寄存器。(5)TCNTO0寄存器,其地址和位描述如表2-38和2-39所示。2. 步进电机1)步进电机概述步进电机是一种能够将电脉冲信号转换成角位移或线位移的机电元件,它实际上是一种 单相或多相同步电动机。单相步进电动机有单路电脉冲驱动,输出功率一般很小,其用途为 微小功率驱动。多相步进电动机有多相方波脉冲驱动,用途很广。使用多相步进电动机时, 单路电脉冲信号可先通过脉冲分配器转换为多相脉冲信号,在经功率放大后分别送入步进电 动机各相绕组。每输入一个脉冲到脉冲分配器,电动机各相的通电状态就发生变化,转子会 转过一定的角度(称为步距角)。正常情况下,步进电机转过的总角度和输入的脉冲数成正 比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不 受电压波动和负载变化的影响。由于步进电动机能直接接收数字量的输入,所以特别适合于 微机控制。2)步进电机的种类目前常用的步进电机有三类: 反应式步进电动机(VR)。它的结构简单,生产成本低,步距角可以做的相当小, 但动态性能相对较差。 永磁式步进电动机(PM)。它的出力大,动态性能好;但步距角一般比较大。 混合步进电动机(HB)。它综合了反应式和永磁式两者的优点,步距角小,出力大, 动态性能好,是性能较好的一类步进电动机。3)步进电机的工作原理现以反应式三相步进电机为例说明其工作原理。定子铁心上有六个形状相同的大齿,相 邻两个大齿之间的夹角为60度。每个大齿上都套有一个线圈,径向相对的两个线圈串联起 来成为一相绕组。各个大齿的内表面上又有若干个均匀分布的小齿。转子是一个圆柱形铁心, 外表面上圆周方向均匀的布满了小齿。转子小齿的齿距是和定子相同的。设计时应使转子齿 数能被二整除。但某一相绕组通电,而转子可自由旋转时,该相两个大齿下的各个小齿将吸 引相近的转子小齿,使电动机转动到转子小齿与该相定子小齿对齐的位置,而其它两相的各 个大齿下的小齿必定和转子的小齿分别错开正负1/3的齿距,形成“齿错位”,从而形成电 磁引力使电动机连续的转动下去。和反应式步进电动机不同,永磁式步进电动机的绕组电流要求正,反向流动,故驱动电 路一般要做成双极性驱动。混合式步进电动机的绕组电流也要求正,反向流动,故驱动电路 通常也要做成双极性。4)开发板中步进电机控制的实现本开发板中使用的步进电机为四相步进电机。转子小齿数为64。四相 功率 岖动 接口四相歩进电动机系统中采用四路I/O进行并行控制,ARM控制器直接发出多相脉冲信号,在通过功率放 大后,进入步进电机的各相绕组。这样就不再需要脉冲分配器。脉冲分配器的功能可以由纯 软件的方法实现。EXI/04EXI/05EXI/06EXI/07图2-26四相步进电机在开发板中的接法四相步距电机的控制方法有四相单四拍,四相单、双八拍和四相双四拍三种控制方式。 步距角的计算公式为:3600厂 mCZ(式 2-1)其中:m为相数,孑L制方法是四相单四拍和四相双四拍时C为1,控制方法是四相单、 双八拍时C为2, Zk为转子小齿数。本系统中采用的是四相单、双八拍控制方法,所以步距角为360 /512。但步进电机经 过一个1/8的减速器引出,实际的步距角应为360 /512/8。UP-NETARM300开发平台中使用EXI/O的高四位控制四相步进电机的四个相。按照四相 单、双八拍控制方法,电机正转时的控制顺序为A-AB-B-BC-C-CD-D-DA0 EXI/O的高 四位的值参见表2-40。表2-40电机正转时,EXI/O的高四位的值十六进制1H二进制0001通电状态A3H0011AB2H00106H0110BC4H0100CH1100CD8H10009H1001DA反转时,只要将控制信号按相反的顺序给出即可。可以通过宏SETEXIOBITMASK(bit,mask) (EXIO.h)来设置扩展I/O 口,其中mask参数 为 0xf0。六、实验步骤1 新建工程,将“Exp6电机转动控制实验”中的文件添加到工程。2.编写直流电机初始化函数(MotorCtrl.c),其流程图如图2-27所示。设置寄存器TCFG0Dead zone length = 0prescaler value = 2设置寄存器TCFG1divider value =2设置TCNTBO设置TCMPBO设置寄存器TCONmanual update Time0设置寄存器TCONDead zone enableauto reload onStart for Timer 0图2-27直流电机初始化数MotorCt rl.c:#include .s tartu p44b.h#include MotorCt rl.h#define MOTOR_SEVER_FRE 1000/20kHz#define MOTOR_CONT(MCLK/2/2/MOTOR_SEVER_FRE)#define MOTOR_MID(MOTOR_CONT/2)void init_Moto rPor t() /Dead Zone=24, PreScalerol=2; rTCFG0=(024)|2;/divider timer0=l/2;rTCFG1=0;rTCNTBO二 MOTOR_CONT;rTCMPBO二 MOTOR_MID;rTC0N=0x2;/update mode for TCNTB0 and TCMPB0.rTC0N=0xl9;/timerO = auto reload, start. Dead Zonevoid SetPWM(int value)rTCMPBO二 M0T0R_MID+value;3. 控制直流电机的程序流程如图2-28所示。图2-28控制直流电机程序流程图4. 控制步进电机的程序流程如图2-29所示。Main.c:#includeuhal.h#include 44b.h#includemyuart .h#includemotorctrl.h #includeexio.h #include option.h #includema th.huse#pragma import(_use_no_semihosting_swi)/ ensure no functions thatsemihosting#define M0T0R_SEVER_FRE#define MOTOR_CONT#define MOTOR_MID1000/20kHz(MCLK/2/2/MOTOR_SEVER_FRE)(MOTOR_CONT/2)#define ADCCON_FLAG#define ADCCON_SLEEP0x400x20#define ADCCON_ADIN0(0x02)#define ADCCON_ADIN1(0xl2)#define ADCCON_ADIN2(0x22)#define ADCCON_ADIN3(0x32)#define ADCCON_ADIN4(0x42)#define ADCCON_ADIN5(0x52)#define ADCCON_ADIN6(0x62)#define ADCCON_ADIN7(0x72)#define ADCCON_READ_START 0x2#define ADCCON_ENABLE_START 0x1 void init_ADdevice()/初始化rADCPSR=20; rADCCON=ADCCON_SLEEP;int GetADresult(int channel)rADCCON=(channel2)|ADCCON_ENABLE_START;Delay(10);while(!(rADCCO N& ADCCON_FLAG);/转换结束 ret urn rADCDAT;/返回采样值int main(void)int i,j,ADDa ta,las tADDa ta,cou nt=0;char Revdata10;/A,AB, B, BC, C CD, D, DAint st epda ta二0xl0,0x30,0x20,0x60,0x40,0xc0,0x80,0x90;ARMTarge tlnit();/开发版初始化init_Moto rPo rt();init_ ADdevice();for(;)begin:Uart_Printf(nBegin control DC motor.ttPress any key to control step moto r.n);for(;) ADData二GetADresult(0);Delay(lO);SetPWM(ADData-512)*M0T0R_C0NT/1024);Delay(lO);if(rUTRSTATO & 0x1)/有输入,则跳出*Revdata=RdURXH0();goto next; nex t:Set PWM(0);Uart_Printf(nBegin control step motor.tPress any key to control DC moto r.n);lastADData二GetADresult(0);Delay(10);for(;)loop:if(rUTRSTAT0 & 0x1)/有输入,则返回*Revdata=RdURXH0(); goto begin;Delay(10);ADData二GetADresult(0); if(abs(lastADData-ADData)20) goto loop;Delay(lO);cou nt=-(ADDa taTas tADDa ta)*3;/(ADData-lastADData)*270/1024 为 ad 旋钮转过的角度,60/512 为步距角, /由于接了 1/8减速器,两者之商再乘以8为步进电机相应转过的角度 if(count=0)/转角大于零for(j=0;jcount/8;j+)for(i=0;i=7;i+)SETEXIOBITMASK(stepdatai, 0xf0); Delay(200);else/转角小于零count二count;for(j=0;j=0;i)SETEXIOBITMASK(stepdatai, 0xf0); Delay(200);lastADData二ADData;return0;图2-29控制步进电机的程序流程图七、实验总结实验中,我了解了 ARM本身自带的六路即三对PWM和相应寄存器配置的相关知识。更 是加深了对于直流电机和步进电机的工作原理的了解,学会用软件的方法实现步进电机的 脉冲分配,掌握了带有PWM和I/O的CPU编程实现其相应功能的主要方法。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 建筑资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!