STM32Cube HAL库——利用PWM控制电机转动(TB6612、L298N)
STM32Cube HAL库——利用PWM控制电机转动(TB6612、L298N) 一、电机控制原理 1.H桥H桥是一个相当简单的电路,包含四个开关元件,负载位于中心,呈H形配置:
开关元件(Q1,Q2,Q3,Q4)通常是双极或FET晶体管,在一些高压应用中为IGBT。集成解决方案也存在,但开关元件是否与其控制电路集成与本文讨论无关。二极管(D1,D2,D3,D4)称为捕获二极管,通常为肖特基型。
电桥的顶端连接到电源(例如电池),底端接地。一般来说,所有四个开关元件都可以独立打开和关闭,尽管有一些明显的限制。
虽然理论上负载可以是您想要的任何负载,但到目前为止,如果 H 桥是使用有刷直流或双极步进电机(步进器每个电机需要两个 H 桥)负载,则最普遍的应用。在下文中,我将重点介绍作为有刷直流电机驱动器的应用。
H桥的基本工作模式相当简单:如果Q1和Q4导通,电机的左引线将连接到电源,而右引线将接地。电流开始流过电机,电机沿(假设)向前方向激励电机,电机轴开始正向旋转。
如果Q2和Q3打开,则会发生相反的情况,电机在相反方向上通电,轴将开始向后旋转。
在桥中,切勿同时关闭 Q1 和 Q2(或 Q3 和 Q4)。如果你这样做了,你就在电源和GND之间创建了一个非常低的电阻路径,有效地短路了你的电源。这种情况称为“击穿”,几乎可以保证快速破坏您的桥梁或电路中的其他东西。
停止方式: (1)关闭 Q1 和 Q4 ,这时候电流仍然会通过反向续流二极管进行流动,此时短暂打开 Q1 和 Q3 从而达到快速衰减电流的目的。
(2)准备停止的时候,关闭 Q1 ,打开 Q2,这时候电流并不会衰减地很快,电流循环在Q2,M,Q4之间流动,通过MOS-FET的内阻将电能消耗掉。
关于H桥的内容就介绍到这(知道这些就足够了),如果想进一步了解请看其它博客。 以上资料来自:modular circuits
TB6612FNG 是东芝半导体公司生产的一款直流电机驱动器件,它具有大电流MOSFET-H 桥结构,双通道电路输出,可同时驱动 2 个电机。相比于 L298N的热耗性和外围二极管续流电路,TB6612FNG无需外加散热片,外围电路简单,只需外接电源滤波电容就可以直接驱动电机,利于减小系统尺寸。对于PWM信号输入频率范围,通常采用10KHz的频率,并通过改变占空比调节电机的速度。
L298N,是一款接受高电压的电机驱动器,直流电机和步进电机都可以驱动。一片驱动芯片可同时控制两个直流减速电机做不同动作,在6V到46V的电压范围内,提供2安培的电流,并且具有过热自断和反馈检测功能。L298N可对电机进行直接控制,通过主控芯片的I/O输入对其控制电平进行设定,就可为电机进行正转反转驱动,操作简单、稳定性好,可以满足直流电机的大电流驱动条件。 
本例选择MG513P3012V电机。规格如下图:
关于电机驱动的内容就介绍到这(知道这些就足够了),如果想进一步了解请看其它博客。
本例中使用电机驱动TB6612(原理一样)作演示。
1.确定引脚查看原理图,确定引脚。(查看确定TIM1的通道,这里选择通道1和4)
本例中AIN1、AIN2、PWMA分别选PB5、PA15、PA11;BIN1、BIN2、PWMB分别选PB4、PA12、PA8。 
PB5、PA15、PB4、PA12引脚选择GPIO_Output,并改名。
Timer中选择TIM1,选择通道1和通道4,并改名。(具体如下图)

最后生成代码。
按照以前一篇文章第三部分提到的方法(一定要包含进编程文件夹中,否则无法运行),建立文件夹。如下:
将一下文件粘贴进新建的文件夹中(按照自己选择的TIM和通道进行编程,需要修改): motor.c: