实测三款电机驱动板,在BLDC、步进电机的表现

谈起电机驱动器,可以称作芯片厂商的“秀场”,几乎每家厂商都会在其投入大量的精力和资金。但八仙过海各显神通,每家厂商都对电机驱动有着不同的理解,电机驱动算法也是每个控制器厂商的独门秘笈,尤其在最近有很多值得关注的新产品。
这些新产品所应对场景并不相同,采用的前沿技术也鲜有人接触,因此,我们邀请到了工程师,对三款产品进行了全面的测评,看看具体的表现如何。

图片
 ADI TMC2208 步进电机评估板测评
 
图片

这次购买有逻辑分析仪TOL-18627、电机评估板TMC2208SILENTSTEPSTICK还有一个外置按键。
图片
本次评测使用的步进电机,本人珍藏的大大小小不同类型步进电机,全部可以5V工作,可以满足TMC2208的评测要求
图片
评测大致规划:
1、介绍二相四线步进电机的结构及驱动原理及驱动方式的优劣性
2、介绍TMC2208的串口通讯原理及指令集,连接ESP32/蓝牙模块与手机进行蓝牙通讯,直接用手机发送指令控制步进电机的运动
3、TMC2208正弦控制控制原理,优势运用在二相四线的优势,同时关注步进电机运行工程的噪声和温升
4、通过串口转USB模块让TMC2208连接到电脑上位机,通过电脑控制步进电机的工作以及模式选择
5、更换步进电机型号,观察TMC2208驱动能力及TMC2208表面温度情况,评估是否需要选配散热器
二、深入浅出步进电机驱动原理
步进电机示意图与实物演示
驱动示意图:
图片
        
每个四节拍旋转角度:
  
图片
步进电机种类很多,大概可分为
图片
问题一:步进电机是否可以发电
步进电机可以直接驱动步进电机(同类型电机,大功率带动小功率)
步进电机驱动波形
图片
问题二:H桥直驱逆变原理
图片
步进电机驱动,可以看做两个直流电机控制,通过H桥可以将直流电转换交流电,从而控制电机的正转、反转
图片
步进电机驱动逻辑:
图片
通常步进电机内部是由两组线圈组成,因此需要将两个 H 桥分别连接到两组线圈的端子上,从而可以形成两相四线的控制方式。在两个线圈中,我们习惯性地把他们分别称为 A 相和 B 相,而 A 相的两个端子又分别记为 A+、A-,同理 B 相的两个端子称为 B+、B-。通过给 A 相和 B 相施加一定的电流,从而可以形成一个矢量合成的磁场,由于磁场的存在,所以可以把步进电机的转子进行旋转控制。使用 NSUC1610 的桥臂输出MOUT0 和 MOUT1 分别连接步进电机的 A+ 相、A- 相,使用桥臂输出 MOUT2 和 MOUT3 分别连接到步进电机的 B+ 相、B- 相,通过控制 A 相和 B 相的电流可以组成四个象限
图片
全步模式下,只需要在每一步调整一个相位的电流方向,就可以实现简单的全步控制。例如在第一象限电流方向为 A+, B+; 在第二象限为 A-, B+; 第三象限为 A-, B-; 第四象限为 A+, B-; 依次循环往复,这样每一步的电流矢量即为 45°,135°,225°,315°,具体波形如图
图片
半步模式下, 是基于全步控制中间插入一个 0 电流状态, 再配合 A+,B+, A-, B- 进行组合, 即可以得到 8 个矢量状态, 这八个状态分别是 0°, 45°, 90°, 135°, 180°, 225°, 270°, 315°, 具体波形如图
 
图片
缩放模式是针对半步控制进行的一种优化,由于半步控制的矢量大小不在一个圆内,因此会产生转矩脉动和运转不均衡的情况。为了能够减小这个脉动,我们需要将大小不为1的矢量除以√2,经过这个操作以后,每一步的转矩大小就都一样从而避免了转矩突破而产生的脉动,具体波形如图
图片
微步控制是将 A, B 两相的电流分别设置成正弦、余弦电流, 正余弦的电流分辨率直接影响步进电机控制的噪音以及旋转的丝滑程度。典型的微步控制是指在每一个象限细分的步数,可支持每个象限最多 32 步细分,在一个步进角范围内则可以实现最多到 128 细分,具体电流控制波形如图
图片
问题三:步进电机细分驱动原理
需要明确一点,步进电机最好的驱动电压电流信号为交流正弦信号,可以减少噪声、发热等问题
图片
图片
图片
图片
图片
图片
问题四:步进电机正反转原理
步进电机正反转实际上就是控制驱动逻辑时序,将正转驱动逻辑逆过来
图片
图片
图片
问题五:步进电机驱动器
步进电机驱动器的工作原理主要基于将控制系统发出的脉冲信号转化为步进电机的角位移,即每接收到一个脉冲信号,步进电机就旋转一步距角。具体来说,步进电机驱动器通过其内部的逻辑电路和功率电路,根据外来的控制脉冲和方向信号,控制步进电机的绕组以一定的时序正向或反向通电,从而实现电机的正向/反向旋转或锁定。在工作过程中,步进电机驱动器通常由控制器、驱动器和与电机连接的电路组成,可实现对步进电机的精确位置和速度控制。当步进驱动器接收到一个脉冲信号时,它就可以驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”。这种控制方式使得步进电机的转速与脉冲信号的频率成正比,可以通过控制脉冲信号的频率对电机进行精确调速;同时,还可以控制脉冲的个数来对电机进行精确定位。此外,步进电机驱动器的设计还涉及到多种工作模式,如半步、基本步距和两相激励等,这些模式通过不同的逻辑关系和工作方式来实现对步进电机的精细控制。例如,L297/L298步进电动机控制器-驱动器采用固定斩波频率的PWM恒流斩波方式工作,并具有三种不同的工作模式。综上所述,步进电机驱动器的工作原理是通过接收并处理来自控制系统的脉冲信号,利用其内部的逻辑电路和功率电路,按照特定的时序和模式控制步进电机的绕组通电,从而实现对步进电机的精确控制,包括转速、位置和方向。
图片
三、驱动步进电机转动
框架示意图
图片
采用ESP32 UNO D1 R32开发板
图片
实物照片
图片
使用逻辑分析仪测试波形如下:
图片
方波为100us
图片
四、手机蓝牙控制步进电机运动
ESP32自带蓝牙功能,通过无线蓝牙即可与手机进行通讯,通过手机发出的指令即可控制,为方便演示,通过简单指令控制步进电机正反转运动
蓝牙指令
运动状态
备注
指令A
正转运动
指令B
反转运动
程序代码
打开案例库
图片
案例程序代码,在此基础进行修改
图片
实物演示:
使用的蓝牙APP叫作SPP蓝牙串口助手,可以自定义发送字符串内容,有快捷键操作,很方便
图片
 五、电脑上位机控制步进电机运动 
LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是由美国国家仪器公司(National Instruments,简称NI)开发的一种图形化编程环境和工具。它主要用于数据采集、仪器控制和自动化测试等领域,通过可视化编程方法简化了复杂系统的开发过程。
LabVIEW的特点与应用 图形化编程:LabVIEW采用图形化编程方式,用户可以通过拖放控件和连接线来创建程序,而无需编写传统的代码。这种方式使得编程更加直观和易于学习。
虚拟仪器:LabVIEW中的程序被称为虚拟仪器(VI),这些VI可以模拟各种物理仪器的功能,并且具有高度的灵活性和可扩展性。
数据流编程:LabVIEW的核心概念之一是数据流编程,即通过数据流动来驱动程序的执行。这种编程方式强调了数据的流向和处理顺序,有助于提高程序的可读性和维护性。
优势:
快速原型开发:LabVIEW的图形化编程方式使得开发原型快捷高效,有助于加速深度学习等领域的研究和应用。
直观易用:LabVIEW采用图形化编程语言,可以通过图形化界面进行编程,而不是传统的文字化编程,使得编程更加直观、易于理解和调试。
虚拟仪器开发功能:LabVIEW提供了便捷的虚拟仪器开发功能,能够依据专家的经验对没有精确数学模型的系统进行良好的控制。
混合编程能力:LabVIEW可以与MATLAB进行混合编程,利用MATLAB强大的数据处理能力和LabVIEW便捷的虚拟仪器开发功能,实现优势互补。
程序流程图
图片
实物展示
图片
图片
 DFRobot Arduino四路电机驱动板 
图片
一、开箱
先上靓照
图片
 
图片
 
看到板子的第一眼就可以确定是DFROBOT的产品,配色和设计风格比较熟悉.
DFRobot 四路直流电机驱动扩展板,兼容5V/3.3V Arduino主控器,仅需要8个管脚,既可以同时控制四个直流电机,支持PWM调速和正反转控制。驱动板集成了两块TB6612FNG电机驱动芯片,相对于传统的L298N,效率上提高很多,体积上也大幅度减少,在额定范围内,芯片基本不发热,单路最高可输出1.2A持续电流,并且内置低压检测电路与热停机保护电路,安全可靠。适用于各类DIY制作。

产品参数

  • PWR电机供电:2.5V-13.5V
  • VCC逻辑供电:2.7~5.5V
  • 输出电流:1.2A 单通道连续驱动电流
  • 启动/峰值电流:2A(连续脉冲)/ 3.2A(单脉冲)
  • Arduino控制端口:数字口3,4,5,6,7,8,11,12
  • 工作温度:-20~85℃
  • 尺寸:52mm * 53mm

这款产品适合作为四驱小车的驱动板,本身接口又是机遇arduino接口的,适用的范围非常广,也适合初学者作为入门适用。
二、直流电机驱动
直流电机驱动测试
选用220V变5V的开关电源,选择一个5V的直流电机.
图片
图片
图片
选用DFRobot的ARduino主板,配实验驱动板,程序为官方测试代码,适当调整了驱动。
DFRobot Arduino四路电机驱动板是DFRobot系列中基于Arduino的系列扩展板之一。选用基于TB6612FNG电机驱动芯片,代替传统中被广大diyer熟知的L298N(据说国内产的也相当成熟了)。
扩展板兼容5V/3.3V Arduino主控器,仅需要8个管脚,既可以同时控制四个直流电机,支持PWM调速和正反转控制。由于采用TB6612FNG使得整体效率上提高很多,体积上也大幅度减少,在额定范围内,芯片基本不发热,单路最高可输出1.2A持续电流,并且内置低压检测电路与热停机保护电路,安全可靠。
端子排列:
线路板除了具有兼容arduino的接口外,还有一个电机驱动电源
图片
电压输入端子“PWR”,和4路直流电机驱动输出接口,M1、M2、M3、M4 。
这里值得提一下的是,由于系统中的PWR仅为两片电机驱动芯片TB6612FNG提供电源,并没有提供5V和3.3V电源,所以Arduino主板必须自己提供5V或3.3V的输入,这是一个遗憾啊。
系统占用3、4、5、6、7、8、11、12共8个arduino引脚,其中4、12、8、7的4个引脚用来分别控制M1-M4驱动方向;3、11、5、6的4个引脚分别用来控制M1-M4的输出开度,调速范围0-255.
图片
使用实例简图:
根据前面提到的引脚关系,可以看出该驱动板的基本连接关系,左侧连接4台直流电机,右侧连接DC13.5V以内的锂离子电池。
TB6612FNG和L298N对比
  1. 封装形式对比:
  1. 性能参数对比:

项目
TB6612FNG
L298N
驱动电压
5V(2.5~13.5)
VIH+2.5 ~46V
逻辑电压
3.3V(2.7~5.5)
5V(4.5~7)
输入信号
-0.2~6
-0.3~7
驱动H桥
2个
2个
驱动电流
1.2A(单通道)
2A(单通道)
2A(tw = 20 ms Continuous pulse, Duty ≤ 20%)
2.5A(Repetitive (80% on –20% off; ton= 10ms))
工艺
LD MOS
三极管
工作温度
-20~85℃
-25~130℃
存储温度
-55~150℃
-40~150℃
  1. 操作方式:
TB6612FNG
图片
L298N
图片
  1. 综合对比

相比于L298N来说,TB6612FNG采用LD MOS工艺,导通电阻小,自身功耗低,因此其效率明显高于L298N,所以其封装的体积也大幅度较小,再额定范围内,芯片基本不发热。
但TB6612FNG的驱动电压不高15VDC,明显低于L298N的46VDC,因此会限制它的应用范围。比如DC24V的应用场景。
5、基于打印机结构的雕刻机设想
打印机包括一个走纸机构、一个打印头定位机构,可以对应简易雕刻机的Y轴行走定位和主轴电机X轴行走定位。
图片
图片
驱动板连接两路直流电机驱动。
图片
走纸机构,将来会发展为平台的Y轴移动和定位。
图片
这个是光电编码器和码盘,可以利用这个来完成定位功能。
环境搭建基本完成,接下来测试将要测试多电机驱动控制和基本应用控制。
图片
 三相无刷电机的ESC:基于STM32G431CB MCU测评 
图片
非常有幸得到了B-G431B-ESC1的评测机会,感谢EEWORLE 和 得捷提供的机会!!
本文分享一下采购的物品,由于物料还未到达。还整理了一下收集资料到的资料,方便后人开发。
官方原理图 与 Layout文件(AD格式)
图片
正面
图片
反面
上图是板子的3D视图,PCBA上丝印比较小,使用源文件可以很清晰的查看丝印和线路。
全称:ST Motor Control SDK,ST官网的描述是:
“STM32 MC SDK(电机控制软件开发套件)固件(X-CUBE-MCSDK和X-CUBE-MCSDK-FUL)包括永磁同步电机(PMSM)固件库(FOC控制)和STM32电机控制Workbench,以便通过图形用户界面配置固件库参数”
可以理解为这个软件包含GUI配置电机参数界面 与 SDK的生成与配置,具体还要后面试用一下才知道。所以这个软件最好也下载、安装一下。
图片
除了B-G431B-ESC1之外我还选择了另外2块板子:
板子1:NRF52840-DONGLE
Nordic的蓝牙模块,可以配合上位机在电脑接收数据 与 发送数据,在调试的时候可以做到无线收发数据,方便调试,并且可以在几米之外调速等。
板子2:NUCLEO-G431KB
与B-G431B-ESC1同样主控的开发板,有两个作用:
1、由于开发板是最小系统,实现不连接驱动电路,直接输出PWM,确认信号输出正确后再使用B-G431B-ESC1验证驱动代码
2、担心操作不当烧掉B-G431B-ESC1,有了这块板子相当于多了一个备胎,还是可以继续推进工程!
作为之前写过BLDC驱动的工程,电机驱动的调试经验都是烧出来的,所以调试的时候切记限流 和 确认波形正确与否在接电机!!
最后再次感谢电子工程世界(EEWorld) 和 得捷电子提供的评测机会!!
二、开箱与点灯
经过8天的等待,订购的物品从美国寄到我的手里了。跨国购物的话,涉及到出入境,得捷真的挺快的。
1、B-G431B-ESC1
图片

B-G431B-ESC1 设计非常紧凑,拿到手里非常迷你、精致,看得出来为了飞控等空间较小的应用场景专门优化设计的。
Nordic的NRF52840-DONGLE 在此次评测中用于无线透传数据,实现无线调试。Nordic作为无线领域的龙头,资料丰富,上位机好用,所以选购它。
NUCLEO-G431KB
图片
图片
NUCLEO-G431KB 打算在使用B-G431B-ESC1体验ST MCSDK开发后,自己从头写BLDC驱动时验证PWM控制逻辑使用的。
(二)、B-G431B-ESC1点灯
本次使用Cube MX生成代码,分为三步走,第一步:确认硬件,第二步:cube mx生成代码,第三步:代码编写与烧录
2.1、硬件确认
从原理图上可以得知,板载LED有两颗,一颗上电就会亮,一颗要PC6给高电平才会亮。
图片
USART2的 PB3 PB4直接接到ST_Link,通过ST_Link会接到电脑USB口,就不用额外的串口模块。
图片
2.2、软件配置
主控的型号是STM32G431CBU6,接了8MHz的外部晶振。
配置烧录口
图片
配置时钟
图片
打开串口前先选中PB3 PB4作为串口引脚
图片
打开串口,其他配置默认即可
图片
之后就可以生成代码了
添加LED灯IO初始化
图片
2.3、代码编写与实验
在USART 与 GPIO初始化后,添加以下代码
uint8_t str[] = "Hello eeworld! Hello B-G431-ESC1!\r\n";
HAL_UART_Transmit(&huart2,(uint8_t*)str,sizeof(str)-1,100);
完成串口数据输出 与 点灯。
效果如下:
图片
图片
以上就是本次的开箱 和 点灯与串口输出。
安装流程:
无脑安装即可,我只修改了安装地址
图片
2.生成工程
切换中文 与 新建工程
图片
选择单电机、六步法,我认为就是BLDC方波控制。
图片
电机选择:随便选择一个电机先,走好流程,成功生成代码,下一次再来修改。
图片
选择开发板后,点击确定。跳转后的逻辑框图界面提示报错
下图可见是提示:危险,未启用过流保护。。。
图片
图片
可以看到的是过流保护没有是硬件不支持!!虽然板子的三个采样电阻采集的是三相的相电流,但是可以根据2相 或 1相的相电流来作为保护的依据(不能3相加起来,应为基尔霍夫定律电流和为0,并且FOC单电阻采样都能构建电流模型,BLDC只会更简单,不理解为什么是个不支持!
生成代码
图片
图片
生成中有报错,不管即可
图片
打开工程,编译通过。
图片
查阅代码后发现并没有初始化PC6的LED,由于改动比较简单,所以就手动添加一些代码,并且在配置工程时没有修改波特率也要手动修改一下。
添加PC6初始化
修改波特率
图片
原本的波特率比较特殊,不是全部的上位机都支持,所以改为115200
实验代码
图片
结果是可以亮灯 与 接收数据!运行结果与前文一致就不贴图了。
四、MCSDK 电机启动
本文是开始转动电机,在之前的生成代码过程中随便选择了一款电机,生成代码后,验证生成的工程正常可用!但是这是不正确的,现在开始修改。
(一)、电机参数确认需要测量的电机参数,可以在MCSDK中新建电机的界面看到非常、非常多的参数,但是在方波理有用的参数实际上没几个(叠个甲,我认为,我觉得,不一定对,有不对请交流指点,谢谢!),里面大部分参数都是用于FOC,在FOC里面计算磁链参数,搭建电机的模型,观测器等一系列运算。    在BLDC里需要注意的只有霍尔传感器分布 与 极对数。    霍尔传感器分布,影响霍尔的波形,如果不对电机转动异常、电流偏大、发热等异常
1.1、极对数由于计算速度,用于速度环 与 显示速度。
图片
1.2、霍尔传感器分布由下图可知,霍尔角度120°
图片
图片
1.2、电机极对数电机快速转一圈,6个完整正弦,6对极
图片
按照测量的电机参数修改功能内电机的相关配置后,重新生成、烧录代码。
(二)、电机启动使用生成的工程 配合 Motor Pilot上位机,就可以实现电机启动、调速、跳转PID、可视化霍尔电角度等非常丰富的功能。
2.1、启动电机
②连接后(没供12V),所以提示欠压
图片
电压太低的情况下,即使加了预驱也是没办法导通MOS的,所以这里的低压警报是针对驱动桥的。在3.3v-5V的情况,芯片、霍尔等大部分器件是可以正常工作的。
③有任何报错后会自动停止
图片
上图是,供电12v,限流50ma后,点击启动后,电源过流保护,拉低电压,导致检测到欠压,自动停止输出PWM了。想要再次启动需要点击”Ack Faults”,清除错误之后才可以再次启动电机。
④点击开始启动电机(供12v后),并且限流调大了
图片
点击启动之后,电机正常启动,平稳运行!
ST 的MCSDK一套流程体验下来非常的丝滑、流畅,调过电机、有电机调试经验的人第一次接触也能很快的上手,没什么大问题。
但是具体的实现代码里面就有点不友好了,BLDC的六步法的代码时比较简单(对比FOC来说),但是ST将六步法与FOC居然耦合起来了(下文会描述),并且代码使用了非常多的、多层封装的结构体 与 复杂的流程,要吃透比较难。
总的来说,MCSDK入门简单、理解贯通,是比较有难度的。

和汽车开发者们面对面交流经验