ADI TMC2208 步进电机评估板 评测
<div class='showpostmsg'> 本帖最后由 sanbourn 于 2024-8-16 12:29 编辑<p> 非常感谢eeworld给了这次评测的机会,也是第一次写评测文章,之前一直都是读大佬的文章,这次献丑了。</p>
<p> 也非常感谢我们公司团队小伙伴的协助,自己很忙,绝大多数的工作都是小胡同学做的。</p>
<h2>一、基本性能</h2>
<div> TMC2208具有低噪声、低振动的优点,是一款较为先进的步进电机驱动芯片,相较于我们之前用的A4988、DRV8825等芯片具有更高的精度和稳定性。如图1所示为TMC2208的接线方式。</div>
<div style="text-align: center;"></div>
<div style="text-align: center;">图1 TMC2208实物引脚及实际接线图</div>
<div> TMC2208支持多种驱动模式:UART模式、OTP模式以及STEP/DIR模式。其中前两种都是由UART传输指令和数据对芯片寄存器进行配置,实现电机驱动控制;STEP/DIR则通过传统的引脚控制,使用STEP控制无法实现256微步进控制,仅可以实现16分步控制,但是由于芯片内部集成的算法和相关功能,依旧可以实现低噪低振动电机驱动,STEP控制可以和UART相混合使用。</div>
<div> 表1所示为TMC2208基本性能,TMC2208支持256微步设置,逻辑电压可使用3.3V/5V,可支持负载供电电压为5.5-36V。在实际测试中,根据所使用电机要求,采用了3.3V逻辑电压以及24V的负载供电。</div>
<div style="text-align: center;">表1 TMC2208基本性能</div>
<table border="1">
<tbody>
<tr>
<td>类别</td>
<td>units</td>
<td>TMC2208</td>
</tr>
<tr>
<td>驱动电流</td>
<td>A</td>
<td>1.4(2)</td>
</tr>
<tr>
<td>逻辑电压</td>
<td rowspan="3">V</td>
<td>3.3/5</td>
</tr>
<tr>
<td>参考电压</td>
<td>2.5</td>
</tr>
<tr>
<td>负载供电</td>
<td>5.5-36</td>
</tr>
<tr>
<td>分步</td>
<td> </td>
<td>256(16)</td>
</tr>
<tr>
<td>控制精度</td>
<td> </td>
<td>0.007°</td>
</tr>
<tr>
<td>通信方式</td>
<td> </td>
<td style="text-align: center;">uart(不支持寻址)</td>
</tr>
</tbody>
</table>
<div> 该芯片在正常电机驱动情况下,通过UART设置最大驱动电流可设置为1.77A,理论长时间正常运转最大值为2A。但在实际正常工作情况下,为保证芯片以最佳性能的稳定运行,电流最大需要保持在1.4A左右的电流值,且需搭配良好的散热设计(包括PCB多层散热设计以及额外配备散热片等散热设备),如图2所示。</div>
<div style="text-align: center;"></div>
<div style="text-align: center;">图2 添加散热片的TMC2208</div>
<div> 因实际测试的24电机支持相电流最大为1.2A,故测试中通过UART配置模式将驱动电流设置在0.94A,如图3所示。通过UART可以对芯片高低速运行时的算法进行设置,在低速时可以使用Stealthchop2算法保证低速静音,在高速时改为SpreadCycle抑制高速共振。BTW,我们这里使用了下面这个工具软件,链接<a href="https://learn.watterott.com/silentstepstick/configurator/">Configurator for TMC220x | SilentStepStick | Watterott electronic</a>,不过大佬应该就不需要了,这个uart配置也不难,就是稍微耗点时间。各位如果着急使用可以试试这个软件。</div>
<div style="text-align: center;"></div>
<div style="text-align: center;">图3 UART设置电流参数</div>
<div> TMC2208提供了众多的寄存器配置,在实际测试主要需要配置GCONF、Stealthchop寄存器。通过GCONF寄存器设置芯片为通过UART配置微步进数,在Stealthchop寄存器中可设置微步进数,如图4所示。</div>
<div style="text-align: center;"> </div>
<div style="text-align: center;">图4 UART微步设置</div>
<div> 如图5所示,通过示波器测试了输出的波形,两个绕组的电流存在相位差,由于设置了分步可以发现正弦波是由一个个小台阶组成,波形相对与A4988和DRV8825纹波更小(下文有两款的波形),故能够使电机以足够小的声音和振动进行转动。</div>
<div style="text-align: center;"></div>
<div style="text-align: center;">图5 TMC2208输出波形</div>
<h2>二、实际电机驱动性能</h2>
<div> 公司里面电机比较多,手头的大部分都是淘宝上买的,应该都不是大厂的,随便拿了个电机试试。</div>
<div> 通过对32分步和256分步下的TMC2208的运动情况进行了测试,结果如表2所示。可以发现,在32分步下旋转100圈均未发生失步现象,在256设置下多次运转10或20圈同样未出现失步现象。此外,为测试更精确的控制能力,在256微步设置下,驱动电机运转7个微步时,出现0.005°的误差,原因在于过小的旋转步距导致驱动电流难以精准的控制电机的运转。尽管在较小的驱动角度下,但是依旧证明了TMC2208芯片具有很高的控制精度和稳定的驱动性能。</div>
<div style="text-align: center;">表2 TMC2208电机驱动控制</div>
<p style="text-align: center;"> </p>
<table border="1">
<tbody>
<tr>
<td>分步</td>
<td>运行圈数</td>
<td>初始位置</td>
<td>终止位置</td>
<td>误差</td>
<td>备注</td>
</tr>
<tr>
<td>32</td>
<td>100rat</td>
<td>103.117°</td>
<td>103.117°</td>
<td>0</td>
<td>每圈间隔5S</td>
</tr>
<tr>
<td rowspan="2">256</td>
<td>10/20rat</td>
<td>128.847°</td>
<td>128.847°</td>
<td>0</td>
<td>每圈间隔3S</td>
</tr>
<tr>
<td>0.049°(7步)</td>
<td>132.099°</td>
<td>132.143°</td>
<td>0.005°</td>
<td>每圈间隔3S</td>
</tr>
</tbody>
</table>
<div> 此外,通过对TMC2208的不同程度分步设置和转速下的运转情况进行了测试,结果如表3所示。</div>
<div style="text-align: center;">表3 不同分步下电机运转情况</div>
<table border="1">
<tbody>
<tr>
<td>微步设置</td>
<td>频率</td>
<td>速度</td>
<td>噪音</td>
<td>温度</td>
<td>振动</td>
</tr>
<tr>
<td>2</td>
<td>500Hz</td>
<td>37.5r/min</td>
<td>42dB以下</td>
<td>-</td>
<td>无</td>
</tr>
<tr>
<td>4</td>
<td>500Hz</td>
<td>37.5r/min</td>
<td>42dB以下</td>
<td>-</td>
<td>无</td>
</tr>
<tr>
<td rowspan="3">8</td>
<td>625Hz</td>
<td>23.4375r/min</td>
<td rowspan="2">45dB以下</td>
<td rowspan="3">35.1°</td>
<td>无</td>
</tr>
<tr>
<td>1kHz</td>
<td>37.5r/min</td>
<td>无</td>
</tr>
<tr>
<td>2.5kHz</td>
<td>93.75r/min</td>
<td>45dB</td>
<td>小</td>
</tr>
<tr>
<td rowspan="4">16</td>
<td>1kHz</td>
<td>18.75r/min</td>
<td>-</td>
<td rowspan="4">33.5°</td>
<td>无</td>
</tr>
<tr>
<td>1666.6Hz</td>
<td>31.25r/min</td>
<td>-</td>
<td>无</td>
</tr>
<tr>
<td>2.5kHz</td>
<td>46.875r/min</td>
<td>40dB</td>
<td>较小</td>
</tr>
<tr>
<td>5kHz</td>
<td>93.75r/min</td>
<td>-</td>
<td>小</td>
</tr>
<tr>
<td rowspan="2">32</td>
<td>5kHz</td>
<td>46.875r/min</td>
<td>42dB以下</td>
<td>34.5°</td>
<td>无</td>
</tr>
<tr>
<td>10kHz</td>
<td>93.75r/min</td>
<td>52db</td>
<td>37.7°</td>
<td>明显</td>
</tr>
<tr>
<td>64</td>
<td>10kHz</td>
<td>46.875r/min</td>
<td>42dB以下</td>
<td>-</td>
<td>无</td>
</tr>
<tr>
<td>128</td>
<td>10kHz</td>
<td>23.4375r/min</td>
<td>42dB以下</td>
<td>-</td>
<td>无</td>
</tr>
<tr>
<td rowspan="2">256</td>
<td>20kHz</td>
<td>23.4375r/min</td>
<td rowspan="2">42dB以下</td>
<td>33.4°</td>
<td>小</td>
</tr>
<tr>
<td>50kHz</td>
<td>58.59375r/min</td>
<td>33.5°</td>
<td>无</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
<td>-</td>
<td>整体42dB以下</td>
<td>37.7(max)</td>
<td>整体小</td>
</tr>
</tbody>
</table>
<div> 根据表3及图6所示结果可知,驱动电机整体噪声小于42dB,且存在设备限制和环境噪声影响,实际产生噪声应小于这一数值。TMC2208所集成的Stealthchop2技术,在实际的驱动中速度越低所发出的噪声越小,且具有更加稳定的状态,造成的振动也最小,反而在低速范围内随着速度的升高会使噪声和振动增加。此外,整体的芯片温度经过长时间的运转后最终温度并不高,仅为37.7°。</div>
<div style="text-align: center;"></div>
<div style="text-align: center;">图6 TMC2208驱动 电机运行噪声结果</div>
<div> 在整体的测试中,TMC2208相较于A4988等芯片明显具备更加优异的性能。TMC2208在实际驱动中具备更小的噪声和振动,更高的驱动精度,支持UART和STEP/DIR以及OTP三种控制模式,更加灵活且具备更丰富的功能,能够适用于要求更加苛刻的场景。</div>
<div> 手头还有TMC2209、DRV8825和A4988的板子,顺便把测试图也放一下,可以简单对比一下。</div>
<div>
<p align="center"> </p>
<p align="center"> </p>
<p align="center">图7 TMC2209输出波形</p>
<p align="center"></p>
<p align="center"> </p>
<p align="center">图8 DRV8825输出波形</p>
<p align="center">表4 DRV8825不同分步驱动电机状况</p>
<table align="center" style="border-collapse:collapse; border:none;Times New Roman"">
<tbody>
<tr>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:1px solid black; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">分步</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:1px solid black; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">频率</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:1px solid black; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">转速</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:1px solid black; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">噪声</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:1px solid black; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">振动</p>
</td>
</tr>
<tr>
<td nowrap="nowrap" rowspan="2" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">2分步</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">1khz</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">150r/min</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">56dB</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">小</p>
</td>
</tr>
<tr>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">1333.33Hz</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">200r/min</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">54db</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">较大</p>
</td>
</tr>
<tr>
<td nowrap="nowrap" rowspan="2" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">16分步</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">1666.6Hz</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">31.25r/min</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">60db</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">较小</p>
</td>
</tr>
<tr>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">5kHz</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">93.75r/min</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">51db</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">略大</p>
</td>
</tr>
<tr>
<td nowrap="nowrap" rowspan="2" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">32分步</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">5kHz</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">46.875r/min</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">58db</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">较小</p>
</td>
</tr>
<tr>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">10kHz</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">93.75r/min</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">50db</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p align="center">小</p>
</td>
</tr>
</tbody>
</table>
<p align="center"></p>
<p align="center"> </p>
<p align="center">图9 A4988输出波形</p>
<p align="center">表5 A4988驱动电机噪声振动对比</p>
<table align="center" style="border-collapse:collapse; border:none;Times New Roman"">
<tbody>
<tr>
<td style="border-bottom:1px solid black; border-top:1px solid black; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>分步</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:1px solid black; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>频率</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:1px solid black; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>转速</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:1px solid black; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>噪声</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:1px solid black; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>振动</p>
</td>
</tr>
<tr>
<td rowspan="2" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>全步</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>250Hz</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>75r/min</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>58db</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>大</p>
</td>
</tr>
<tr>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>500Hz</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>150r/min</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>50db</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>较大</p>
</td>
</tr>
<tr>
<td rowspan="2" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>16分步</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>1666.6Hz</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>31.25r/min</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>-</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>小</p>
</td>
</tr>
<tr>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>2.5kHz</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>46.875r/min</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>60db</p>
</td>
<td nowrap="nowrap" style="border-bottom:1px solid black; border-top:none; border-right:1px solid black; border-left:1px solid black" valign="center">
<p>较大</p>
</td>
</tr>
</tbody>
</table>
</div>
<h2>三、总结</h2>
<div> 在整体的测试中,TMC2208相较于DRV8825、A4988等芯片明显具备更加优异的性能。TMC2208在实际驱动中具备更小的噪声和振动,更高的驱动精度,支持UART和STEP/DIR以及OTP三种控制模式,更加灵活且具备更丰富的功能,能够适用于驱动要求更加苛刻的场景。</div>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>感谢楼主分享,写的很详细,正在学习相关知识,下载来好好学习</p>
<p>楼主,我看你在的配置中也没有使能SpreadCycle,我在使用SpreadCycle时能明显听到电流声,你有没有遇到呢?还是我的使用方式不对?</p>
哪里拿到评估版 m9wo 发表于 2024-8-23 16:54
楼主,我看你在的配置中也没有使能SpreadCycle,我在使用SpreadCycle时能明显听到电流声,你有没有遇到呢? ...
<p>没有遇到呀</p>
ruyi1pei2003 发表于 2024-8-24 20:22
哪里拿到评估版
<p>eeworld网站和得捷的评测活动</p>
页:
[1]