1. TB6612驱动模块实战解析第一次拿到TB6612FNG这块驱动芯片时我对着密密麻麻的引脚有点发懵。这块东芝生产的H桥驱动芯片确实比传统的L298N强不少发热量小、效率高但要用好它还得下一番功夫。让我用实际项目经验告诉你怎么玩转这个电机驱动神器。TB6612最核心的优势在于它的MOSFET结构。相比晶体管方案它的导通电阻更小这意味着在驱动相同功率电机时发热量会显著降低。记得去年做智能小车比赛时用L298N的方案跑半小时就得停下来散热换成TB6612后连续工作两小时芯片也只是微温。重点说说引脚功能布局。芯片左侧是控制端右侧是功率输出端。VM接电机电源4.5-15VVCC接逻辑电源2.7-5.5V这两个电源一定要分开供电我见过不少新手把VCC和VM短接结果要么驱动无力要么直接烧芯片。控制信号端分为两组分别对应电机A和B每组都有PWM输入、两个方向控制输入IN1/IN2和一个输出使能端STBY。驱动逻辑其实很简单记住这个真值表就行IN10, IN21正转IN11, IN20反转两个输入相同制动 STBY引脚要始终保持高电平否则芯片会进入待机状态。曾经调试半天发现电机不转最后发现是忘了接STBY引脚这个坑希望大家别再踩。2. 编码电机接口全攻略市面上的编码电机通常有6根线其中2根是动力线4根是编码器线。第一次接线时我犯了个错误把编码器的电源接到了电机驱动电源上结果编码器芯片直接冒烟。后来才明白编码器部分和电机部分是完全独立的两个系统。电机线比较好认一般是红黑两色接在TB6612的AO1/AO2或BO1/BO2输出端。重点说说编码器线的接法电源线通常为棕色接3.3V或5V地线通常为黑色与单片机共地A相通常为绿色和B相通常为黄色接单片机的外部中断引脚编码器的工作原理很有意思。电机转轴带动一个光栅盘旋转通过光电传感器产生两路相位差90°的方波。通过检测这两路信号的边沿变化既能计算转速又能判断转向。我曾经用示波器观察过波形当电机正转时A相领先B相90°反转时则相反。这里有个实用技巧编码器电源最好加个0.1uF的去耦电容信号线串联100Ω电阻可以抑制高频干扰。在电机启停瞬间容易产生毛刺这些简单的滤波措施能让信号更稳定。3. 闭环控制系统搭建实录有了驱动和反馈接下来就是构建闭环系统了。我的方案是用STM32的定时器捕获编码器信号同时用另一个定时器产生PWM控制TB6612。硬件连接看似简单但调试过程中遇到了不少问题。首先要注意的是信号隔离。电机运行时会产生强烈的电磁干扰我的第一版设计没有做隔离导致单片机经常死机。后来在编码器信号线上加了光耦隔离问题迎刃而解。建议使用高速光耦如6N137普通PC817可能会丢失高速脉冲。速度计算有个经典算法在固定时间窗口内统计编码器脉冲数。比如我的编码器是13线单相输出转一圈产生13个脉冲如果100ms内收到26个脉冲说明转速是 (26脉冲 / 13脉冲每圈) × (1 / 0.1秒) × 60 1200 RPM但这个方法在低速时精度很差。后来我改用了脉冲周期测量法通过捕获两个相邻上升沿的时间间隔来计算瞬时速度。虽然算法复杂些但低速性能提升明显。两种方法可以结合使用高速时用频率法低速时用周期法。4. PID调参实战心得PID控制看似简单但要调出理想参数需要耐心。我总结了一套三阶调试法新手按照这个步骤来基本不会出错。首先把所有参数归零只调P。逐渐增大P值直到系统开始振荡然后取这个值的60%作为初始P。比如当P5时开始振荡就先设P3。这时候系统会有静差但响应比较平稳。接着加入积分项I。从P值的1/10开始慢慢增加直到静差消除。注意I值太大会导致超调严重我的经验是让I值刚好能消除静差就行。比如P3时可以从I0.3开始试。最后是微分项D。这个参数对抑制超调很有效但容易引入高频噪声。建议从P值的1/100开始观察系统响应。如果出现高频抖动就要适当减小D值或者在算法里加个低通滤波。调试时建议用阶跃响应测试突然给个目标速度观察实际速度的跟踪曲线。理想的响应应该是快速上升、轻微超调约10%、然后快速稳定。我通常会保存不同参数下的响应曲线对比分析找出最佳组合。有个容易忽略的细节PID计算周期要固定。最好用定时器中断触发计算避免因程序执行时间不固定导致控制效果波动。我的习惯是用1ms周期既能保证实时性又不会给CPU太大负担。