STM TIM(二)输出比较
输出比较简介
-
OC(Output Compare)输出比较
-
输出比较可以通过比较CNT(CNT计数器)与CCR寄存器(捕获/比较寄存器)值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形
- 比较CNT和CCR的值,CNT计数自增,CCR是我们给定的一个值,当CNT大于CCR、小于CCR或者等于CCR时,输出就会对应置1或置0。这样就可以输出一个电平不断跳变的PWM波形了。
-
每个高级定时器和通用定时器都拥有4个输出比较通道
-
高级定时器的前3个通道额外拥有死区生成和互补输出的功能
PWM简介
-
PWM(Pulse Width Modulation)脉冲宽度调制
-
在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域
-
PWM参数:
-
频率 = 1 / TS 占空比 = TON / TS 分辨率 = 占空比变化步距
输出比较通道(高级)
通常在外面要接一个最基本的推挽输出的电路,MOS管左边是控制极,比如说给高电平就导通,低电平就断开,中间是输出。
上管导通,下管断开,输出就是高电平
下管导通,上管断开,输出就是低电平
上下管都导通,电源短路,不允许
上下管都断开,输出就是高阻态
如果有两个这样的推挽电路,就构成了H桥电路,就可以控制直流电机正反转了,如果有三个这样的推挽电路,就可以用于驱动三相无刷电机了。
直接控制这个电路,需要有两个控制级,并且这两个控制级电平是相反的,也就是互补,因为上管导通,下管就必须断开,下管导通,上管就必须断开。
- OC1和OC1N就是两个互补的输出端口,分别控制上管和下管的导通和关闭。
- 切换上下管导通状态时,如果在上管关断的瞬间,下管立刻就打开,可能会因为器件的不理想,上管还没完全关断,下管就已经导通了,出现了短暂的上下管同时导通的现象,这会导致功率损耗,引起器件发热。
- 为了避免这个问题,就有了死区生成电路,它会在上管关闭的时候,延迟一小段时间,再导通下管,下管关闭的时候,延时一小段时间,再导通上管。这样就可以避免上下管同时导通的现象了。这就是死区生成和互补输出的用途。
输出比较通道(通用)
- CNT计数器和CCR1第一路的捕获/比较寄存器进行比较,当CNT>CCR1,或者CNT=CCR1时,就会给输出模式控制器传一个信号,然后输出模式控制器就会改变它输出OC1REF的高低电平,REF(reference 参考信号)信号实际上就是指信号的高低电平。
- REF信号
- 往上面这一路,可以前往主模式控制器,可以把REF映射到主模式的TRGO输出上去。
- 一般走下面这一路,到达极性选择器,给TIMx_CCER寄存器的CC1P位写0,信号就会往上走,电平不翻转;写1,信号就会往下走,通过非门取反,输出的信号就是输入信号高低电平翻转后的信号。极性选择,就是选择是否要将输入的高低电平翻转后输出。
- 输出使能电路,选择是否输出。
- OC1引脚,就是CH1通道的引脚,在引脚定义表中就可以直到具体是哪个GPIO口了。
- ETRF输入,是定时器的一个小功能,一般不用
输出比较模式
模式 | 描述 |
---|---|
冻结 | CNT=CCR时,REF保持为原状态 |
匹配时置有效电平 | CNT=CCR时,REF置有效电平 |
匹配时置无效电平 | CNT=CCR时,REF置无效电平 |
匹配时电平翻转 | CNT=CCR时,REF电平翻转 |
强制为无效电平 | CNT与CCR无效,REF强制为无效电平 |
强制为有效电平 | CNT与CCR无效,REF强制为有效电平 |
PWM模式1 | 向上计数:CNT<CCR时,REF置有效电平,CNT≥CCR时,REF置无效电平 向下计数:CNT>CCR时,REF置无效电平,CNT≤CCR时,REF置有效电平 |
PWM模式2 | 向上计数:CNT<CCR时,REF置无效电平,CNT≥CCR时,REF置有效电平 向下计数:CNT>CCR时,REF置有效电平,CNT≤CCR时,REF置无效电平 |
PWM基本结构
以PWM模式1为例
- 时基单元和运行控制部分
- 输出比较单元,总共有4路
- CCR捕获/比较寄存器,CCR由我们自己设定,CNT不断自增运行,同时CCR和CNT不断进行比较。
- 输出模式控制器(PWM模式1)
- CNT<CCR时,REF置有效电平
- CNT≥CCR时,REF置无效电平
- 右上角该图
- 蓝色线代表CNT的值
- 黄色线代表ARR的值
- 红色线代表CCR的值
- 绿色线代表REF输出的值
PWM工作流程
- 蓝色线从0开始自增,一直增到ARR,也就是99,之后清0继续自增。CNT<CCR,REF置有效电平;CNT≥CCR,REF置无效电平。当CNT溢出清0后,CNT又小于CCR,所以置高电平,再之后,就又是CNT≥CCR,置低电平,这样一直持续下去,REF的值就会不断变化,并且,其占空比是受CCR的值的调控的,如果CCR设置高一些,输出占空比就变大,CCR设置低一些,输出的占空比就变小。
- 输出的REF就是一个频率可调,占空比也可调的PWM波形,最终再经过极性选择,输出使能,最终通向GPIO口。
参数计算
-
PWM频率: Freq = CK_PSC / (PSC + 1) / (ARR + 1)
- 对应计数器的一个溢出更新周期,PWM的频率就等于计数器的更新频率
-
PWM占空比: Duty = CCR / (ARR + 1)
-
PWM分辨率(占空比最小的变化步距): Reso = 1 / (ARR + 1)
舵机简介
-
舵机是一种根据输入PWM信号占空比来控制输出角度的装置
-
输入PWM信号要求:周期为20ms,高电平宽度为0.5ms~2.5ms
硬件电路
直流电机及驱动简介
-
直流电机是一种将电能转换为机械能的装置,有两个电极,当电极正接时,电机正转,当电极反接时,电机反转
-
直流电机属于大功率器件,GPIO口无法直接驱动,d
-
TB6612是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速和方向