通过设置CCTLx中的模式位,可将对应的捕捉/比较寄存器CCRx设定为捕捉模式,用于时间事件的精确定位。假如在选定的输进引脚上发生选定脉冲的触发沿,则定时器计数的值将被复制到CCRx中。根据这一原理,选定P2.0为输进引脚,设置CCTL2为捕捉模式,所测温度值由模拟量经丈量电路转换为脉冲后,P2.0捕捉脉冲下降沿,进进中断T2,得到与温度值一致的单位时间内的脉冲数,存进CCR2作进一步处理。
这样,系统就在不使用A/D转换器的情况下完成了模数转换。由于单片机的时钟精确度高,而且时间量是一个相对精度极高的量,但本系统中用时间量进行温度采样可获得12位的高精度,同时采用50Hz脉冲,可以大大消除工频干扰。这些都为进行精确的温度控制提供了必要的条件。
2.3 PWM信号天生原理
将捕捉/比较寄存器CCR0和CCR1定义为比较模式,它们的输出单元OUT0和OUT1分别对应单片机引脚P1.0(TA0)和P1.2(TA1)。进进比较模式后,假如定时器CCRx的计数值即是比较寄存器x中的值,则比较信号EQUx输出到输出单元OUTx中,同时根据选定的模式对信号置位、复位或翻转。其中:设置EQU0将OUT0信号翻转,信号时钟与定时器时钟同步,这样就可以在P1.0引脚上得到50Hz的方波信号;设置EQU1输出模式为PWM复位/置位。
设定模式下定时中断的输出如图2所示。根据设定的PWM复位/置位模式,若CCR1计数器溢出,则EQU1将OUT1复位;若CCR0计数器溢出,则EQU0将OUT1置位。利用CCR0和CCR1计数起始点的差值,实现占空比的变化,从而在P1.2上完成PWM输出。系统对占空比的调节是通过改变CCR1的基数来实现的。定时器时钟为2MHz、CCR1和CCR0的计数值为1 000时,可获得2kHz的PWM输出频率。负载驱动电路将单片机P1.2引脚输出的PWM信号放大滤波,用于驱动大功率的执行元件。
3 软件设计
3.1 系统主程序
在主程序中包括系统初始化、定时器的初始化、温度采样值的读进、负载驱动和显示等。系统进行温度值采样和PWM输出均在定时中断内完成,PWM输出脉冲的占空比则由PID算法得到。系统主程序流程图如图3所示。
3.2 PID脉宽调节
系统对脉宽的调制由PID算法实现。根据算法原理,本系统设计了一套完全由软件实现的PID算法,并且在控制过程中完成参数的自整定。PID调节的控制过程:单片机读出数字形式的实际温度Tn,然后和设定温度Tg相比较,得出差值en=Tn-Tg,根据en的正负和大小,调用PID公式,计算得到与输出电压Δun一致的占空比,调节温度的升降,同时寻找最优条件,改变PID参数。
增量式PID控制算法的输出量[3]:
PID调节程序直接写进单片机内,根据得到的值改变计数器CCR1的基数值,从而改变输出脉冲的占空比,达到调节PWM的目的。
3.3 定时中断
定时中断子程序流程如图4所示。系统采用的晶振频率为2MHz,T0中断的作用是得到频率为50Hz、占空比为90%的方波,用以产生三角波,并检查1个周期内是否有漏采的数据。T0模溢出翻转为高电平,输出比较间隔为18ms。其中,CCR0加了PWM的模,该值即为CCR0和CCR1的差值,用以产生输出所需的脉冲宽度。
T1中断内处理的是控制端口的PWM输出,并检查1个周期内是否重复采集数据,T1输出比较产生低电平,输出比较间隔为20ms。T2中断捕捉温度丈量端口的脉宽,得到所测的温度值。
4 结束语
利用单片机MSP430F413内的定时器Time_A进行温度采样以及实现PWM调节的方法,可以广泛用于具有端口捕捉功能的单片机中。与传统方法比较,它不仅可以简化丈量和控制电路的硬件结构,而且可以方便地建立人机接口,实现用软件调整参数,使控制更精确、实时、可靠。经过实验,该方法应用于温度控制系统中获得了预期的精确PWM调节波形。该方法同样可以用于其他单片机控制系统中。