01 前 言
各参赛同学好,关注了逐飞科技微信公众号的同学应该还记得,受英飞凌委托,逐飞科技在2021年12月9日发布了针对第十七届无刷电机驱动的开源项目,供大家参考,相信已经有部分同学根据之前的开源方案玩起来了,还没注意到原开源项目的可以通过此篇推文进行了解,“英飞凌BLDC驱动方案开源啦--逐飞科技”可以和今天的方案进行对比穿插学习,以便达到更好的理解效果。
在上一个项目开源后,我们又了解到不少同学都想把无刷驱动和主板合二为一,使用一颗TC264芯片来控制所有的外设,但是前段时间开源的无刷驱动项目使用的是CCU6模块,需要CPU频繁的处理无刷驱动的换相控制,所以不少同学就担心后期CPU可能会处理不过来,同时英飞凌也希望我们再制作一个基于AURIX系列MCU GTM模块的无刷驱动方案供同学们参考,于是一拍即合,今天给同学们带来了一个新的无刷驱动开源方案——基于Infineon MCU GTM的模块无刷驱动开源方案。
02 无刷电机
自第十七届智能汽车竞赛规则发布以来,这已经是逐飞发布的第三个关于无刷驱动的开源项目了,相信参加允许使用无刷电机组别的大部分同学都已经对无刷电机的旋转原理比较熟悉啦,不过为了方便阅读,请大家允许我们在这里再简要的讲解一下无刷电机的原理部分。
2.1 无刷电机内部结构
上图为无刷电机内部导线连接情况的简笔画,可以看到有三对线圈,分别成为A,B,C线圈。每对线圈的一端都连接起来,作为中点,上图中电机定子外边黑线表示三个线圈中点。三个线圈另外一端引出到外部,链接驱动三相桥电路。
在无刷电机的结构中我们一般称线圈的部分为定子。而中间部分则有一个具有N/S两极的永磁铁,我们一般称它为转子。大家有没有发现无刷电机中的定子和转子跟有刷电机的定子和转子的定义是不是恰恰相反呢?
2.2 无刷电机旋转原理
为了驱动无刷电机旋转,需要在转子适当角度时,给电机三相引线中两相施加恰当电流,使得定子产生磁性作用在转子上形成定向转矩。当转子旋转过一定角度,将通电线圈进行切换,使得定子磁极作用在转子上永远形成一个方向上的转矩。
下图给出了三相电施加电压极性组合以及变化是顺序,按照这个顺序,定子就会在内部形成旋转磁场,带动转子旋转。
为了获得最大输出转矩,需要定子产生磁场在旋转方向上领先转子90°。通常使用霍尔传感器来测量转子磁极角度,下图现实了电机内部三个霍尔传感器在转子旋转时,输出的电压波形。
三个霍尔传感器总共有八种状态组合,其中全0,全1是无效状态。剩下六个状态组合代表了转子处在360°六个区间。在不同区间,给电机A,B,C三相施加不同驱动电压,便可以产生领先转子磁场90°的定子磁场,进而可以产生最大旋转转矩。
所以这个时候就可以梳理出大致的无刷电机控制原理了:
1. 通过霍尔传感器检测当前转子所在的角度区间
2. 通过判断当前转子角度区间来让单片机输出下一个区间的控制信号
3. 控制信号通过预驱和MOS开关输出到电机
4. 当转子到达下一个角度区间时,重复第一步
同样,如果对这部分也比较生疏的还是推荐去年12月9号发布的推文,里面有详细讲解。
03 GTM模块
3.1 GTM模块简介
GTM(Generic Timer Module),直译出来就是通用定时器模块的意思,但是它又与我们平时理解的通用定时器有点不同,我们平时用定时器无非就是用来输出PWM信号或者用于周期中断等等,这些功能GTM模块都支持,而且还有一些我们没了解过的功能,大家看下图:
这个就是GTM模块的总体框图啦,我们第一眼肯定看到的就是里面最大的模块-ARU模块,它是用来处理数据流的,并且可以控制整个GTM模块的输出,但是它不是我们今天的主角,我们的主角在ARU模块的左侧和左下部分,分别是TIM模块、SPE模块、TOM模块,这几个模块的组合实现了单片机硬件检测霍尔并且换相输出的操作,我们的CPU就不用再反复执行无刷电机驱动部分的代码了。
3.2 驱动逻辑分析
在单独介绍我们要用到的这几个模块之前,我们先简单描述一下它们的工作流程。
TIM模块负责采集霍尔信号并且对其进行滤波,然后将霍尔信号送到SPE模块,SPE模块通过判断当前的霍尔值来控制TOM模块输出固定相位的PWM信号,而这个固定的相位就是我们初始化时预先在SPE模块中写好的一个换相表。具体的工作流程大家可以看看下图:
(1)TIM模块
TIM(Timer Input Module)模块,定时器输入模块。
在我们的实际应用中,该模块主要负责采集霍尔信号和刹车信号,同时模块自带滤波功能,保证捕获到的是准确的值。TIM模块会将捕获到的霍尔值直接送到SPE模块进行后续处理。
从上面总的工作流程图可以看出来TIM0模块的输入有8个通道,而我们只用了三个用于捕获霍尔信号,然后将处理好的三路霍尔信号送到了SPE0模块。
(2)SPE模块
SPE (Sensor Pattern Evaluation) 模块,传感器评估模块。
SPE模块专用于评估当前霍尔信号的值,并且根据当前的霍尔值去查表通过寄存器控制TOM模块的输出,具体控制逻辑看下图:
左上角的三路信号就是由TIM模块滤波之后送过来的信号,然后通过NIP寄存器进行保存(我们通过读取NIP寄存器就可以知道当前的霍尔值),之后三路信号分别送到了Pattern进行查表,这里的查表是查的霍尔与输出的对应关系,比如霍尔实际值是1,然后查表输出值是3,那么后面就会根据查表输出的霍尔值来再次查表输出实际PWM的控制值。上图中,SPE_PAT_PTR就是根据实际霍尔值查表输出的矫正值,而SPE_OUT_PATx是控制PWM输出的寄存器值,将SPE_OUT_PATx的值根据SPE_PAT_PTR送到SPE_OUT_CTRL寄存器,后续的输出就是判断SPE_OUT_CTRL寄存器的内容来控制不同端口的输出情况。
值得注意的是,右上角的刹车信号是通过FSOI进行控制,当FSOI为有效时,最终的输出将被修改为FSOM寄存器的输出值,而FSOM寄存器的是我们在初始化时就给了的,我们只要设置FSOM寄存器是控制所有上桥关闭、所有下桥开启,那么就是正常的刹车效果。
(3)TOM模块
TOM(Timer Output Module)模块,定时器输出模块。
该模块将根据设置的参数生成PWM信号,以及根据SPE模块选择的输出通道输出PWM信号或者是高低电平,从而驱动无刷电机旋转。
04 开源下载
基于Infineon单片机设计的无刷电机驱动开源硬件、软件下载链接为:
https:///seekfree/TC264_GTM_BLDC_Project
打包下载开源库压缩包,就可以愉快的开始玩无刷啦,各位下载之前别忘了帮我们点一点小星星哦,感谢各位的支持。
05 总 结
为了测试方便,本开源项目的硬件依然是将TC264和驱动电路做在一个板子上的,同学们自己在做板子时可以考虑直接使用主控TC264来控制驱动输出,我们在引脚分配的时候也已经避开了常用的资源,也就是一颗TC264就既是小车的主控,也是无刷电机驱动的控制器,并且文章开头也说过,使用GTM模块来实现无刷驱动的方案也降低了CPU消耗,同时我们测试的板子是为了兼容更大的电流采用了MOS管并联,所以大家也可以根据实际需要来进行减半的设计,这样差不多就可以做到将驱动板缩小一半,并且也推荐大家用一颗TC264实现无刷驱动和主控两个需求,以适应平衡单车组的轻量化整体设计。
所以本开源项目所对应的驱动板实物并未生产学习板来进行销售,目前逐飞在售的无刷驱动学习板只有CCU6的那种方案,所以同学们直接根据开源项目的原理图自行设计就行了。
无刷电机可以采用逐飞演示车模中推荐的型号,在越野组的开源方案中我们讲到过,我们对很多款电机进行了测试,单车平衡组最终采用的是和极速越野组的同一款电机,开源项目代码和硬件也是以这款电机为样品来进行测试的。
- 电机的参数如下:有感、三槽两极、2860Kv(Kv表示每增加一伏电压电机增加的转速,最高12V)、尺寸36(mm)*50(mm)、额定功率190W、支持1-3S锂电池供电。
温馨提示:此款电机仅为逐飞推荐款,同学们也可以选择自己认为合适的无刷电机,这一点上规则是没有限制的,但建议大家选择有感无刷。