【话说定时器系列】之十:PWM输入模式测量脉宽及占空比实验

发布时间:2023-02-28  

STM32定时器是 ST MCU 内部最基础且常用的外设,实际应用尤为普遍。去年,电堂推出了《STM32 TIMER基础及常规应用介绍》,为大家梳理了 STM32 TIMER 的庞大内容,涵盖 TIMER 的基本应用原理、常规应用等。现在将课程内容整理为文章,针对STM32定时器有基本了解的用户,分享具体的应用实现环节及常见问题解决。


1. 实验内容

使用STM32定时器PWM输入模式测量脉宽及占空比。

上一节介绍了利用定时器输入捕获功能,通过定时器的单个通道来实现对1路外来信号脉冲宽度及占空比进行测量,并在测量过程中统计和计算用于测量的定时器自身的溢出事件。这里将介绍另外一种测量脉宽及占空比的方式。利用定时器PWM输入模式结合定时器的从模式来实现对外来信号脉冲宽度及占空比的测量,同时,也在测量过程中统计和计算用于测量的定时器自身的溢出事件。这里用到的开发板:STM32F411 Nucleo 板 【实验对开发板并无特别要求】,集成开发环境不限。这里用的是ARM MDK IDE。


2. 实验目的

1、熟悉定时器时基单元的基本寄存器及相关数据的拟定。

2、了解通过STM32定时器实现PWM波形输出的配置与使用。【因为这里要使用一个定时器TIM3的pwm输出产生一个待测脉冲信号】

3、熟悉定时器PWM输入模式测量脉冲宽度的基本原理与实现。

4、通过实验熟悉有关定时器复位从模式的原理与特征,并熟悉相关事件或中断。


3. 实验原理及步骤

3.1、实验步骤

这里使用32F411Nucleo板的板载芯片内的TIM3的通道1产生一个周期为5s,占空比为40%的PWM输出信号,然后用连线将该信号连接到TIM4的定时器通道2【TI2】,作为其直接输入,通过它对来自于TIM3的PWM输出信号进行脉宽及占空比的测量。

• 先说说PWM输入模式工作原理

• 它是基于输入捕获与定时器从模式相结合的一个具体应用

• 同一个外部输入引脚【仅限于定时器TI1/TI2的】的输入滤波信号【TIxFPx】映射到2个捕捉通道【仅限于IC1/IC2】,且配置为相反的捕捉极性,即一个通道捕捉上沿,另一个通道捕捉下沿。

• 用于测量的定时器配置在复位从模式,外部输入信号的滤波信号TIxFPx作为定时器的触发信号。

• 经过两次连续的捕捉以及定时器的溢出事件统计可方便地测得信号的周期及占空比。【提醒:本实验待测信号周期完全可以长于定时器计数周期,因为测试过程中我们会统计定时器的溢出事件】


3.2、测量过程

具体到这里,当TIM4收到触发信号时,定时器的计数器会被复位更新。当计数器配置为UP计数模式时,计数器会被清零并重新开始计数。另外,这里的触发信号来自待测信号,其触发极性可以软件配置。

大致测量过程是这样的:TIM4配置在复位从模式。待测信号从TI2输入。【本实验中的待测信号来自TIM3的PWM输出】



当从通道2出现信号的上升沿时,TIM4计数器被复位清零,同时产生更新事件和触发事件,相关标志位会被置1.


在初始状态【没进入测量的状态】下,将定时器从模式触发沿配置为上沿触发,捕捉通道1配置下沿捕捉,捕捉通道2配置为上沿捕捉。初始状态下,待测信号的上升沿使得TIM4的计数器被复位清零,并进入测量状态1,并开启定时器的溢出事件实时统计,代码里用到的变量是Num_OvEvent。当发生通道1的下沿捕捉时,记录下第1次的捕捉值【Vaule_1stCap】,并记录下自复位以来到下沿捕捉这段事件的溢出次数,放在变量Front_Num_OvEvent里。然后进入状态2。在状态2的情况下当发生通道2的上沿捕获时,记录下第2次的捕捉值【Vaule_2ndCap】,并将整个测试周期内定时器溢出次数记录在【Total_Num_OvEvent】,然后进入状态3进行占空比【Signal_Duty】和脉宽【Signal_Cycle】的计算。完毕后回到初始状态,准备下次的测量。


另外,在TIM4的更新中断里对非初始状态的溢出事件累加统计,放在变量【Num_OvEvent】里。

实验代码里用到一个变量Measure_State来记录和表示当前测试状态,大致流程如下。



不难看出,在整个测量过程中,我使用触发脉冲产生的触发事件作为每次开启测量的起始标志。


3.3、 测量用到的算式

根据上面的介绍,1次完整的测量下来,测得的周期和占空比可以用下面算式求得:Signal_Duty =(Vaule_1stCap+(Front_Num_OvEvent*(TIM4_PERIOD+1)))/ (Vaule_2ndCap+(Total_Num_OvEvent*(TIM4_PERIOD+1)));

Signal_Freq=(Clk_Internal/(TIM4_PSC+1))/(Vaule_2ndCap+(Total_Num_OvEvent* (TIM4_PERIOD+1)));因为:计数器时钟= Clk_Internal /(TIM4_PSC+1)或者说:

Signal_Freq =计数器时钟/(Vaule_2ndCap+(Total_Num_OvEvent*(TIM4_PERIOD+1)));


3.4、 基本配置准备

3.4.1 、实现TIM3 通道1的PWM输出,计数周期5s,占空比40%,用来做被测量信号。

A、选择定时器内部时钟作为时钟源,STM32F411芯片定时器内部时钟为100Mhz;

B、设置分频比,选择计数模式、设置计数脉冲个数;

对时钟源20000分频,PSC=20000-1;选择向上计数模式up counting;

计数器基于分频后的脉冲每计数25000个后,发生溢出并产生更新事件及中断。则:ARR=25000-1

按照上面参数来设计,定时器的定时周期或者说溢出周期就是5s.

C、它需做PWM输出,这里选择PWM 模式1,占空比为40%,则CCR=(ARR+1)*0.40 =10,000


CubeMx图形化配置界面:


3.4.2 、实现TIM4通道2做PWM模式输入测量,假定tim4计数器溢出周期为20ms.

先做时基参数的配置:

1、选择定时器内部时钟为时钟源,32F411定时器内部时钟为100Mhz;

2、设置分频比,选择计数模式、设置计数脉冲个数;

先对时钟源100分频、即PSC=100-1; 选择向上计数模式up counting;

计数器基于分频后的脉冲每计数20000个,发生溢出并产生更新事件及中断。则:ARR=20000-1

按照上面参数来设计,定时计数周期或者说溢出周期就是20ms.



再看看定时器TIM4主从模式配置和捕获配置:TIM4输入捕捉通道2配置为直接输入捕捉,捕捉极性选择上升沿。TIM4输入捕捉通道1配置为间接输入捕捉,捕捉极性选择为下降沿。



3.5 、工程代码的生成、添加和整理

通过STM32CUBEMX依据上述参数完成配置,并开启TIM4的中断使能,然后生成工程。再在工程里添加应用户代码。

//__HAL_TIM_CLEAR_IT(&htim4, TIM_IT_UPDATE);

//__HAL_TIM_ENABLE_IT(&htim4, TIM_IT_UPDATE);

HAL_TIM_IC_Start_IT(&htim4, TIM_CHANNEL_2);HAL_TIM_IC_Start_IT(&htim4, TIM_CHANNEL_1); MeasMure_State = 0x00; Num_OvEvent = 0x00; __HAL_TIM_CLEAR_IT(&htim4, TIM_IT_TRIGGER);


TIM4中断处理代码说明:

发生触发事件时,进入测量状态:



在TIM4通道1发生下沿捕捉事件时:



在TIM4通道2发生上沿捕捉事件时:



另外,在测试状态下,TIM4的更新中断对溢出事件进行统计。



4. 实验结果验证

实验中tim4的时基参数保持不变,主要调整TIM3的PWM输出波形的脉宽和占空比,来看看实验结果。尤其看看当待测脉宽远长于TIM4定时器的溢出周期时的情况。

为了便于参数的修改和测试,这里针对TIM3和TIM4的时基参数定义了几个宏:



我们选取几组数据,直接联机观察运行结果。// pulse cycle = ((TIM3_PSC+1) * (TIM3_PERIOD+1))/100,000,000 【s】// 5s ==>500,000,000 // 9s ==>900,000,000 //80ms ==>8,000,000 //20ms ==>2,000,000 //100us ==>10,000 //10us ==>1000 //5us ==>500


小结

上面实验的实现思路及提到的代码,仅供参考,旨在抛砖引玉。

其它地方也有相关的例程,不过往往有个前提,待测信号的周期不能长于用来测量的定时器的溢出周期。如果按照上面的代码设计,就摆脱了这个限制。基于现有软硬件环境,我们可以对一定宽度以上的外来脉冲准确测量其脉冲宽度及占空比,当然这个一定宽度跟我们的软硬件环境有关,比方时钟频率、计数脉冲精度、代码效率等。

上一期我们做了基于定时器单个捕获通道测量脉冲宽度与占空比,今天做了基于定时器pwm输入模式测量脉冲宽度与占空比,不妨简单比较下:



文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    pwm制的基本原理 pwm是怎么驱动电机的;pwm制的基本原理 PWM脉宽调制)是一种常用的控制方法,通过调节信号的脉冲宽度来控制电路中的设备或器件的工作状态。其基本原理如下: 1. 脉冲......
    ,直流无刷电机因为有霍尔元件做反馈所以转速几乎是稳定恒速的。 PWM基本原理 脉冲宽度调制即是PWM,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。主要的特点是脉冲,也就......
    变频器的基本原理、分类及应用领域;引言 变频器(Variable-frequency Drive,简称VFD)是一种电力控制设备,通过改变电机工作电压和频率来实现对电机运行速度的调节。自20世纪70......
    也会影响变频器自身的稳定性和可靠性。为了解决这些问题,需要使用变频器滤波器来过滤干扰信号。一、变频器滤波器的原理在变频器的输出端,通常使用PWM脉宽调制)技术生成交流输出信号。PWM信号的基本原理......
    :形象的比喻 PWM全称Pulse Width ModulaTIon:脉冲宽度调制(简称脉宽调制,通俗的讲就是调节脉冲的宽度),是电子电力应用中非常重要的一种控制技术,在理解TA之前......
    数字控制器补偿模拟控制器;用于电源控制的新兴数字 IC 缺乏模拟 IC 中常见的基本功能,例如内置栅极驱动和电流限制。数字电源控制器通常仅具有 PWM脉宽调制)逻辑输出,并且......
    Modulation:脉冲宽度调制(简称脉宽调制,通俗的讲就是调节脉冲的宽度),是电子电力应用中非常重要的一种控制技术,在理解TA之前我们先来了解几个概念 。 理解PWM可以参考这些文章怎么把PWM信号......
    磁极与转子磁极之间的吸引力就越大, 转速也就越高, 因此, 控制电流就可以控制电动机的转速。 无刷电流电动机大多采用脉宽调制PWM) 调速方式。   直流电动机 PWM 调速工作原理是: 当场......
    上了时代的封面。 PWM就是脉宽调制技术,将变频器的输出电压波形以每半个周期为单位分割成多个脉冲,通过调节脉冲宽度和脉冲周期来调节平均电压。因为,脉冲是可以控制的,这就让输出波形可调。 在这里有个“占空比”的概......
    输出特性,尤其适用于工业控制。   无刷直流电机是一种易驱动电机,适用于变速和启动转矩很高的应用,它的使用范围从大规模的工业模具到调光控制的小型电机(12 V直流电机),外形和尺寸也是各种各样。 1  无刷直流电机的基本原理......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>