TIM输出比较
本文最后更新于46天前,其中的信息可能已经有所发展或是发生改变。

输出比较功能主要是用来输出PWM波形的,PWM波形是驱动电机的必要条件

输出比较简介

  • OC(Output Compare)输出比较
  • 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形

红框中就是输出比较电路,CNT在这里就是时基单元里面的计数器。CCR是这里就是捕获比较寄存器,CC就是捕获比较的意思,R是register寄存器的意思,所以CCR就是捕获比较寄存器。捕获比较寄存器是输入捕获和输出比较共用的,当使用输入捕获时,它就是捕获寄存器。当使用输出比较时,它就是比较寄存器,在输出比较这里,这块电路会比较CNTCCR的值。CNT计数自增,CCR是我们给定的一个值, 当CNT>CCR<CCR或者等于CCR时。TIMx_CH1~TIMx_CH4输出就会对应的置1,置0,置1,置0,这样就可以输出一个电平不断跳变的PWM波形,这就是输出比较的基本功能,

  • 每个高级定时器和通用定时器都拥有4个输出比较通道。
  • 高级定时器的前3个通道额外拥有死区生成和互补输出的功能。用于驱动三相无刷电机。

PWM简介

PWM(Pulse Width Modulation)脉冲宽度调制

在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域

PWM参数:

$$
频率 = \frac{1}{_{Ts} } , 占空比=\frac{_{Ton} }{_{Ts}} ,分辨率=占空比变化步距
$$

PWM波形是一个数字输出信号,也是由高低电平组成的。 像图里一样,一个连续变化电平信号。使用这个PWM波形是用来等效的,实现一个模拟信号的输出,数字输出端口控制LED。LED只能有完全亮和完全灭两种状态,通过这个PWM波形就可以实现控制亮度大小呢。让LED不断点亮熄灭,点亮熄灭。当这个点亮熄灭的频率足够大时, LED就不会闪烁了,而是呈现出一个中等亮度。当我们调控这个点亮和熄灭的时间比例时,就能让LED呈现出不同的亮度级别。 对于电机调速也是一样。以一个很快的频率给电机通电,断电,通电,断电,那么电机的速度就能维持在一个中等速度,当然, PWM的应用场景必须要是一个惯性系,统就说LED在熄灭的时候,由于余辉和人眼视觉暂留现象, LED不会立马熄灭,而是有一定的惯性。过一下段时间才会熄灭,电机也是当电机断电时,电机的转动不会立马停止,而是有一定的惯性。具有惯性的系统才能使用PWM。

那在这个图里也可以看出这种高低电平跳变的数字信号,它是可以等效为中间这个虚线所表示的模拟量的。

当上面电平时间长一点,下面电平时间短一点的时候,等效的模拟量就偏向于上面。 当下面电平时间长一点,上面电平时间短一点的时候,等效的模拟量就偏向于下面。 那在使用PWM时会有几个比较重要的参数,

$$
频率 = \frac{1}{_{Ts} }
$$

Ts代表一个高低电平变换周期的时间,周期的倒数就是频率。PWM的频率越快,那它等效模拟的信号就越平稳,同时性能开销就越大。一般来说PWM的频率都在几千到几十千赫值,这个频率就已经足够快了。

$$
占空比=\frac{_{Ton} }{_{Ts}}
$$

Ton是这里高电平的时间。Ts是一个周期的时间,高电平时间相对于整个周期时间的比例,一般用百分比来表示,比如占空比为50%,那就是高低电平时间相等的方波。占空比为20%,那就是高电平占20%,低电平占80%。占空比为100%,那就直接是高电平。占空比0%,那就直接是低电平。

占空比决定了PWM等效出来的模拟电压的大小。占空比越大,那等效的模拟电压就越趋近于高电平。占空比越小,那等效的模拟电压就越趋近于低电平。这个等效关系,一般来说是线性的,比如高电平是5V低电平是0V,那50%占空比就等效于中间电压就是2.5V。 20%,占空比就等效于5分之1处的电压就是1V,这就是占空比,

$$
分辨率=占空比变化步距
$$

比如有的占空比只能是1%,2%,3%等。这样以1%的步距跳变,那它的分辨率就是1%。 如果可以1.1%,1.2%,1.3%等等,这样以0.1%的步距调频,那它的分辨率就是0.1%,所以这个分辨率就是占空比变化的细腻程度。这个分辨率需要多高得看实际项目的需求。如果既要高频率,又要高分辨率,就对硬件电路要求比较高了。不过一般要求不高的话,1%的分辨率就也已经足够使用了。使用PWM波形就可以在数字系统等效输出模拟量就能实现LED控制亮度、电机控速等功能。

输出比较通道(高级)

定时器的输出比较模块是怎么来输出PWM波形的?

这个图是高级定时器,前三个通道的输出比较部分电路。

把图中黄色部分的东西去掉,那它就跟通用定时器的电路是一样的,那这个圈里的电路到底有什么用呢?这就需要和外部电路来一起理解了。在它外面,通常要接一个这样的电路

上面是正极,下面接着是一个大功率开关管,一般都是MOS管,就是一种大功率电子开关,然后再来一个MOS管,最后到接地,MOS管,左边是控制机,比如说给高电平,右边两根线就导通,低电平就断开,下面也是一样,有一个控制极,高电平导通,低电平断开,这就是一个最基本的推挽电路,中间是输出。

如果上管导通下管断开,那输出就是高电平。

如果下管导通上管断开,那输出就是低电平。

如果上下管都导通,那就是电源短路,这样是不允许的。

如果上下管都断开,那输出就是高阻态。

这就是推广电路的工作流程。

如果有两个这样的推挽电路,那就构成了H桥电路,就可以控制直流电机正反转了。 如果有三个这样的推挽电路,那就可以用于驱动三项无刷电机了。 这就是这个电路的用途。

对于这个电路来说,如果直接用单面机来控制的话,那就需要两个控制器,并且这两个控制级电平是相反的,也就是互补,因为上管导通,下管就必须断开;下管导通,上管就必须断开,那知道了外围电路的需求,再来理解内部电路结构,那自然就好理解了。 首先,这个OC1和OC1N就是两个互补的输出端口,分别控制上管和下管的导通和关闭。 然后是在切换上下管导通状态时,如果在上管关断的瞬间,下管立刻就打开,那可能会因为器件的不理想,上管还没有完全关断,下管就已经导通了,出现了短暂的上下管同时导通的现象,这会导致功率损耗,引起器件发热。所以在这里,为了避免这个问题,就有了死区生成电路,它会在上管关闭的时候延迟一小段时间再导通下管,下管关闭的时候,延迟一小段时间,再导通上管,这样就可以避免上下管,同时造成的现象了。 这就是死区生成和互补输出的用途。那到这里, stm32内部是如何产生PWM的波形的。

这个图是通用定时器的输出比较部分电路包括高级定时器的第4个通道和TIM_ch1输出控制结构也基本是一样的。 我们先看一下通用定时器的这个结构,这个图对应的就是

这个图里的这部分电路。左边是CNT和CCR比较的结果右边就是输出比较电路,最后,通过TIM_ch1输出到GPIO引脚上,然后下面还有三个同样的单元,分别输出到CH2、CH3、CH4。

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

接下来,看一下这个输出模式控制器具体是怎么工作的,什么时候给ref高电平?什么时候给ref低电平,我们看一下下面的这个表,这就是输出比较的8种模式。

模式描述
冻结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置无效电平

即输出模式控制器里面的执行逻辑,这个模式控制器的输入是CNCNT和CCR的大小关系,输出是ref的高低电平, 里面可以选择多种模式来更加灵活的控制ref输出。这个模式可以通过寄存器来进行配置,你需要哪个模式就可以选哪个模式,

第一个模式是冻结,描述是CNT=CCR时, ReF保持为原状态,CNT=CCR时维持原状态,那其实这个CNT和CCR就根本没有用,所以你也可以把它理解成CNT和CCR无效。Ref保持为原状态,这都是一样的效果,那这个模式也比较简单,它根本就不管CNT谁大谁小,直接ref保持不变,维持上一个状态就行了。比如说你正在输出PWM波,突然想暂停一会输出就可以设置成这个模式,一旦切换为冻结模式后,输出就暂停了,并且高低电平也维持为暂停时刻的状态保持不变。这就是冻结模式的作用。

匹配时置有效电平,匹配时至无效电平和匹配时电平翻转,这个有效电平和无效电平一般是高级定时器里面的一个说法,适合关断、刹车,这些功能配合表述的。他说的比较严谨,所以叫有效电平和无效电平,在这里,为了理解方便,可以直接认为置有效电平就是置高电平,置无效电平就是置低电平,这样就行了,那这三个模式都是当CNT与CCR值相等时执行操作。 第一个是CNT=CCR时,置有效电平,也就是高电平。 第二个是CNT=CCR时,置无效电平,也就是低电平。 第三个是CNT=CCR时,电平翻转。

这些模式就可以用作波形输出了,比如相等时电瓶翻转这个模式,这个可以方便的输出一个频率可调占空比始终为50%的PWM波形。比如你设置CCR为0,那CNT每次更新清0时,就会产生一次CNT=CCR的事件,这就会导致输出电平翻转一次,每更新两次输出为一个周期,并且高电平和低电平的时间是始终相等的,也就是占空比始终为50%。当你改变定时器更新频率时,输出波形的频率也会随之改变,它俩的关系是

$$
输出波形=\frac{更新频率}{2}
$$

因为更新两次输出才为一个周期。这就是这个匹配时电平翻转模式的用途,那上面这两个相等时至高电平和低电平,感觉用途并不是很大,因为他们都只是一次性的。支完高或低电平后就不管事了。所以这俩模式不适合输出连续变化的波形。如果你想定时输出一个一次性的信号,那可以考虑一下这两个模式,

强制为无效电平和强制有效电平,这两个模式是CNT与CCR无效, ref强制为无效电平或者强制为有效电平,这里这两个模式和冻结模式也差不多。如果你想暂停波形输出,并且在暂停期间保持低电平或者高电平,那你就可以设置这两个强制输出模式。

最后两个模式, PWM模式一和PWM模式二这两个模式就非常重要了,他们可以用于输出频率和占空比,都可调的PWM波形也是主要使用的模式。来看一下描述,

在PWM模式一

向上计数的情况下,CNT<CCR时,REF置有效电平,CNT >= CCR时,REF置无效电平。

向下计数的情况下,CNT>CCR时,REF置无效电平,CNT <= CCR时,REF置有效电平。

这个情况比较多,一般我们都只使用向上计数,所以这里向下计数的描述,就暂时不看了,它们之间也只有大小关系、极性这些东西不同,基本思想都是一样的。 我们着重分析一个向上计数的就可以了,然后再对比看一下PWM模式二

在向上计数的情况下, CCNT<CCR时,REF置无效电平,CNT≥CCR时,REF置有效电平,经过观察,可以发现它的大小比较关系,和上面这是一样的,区别就是输出的高低电平反过来了,所以PWM模式二实际上就是PWM模式一输出的取反,改变PWM模式一和PWM模式二就只是改变了ref电平的极性而已。从上面这个图里可以看到ref输出之后还有一个极性的配置,所以使用PWM模式一的正极性和PWM模式二的反极性,最终的输出是一样的。这里设计的比较灵活,输出模式你可以设置极性,最终输出之前也可以设置极性,那这就是两个模式的区别,所以使用的话,我们可以只使用pw端模式一,并且是向上计数。这一种模式就行了。 那这种模式是怎么输出频率和占同比都可调的PWM波形呢? 20:25

PWM基本结构

左上角是时基单元和运行控制部分,在左边是时钟源选择,这里省略了,更新事件的中断申请,我们不需要了输出PWM暂时还不需要中断,这就是时基单元的部分。配置好了时基单元,这里的CNT就可以开始不断的自增运行。然后往下就是输出比较单元了,总共有4路,输出比较单元的最开始是CCR捕获比较寄存器CCR是我们自己设置的,CNT不断自增运行,同时,它俩还在不断进行比较,后面这个就是输出模式控制器,在这里以PWM模式一为例子来讲解,这里是PWM模式一的执行逻辑。CNT<CCR时,REF置有效电平,CNT >= CCR时,REF置无效电平。 那它是怎么输出PWM波形的? 右上角的图,这里蓝色线是CNT的值,黄色线是ARR的值。 蓝色线从0开始,指针一直增到ARR,也就是99,之后,清零继续自增。 在这个过程中,我们再设置一条红色线,这条红色线就是CCR,比如我们设置CC为30,之后,再执行CNT与CCR比较的逻辑。下面这里绿色线就是输出,可以看到,CNT<CCR,所以置高电平;之后,CNT>=CCR,所以就变为低电平。当CNT溢出清零后,CNT<CCR,所以置高电平。再之后,CNT>CCR,置低电平,这样一直持续下去。Ref的电平就会不断变化,并且它的占空比是受CCR值的调控的。如果CCR设置高一些,输出的占空比就变大。CCR设置的低一些,输出的占总比就变小,这就是PWM模式的工作流程。 这里ref就是一个频率可调占空比也可调的PWM模型,最终再经过极性选择,输出使能,最终通向GPIO口,这样就能完成PWM波形的输出了。

PWM的参数计算

PWM频率 Freq = CK_PSC÷(PSC+1)÷(ARR+1)

PWM占空比 Duty = CCR÷(ARR+1)

PWM分辨率 Reso = 1÷(ARR+1)

$$
PWM频率:Freq = \frac{CK\_PSC}{\frac{(PSC+1)}{(ARR+1)} }
$$

PWM频率看上图,紫色标注部分为PWM的一个周期,可以看出,始终对应着计数器的一个溢出更新周期,所以PWM的频率就等于计数器的更新频率。下面这个式子CK_PSC除以PSC+1再除以ARR+1就是计数器的更新。

$$
PWM占空比:Duty = \frac{CCR}{(ARR+1)}
$$

然后接着是占空比参数,我们再看一下上面图中的图表②,紫色标注部分内,CNT是从0一直加到ARR,比如ARR是99,那CNT总共就是记了100个数,再看高电平的时间,就是图表②中红色阴影部分,CNT是从零一直加到CCR,比如CCR是30。注意,这里再等于30的瞬间就已经跳变为低电平了,所以CNT从0~29是高电平,总共是30个数的时间,所以这里占空比就是30÷100等于30%。 总结一下,公式就是占空比等于CCR÷(ARR+1)。

$$
PWM分辨率:Reso = \frac{1}{(ARR+1)}
$$

那最后还有一个参数就是分辨率,也就是占空比变化的步距。从上面这个图中的图表①可以看出, CCR的值应该设置在0~ARR+1这个范围里。CCR=ARR+1时,占空比就正好是100%。如果CCR再大一些,那占空比就始终是100%没有意义的。所以CCR的变化范围取决于ARR的值。ARR越大, CCR的范围就越大,对应的分辨率就越大。 所以总结一下公式就是分辨率=1÷(ARR+1)。 注意,这里定义的分辨率是占空比最小的变化步距,所以这个值是越小越好,也可以把CCR的范围定义成分辨率,那就是值越大越好。总之就是占空比变化的越细腻越好。

如果输出一个频率为1000赫兹,占分比可任意调节且分辨率为1%的PWM量波形,用这里的公式来确定合适的参数

1确定所需的PWM频率为1000赫兹,即Freq = 1000 Hz。

2确定计数器预分频系数PSC和自动重载寄存器ARR的值。由于占分比可调节且分辨率为1%,因此需要确定ARR的值,以便实现足够的分辨率。我们可以使用以下公式来计算ARR的值:

ARR = (CK_PSC ÷ Freq) - 1

其中,CK_PSC是定时器时钟的预分频系数,可以根据具体的硬件平台进行设置。

假设CK_PSC = 72(假设使用的是STM32开发板),则有:

ARR = (72000000 ÷ 72 ÷ 1000) - 1 = 999

因此,ARR的值应该设置为999。

3 确定CCR的值,以实现所需的占空比。由于占分比可任意调节,因此可以将CCR设置为一个可变量,例如在0到999之间。假设需要实现50%的占空比,则CCR的值应该为:

CCR = (ARR + 1) × 50% - 1 = 499

4 最后,根据所得到的ARR和CCR的值,可以使用定时器来生成PWM波形,并且可以根据所需的分辨率来设置CCR的步进量,以实现更细致的占分比调节。

stm32的外部设备

舵机可以用PWM信号来控制舵机输出轴的角度,还有直流电机可以用PWM来控制电机的速度。

舵机

舵机是一种根据输入PWM信号占空比来控制输出角度的装置。 下面这个图就是舵机,型号是sg90,它有三根输入线,两根是电源线,一根是信号线。

PWM就是输入的这个信号线来控制舵机的。在这边有一个白色的输出轴,它的轴会固定在一个指定的角度不动。 至于固定在哪个位置,是由信号线的PWM信号来决定的,这是舵机的工作方式,

然后这个是舵机的一个拆解图。在这里可以看到里面的结构有舵机上盖,输出轴,减速齿轮组,下面是直流电机,舵机控制板,电位器,可以看出,舵机其实并不是一种单独的电机,它的内部是由直流电机驱动的,它里面还有一个控制电路板,是一个电机的控制系统,大概的执行逻辑是PWM信号输入的控制板给控制板一个指定的目标角度,然后这个电位器检测输出轴的当前角度,如果>目标角度电机就会反转;如果<目标角度,电机就会正转,最终使输出轴固定在指定角度。这就是舵机的内部工作流程。只需要知道输入一个PWM波形,输出轴固定在一个角度就行了。 输入PWM信号的要求,PWM的周期为20毫秒,对应的就是50赫兹,高电平宽度为0.5毫秒~2.5毫秒,就是占空比是这个范围,这个范围对应着输出角度看一下这个图。

这是一个180度的舵机。输出的角度是-90度~+90度,或者规定是0~180度,这都是没问题的。然后输入信号脉冲宽度周期是20毫秒,也就是一个上升沿到下一个上升沿,这之间的时间是20毫秒,然后高电平的时间,

如果是0.5毫秒,对应的角度就是-90度。 如果是1毫秒对应的角度就是-45度。 如果是1.5毫秒,对应的角度就是0度。 如果是2毫秒,对应的角度就是+45度。 如果是2.5毫秒,对应的角度就是+90度。

也就是说,0.5毫秒等于-90度,2.5毫秒对应+90度。中间的对应关系都是线性分配的,按比例来,给个PWM,输出轴就会固定在一个角度,那实际应用的话,比如机器人、机械臂可以用舵机来控制关节,遥控车、遥控船可以用舵机来控制方向,还有一些其他的机械结构都可以考虑用一下这个舵机,那这些就是舵机的大概介绍了

这里PWM波形,它其实是当做一个通信协议来使用的,跟之前说的用PWM等效一个模拟输出关系不大,把PWM当成一个通信协议,也是一个比较常见的应用,因为很多控制器都有PWM输出的功能,而且PWM只需要一根信号线就行了,这也是一种应用形式,然后就是舵机的硬件链路吧。在这里,硬件电路也是比较简单的,

在这个舵机上有三根线,分别是黑,红,黄。对应的,黑色是电源负极GND,红色是电源正极,这点5V舵机就接正5V。黄色是信号线,接PWM信号,上图这个舵机现在颜色不太一样。对应的棕色是电源负,红色是电源正,橙色是信号线,引脚顺序是一样的,然后舵机分解图这个是黑,红,白,那就是黑负极,红正极,白信号线。如果你不确定,就到你的商品页面去看一下,一般都会有个引脚说明。

实际应用的话,GND就接GND,电源接+5V,这个是电机的驱动电源,一般电机都是大功率设备,它的驱动电源也必须是一个大功率的输出设备,如果能像这样单独提供供电,那就再好不过了。如果不能,那也要注意电源的功率是不是能达标。如果单独供电的话,供电的负极要和stm32共地,然后正极接待5V供电可以直接从stlink的5V输出脚连一根线。接到5v引脚,这样就是使用USB的5V供电,也是可以带得动的,最后就是信号线PWM就直接接到stm32引脚上就行了。比如PA0,因为这个舵机内部是有驱动电路的,所以我们单片机的引脚就可以直接接到这里来。这个PWM只是一个通信线,是不需要大功率的好舵机。

直流电机

直流电机和驱动的简介,因为这个直流电机是一个单独的电机,里面没有驱动电路,所以我们就要外挂一个驱动力。

(1)直流电机是一种将电能转换为机械能的装置,有两个电极,当电极正接时,电机正转,当电极反接时,电机反转 (2)直流电机属于大功率器件,GPIO口无法直接驱动,需要配合电机驱动电路来操作 (3)TB6612是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机并且控制其转速和方向

有两个电极当电极正接时,电机正转;当电极反接时电机反转。比如图片①里的电机型号是130直流电机,这里有两个引脚,一边接正,一边接负电机就朝一个方向转。如果我们把正负极对调,那电机就会朝另一个方向转。 这个操作起来也是比较简单的,直流电机属于大功率器件,GPIO无法直接驱动,需要配合电机驱动电路来操作。电机这类器件基本上都属于大功率设备了,必须要加驱动电路才能控制,电机驱动电路也是一个研究课题。现在市面上也有很多驱动电路可以选择,比如TB6612、DRV8833、L9110、L298N等,这些都是比较常见的电机驱动芯片,另外还有一些用这种分离元件,MOS管搭建的电路,这个功率可以做得更大一些。当然,也可以自己用MOS管来设计电路,这都是没问题的。那这里直接使用TB6612这款电机驱动芯片来驱动电机的,TB6612是一款双路H桥型的直流电机驱动芯片,可以驱动两个直流电机,并控制其转速和方向。这个芯片里面是有两路驱动电路的,可以独立的控制两个电机,因为它是H桥型的驱动电路,里面一路有4个开关管,所以就可以控制正反转。有些芯片,比如uln2003,它里面一路就只有一个开关管,所以它就只能控制电机在一个方向转。

图②就是这个电机驱动板的样子,上面的芯片就是TB6612,外围电路就只需要三个滤波电容就行了,可见这个芯片的集成度还是非常高的,基本上不需要我们再加什么东西。

图③这个就是H桥电路的基本结构,它是由两路推挽电路组成的,这个刚才也分析过,比如左边这个上管导通下管断开,那左边输出就是接在VM的电机电源正极;下管道导通,上管断开,那就是接在PGND的电源负极。如果有两路推挽电路,中间接一个电机,左上和右下导通,那电流就是从左流向右边右上和左下导通,那电流就反过来了,从右边流向左边。 H桥可以控制电流流过的方向,所以它能控制电机正反转,这就是这个电机驱动芯片内部的部分电路。

TB6612

这个就是电机驱动模块的硬件电路。

左下角VM就是电机电源的正极了,这个和刚才舵机的电源要求是一样的,要接一个可以输出大电流的电源,右边引脚定义看一下这个VM是驱动电压输入端,范围是4.5~10V,这个电压一般与电机额定电压保持一致,比如,如果是5V的电机,这里就接5V,如果你是7.2V的电机,这里就接7.2V。

下一个引脚是VCC,这个是逻辑电平输入端,范围是2.7~5.5V,这个要和控制器的电源保持一致,比如使用stm32是3.3V的器件,那就接3.3V。如果是51单片机是5V的器件,那就接5V,这个引脚并不需要大功率,所以可以和控制器共用一个电源。

第三个引脚是GND,这个就接系统的负极就行了。板子右边,还有两个GND,这个都是一样的,在板子内部都是联通的,随便选一个GND用就可以。

AO1、AO2、BO1、BO2就是两路间接的输出了,可以如图下面分别接两个电机。

AO1、AO2就是A路的两个输出,它的控制端就是上面的这三个PWMA、AIN1、AIN2。这三个引脚控制下面A路的一个电机,这里对应关系,用灰色填充标注出来,那这三个引脚就直接接到单片机的GPIO口就行了。其中PWNA硬件要接PWM信号输出端,其他两个硬件可以任意接两个普通的GPIO口,那这三个引脚给一个低功率的控制信号,驱动电路就会从VM汲取电流来输出到电机,这样就能完成低功率的控制信号控制大功率设备的目的了。右边这一路也是一样。

BO1、BO2是B路的两个输出,它的控制端是上面右边的BIN1、BIN2和PWMB三个引脚,两路的功能和操作方法是完全一样的。 最后还剩一个STBY(Stand By)引脚,这个是待机控制引脚,如果接GND,芯片就不工作,处于待机状态,如果接逻辑电源VCC,芯片就正常工作,这个硬件如果不需要待机模式的话,可以直接接VCC,3.3V;如果需要的话,可以任意接一个GPIO,给高低电平就可以控制了。这就是这个电机驱动板的硬件链路,那这三个引脚是如何控制电机正反转和速度的?可以查看右下角这个表。

输入是IN1、IN2、PWM、和STBY,STBY低电平就待机,高电平就正常工作,这个不用看了,然后右边是输出O1、O2和模式状态,在表中第一行,如果IN1和IN2全都接高电平,两个输出就都为低电平,这样两个输出没有电压差,电机是不会转的,如果IN1和IN2,全都接低电平输出直接关闭,这样电机也是不会转的。全高或全低,电机都不能转,那剩下的就只有一高一低了: 如果IN1给低电平,IN2给高电平电机就处于反转状态,那转还是不转呢?要取决于PWM,如果PWM给高电平,那输出就是一低一高,有电压差了,电机可以转,这时候定义的是反转,开始转动;如果PWM给低电平,那输出两个低电平,电机还是不转,这就是反转的逻辑。 IN1给低,IN2给高,PWM高转,低不转。 如果PWM是一个不断翻转的电平信号,那电机不就是快速的反转停止,反转停止了嘛。如果PWM频率足够快,那电机就可以连续稳定的翻转了,并且速度取决于PWM信号的占空比,这就是反转的工作流程。在这里的PWM就是之前提到的的使用PWM来等效一个模拟量的功能。 这里给IN1高电平、IN2低电平,这样电机就是正转状态,那是转还是不转呢?要取决于PWM信号。PWM高正转,低停止。如果PWM频率足够快,那电机就是连续稳定的正转了,并且速度取决于PWM信号的占空比。

点击数:9

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇