一、实验目的和要求
掌握脉宽调制调速的原理与方法,学习频率/周期测量的方法,了解闭环控制的原理。
二、实验设备
单片机测控实验系统
直流电机调速实验模块
Keil开发环境
STC-ISP程序下载工具
三、实验内容
1. 编写程序,能够在数码管上显示一个数值。
2. 固定向P1.1输出0,然后测量每秒钟电机转动的转数,将其显示在数码管,每秒刷新一次即可。
3. 使用脉宽调制的方法,动态调整向P1.1输出的内容,使得电机转速能够稳定在一个预定值附近,同时实时显示当前转速。
4. 根据输入修改电机转速目标值,设置两个转速目标值:低转速和高转速。
5. 每隔一秒钟读取两个开关的状态,如果S1按下,动态调整输出,使得电机转速能够稳定到低转速目标值附近,如果S2按下,动态调整输出,使得电机转速能够稳定到高转速目标值附近。交替显示目标值和当前转速值。
四、实验步骤
1. 建立工程,实现实验内容1
参考辅助材料,学习8031汇编语言使用和直流电机原理。
2. 编写中断程序,测量电机转速
本程序需要使用定时器定时,并使用中断来同步。中断程序的典型例子如下:
ORG 0000H
LJMP START
ORG 000BH
LJMP T0IN ;中断向量表
ORG 0040H
START: 。。.;初始化
。。.
T0IN: 。。.;中断程序
。。.
RETI ;中断返回
END
3. 完成控制转速程序
按照脉宽调制的原理,再添加一个快速的定时中断(0.1ms左右),在这个中断里面动态改变P1.1的输出,宏观上输出有效(0)的比例就是预定的控制变量。这个控制变量增大,电机转速就应该提高,但由于各种内部和外部因素,它们之间不存在简单的函数关系,因此必须根据测量出来的实际转速进行动态调整。
首先将电机转速控制在一个预定数值附近,在每一个1秒钟中断测量出当前转速之后,将其与目标值相对比,如果不够则增加控制变量,否则减少之,这样就能逐步达到稳定转速的目的。同时将速度显示出来。
4. 完成整体实验内容
在上面程序的基础上,再加上根据开关状态改变预定转速的代码。同时,在主程序中交替显示目标值和当前转速值,显示一个内容之后等待一段时间(可以由延时代码实现),然后再显示另一个并延时。要显示的内容都是在中断中被修改的。
五、实验原理
本实验示意电路原理图(图中的P1.3应改为P1.1):
对于直流电机来说,其转速由输入电压决定,因此具有平滑调速的效果;相比而言,交流电机的转速由交流电频率和电机结构决定,难以改变速度。当然,交流电机构造简单,没有换向器,所以容易制造高转速、高电压、大电流、大容量的电机;而直流电机一般用在负荷小,但要求转速连续可调的场合,如伺服电机。
脉宽调制(Pulse Width Modulation,PWM)是一种能够通过开关量输出达到模拟量输出效果的方法。使用PWM可以实现频率调制、电压调制等效果,并且需要的外围器件较少,特别适合于单片机控制领域。这里只关心通过PWM实现电压调制,从而控制直流电机转速的效果。也称作脉宽调制调速。
PWM的基本原理是通过输出一个很高频率的0/1信号,其中1的比例为δ(也叫做占空比),在外围积分元件的作用下,使得总的效果相当于输出δ×A(A为高电平电压)的电压。通过改变占空比就可以调整输出电压,从而达到模拟输出并控制电机转速的效果。
使用单片机实现PWM,就是根据预定的占空比δ来输出0和1,这里δ就是控制变量。最简单的办法就是以某个时间单位(如0.1ms,相当于10kHz)为基准,在前N段输出1,后M-N段输出0,总体的占空比就是N/M。这种方法由于0和1分布不均匀,所以要求基准频率要足够高,否则会出现颠簸现象。
要达到更稳定的效果,可以采用累加进位法如果将总的周期内的0和1均匀分散开。设置一个累加变量x,每次加N,若结果大于M,则输出1,并减去M;否则输出0。这样整体的占空比也是N/M。在实验中取M=256可以使程序更加简单。
另外,由于本实验板的设计,输出0使电机工作。因此对于本实验,上面所说的0和1要翻转过来用。
在本实验板中,电机每转动一次,与之相连的偏心轮将遮挡光电对管一次,因此会产生一个脉冲,送到INT0。要测量转速,既可以测量相邻两次中断之间的时间;也可以测量一秒种之内发生的中断次数。显然,后一种方法更加简单。
进行转速控制时,涉及到三个变量:预期转速,实际转速和控制变量。这里控制变量就是占空比。我们并不能够预先精确知道某个控制变量的值会导致多少的实际转速,因为这里有很多内部和外部因素起作用(如摩擦力,惯性等),但可以确定就是随着控制变量的增加,实际转速会增加。
反馈控制的基本原理就是根据实际结果与预期结果之间的差值,来调节控制变量的值。当实际转速高于预期转速时,我们需要减少控制变量,以降低速度;反之则需要调高控制变量。
本实验的转速控制可以使用简单的比例控制算法,也就是当转速S大于预定值时,将输出0的个数减少;当转速小于预定值时,将输出0的个数增加。改变值正比于测量出的差值。也可自行使用其他更加复杂的算法。
实验中采用的电机最大转速在200转/s左右,转速小于40转/s左右将不稳定,可能会停转。
六、一点想法
在本次实验中,PWM脉宽调制是通过改变低电平(0,存在61H中)和高电平(1,存在60H中)的输入比例实现的。初始时,高低电平均为100次(可以随便设置,高低电平次数也可以不同),比例为1:1。当当前转速低于目标转速时,增加低电平输入次数,减少高电平输入次数(两者总和不变,还是200次),增加了低电平的占空比,转速提高。当当前转速高于目标转速时,减少低电平输入次数,增加高电平输入次数(两者总和不变,还是200次),降低了低电平的占空比,转速降低。
60H+61H的和(高低电平输入总和)影响转速调整精度和速度,值越大,精度越高(摆动越小),转速调整越慢;相反,值越小,转速调整越快,但精度越低(摆动越大)。
转速调整的速度和精度还可以通过每次转速调整时,60H(高电平输入次数)和61H(低电平输入次数)调整的幅度来调控。幅度越大,转速调整越快,但精度越低,幅度越小,精度越高,转速调整越慢。
60H和61H中的数可以随便(为正即可)取,但在整个过程中,61H+60H的值一定为一个定值,这样才能确定改变的是占空比。