目前的项目是一种2相4线步进电机的闭环驱动电路,使用的电机驱动芯片是TB67H450
,再使用磁编码器MT6816
,使用FOC
算法,基于STM32F1
单片机。
这一节是步进电机的驱动芯片驱动研究文章来源:https://www.toymoban.com/news/detail-734394.html
- 首先研究驱动芯片
TB67H450
的datasheet
这是一个PWM斩波电机驱动芯片,内部框图可以看出来内含一个H桥全桥驱动电路,而芯片的输出Out1
和Out2
即H桥的两个输出口
H桥电路驱动单相步进电机是很基础的知识,芯片通过IN1
和IN2
的输入来控制输出的高低电平,但是下面的这个逻辑表是针对直流电机的,不需要看Mode这一列,只要看Out1和Out2的电平。
我们使用的是2相4线电机,所以需要2个TB67H450
,即4个Out端口来直接连接电机的A+,A-,B+和B-,同样输入也需要4个(即芯片的2个输入 x2),简单画了个图,就是通过OutA+~OutB-四个端口的脉冲组合来驱动电机的各种动作。最简单的让电机转动1周的电平变化是1000,0100,0001,0001,即顺次高电平。根据上面的逻辑表就可以推导出需要的输入信号的电平,例如Out1为高,其他为低,则IN1为H,IN2为L,IN3为H,IN4为H。
- 控制方法
这个芯片和常用的步进电机驱动器不太相同,并没有DIR、ENA这些引脚。它共8个引脚,我们来看下pin定义:
其中4pinVREF
引脚和7pinRS
引脚共同设置电机的最大电流,RS
引脚连一个电阻接地,流入电机线圈的电流峰值由datasheet page10里这个公式来计算:
RRS为RS
引脚连的电阻阻值,例如RRS选0.1欧,Vref(gain)按datasheet是1/10,则可算出Iout = Vref
。Vref
引脚可以接单片机的PWM输出,通过调节PWM占空比来调Vref电压,从而调节驱动电机的输出电流,继而控制步进电机的力矩,这就是这个芯片最重要的功能之一。
芯片的接线图比较简单,但主要单片机的定时器过来的PWM信号要搭一个滤波器滤波,其他就是直连即可:IN1-IN4接GPIO输出,OUT1-OUT4接步进电机线4根线,VM接电机的驱动电压,例如24V。
芯片的接线图:(另外一个也是同样这么接)
PA4和PA5为GPIO输出,通过高低电平来控制电机线的输出,可以用一个函数来表明输入的高低关系
void SetInputA(bool _statusAp, bool _statusAm)
{
_statusAp ? (GPIOA->BSRR = GPIO_PIN_5) : (GPIOA->BRR = GPIO_PIN_5); //IN_AP为高或低
_statusAm ? (GPIOA->BSRR = GPIO_PIN_4) : (GPIOA->BRR = GPIO_PIN_4); //IN_AM为高或低
}
如果需要IN1高,IN2低,则使用SetInputA(true, false)
即可。文章来源地址https://www.toymoban.com/news/detail-734394.html
- 整个系统其实最关键的部分是磁编码器的驱动、FOC算法的实现、电流采样等接下去的实现,接下去继续学习和实践。
未完待续
到了这里,关于STM32自学笔记14-步进电机驱动项目-TB67H450驱动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!