0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【世说芯品】1块开发板,24小时,完成伺服电机控制?

Sq0B_Excelpoint 来源:未知 2023-06-07 20:45 次阅读
如何在24小时之内完成伺服控制器设计?妮姐和豆豆就使用了一个“神器”,真的快速地完成了——

这个“神器”就是TMC4671,有多神,先卖个关子,大家继续往下看。

电机控制最复杂的是算法

电机控制,用简单的硬件电路就可以,但是无法做到稳定、高速、精确。如果在要求不高的场合,这些简单的硬件控制也是可行的,但到了工业控制机器人以及其他更精细的场合中,显然需要对电机的速度、电流、位置进行高精度的闭环控制了。但问题又来了,对电机的高精度控制,离不开控制算法。

电机控制算法通过运算向电机提供适当的驱动信号,预测电机转载的位置,尽快地和尽平稳地使电机转速达到指令速度,并维持这个速度。一旦电机转速达到了指令速度,即使在各种不利因素的干扰下也应该保持速度值不变。针对不同的电机、不同的应用,需要选择合适的控制算法。

稚晖君曾在知乎发布了一篇关于“【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术”的文章,把他学习FOC算法过程中看到的一些有关无刷电机矢量控制的资料和个人理解整理分享出来。相信大多数做电机调试的小伙伴都看过,虽然稚晖君已经深入简出的介绍了,但基本上要看上N遍才能看懂理解,甚至需要要花1,2个月的时间,才能弄出来一套能用的控制算法。

谁要是能帮我们搞定算法,那就完美了!这个事,早在三年前,就实现了,就是用TMC4671

TMC4671是什么神器?

TMC4671是一款ADI Trinamic于2020年发布的全球首个具有针对BLDC/PMSM和两相步进电动机以及直流电动机和音圈的磁场定向控制的全集成伺服控制器IC、集成ADC、位置传感器接口(增量式编码器,HALL信号等)和位置插值器的完整组件。全集成就是它最大的特点:

硬件上,集成了ADC、位置传感器接口(增量式编码器,HALL信号等)和位置插值器的完整组件。

软件上内置了算法库,包括位置和速度控制、FOC算法和控制、PWM驱动引擎、电流环检测,以及编码器引擎等。

2940583c-0530-11ee-8a94-dac502259ad0.png

其中转矩环核心的FOC算法,将FOC算法包含的Park,反Park变化等时间关键性的计算都集成在芯片中。因此开发动态伺服控制器只需几行代码,就可以轻松驱动像我们常见的无刷电机、永磁同步电机等。

29649c42-0530-11ee-8a94-dac502259ad0.png一句话就是:TMC4671就是一个全能选手,电机控制的活基本全能搞定,不管是直流,步进,还是BLDC

298635aa-0530-11ee-8a94-dac502259ad0.png

24小时真的能完成吗?

能。

不过,需要借助达尔闻朋友、技术型授权代理商世健提供的这套TCM4671方案,以及Trinamic的TMCL IDE。

29b57ab8-0530-11ee-8a94-dac502259ad0.png

只有TCM4671显然不行的,因此在这块开发板上还有MCU、驱动器、MOSFET、以及通信接口电源管理等,具体信号链框架如下:

29f88e98-0530-11ee-8a94-dac502259ad0.png

驱动器TMC6100同样也来自Trinamic,含有3个半桥,可以用于高压BLDC,PMSM和伺服电机。此外,还有8 VDC至60 VDC的宽电压范围,以及0.5 A,1 A或1.5 A的可编程栅极电流,通过六个外部MOSFET控制电机,它可以驱动功率从瓦到千瓦的各种电机。

2a135e12-0530-11ee-8a94-dac502259ad0.png

这块开发板的通信方式有两种,一种是板子上的32位MCU,通过RS485或者CAN总线与外部PC进行通信后,控制TMC4671;一种是使用USB-SPI-RTMI工具,通USB转SPI直接连接到TMC4671进行调试。两种方式使用的上位机软件是不同的,前者使用的是由世健设计开发的上位机软件,后者使用的是官网的TMCL-IDE。

世健的上位机软件,经过MCU的处理,用户可以根据自己应用场景,参考源码进行调试,比较适合二次开发的项目,而TMCL-IDE提供软件工具可以用来调试不同控制环路,RTMI 是调试、监控和系统配置的最简便的方式。

我们本次的目的是让电机动起来,不进行二次开发,所以选择TMC-IDE进行环路控制与调试。

首先,需要把固件代码烧录到MCU中。如果使用这个方案的话,世健提供了源码,方便用户二次开发。

然后,连接好所有的硬件之后,就可以上电、打开TMCL-IDE软件了。

2aa44ad0-0530-11ee-8a94-dac502259ad0.png

在IDE里,可以直观地看到TMC4671的寄存器参数的值。只要仔细阅读datasheet,就知道每个寄存器的意义。

2af24cb2-0530-11ee-8a94-dac502259ad0.png

接下来就是对调节电流环、速度环、位置环的PI调参。对于电流环,在IDE中使用Torque Flux / Tuning和Step response工具调整。Torque转矩/Flux磁通工具在开环模式下确定PI参数。确定PI参数后,一键更新到寄存器中就可以了。

2b2fef0e-0530-11ee-8a94-dac502259ad0.png

当电流环调节完成之后,就要对速度环调节了,使用的是 step response tool (closed loop) 闭环阶跃响应工具。对TMC4671的0x58寄存器:PID_VELOCITY_I、PID_VELOCITY_IP ,进行调节,让实际速度达到目标速度即可。

2b5e8b66-0530-11ee-8a94-dac502259ad0.png

对于位置环的调试,需要前面的电流环和速度环配置好之后,使用阶跃响应工具来调试。同速度环一样,也是直接进行寄存器的操作,在PID_POSITION_I和PID_POSITION_P寄存器中,设置 PI 位置控制器的初始值,通过阶跃响应工具查看具体的效果即可。

对于开发一套基于TMC4671的伺服控制系统基本的流程就是:世健的开源代码(可二次开发)—电流环、速度环、位置环的参数调节——高精度的控制电机运动。所以,真的有可能在24小时完成哦。

2b8295e2-0530-11ee-8a94-dac502259ad0.png

对于这套电机控制方案,两个最直观的使用体验:

1)不需要死磕控制算法,使用世健的这套TMC4671的话,他们提供了源码,并且可做二次开发,这就相当于站在巨人的肩膀,他们把最基础的底层已经搭建好了,我们只需要针对自己的应用优化就可以了。

2)TMC4671配合TMCL-IDE,真是简单又好用。IDE可以自动识别电机参数,所有参数调试都是图形化的。速度环、电流环、位置环获得相应的P和I的值,更新到TMC4671的寄存器中,或者直接对寄存器进行操作就可以了。

如果你对这套TMC4671的解决方案感兴趣的话,可以到世健官网查看更多消息!


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 元器件
    +关注

    关注

    111

    文章

    4529

    浏览量

    88801
  • 世健
    +关注

    关注

    1

    文章

    125

    浏览量

    25978

原文标题:【世说芯品】1块开发板,24小时,完成伺服电机控制?

文章出处:【微信号:Excelpoint_CN,微信公众号:Excelpoint_CN】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    OpenWRT 开源社区官方第一开发板 OpenWrt One/AP-24.XY,正式面世

    OpenWRT 开源社区官方第一开发板 OpenWrt One/AP-24.XY,正式面世。将由比派科技Banana Pi 开源社区生产与分发销售 https
    发表于 04-09 11:32

    【youyeetoo X1 windows 开发板体验】通过PCAN调试CANopen电机

    youyeetoo X1 windows 开发板最大好处可以把庞大的X86主机变成迷你卡片机,X86开发生态广度是其他操作系统没法比的,现在几乎所有的控制软件都是微软X86平台,Lin
    发表于 03-05 16:49

    【ELF 1开发板试用】+ RGB LED及按键的控制

    1开发板上,自然也不会少了它,其在开发板上的位置如图1所示,共有3个,其颜色分别为红、绿、黄3个色彩。 图1LED灯 3个LED灯的电路
    发表于 11-21 11:11

    总线伺服电机的回零控制方法

    通过总线控制伺服电机时,如何进行回零(寻参考点)控制?这里就CANOPEN伺服电机的回零
    的头像 发表于 10-23 11:42 1870次阅读
    总线<b class='flag-5'>伺服</b><b class='flag-5'>电机</b>的回零<b class='flag-5'>控制</b>方法

    PLC怎么控制伺服电机

    在回答这个问题之前,首先要清楚伺服电机的用途,相对于普通的电机来说,伺服电机主要用于精确定位,因此大家通常所说的
    发表于 09-08 11:22 841次阅读

    什么是伺服电机伺服电机的类型有哪些?

    什么是伺服电机伺服是一种电磁装置,利用负反馈机制将电信号转换为受控运动。基本上,伺服系统的行为类似于执行器,提供对速度、加速度和线性或角度位置的精确
    的头像 发表于 08-30 08:08 1990次阅读
    什么是<b class='flag-5'>伺服</b><b class='flag-5'>电机</b>?<b class='flag-5'>伺服</b><b class='flag-5'>电机</b>的类型有哪些?

    PLC是怎么控制伺服电机的?

    在回答这个问题之前,首先要清楚伺服电机的用途,相对于普通的电机来说,伺服电机主要用于精确定位,因此大家通常所说的
    发表于 08-09 09:25 690次阅读

    XL32F001开发板,高性能国产32位单片机,性价比超高

    。XL32F001开发板烧录可以使用ST link,JI link,DAP link,编程的话用 Keil就行。开发板可以前往岭技术的tb店内购买,首只需要12.9元还包邮。 XL
    发表于 08-02 11:12

    中科昊Start_DSC28034PNT开发板开箱体验

    中科昊Start_DSC28034PNT开发板开箱体验: 1.开发板开箱 jtag烧写口/usb供电口以及转串口/RS485/CAN/RS232口/IO等都引出了;外围配置了数码管、
    发表于 07-13 10:47

    如何使用单片机控制伺服电机

    伺服电机是我们常用的一种电机,在本文的案例中,将学习如何使用单片机控制伺服电机,案例以PIC16
    的头像 发表于 07-06 10:53 3389次阅读
    如何使用单片机<b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>?

    世说芯品】1块开发板24小时完成伺服电机控制

    如何在24小时之内完成伺服控制器设计?妮姐和豆豆就使用了一个“神器”,真的快速地完成了——这个“
    的头像 发表于 06-12 10:55 862次阅读
    【<b class='flag-5'>世说</b>芯品】1块<b class='flag-5'>开发板</b>,<b class='flag-5'>24</b><b class='flag-5'>小时</b>,<b class='flag-5'>完成</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b>?

    Arduino开发板使用NRF24L01进行无线通信

    ”消息,在第二个例子中,我们将在Arduino开发板之间进行双向通信, 其中我们使用在第一个Arduino开发板的操纵杆,控制在第二个Arduino开发板
    发表于 05-30 10:22 2次下载
    Arduino<b class='flag-5'>开发板</b>使用NRF<b class='flag-5'>24</b>L01进行无线通信

    【感科技MC3172开发板体验】初次使用多线程开发板

    以前作设计多是一个程序码到底,很少整个OS系统啥的,当然涉及多线程的也很少。这次终于有机会可以好好学习,且有了一个较大地跨越,是直接以硬件开发板的形式来进行。 一打开快递,感科技的产品就使人产生
    发表于 05-25 00:54

    使用Arduino开发板控制伺服电机

    大多数情况下,直流电机控制控制方法都是非常简单的(只需要连接电源和地)。伺服电机有一些不同,它使用3根线连接 (电源、地和信号)将
    发表于 05-06 10:15 0次下载
    使用Arduino<b class='flag-5'>开发板</b><b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>

    使用Arduino控制伺服电机

    伺服电机是一个闭环系统,它使用位置反馈来控制其运动和最终位置。伺服电机有多种类型,其主要特点是能够精确
    发表于 05-06 10:08 2次下载
    使用Arduino<b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>电机</b>