薪火培训电控第二讲——定时器与脉冲宽频调制 TIM&PWM

物资简要介绍

面包板

面包板
  • 面包板是由于板子上有很多小插孔,专为电子电路的无焊接实验设计制造的。
  • 由于各种电子元器件可根据需要随意插入或拔出,免去了焊接,节省了电路的组装时间,而且元件可以重复使用。
  • 非常适合电子电路的组装、调试和训练。

面包板的得名可以追溯到真空管电路的年代,当时的电路元器件大都体积较大, 人们通常通过螺丝和钉子将他们固定在一块切面包用的木板上进行连接,后来电路元器件体积越来越小,但面包板的名称沿用了下来。

面包板

对于面包板来说,其每个纵向5个插孔是互相联通的,横向一排插孔也是互相联通的。

面包板

发光二极管

  • 简称LED
  • 插件式的发光二极管通过PIN脚的长短来区分正负级,一般情况下长脚为正、短脚为负。
面包板
--- #### ST-link ####
面包板
  • ST,可以看出是意法半导体的标志
  • ST-link即为由意法半导体出品的,用于STM8和STM32微控制器的在线调试器和编程器,也是大家口中的下载器。
  • ST-Link具有SWIM、JTAG / SWD等通信接口,用于与STM8或STM32微控制器进行通信(各版本有差异)。
    image
  • 按照上图进行连接,即可通过ST-link对Stm32F103最小系统板进行调试。

PWM原理

PWM即为脉冲宽度调制Pulse width modulation的简称,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。

  • 广泛应用在从测量、通信到功率控制与变换的许多领域中。
  • 控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形

面积等效原理是PWM控制技术的重要基础理论。

  • 在采样控制理论有一重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上,其效果基本相同,冲量即指窄脉冲的面积。
  • 由于单片机为一个数字系统,无法进行模拟控制,因此可以利用冲量等效原理,将一串频率和幅度固定而宽度不同的矩形脉冲作用到惯性负载上,以此得到期望的相应波形或者效果,即PWM控制原理。
  • 而对于一个PWM信号来说,频率占空比的概念很重要,即决定PWM波的性质。

面包板
  • 如图所示,将正弦半波分成N等份,就可以把正弦半波看成是由N个彼此相连的脉冲序列所组成的波形
  • 脉冲宽度相等,都为pi/N,但幅度不等,且脉冲顶部为曲线,各脉冲的幅度按正弦规律变化。
  • 若用相同数量的等幅而不等宽的矩形脉冲代替,使矩形脉冲和相应的正弦波部分面积(冲量)相等,就可以得到下图的脉冲序列,这就是PWM波形

占空比

占空比是指在一个脉冲循环内,接通时间相对于总时间所占的比例。

  • 在一段连续工作时间内脉冲高电平时间与总时间的比值。
  • 如果信号总是处于高电平,它的占空比是百分之百;如果信号总是处于低电平,那么它的占空比是0%。
    image
    上图分别对应着占空比为0%,25%,50%,75%,100%。

频率

PWM信号的频率决定了PWM完成一个信号周期的速度。

  • 周期是指PWM信号完成一个接通和关闭的时间。
  • PWM 输出的频率也会影响最终的 PWM输出效果,PWM输出的频率越高,最终输出的“连续性”越好,越接近模拟信号的效果,频率低则会增强离散性,最终的输出效果会有比较强的“突变”感。

定时器与时钟树

定时器

  • 定时器实际上是单片机中的一个内部外设。
  • 常常与计数器共同出现,计数器也是一个内部外设。

计数器,顾名思义用来计数,

就和我们的秒表一样,秒表实际上就是一个计数器,每隔一个单位走一个格(就是计一个数),因为计数器的计数时间周期是固定的,因此到了一定时间只要用计数值*计数时间周期,就能得到一个时间段,这个时间段就是我们定的时间(这就是定时器了)。


定时器对于单片机来说,类似于闹钟对于人的意义。

  • 主要用于定时执行某项任务。单核CPU是单线程的,需要定时器来定时提醒执行某项工作。
  • SMT32F103C6T6系列共有3个定时器:
    高级定时器(TIM1)
    通用定时器(TIM2、TIM3)
    高级定时器包括通用定时器的功能。

定时器是怎么工作的

若想要定时器正常的实现“闹钟”的功能,即定时进行提醒单片机去完成某个任务,参与工作的主要有三个:

  • 计数器寄存器 (TIMx_CNT)
    • 计数器 CNT 是一个 16 位的计数器,只能往上计数,最大计数值为 65535。当计数达到自动重装载寄存器的时候产生更新事件,并清零从头开始计数。
  • 自动重载寄存器 (TIMx_ARR)
    • 自动重装载寄存器 ARR 是一个 16 位的寄存器,这里面装着计数器能计数的最大数值。当计数到这个值的时候,如果使能了中断的话,定时器就产生溢出中断。
  • 预分频器寄存器 (TIMx_PSC)
    • 预分频器的值由寄存器TIMx_PSC设定,是一个16位正整数值。用来将定时器时钟源进行分频输出。

计数器模式

  • 递增计数模式
    计数器从 0 计数到自动重载值,然后重新从 0 开始计数并生成计数器上溢事件。

  • 递减计数模式
    计数器从自动重载值开始递减到 0,然后重新从自动重载值开始计数并生成计数器下溢事件。

  • 中心对齐模式
    计数器从 0 开始计数到自动重载值 – 1 ,生成计数器上溢事件;然后从自动重载值开始向下计数到 1 并生成计数器下溢事件。之后从0 开始重新计数。


时钟树

在上节博客中,我们简要介绍了时钟的内容,那么对于Stm32单片机,我们又该如何配置其时钟源呢?在这里我们会通过CubeMx进行简要介绍。

  1. 时钟最小单位时刻的来源——晶振、振荡器电路。
    image
  • 单片机内部方波信号产生的源头。
    image
  • 晶振
    image
  • RC振荡器
  1. PLL锁相环电路,实现倍频功能
    image
  2. 系统时钟输入选择,实现三种选择转换
    image
  3. 分频处理
    image
  4. 从总线时钟到外设时钟
    image
  5. 总体配置图
    image

一般来讲,APB1上面连接的是低速外设,包括电源接口、备份接口、CAN、USB、I2C1、I2C2、USART2、USART3、UART4、UART5、SPI2、SP3等;
而APB2上面连接的是高速外设,包括UART1、SPI1、Timer1、ADC1、ADC2、ADC3、所有的普通I/O口(PA-PE)、第二功能I/O(AFIO)口等。


定时器生成PWM

  • 对于stm32单片机来说,在PWM输出模式下,除了CNT(计数器当前值)、ARR(自动重装载值)之外,还多了一个值CCRx(捕获/比较寄存器值)。
  • 当CNT小于CCRx时,TIMx_CHx通道输出低电平;反之通道输出高电平。
    image
  • 通过调整cubemx中定时器的配置,即可对输出PWM波的频率进行调节。
    根据公式:
    image
  • 其中Fpwm为通道生成的pwm波的频率,Fclk为总线时钟频率,psc为cubemx中预分频寄存器的设定值,arr为自动重载寄存器的设定值。
  • 对于占空比,我们可以依据以下的公式进行调节:
    image
  • TIMx->CCRx是用户自设定值,通过调整即可进行占空比的调节。

在通过HAL库对stm32进行开发时,输出PWM波包含以下两个步骤:

  • 通过HAL_TIM_PWM_Start(&htimx,TIM_CHANNEL_x)开启PWM输出模式。

  • 通过__HAL_TIM_SET_COMPARE(TIM_HandleTypeDef*htim,uint32_t Channel,uint16_t ccr);对ccr的值进行修改。

  • 经过以上两个步骤,即可在对应通道的引脚获得PWM输出波。


总结

PWM信号在控制领域有着极其广泛的应用,在平时的科创生活中,我们也会利用其控制舵机、电机驱动、蜂鸣器驱动,掌握PWM信号的配置与产生,大家就可以自己做出一些好玩的应用,是你迈向一名优秀电控的坚实的一步。

posted @ 2021-10-27 09:22  北京理工大学机器人队  阅读(234)  评论(0编辑  收藏  举报