tb6612电机驱动原理图


TB6612电机驱动原理图详解
一、TB6612芯片概述
TB6612FNG是东芝半导体公司生产的一款高性能双路H桥型直流电机驱动芯片,专为中小功率电机控制设计。其核心优势在于:
双通道驱动:可同时独立控制两个直流电机,或一个两相步进电机,满足多电机协同工作需求。
高效率设计:采用集成MOSFET的H桥结构,无需外接散热片,发热量显著低于传统驱动芯片(如L298N),适用于紧凑型设备。
灵活控制模式:支持正转、反转、制动、停止四种状态,通过逻辑电平与PWM信号组合实现精确控制。
宽电压范围:
电机供电电压(VM):2.5V至13.5V(典型值5V至12V),适配不同额定电压的电机。
逻辑电压(VCC):2.7V至5.5V,兼容3.3V与5V单片机系统。
高电流输出:每通道持续输出电流1.2A,峰值电流3.2A,满足中小功率电机需求。
高频PWM支持:PWM输入频率最高可达100kHz,支持高精度调速,减少电机噪声。
保护机制:内置热停机保护、低压检测电路,提升系统可靠性。
二、TB6612引脚功能与电路连接
TB6612FNG采用SSOP24封装,引脚功能如下:
1. 电源与接地引脚
VM(引脚13、14、24):电机供电输入端,连接外部电源(如电池或适配器)。
VCC(引脚20):逻辑电路供电输入端,通常接3.3V或5V。
GND(引脚3、4、9、10):接地端,需与电源负极共地。
2. 电机控制引脚
AIN1/AIN2(引脚21、22):控制电机A的正反转与停止。
BIN1/BIN2(引脚17、16):控制电机B的正反转与停止。
PWMA/PWMB(引脚23、15):PWM信号输入端,通过调节占空比控制电机转速。
3. 电机输出引脚
AO1/AO2(引脚1、2、5、6):电机A的输出端,连接电机A的正负极。
BO1/BO2(引脚11、12、7、8):电机B的输出端,连接电机B的正负极。
4. 使能与待机引脚
STBY(引脚19):待机控制引脚,高电平(VCC)时芯片正常工作,低电平(GND)时进入低功耗待机模式。
典型连接示例
以STM32F103C8T6单片机为例,连接方式如下:
电源连接:
VM接12V电池或适配器,VCC接3.3V/5V。
GND与单片机GND共地。
控制信号连接:
AIN1/AIN2接STM32的GPIO(如PB0、PB1),BIN1/BIN2接GPIO(如PB2、PB3)。
PWMA/PWMB接STM32的PWM输出引脚(如PA8、PA9)。
电机连接:
电机A的正负极接AO1/AO2,电机B的正负极接BO1/BO2。
使能连接:
STBY接VCC(高电平)或STM32的GPIO(可动态控制)。
三、H桥驱动电路原理
TB6612内部集成了两个H桥电路,每个H桥由四个MOSFET组成(两个PMOS与两个NMOS),通过开关组合实现电流方向控制。
1. H桥工作模式
H桥的四种工作模式如下:
(1)正转模式
逻辑输入:AIN1=0(低电平),AIN2=1(高电平)。
MOSFET状态:
左侧PMOS导通,左侧NMOS截止。
右侧PMOS截止,右侧NMOS导通。
电流路径:
VM → 左侧PMOS → 电机正极 → 电机负极 → 右侧NMOS → GND。
电机状态:正向旋转。
(2)反转模式
逻辑输入:AIN1=1,AIN2=0。
MOSFET状态:
左侧PMOS截止,左侧NMOS导通。
右侧PMOS导通,右侧NMOS截止。
电流路径:
VM → 右侧PMOS → 电机负极 → 电机正极 → 左侧NMOS → GND。
电机状态:反向旋转。
(3)制动模式
逻辑输入:AIN1=1,AIN2=1。
MOSFET状态:
左侧PMOS与NMOS均导通,右侧PMOS与NMOS均导通。
电流路径:
电机两端短接,产生反向电动势,实现快速制动。
电机状态:停止并制动。
(4)停止模式
逻辑输入:AIN1=0,AIN2=0。
MOSFET状态:
左侧PMOS导通,左侧NMOS截止。
右侧PMOS导通,右侧NMOS截止。
电流路径:
电机两端均接VM,无电流通过。
电机状态:惯性停止。
2. 自举电路原理
TB6612采用自举电路驱动高端PMOS,解决高端MOSFET栅极电压不足的问题:
自举电容充电:当低端NMOS导通时,电流通过自举二极管对自举电容充电,电容两端电压接近VM。
高端PMOS驱动:当高端PMOS需要导通时,自举电容提供高于VM的栅极电压,确保PMOS完全导通。
优势:无需额外升压电路,简化设计并降低成本。
四、PWM调速原理
PWM(脉冲宽度调制)通过调节占空比控制电机转速:
占空比与转速关系:
占空比=0%:电机停止。
占空比=50%:电机半速旋转。
占空比=100%:电机全速旋转。
PWM频率选择:
典型频率:10kHz至20kHz,避免可听噪声。
过高频率可能导致芯片响应延迟,过低频率可能引起电机抖动。
STM32实现示例:
// 初始化TIM3产生PWM |
TIM_TimeBaseStructure.TIM_Period = 7200 - 1; // 自动重装载值 |
TIM_TimeBaseStructure.TIM_Prescaler = 0; // 预分频值 |
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); |
// 初始化PWM通道 |
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; |
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; |
TIM_OCInitStructure.TIM_Pulse = 3600; // 初始占空比50% |
TIM_OC1Init(TIM3, &TIM_OCInitStructure); |
TIM_Cmd(TIM3, ENABLE); |
五、硬件设计注意事项
电源滤波:
在VM与GND之间并联100μF电解电容与0.1μF陶瓷电容,滤除高频噪声。
在VCC与GND之间并联10μF电解电容与0.1μF陶瓷电容,稳定逻辑电压。
散热设计:
高电流工作时,芯片可能发热,建议加装散热片或PCB铺铜。
电平匹配:
确保STM32的GPIO电平与TB6612的逻辑电平兼容(3.3V/5V)。
电机选择:
电机额定电压需与VM匹配,电流不超过芯片持续输出电流(1.2A)。
六、软件控制实现
以下为STM32控制TB6612的完整代码示例:
1. 初始化代码
#include "stm32f10x.h"
// 定义引脚 #define MOTOR_AIN1_PIN GPIO_Pin_0 #define MOTOR_AIN2_PIN GPIO_Pin_1 #define MOTOR_PWMA_PIN GPIO_Pin_8 #define MOTOR_PORT GPIOA
void Motor_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure;
// 使能时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
// 配置AIN1/AIN2为推挽输出 GPIO_InitStructure.GPIO_Pin = MOTOR_AIN1_PIN | MOTOR_AIN2_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(MOTOR_PORT, &GPIO_InitStructure);
// 配置PWM引脚为复用推挽输出 GPIO_InitStructure.GPIO_Pin = MOTOR_PWMA_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(MOTOR_PORT, &GPIO_InitStructure);
// 初始化TIM3 TIM_TimeBaseStructure.TIM_Period = 7200 - 1; TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
// 初始化PWM通道 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 0; // 初始占空比0% TIM_OC1Init(TIM3, &TIM_OCInitStructure); TIM_Cmd(TIM3, ENABLE); }
2. 电机控制函数
// 设置电机转速与方向 void Motor_SetSpeed(int8_t speed) { if (speed >= 0) { // 正转 GPIO_SetBits(MOTOR_PORT, MOTOR_AIN1_PIN); GPIO_ResetBits(MOTOR_PORT, MOTOR_AIN2_PIN); TIM_SetCompare1(TIM3, speed * 72); // 占空比=speed% } else { // 反转 GPIO_ResetBits(MOTOR_PORT, MOTOR_AIN1_PIN); GPIO_SetBits(MOTOR_PORT, MOTOR_AIN2_PIN); TIM_SetCompare1(TIM3, -speed * 72); // 占空比=|speed|% } }
// 停止电机 void Motor_Stop(void) { GPIO_ResetBits(MOTOR_PORT, MOTOR_AIN1_PIN); GPIO_ResetBits(MOTOR_PORT, MOTOR_AIN2_PIN); TIM_SetCompare1(TIM3, 0); }
3. 主函数示例
int main(void) { Motor_Init();
while (1) { Motor_SetSpeed(50); // 正转,50%占空比 Delay_ms(1000); Motor_SetSpeed(-50); // 反转,50%占空比 Delay_ms(1000); Motor_Stop(); // 停止 Delay_ms(1000); } }
七、应用场景与扩展
TB6612广泛应用于以下领域:
机器人开发:作为移动底盘的动力源,控制电机正反转与调速。
自动化设备:驱动执行机构,如物料搬运、分拣系统。
教育实验套件:帮助学生理解电机控制原理与编程实践。
智能小车:实现前进、后退、转向等动作。
扩展功能
多电机协同控制:通过多个TB6612芯片实现四轮驱动或机械臂控制。
闭环控制:结合编码器反馈,实现速度或位置闭环控制。
无线遥控:通过蓝牙或WiFi模块,实现远程电机控制。
八、总结
TB6612FNG是一款高性能、低成本的电机驱动芯片,适用于中小功率电机控制。通过H桥电路与PWM调速,可实现精确的电机控制。硬件设计需注意电源滤波与散热,软件控制需合理配置GPIO与PWM。其广泛应用于机器人、自动化设备等领域,是电机控制领域的理想选择。
责任编辑:David
【免责声明】
1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。
2、本文的引用仅供读者交流学习使用,不涉及商业目的。
3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。
4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。
拍明芯城拥有对此声明的最终解释权。