STM32学习笔记(6_3)- TIM定时器的输出比较和PWM原理

无人问津也好,技不如人也罢,都应静下心来,去做该做的事。

最近在学STM32,所以也开贴记录一下主要内容,省的过目即忘。视频教程为江科大(改名江协科技),网站jiangxiekeji.com

现在开始上难度,STM32功能最强大、结构最复杂的外设——定时器,分四期介绍。

上一期介绍最基础的定时功能理论、定时器中断和定时器内外时钟源选择的代码。

本期介绍定时器输出比较的功能,常用产生PWM波驱动电机。

再下一期介绍定时器输入捕获功能,常用测量方波频率。

最后介绍定时器的编码器接口,更方便读取正交编码器的输出波形,常用编码电机测速。

输出比较简介

这个输出比较功能还是非常重要的,它主要是用来输出PWM波形的,PWM波形又是驱动电机的必要条件。所以你如果想用STM32做一些有电机的项目,比如智能车、机器人等,那这个输出比较功能就要好好学学了。

OC(Output Compare)输出比较

IC,全称是Input Capture,意为输入捕获

CC,全称是Capture/Compare,一般表示的是输入捕获和输出比较的单元

输出比较就是比较CNT和CCR寄存器的值,输出PWM波,

CNT,就是时基单元里面的计数器

CCR,就是捕获/比较寄存器,这个捕获/比较寄存器是输入捕获和输出比较共用的,就是输入捕获和输出比较公用一个寄存器,当使用输入捕获时,它就是捕获寄存器;当使用输出比较时,它就是比较寄存器

基本定时器是最简单的,并没有输入捕获和输出比较的功能,下面会使用通用定时器。

需留意:这四个通道有各自的CCR寄存器,但是它们是共用一个CNT计数器的

输出比较通道(通用定时器)

 在这个图里,左边就是CNT计数器和CCR1第一路的捕获比较寄存器,它俩进行比较,当CNT>CCR1或者CNT=CCR1时,就会给这个输出模式控制器传一个信号,然后输出模式控制器就会改变它输出OC1REF的高低电平,REF信号实际上就是指这里信号的高低电平。然后上面这里还有个ETRF输入,这个是定时器的一个小功能,一般不用,不需要了解。接着这个REF信号可以前往主模式控制器,你可以把这个REF映射到主模式的TRGO输出上去。不过REF的主要去向还是下面这一路,这是一个极性选择,给这个寄存器写0,信号就会往上走,就是信号电平不翻转,进来啥样,出去就还是啥样;写1的话,信号就会往下走,就是信号通过一个非门取反,这就是极性选择,就是选择是不是要把高低电平反转一下。那接着就是输出使能电路了,选择要不要输出,最后就是OC1引脚,这个引脚就是CH1通道的引脚,在引脚定义表里就可以知道具体是哪个GPIO口了。

输出比较模式

8种模式,也就是输出模式控制器里面的执行逻辑,这个模式控制器的输入是CNT和CCR的大小关系,输出是REF的高低电平,里面可以选择多种模式来更加灵活地控制REF输出,这个模式可以通过寄存器来进行配置,具体配置方法就是下面这个表。

这个有效电平和无效电平,一般是高级定时器里面的一个说法,这里方便理解,置有效电平就是置高电平,置无效电平就是置低电平,这样就行了。

PWM模式1、2它们可以用于输出频率和占空比都可调的PWM波形,重点留意PWM模式1的向上计数即可

输出比较通道(高级定时器)

 PWM简介

PWM的应用场景必须要是一个惯性系统,就是说LED在熄灭的时候,由于余晖和人眼视觉暂留现象,LED不会立马熄灭,而是有一定的惯性,过一小段时间才会熄灭;电机也是,当电机断电时,
电机的转动不会立马停止,而是有一定的惯性,过一会才停。这样具有惯性的系统才能用PWM。

当下面电平时间长一点,上面电平时间短一点的时候,等效的模拟量就偏向于下面。

一般来说PWM的频率都在几K到几十KHz,这个频率就已经足够快了

分辨率:比如有的占空比只能是1%、2%、3%等等这样以1%的步距跳变,那它的分辨率就是1%

 PWM基本结构

首先左上角这里,是时间单元和运行控制部分,再左边是时钟源选择,这里省略了,配置好时基单元,这里的CNT就河以开始不断地自增运行了。下面这里,就是输出比较单元了,总共有4路,输出比较单元的最开始,是CCR捕获/比较寄存器,CCR是我们自己设定的,CNT不断自增运行,同时它俩还在不断进行比较。后面这个就是输出模式控制器,这里面是PWM模式1的执行逻辑,右上角这里蓝色线是CNT的值,黄色线是ARR的值,蓝色线从0开始自增,一直增到ARR,也就是99,之后清0继续自增,这条红色线就是CCR,比如我们设置CCR为30,这里绿色线就是输出,它的占空比是受CCR值的调控的,如果CCR设置高一些,输出的占空比就变大。这就是PWM模式的工作流程,最终再经过极性选择,输出使能,最终通向GPIO口。

 PWM参数计算

PWM频率就是计数器的更新频率公式,因为它们是同一个周期

计算公式里为什么都有+1?因为从0开始计数

外部设备

关于PWM的原理已经讲的差不多了,接下来介绍下PWM的外部设备舵机和直流电机

舵机

可以用PWM信号来控制舵机输出轴的角度

SG90,它有三根输入线,两根是电源线,一根是信号线,对应的,棕色是电源负,红色是电源正,橙色是信号线,我们的PWM就是输入到这个信号线,来控制舵机的,

大概的控制逻辑:PWM信号输入到控制板,给控制板一个指定的目标角度,然后,这个电位器检测输出轴的当前角度,如果大于目标角度,电机就会反转;如果小于目标角度,电机就会正转。

只需知道:输入一个PWM波形,输出轴固定在一个角度就行了

实际应用的话,比做如机器人、机械臂,可以用舵机来控制关节;遥控车、遥控船,可以用舵机来控制方向。这里PWM波形,它其实是当做一个通信协议来使用的,跟之前说的,用PWM等效一个模拟输出,关系不大。

内部结构

硬件电路

 对于视频套件的话,功率不大,可以直接从STLINK的5V输出脚,引一根线,接到这里给舵机5V供电

直流电机

130直流电机,可以用PWM来控制电机的速度

因为这个直流电机是一个单独的电机,里面没有驱动电路,所以我们就要外挂一个驱动电路来控制了

H桥驱动

中间接个电机,左上和右下导通,那电流就是从左流向右边;右上和左下导通,那电流方向就反过来了,从右边流向左边。H桥可以控制电流流过的方向,所以它就能控制电机正反转

硬件电路

这里的VCC(3.3V)不需要大功率,所以可以和STM32公用

AO1和AO2就是A路的两个输出,它的控制端就是上面的这三个,PWMA、AIN2和AIN1,这三个引脚控制下面A路的一个电机,其中PWMA脚要接PWM信号输出端,其它两个引脚可以任意接两个普通的GPIO口。

最后还剩一个STBY(Stand By)引脚,这个是待机控制脚,如果接逻辑电源VCC,芯片就正常工作;接GND,就不工作,待机状态。如果需要的话,可以任意接一个GPIO,给高低电平就可以控制了

 那这三个脚是如何控制电机正反转和速度的呢?

STBY低电平就待机,高电平就正常工作,

IN1、IN2给全高或全低电平,电机都不转;

这里如果IN1给低电平,N2给高电平,电机就是处于反转状态,那转还是不转呢,要取决于PWM,如果PWM给高电平,那输出就是一低一高,有电压差了,电机可以转,这时候定义的是反转,开始转了;如果PWM给低电平,那输出两个低电平,电机还是不转。如果PWM是一个不断翻转的电平信号,那电机不就是快速地反转、停止、反转、停止了嘛,如果PWM频率足够快,那电机就连续稳定地反转,并且速度取决手PWM信号的占空比

在这里的PWM就是我们之前讲的,使用PWM来等效一个模拟量的功能了

 

输出比较功能会有三个实验

PWM驱动LED呼吸灯

在这个PA0端口上,接了LED,可以看到LED正在不断地变换亮度,实现了一个呼吸灯的效果

PWM驱动舵机

按一下按键,可以看到舵机输出轴的角度在不断地变换

PWM驱动直流电机

  • 22
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值