1、嵌入式实验4直流电机实验4直流电机控制4.1 实验目的:了解掌握使用PWM方式控制直流电机的转动速度。4.2 实验要求:(1)使用S3C2410A的TOUT2口输出PWM信号控制直流电机,实现二级调速控制。(2)通过从串口接收字符来改变当前电机的速度级别。4.3 实验原理4.3.1 脉冲宽度调制(Pulse Width Modulation ,PWM)脉冲宽度调制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于测量,通信,功率控制与变换等许多领域。PWM是一种模拟控制方式,它根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体
2、管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定。PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。PWM晶体管的导通时间也被称为导通角,若改变调制晶体管的开与关的时间,也就是说通过改变导通
3、角的大小,如图所示,来改变加在负载上的平均电压的大小,以实现对电动机的变速控制,称为脉宽调制 (PWM)变速控制。 4.3.2 PWM定时器(PWM Timer)(1)S3C2410有5个16位定时器,其中定时器0,1,2,3具有脉冲宽度调制(PWM)功能,定时器4具有部定时作用,但是没有输出引脚。定时器0具有死区生成器,可以控制大电流设备。(2)定时器T0和T1共用一个8位预分频器,定时器T2,T3和T4共用另一个8位预分频器,每个定时器都有一个时钟分频器,信号分频输出有5种模式(1/2、1/4、1/8、1/16和外部时钟TCLK)。定时器结构框图请参看下图。定时器结构图(3)每个定时器模块
4、都从时钟分频器接收它自己的时钟信号,时钟分频器接收的时钟信号来自于8位预分频器。可编程8位预分频器根据存储在TCFG0和TCFG1中的数据对PCLK进行预分频。分频器功能见下表。分频器功能(4)当时钟被允许后,定时器计数缓冲寄存器(CTNTBn)把计数初值下载到减法计数器中。定时器比较缓冲寄存器(CMPBn)把初始值下载到比较寄存器中,来和减法计数器的值比较。这种CTNTBn和CMPBn双缓冲寄存器特性能使定时器产生稳定的输出,且占空比可变。(5)每一个定时器都有一个自己的用定时器时钟驱动的16位减法计数器。当减法计数器减到0时,就会产生一个定时器中断来通知CPU ,定时器操作完成。当定时器减
5、法计数器减到0时,相应的TCNTBn的值被自动重载到减法计数器中继续下次操作。然而,如果定时器停止了,比如在运行时通过清除TCON中定时器使能位来中止定时器的运行,则TCNTBn的值不会被重载到减法计数器中。(6)TCMPBn的值用于脉冲宽度调制(PWM)。当定时器的减法计数器的值和TCMPBn的值相匹配时,定时器输出改变输出电平。因此,比较寄存器决定了PWM输出的开关时间。定时器具体操作时序下图所示。定时器操作时序图4.3.3 PWM Timer特性 5个16位定时器; 2个8位预分频器和2个4位分频器; 可编程PWM输出占空比; 自动重载模式或者单个脉冲输出模式; 具有死区生成器; 自动重
6、载与双缓冲。(1)S3C2410定时器具有双缓冲功能,能在不中止当前定时器运行的情况下,重载下次定时器运行参数,所以尽管新的定时器的值被设置好了。当前操作仍能成功完成。定时器值可以被写入定时器计数缓冲寄存器(TCNTBn),当前计数器的值可以从定时器计数观察寄存器(TCNTOn)读出。读出的TCNTBn值并不是当前计数器的值,而是下次重载的计数器值。TCNTn的值等于0时,自动重载操作,把TCNTBn的值装人TCNTn,只有当自动重载允许并且TCNTn的值等于1时才会自动重载。如果TCNTn=0,自动重载禁止,则定时器停止运行,具体如下图所示。双缓冲功能示例(1)使用手动更新完成定时器的初始化
7、和倒相位:当计数器的值减到0时会发生自动重载操作,所以TCNTn的初始值必须由用户提前定义好,在这种情况下就需要手动更新启动值。以下几个步骤给出了更新过程: 向TCNTBn和TCMPBn写入初始值。 置位相应定时器的手动更新位,不管是否使用倒相功能,推荐设置倒相位 启动定时器,清除手动更新位。注意:如果定时器被强制停止,TCNTn保持原来的值;如果要设置一个新的值,必须使用手动更新位。另外,手动更新位要在定时器启动后清除,否则不能正常运行。只要TOUT的倒相位改变,不管定时器是否处于运行状态,TOUT都会倒相,因此在手动更新时需要设置倒相位。4.3.4 PWM Timer操作示例定时器操作示例
8、图Step 1:允许自动重载功能,设置TCNTBn=160 ( 50十110) , TCMPBn=110。设置手动更新位和配置倒相位(开/关),手动更新位被设置后,TCNTBn和TCMPBn的值被自动装人了TCNTn和TCMPn。然后,设置TCNTBn和TCMPBn分别等于80(40+40)和40。Step 2:设置开始位 将定时器清零并且手动更新位,取消倒相功能,允许自动重载,定时器开始启动减法计数。Step 3: 当TCNTn和TCMPn的值相等时,TOUT输出电平由低变高。Step 4: 当TCN Tn的值等于0时产生中断,并在下一个时钟到来时把TCNTBn的值装人暂存器中。Step 5
9、:在中断服务子程序中,把80(20+60)和60分别装入TCNTBn和TCMPBn。Step 6:当TCNTn和TCMPn的值相等时,TOUTn输出电平由低变高。Step 7: 当TCNTn = 0时,把TCNTBn和TCMPBn的值分别自动装入TCNTn和TCMPn,并触发中断。Step 8:在中断服务子程序中,禁止使用自动重载和中断请求来中止定时器运行。Step 9:当TCNTn和TCMPn的值相等时,TOUTn输出电平由低变高。Step 10:尽管TCNTn=0,但是定时器停止运行,也不再发生自动重载操作,这是因为定时器自动重载功能被禁止。Step 11:不再产生新的中断。4.3.5 死
10、区生成器(1)当PWM控制用于电源设备时需要用到死区功能。这个功能允许在一个没备关闭和另一个设备开启之间插入一个时间间隔。这个时间间隔可以防止两个设备同时被启动。(2)TOUT0是定时器0的PWM输出,nTOUT0是TOUT0的倒相信号。如果死区功能被允许,TOUT0和nTOUT0的输出波形就变成了TOUT0_DZ和Ntout0_DZ。如图11-5所示。nTOUT0_DZ在TOUT1脚上产生。(3)在死区间隔,TOUT0_DZ和nTOUT0_DZ就不会同时是高电平了。死区功能允许时功能图4.4 PWM Timer控制寄存器PCLK是Timer的信号源,通过设置每个Timer相应的Prescal
11、er和Clock Divider把PCLK转换成输入时钟信号传送给各个Timer的逻辑控制单元(Control Logic),事实上每个Timer都有一个称为输入时钟频率(Timer input clock Frequency)的参数,这个频率就是通过PCLK,Prescaler和Clock Divider确定下来的,每个Timer 的逻辑控制单元就是以这个频率在工作。下面给出输入时钟频率的公式:即: fTCLK=fPCLK/(Prescaler+1)/分配器分频值 其中,Prescaler为预分频值(0255); 分配器的分频值为2、4、8和16。4.4.1 Timer配置寄存器0(TCFG
12、0) 定时器配置寄存器0(TCFG0),地址:0x51000000,如下表所列。4.4.2 Timer配置寄存器1(TCFG1) Timer配置寄存器1(TCFG1) 地址:0x51000004,如下表所列。 其中MUX为多路开关。4.4.3 Timer减法缓冲寄存器(TCNTBn)与Timer比较缓冲寄存器(TCMPBn)定义如下表:寄存器读写状态描述初始化状态TCNTBnR/WTCNTBn15:0设置减法缓冲寄存器的值0X00000000TCMPBnR/WTCMPBn15:0设置比较缓冲寄存器的值0X000000004.4.4 Timer控制寄存器(TCON) 定时器控制寄存器(TCON)
13、 地址:0x51000008,如下表所列。4.4.5 Timer观察寄存器(TCNTOn) Timer观察寄存器(TCNTOn)地址:0x5100000C0x5100003C,其具体描述如下表所列。寄存器读写状态描述初始化状态TCNTOnRTimer n观察寄存器0X000000004.5 等效电路图(1)如下图所示,左图是一个直流电动机的PWM 控制电路的等效电路。在这个等效电路中,传送到负载 (电动机)上的功率值决定于开关频率、导通角度及负载电感的大小。(2)加上电压UP,电动机储能,电流增加,当电源中断时,电枢电感所储的能量通过续流二极管VD 继续流动,而储藏的能量呈下降的趋势。 除功率
14、值以外,电枢电流的脉动量与电动机的转速无关,仅与开关周期、正向导通时间及电机的电磁时间常数有关。 (3)下图为直流电动机PWM 电路的一个例子。它属于“H”桥式双极模式PWM 电路。电路主要由四部分组成,即三角波形成电路、脉宽调制电路、信号延迟及信号分配电路和功率电路。(4)其原理简单叙述如下:功率电路主要由四个功率晶体管和四个续流二极管组成。四个功率晶体管分为两组,V1与V4、V2 与V3 分别为一组,同一组的晶体管同时导通,同时关断。基极的驱动信号Ub1= Ub2,Ub3=Ub4。(5)其工作过程为: 在t1t2 期间, Ub1 0 与Ub4 0,V1 与V4 导通,V2 与V3 截止,电
15、枢电流沿回路l 流通。 在t2 T+ t1期间,Ub1 0 与Ub4 0 与U b 3 0。 但此时由于电枢电感储藏着能量,将维持电流在原来的方向上流动,此时电流沿回路2 流通;经过跨接于V2 与V3 上的续流二极管VD4、VD5。受二极管正向压降的限制,V2 与V3 不能导通。 T+ t1之后,重复前面的过程。 反向运转时,具有相似的过程。4.5 实验电路图 S3C2410A具有4路PWM输出,输出口分别为TOUT0TOUT3,其中两路带有死区控制功能。为了能够正确输出PWM信号,需要正确设置GPBCON寄存器选择相应I/O的为TOUTx功能。然后,通过TCFG0寄存器为PWM定时器时钟源设
16、置预分频值,通过TCFG1寄存器选择PWM定时器时钟源。接着,通过TCNTBx寄存器设置PWM周期,通过TCMPBx设置PWM占空比。最后,通过TCON寄存器启动PWM定时器,即可输出PWM信号。 与PWM相关寄存器: TCNTB0决定了PWM的周期。 TCMPB0决定了PWM的占空比。4.7 实验容(1)使用S3C2410A的TOUT2口输出PWM信号控制直流电机,实现二级调速控制。(2)通过从串口接收字符来改变当前电机的速度级别。4.8 实验步骤1. PWM定时器软件编程(1)设定PWM的输出频率freq和占空比rate,rTCNTB0用于输出频率,rTCNTB0寄存器值div计算如下:d
17、iv = PCLK/(预分频值+1)/时钟驱动器取值/freq其中预分频值=0255,由rTCFG0决定。(2)通过设置rTCMPB0寄存器调正占空比rate,该寄存器值value计算如下:value = div rate。2. 编程示例 编程改变输出频率编程改变占空比 div=(PCLK/256/4)/8000; /输出频率8000HZ,使用1%95%的占空比 for (freq=1;freq50;freq+=5) rTCNTB0=div; rTCMPB0=(rate*div)/50; /修改占空比 rTCON=0xa; /手动装定时器的计数值 rTCON=0x9; /启动定时器 for(index=0;index10000;index+); rTCON=0x0; / 停止定时器 for(index=0;index10000;index+);4.9 思考题1、定时器配置寄存器TCFG023:16,15:8,7:0各有什 么作用?2、定时器配置寄存器TCFG119:0各有什么作用?3、定时器控制寄存器TCON22:0各有什么作用?4、寄存器TCNTBn,TCMPBn作用有什么不同?5、简述脉宽调制原理及用法。6、如何改变PWM输出频率?7、如何改变PWM输出占空比?8、如何控制直流电机正/反转?(提示:GPB3、GPB2均要设置GPIO输出模式)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1