用单片机实现频率可调的PWM控制信号

本文作者(林广峰),请您在阅读本文时尊重作者版权。

用单片机实现频率可调的PWM控制信号

摘 要 本文介绍了一种用51系列单片机的定时器来实现频率可调的PWM信号,提供了一种可靠、有效、灵活的方法,信号准确、稳定,频率和占空比调节方便、直观,电路简单、集成度高,成本低,最高可实现几十KHz频率和占空比可调的PWM信号。可作为各种需要PWM控制的信号源发生器。

关键词 单片机;定时器;频率;PWM;占空比0 引言

在嵌入式系统及控制系统中,经常需要产生特定频率和PWM的方波脉冲信号,以便实现精确的控制过程。在实际应用中,为了达到最佳的控制,往往需要对驱动控制信号的频率和占空比都能够按要求进行调节,也就是需要实现可调频率的PWM控制。在传统电路中,用555来实现的是比较经典的电路,但通过R、C来调节脉冲时,频率和占空比可调的范围不大,器件的误差带来的影响较大,调节时不直观,调节参数具有一定的离散性,不利于批量生产。对于需要经常改变参数的情况更不方便。

随着数字技术的不断发展,单片机的性能越来越强,价格也越来越低,51系列作为非常成熟的8位单片机,在国内得到了广泛的应用。采用51系列单片机除了能完成所需的控制功能外,完全能够实现对方波信号的频率和占空比的调节,不再需要额外的信号发生电路,采用软件控制这种方法,电路简单,调节方便,显示直观,误差小,一致性好,可靠性高。

1 实现原理

脉冲宽度调制(PWM)是英文“Pulse Width Modulation”的缩写,它是通过调节方波的占空比来实现的,只要占空比的步进精度足够,就可以通过PWM来实现数字输出信号对模拟电路的有效控制,比如灯光的亮度、流量的控制、开关电源电压的控制等等。脉冲宽度调制在工业控制、电源变换、测试测量、通信等领域都有广泛的应用。

在一些文献中,产生各种波形信号,采用的是软件延时的方式,但这种方式占用了单片机的处理时间,且精度不易控制,尤其是在调节时计算比较复杂,本文采用的是定时器中断方式,单片机通过中断来产生对应的脉冲信号,还可以同时进行其他输入、输出控制功能,定时器的精度较高,调节时也仅需通过软件调整对应的设置值即可。单片机内部一般都包含有定时/计数器功能,通过对系统时钟的分频计数,可以设定某个输出端口的接通、断开时间,也即高、低电平的时间,就可以通过这个输出端口实现频率和占空比可调的脉冲信号。频率即为高、低电平总时间也就是周期的倒数。占空比就是高电平接通时间与周期之比。

对于51系列单片机来说,通过编程设置其方式寄存器TMOD可设定定时器工作于所需的工作模式,我们仅需按手册说明将其工作设定为定时方式,设定好定时时间,在时间到达时就会产生定时中断,单片机响应定时中断,我们在定时中断中根据所需的时间控制相应输出端口的电平,即可实现对输出端口信号的频率、占空比的控制。

在系统设计中,首先需要确定系统最小能调节的基准周期,也就是定时器的周期T0。

若PWM调节的占空比的步进精度为△d,则我们能调节得到的最高频率fh为:

fh = 1 / Th = 1 / (T0 * (100 / △d) * C)

则根据fh即可求出所需的T0值;

T0 = 1 / ((100 / △d) * C) *fh(1)

式中的C为单片机的周期指令系数,一般51系列为12周期指令系统,即每条指令需要12个系统周期,则C的值为定时中断的指令周期数乘以12。目前一些新的51系列单片机,比如STC有单周期指令的单片机,则C的值为定时中断的指令周期数,所以为了得到较高的可调节的频率,一方面可以采用较高的时钟频率,另一方面则可以采用单周期指令的单片机。

虽然STC单片机有具备PWM调节功能的型号,但是其占空比是按1/256周期为步进的,在我们不需要这么细的调节范围时,反而限制了所能达到的最高调节频率,同时也为了通用性,我们采取的是用定时中断的方式来设定占空比、频率,控制单片机的一个通用端口作为信号的输出。

2 系统实例

我们的一个实例系统的系统原理框图如图1,单片机采用了单周期的STC16C5628系列单片机,其最高的系统时钟频率可达40MHz,在实例中采用的外接晶振为32MHz。为了较好的人机交互调节,采用了按键输入和LED显示输出部分。通过接收按键输入,频率可以设置从1KHz~80KHz,占空比调节范围为5%~95%(最小步进为5%),在调节过程中用2位数码管LED显示对应的频率和占空比,能够很好地实现了最高80KHz的频率可调的PWM信号输出,用来驱动对应频率的超声波探头,得到了较好的效果,并通过调节占空比,获得了最佳的谐振。

3 软件流程

这里主要描述产生频率、占空比可调信号的算法流程,其他的按键输入、数码管分时显示控制模块都是通用的一些方法,不作进一步说明。

在系统软件中首先需要完成以下初始化工作: nbsp;

1)根据所需脉冲波的频率f、占空比步进值△d,按照以上所述的公式(1)计算出所需设置的定时器/计数器的周期T0,再除以系统时钟频率得到所需设定的定时器常数;

2)根据占空比和脉冲周期除以T0计算出占空比设定值n,以及脉冲周期计数值N; nbsp;

3)设定定时器的工作模式;

4)设定定时器的常数; nbsp;

5)设定一个通用I/O管脚作为输出;

6)启动定时器,计数值m清零,输出端口输出高电平。开定时器中断,开始一个脉冲周期。

共2页: 上一页 第1页 2下一页

赞助广告