本文介绍了在单片机环境下测量脉宽调制信号占空比的三种实用方法,旨在为工程师和研究者提供有效的技术参考。
PWM(脉冲宽度调制)是一种利用微处理器的数字输出对模拟电路进行控制的有效技术,在测量、通信及功率控制与变换等领域广泛应用,如LED亮度调节和电机转速控制等。
在某些特殊应用中,需要通过测量输入PWM信号的占空比来实现不同的输出控制。这可以通过三种方法完成:阻塞方式、中断方式以及定时器捕获功能。
1. 阻塞方式
MCU采用阻塞方式进行PWM占空比测量的方法相对简单,并且只需要使用一个普通的IO端口(设置为输入模式)。具体步骤如下:
等待上升沿到来,然后开启计时器开始计数;
当下降沿到达时记录当前定时值,得到高电平时间H;
清零计时器并重新启动计数;
再次等待上升沿来临时记录下此时的定时器读数,以获取低电平时间L。
计算得出占空比:duty= H/(H+L)。
这种阻塞方式虽然原理简单且只需一个MCU定时器资源即可实现,但在采集过程中会阻塞CPU运行。因此它只适用于实时性要求较低的系统中使用。
此外,在上述流程中有这样一个问题:当输入PWM占空比为0%或100%时,程序将一直等待上升沿和下降沿的到来而无法继续执行后续操作。解决办法是在等待过程中定期检查定时器值,一旦超过一个周期的时间限制(通常可定义为2-3个周期),则退出等待,并根据端口电平判断占空比是否为0%或100%。