基于英飞凌AURIX的平衡单车组逐飞BLDC项目开源
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于英飞凌AURIX的平衡单车组逐飞BLDC项目开源相关的知识,希望对你有一定的参考价值。
简 介: 本文转载了来自于
SeekFree
科技关于无刷直流电机电路设计开源方案,仅供大家学习使用。对于参加全国大学生智能车竞赛的同学请注意:室内单车组平衡轮驱动允许直接使用直流电机驱动,也允许使用无刷电机驱动,无论哪一种电机驱动电路均需队伍自行设计制作完成。不允许使用直接带有驱动的无刷电机。如果使用无刷电机驱动方案,要求使用Infineon
单片机作为电机驱动主控芯片。对于功率电路及其附属电路没有限制。
关键词
: BLDC,Infineon,全国大学生智能车竞赛
§00 前 言
第十七届全国大学生智能汽车竞赛已开启,根据规则,四轮摄像头组、无线充电组、平衡单车组及全模型组都需要采用英飞凌AURIX™
系列MCU
作为主控,其中平衡单车组允许增加动量轮,动量轮允许采用无刷电机,但无刷电机的驱动需要采用基于英飞凌AURIX™
的无刷电机驱动方案。其中无刷电机的型号不做限制,飞轮也不做限制,甚至允许切开车模来安装动量轮。
今天(2021-12-29
)下午14:00
,英飞凌联合逐飞科技在B
站也开展了一场直播,主要分享了英飞凌32
位微控制器AURIX
™系列TC3XX
架构简介和英飞凌无刷电机驱动方案的讲解及演示,后面也会把直播的视频放到“逐飞科技”B
站账号上。
“逐飞科技”B站首页链接:https://space.bilibili.com/351511552,大概明天就会上传。因为考试或其他原因没赶上今天直播的同学也可以结合回看直播视频来理解该开源项目。好吧,接下来正式开始今天的开源项目介绍。
- 开源项目gitee链接: https://gitee.com/seekfree/TC264_BLDC_Project
§01 BLDC方案
下面是逐飞基于英飞凌TC264的智能车BLDC项目开源内容。
▲ 图1.1 2021年9月15日竞赛组委会在英飞凌上海公司总部
为更好的支持大家学习无刷驱动的软、硬件方案,英飞凌及组委会委托逐飞科技为参赛同学们提供开源方案作为学习资料,将英飞凌在市场中成熟应用的电机驱动技术应用到大赛中,供大家做无刷电机驱动的设计参考,让同学们在学校中有机会了解到市场需求和相关技术。
“逐飞科技”为英飞凌官方合作伙伴,针对第十七届智能汽车竞赛平衡单车组的BLDC
应用需求,为参赛选手们精心设计了符合赛事需求的Infineon BLDC
驱动开源方案供大家参考,该方案使用TC264
单片机,无刷电机为有感、内转子、2860KV
、电压为12V
。开源项目目前已实现电机正反转、内部速度闭环、支持刹车、支持堵转保护、支持速度输出。
▲ 图1.2 英飞凌实验室参观
在讲解本开源项目之前,还需要再简单科普一下无刷电机的原理,下面我们以三槽两极内转子电机进行讲解。
图1是无刷电机的基本模型示意,电机内部有三个线圈,每个线圈的一端都连接起来,另外一端引出到外部,中间有一个具有N/S两极的永磁铁内转子。
▲ 图1.3 BLDC电机原理示意图
如果我们按照一定的顺序给电机通电,转子就可以旋转起来。我们举例几种给电的情况来进行简单分析和模拟:
a.给A通正电压,B通负电压。
A相产生的磁场会吸引转子的S极,B相线圈产生的磁场会吸引转子的N极,转子会转到向左倾斜的位置,如下图所示。(其中每一相产生的磁场我们需要使用右手螺旋定则判断磁场的南极与北极)
▲ 图1.4 AB相通电情况
b. 给A通正电压,C通负电压。
A相产生的磁场会吸引转子的S极,C相线圈产生的磁场会吸引转子的N极,转子会转到水平位置,如下图所示。
▲ 图1.5 AC相通电情况
c. 给B通正电压,C通负电压。
B相产生的磁场会吸引转子的S极,C相线圈产生的磁场会吸引转子的N极,转子会转到向右倾斜的位置,如下图所示。
▲ 图1.6 BC相通电情况
d.给B通正电压,A通负电压。
B相产生的磁场会吸引转子的S极,A相线圈产生的磁场会吸引转子的N极,转子会转到向左倾斜的位置和a种情况类似但转子的南北极相反,如下图所示。
▲ 图1.7 BA相通电情况
根据前四次的举例,我们可以得出第5、第6次也可以依次类推。
最终我们总结一下每次换相之后转子到达的位置,转动一圈需要换相6次,每次换相角度为60度,如下图所示:
▲ 图1.8 AB,AC,BC,BA,CA,CB依次通电磁铁所处稳态位置
以上就是我们控制无刷电机转动的基本原理了,但是要真正的实现无刷电机的驱动,我们还缺少一个最重要的东西,就是如何知道转子已经到达预定位置,因为我们只有知道了转子到达了预定位置之后才能进行换相,这样电机才能顺滑的运转。转子位置检测常用的有三种方式。
- 方式一:通过过零检测,三相相电压与电机中性点电压进行比较,比较器输出的三路信号就类似于霍尔的三路信号一样。过零检测的优点在于电机与驱动连接的线较少,但是缺点在于启动的时候需要开环启动,会导致低速的时候控制效果差,并且硬件电路会更加复杂。当然也有其他办法使得在无感的方式下低速控制效果也不错,但是会大大增加软件上的复杂程度。
- 方式二:通过安装霍尔检测转子位置,一共安装三个霍尔分别间隔120度安装,霍尔输出的波形如下图7所示(使用逻辑分析仪采集到的波形),每当波形改变的时候就需要进行换相。优点是电路结构简单,缺点是成本会稍微高一点点。
- 方式三:加装磁编码器直接检测转子具体的位置。这种方式成本会高很多。
▲ 图1.9 三相HALL传感器输出信号
我们推荐选择方式二,采用霍尔检测转子的位置信息,驱动电路硬件会稍微简单一点,成本上也并未增加太多。我们推荐的有感无刷电机就是采用这种方式,使用这种电机,还可以节省下有刷电机闭环使用到的编码器,算下来反而更实惠。这一种方式可以得到转子位置信息,我们就可以通过位置信息来编写程序进行换相,然后就可以驱动无刷电机转动了。
§02 芯片选型
Infineon BLDC
驱动开源项目的电机控制芯片选型过程。
经过我们和英飞凌及组委会的讨论,本次平衡单车组推荐使用英飞凌的TC264
做无刷电机控制芯片,其中预驱动芯片和MOS
的选型英飞凌也有推荐,可以通过英飞凌生态圈了解到。在我们前期验证时,英飞凌主任工程师Cobb Song
也给了我们很大的帮助,感谢英飞凌为智能车竞赛提供的大力支持。
2.1 单片机特点
这款单片机特点如下:
1. 使用双核TriCore™架构的高性能 32 位微控制器。
2. 芯片单核主频高达 200MHz。
3. 容量高至2.5MB的ROM以及高至240KB的RAM,并且都带ECC(纠错编码)
4. 包含4个12位SAR ADC转换器模块。
5. 拥有CCU6高级定时器,可用于输出无刷电机所需要的控制信号,支持trap信号输入,用于实现快速关闭定时器输出。
6. 拥有GTM高级定时器,支持输入捕获、PWM输出等功能,可用于输出无刷电机所需要的控制信号,支持快速关断功能。并且能同步捕获霍尔信号以及外部输入的PWM信号。
7. UART 接口4 个、SPI 接口4 个。
2.2 功能简介
以下几个具有特点的功能介绍下。
2.2.1 CCU6高级定时器
该芯片的CCU6
定时器,可以直接输出三路PWM
信号或者是三路互补的PWM
信号,当是互补的PWM
信号时可以设置死区,并且都可以通过刹车信号来让定时器停止输出。通过三个MOS
桥,我们有三种驱动方式来驱动无刷电机:
- 方式一:上桥给PWM信号下桥通过IO控制开启与关闭。
- 方式二:上桥通过IO控制开启与关闭下桥给PWM信号。
- 方式三:上下桥都给PWM信号(逐飞本次开源项目便使用的这种方式)。
第三种方式需要注意的是上下桥的PWM
信号必须是互补的,因为上下桥不能同时导通,否则出现电源与地短路的情况,由于MOS
开关具有延时,所以互补PWM
信号还必须设置死区,作用是当其中一个桥关闭之后要延时一段时间再打开另外一个桥,避免出现电源对地短路的情况。插入死区之后的互补PWM
信号如下图8
所示(使用逻辑分析仪采集到的波形)。
▲ 图2.2.1 MOSFET死区时间三种类型
2.2.2 GTM高级定时器
该芯片的GTM
定时器,可以直接捕获用户输入的PWM
周期以及占空比,初始化完成之后用户只需要调用底层函数即可获得输入的PWM
周期和占空比。更多的功能将在以后的版本进行更新。
§03 功率电路
功率电路包括MOSFET三相桥电路的预驱动以及MOSFET。
预驱我们选择了AUIRS2181
,其特点是驱动能力强,输出1.9A
,输入2.3A
,电压范围为10-20V
,且带有欠压保护,兼容3.3V
和5V
的输入逻辑信号。
MOS
管我们选择的型号是BSC014N04LS
,这款MOS
电流高达198A
,10V
的时候内阻低至1.1
毫欧,开启电压低至1.2V
左右,性价比较高。所以逐飞推荐的英飞凌无刷电机驱动方案的三大主要器件组成为:TC264+ AUIRS2181+BSC014N04LS
,硬件电路原理图请直接从Gitee上下载。
▲ 图3.1 单片机与调试端口
▲ 图3.2 无刷电调接口
▲ 图3.3 无刷电调功率电路
这里的图如果看不清楚不要紧,原理图的PDF文件会放到开源资料里的。
§04 软件代码
4.1 工程目录结构
逐飞Infineon智能车BLDC开源项目的目录结构如下图所示。
├─.settings
├─CODE
├─Libraries
│ ├─doc
│ ├─infineon_libraries
│ │ ├─Configurations
│ │ ├─iLLD
│ │ ├─Infra
│ │ └─Service
│ ├─seekfree_libraries
│ │ └─common
│ └─seekfree_peripheral
└─USER
CODE文件夹下放置的是逐飞科技精心编写的无刷电机驱动相关代码。
- Infineon_libraries是英飞凌官方的底层驱动,如果还需要其他的单片机片内外设功能,可以基于Infineon_libraries自行编写程序实现。
- Seekfree_libraries和seekfree_peripheral则是逐飞基于TC264制作的应用底层库。
- user文件夹下放置的是主程序及中断文件。
4.2 单片机相关内设驱动
无刷电机需要用到的单片机片内外设有:
- ADC:主要用于检测电源电压、采集放大时候的母线电流以及相电流
- CCU6定时器:主要用于输出电机所需要用到的互补PWM信号,并且实现自动堵转保护,无需代码干预,当母线 电流超过设定值的时候,自动关闭定时器输出。
- GPIO:主要用于LED指示灯,用于显示各种状态,并且初始化输出方向信息和速度信息的端口。
- 按键:通过板载的按键来改变输入来源,可在板载电位器和用户PWM信号之间切换。
- PWM输入:使用GTM模块的输入捕获实现对外部PWM信号的周期以及占空比获取。
无刷电机的驱动文件有:
- bldc_config.h文件:用于配置电机参数,例如是否开启闭环、是否开启刹车、最大转速设置。
- hall文件:主要用于检测霍尔的值、换相时间计算、转速计算。
- otor文件:主要用于电机转动实现、占空比输出、速度和方向信息输出。
- ove_filter文件:主要用于,对数据进行滑动平均滤波。
- id文件:主要用于对转速进行速度PID闭环。
├─CODE
│ adc.c
│ adc.h
│ bldc_config.h
│ ccu6_pwm.c
│ ccu6_pwm.h
│ gpio.c
│ gpio.h
│ hall.c
│ hall.h
│ key.c
│ key.h
│ motor.c
│ motor.h
│ move_filter.c
│ move_filter.h
│ pid.c
│ pid.h
│ pwm_input.c
│ pwm_input.h
│ version.txt
│ 本文件夹作用.txt
4.3 主函数与中断函数
主函数与中断的文件存放在USER文件夹中,无刷电机大部分代码都是在中断内运行的,中断相关的函数全部放在了isr.c中。
§05 工作流程
为了更清楚的表达起工作流程,整个项目的软件流程绘制了几张流程图,同时也加以文字说明。
5.1 主函数
▲ 图5.1.1 主函数流程图
主函数主要的作用是初始化各种外设以及一些软件资源,然后在主循环中持续的发送电机信息到虚拟示波器,便于观察电机运行情况,还根据电机运行状态来点亮和关闭故障灯及运行灯。
5.2 PWM中断
<
以上是关于基于英飞凌AURIX的平衡单车组逐飞BLDC项目开源的主要内容,如果未能解决你的问题,请参考以下文章
第十七届智能车竞赛英飞凌专题培训 ——英飞凌无刷电机驱动专题
5月15日直播预告:英飞凌AURIX™培训—图像处理实车演示等热点问题