
一体式无刷电机FOC控制驱动板1.0 Nazarite-Turbo-Drive 无刷电调
简介
一体式无刷电机控制驱动板Nazarite_Turbo_Drive Rcer最后的倔强!一款自研的FOC驱动板
简介:一体式无刷电机控制驱动板Nazarite_Turbo_Drive Rcer最后的倔强!一款自研的FOC驱动板开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
项目碎碎念:
大一的时候作为梯队队员跟着师兄师姐们参加全国机器人大赛获得了一个全国一等奖(全国第11名),那个时候我还是一个跟着师兄师姐们布线,布局,焊接,玩示波器,负载仪的小菜鸟,大二作为主力队员硬件组组长参加Robocon斩获全国一等奖(这次是全国第五名!!!),这个时候我晋升为大菜鸟hhh,尤为记得暑假去南京理工大学参加Robocon全国机器人赛事的时候,看到许多高校都能够自研Foc驱动板,并且成品的模样总是我所羡慕的hhhh,作为一个菜鸟,但菜鸟也有梦想,也希望能够做出属于自己的Foc驱动板,Robocon全国大学生机器人大赛是规则复杂度高,竞争对抗性强,机器人综合设计难度高,涉及多个学科领域协作的机器人竞技赛事,其中,如何在需要快速转向,敏捷操作,高精度控制,高响应控制等高要求的机器人竞赛场地下,能够充分发挥性能优势和效能利用,基于无感FOC的无刷电机矢量控制无疑是最佳控制方式,但是为了适配不同参数的无刷电机,适应竞赛场景下高爆发,高响应速度,需要兼容性更高的无刷电机控制驱动器,并且其在硬件电路设计上和软件FOC算法设计上都存在较高难度,本文章提出了在硬件设计上将控制器和驱动器进行一体化集成的自研硬件电路系统设计,预驱芯片采用TI的大电流栅极驱动器DRV8301,精进MOS管的选型,三电阻精确电流采样等功能,在软件设计上,无感控制的特点是电机转子位置和速度信息来自估算器而不是传感器,本文利用 MATLAB/Simulink 仿真软件来构建基于扩展EKF即扩展卡尔曼滤波算法的无刷直流电机无传感器控制系统仿真模型,进行参数识别和获取,同时兼容业内顶尖的本杰明VESC无刷电调的上位机调试功能,能够应用无感FOC算法发挥无刷电机控制的高精度、高效能利用、低噪音和振动、高响应速度以及保护功能等优势,在机器人竞赛中有极高的利用价值。
在全国大学生机器人大赛Robocon的赛场上,高校采用差动舵轮的机器人底盘设计逐渐成为趋势,不同扭矩,不同KV值,不同功率的动力轮的电机在日益所见的机器人总体体积的规则下的选型成为了高校必须要考虑的要点,那么搭配的电机控制器从带编码器的有感无刷FOC控制逐渐转变为无编码器的无感FOC控制的需求应运而生,既能满足体积优势,对于机械电控结构化的机电一体概念的机器人设计上进行有效整合下发挥结构优势,又能针对机器人的舵轮底盘的电机以高响应,高精度的控制以更好的满足对抗性赛事-速度至上的要求。但在高校间的技术交流中发现大部分底蕴和积累较弱的高校对于不同动力要求的电机选型后,对于其搭配的无刷电调,都是用的业界两个最好用的国外无刷电调,分别是本杰明VESC和Odrive,由于其高性能的表现,丰富的数据显示功能,简单易用的界面和配置工具成为了大部分高校的首选驱动器。但其价格昂贵,维修利用率低,通常因为被保护的固件代码和擦除的硬件物料参数使得一旦驱动器出现损坏将无法修复,各实验室间只能囤积大量的此类控制器。对此自研一款高性能的无刷电机控制器成为了实验室首要研发任务。本高校在历经三届的实验室无刷电调研发的积累优势下,本文提出了这款基于无感FOC的一体式无刷电机控制驱动器系统设计,针对硬件设计和软件设计提出了自研版本,根据本实验室的机器人结构所运用到的无刷电机控制不同负载参数的需求,在硬件设计上对无刷电调的基本电路结构进行深度设计优化以及对关键电路物料的极限参数,可替代性,成本控制进行选型,实现大功率设计。在软件设计上电机参数信息获取采用无感方式获取,本文利用了扩展卡尔曼滤波观测器进行模型搭建,同时兼容本杰明VESC的上位机调试功能,以充分满足电机调试兼容性。本一体式无刷电机控制驱动器能够实现在输入电压6S的情况下峰值功率可以达到300W。有效解决了关键核心技术卡脖子的问题,对实验室的发展以及机器人关节,运动底盘等需要超高驱动功率又需要高精确,高响应的场景有着广泛应用。
FOC算法轻松入门:
1 FOC矢量控制原理
1.1磁场定向控制概述与控制流程
FOC(Field-Oriented Control),直译是磁场定向控制,业界又称之为“矢量控制”,即通过计算扇区所需电压矢量,利用SVPWM技术产生三相无刷电机线圈需要的三相相位相差120°的正弦波信号,驱动逆变电路,从而驱动电机。FOC旨在实现对于无刷电机的高效、精确的控制。无刷电机控制从有感方波->无感方波->有感FOC->无感FOC。成为无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最优控制方法之一,其相较于方波控制,其有一些明显的优势,这些优势包括FOC矢量控制能够提供平滑的转矩输出,减少共振噪音和震动,可以根据需求精确地控制电机的角度和输出扭矩,可以实现较高的效率和更低的功耗,同时FOC控制在舵轮零速强拖启动下能够保持稳定的性能,利用闭环反馈可以监测电机的实际状态。为了更好了解FOC矢量控制原理,首先了解其控制信号流图,依次了解坐标变换原理,通过Park变换,Clark变换,反Park变换,SVPWM算法原理驱动,空间矢量扇区的确定以及判断即可实现对电机的“像素级”控制。
图1:无刷电机磁场定向控制框图
在FOC算法上,本质上我们
1.2 Park变换与反Park变换
Park变换在磁场定向控制中也称为dq坐标变换,是一种常用于三相交流电机控制的矩
阵数学变换,它可以用于将三相电机系统中的在静止坐标系中的三相电机参数量纲(如相电压,相电流,磁场定向信息)转换到旋转dq坐标系中,Park变换的目的主要在于实现两个关键方面的控制:①将三相交流电流ia,ib,ic在二维坐标轴α,β轴上的投影iα,iβ,等效转换到dq坐标系,可以将电机的电流信号解耦为直轴(d轴)和交轴(q轴)上,为位置估算提供了2个参数iq,id,d轴方向与转子磁链方向重合,q轴方向转子磁链垂直,从而能够进行磁场深度控制,将电机的磁场与d轴对齐,最大化输出扭矩。 ②通过控制q轴的电流即可控制电机的输出扭矩。 本质上Park变换是将高度耦合的,不容易控制的非线性系统通过坐标矩阵变换将幅值和角度解耦,把常规非线性系统,转化为线性系统来控制,从而能够得到优秀的动态控制性能。
图2:两相静止坐标系表示转换为两相旋转坐标系
Park变换的实质:把静止的αβ轴坐标系通过数学公式运算转换到旋转的dq轴坐标系中,dq轴坐标系是是始终跟随着转子进行旋转,即目的是以控制直流电机式的线性系统来控制交流电机,从而得到两个直流量纲分量,θ表示的是旋转坐标系相对于静止坐标系的旋转角度,这个旋转角度θ为实际工程操作中可以通过磁编码器或霍尔传感器来获取电机的实时运行旋转角度。对应数学公式上坐标系的旋转就涉及到旋转矩阵的运用,通过静止坐标系与旋转矩阵在相乘器中进行相乘得到PARK变换的矩阵表示形式:
图3:Park变换矩阵表示形式
而反Park变换是Park变换的逆操作,将dq轴旋转坐标系下的电压或电流信号转化为αβ静止坐标系的信号,以便输出信号Vα,Vβ作为SVPWM的输入信号后控制三相逆变电路从而控制实际的三相交流电机系统,也就是可以将前级PI控制器的Vq,Vd的直流信号转化为正弦信号,即将直流量纲信号转换为交流量纲信号。对应矩阵表示形式为:
图4:反Park变换矩阵表示形式
应用Matlab的Simulink仿真功能内置的应用程序分析信号,预处理时域,频域,线性系统分析进行对Park变换和反Park变换的建模并仿真,对Park子封装模块建立三个输入Iα,Iβ,和θ,以及两个输出Id,Iq,下图为Matlab建立的Park变换Simulink仿真模型。
图2:基于Simulink的Park变换框图
同时在封装子模块中为Park变换分别为模块添加矩阵输入函数求解Id,Iq的数学公式,对于Iα,Iβ的参数可以由Clark变换的输出作为Park变换的输入,单独测试Park变换模块时可以由信号发生器注入正弦电流作为输入参量,同时在模块后方接入模拟示波器观测Park变换生成的波形如下。
图2:基于Simulink的Park变换输出波形图
同理对反Park模块添加三个输入参量,分别dq坐标系中的Vd,Vq,以及角度值θ,以及生成的两个输出参量Vα和Vβ,将三个信号进行组合,方便模块进行链接,导入函数模块工具,利用反Park变换的矩阵变换数学公式求解Vα和Vβ。如下图所示为:Matlab建立的反Park变换Simulink仿真模型。
图3:基于Matlab/Simulink的反Park变换模块封装子框图
在反Park变换中,因为Vd和Vq是旋转坐标系下的线性常值输入直流信号参量,则拟定角度信息是以周期为0.1,输出值相位范围在0-2Π的信号产生,且当前值Vd轴=0,Vq=1,那么信号流程变换为Vd,Vq经过反Park变换以及在角度信息的调谐下,两个直流信息叠加角度信息,转换为两个正弦交流幅值为1,相位差为90°的正弦波形α轴和β轴,转换波形如下图:
图2:基于Simulink的反Park变换输出波形图
1.3 Clark变换与反Clark变换
Clark坐标变换作为FOC控制流程图中重要的变换,我们需要理解为什么要进行Clark坐标变换,Clark坐标变换跟Park变换有什么不同,首先因为磁场矢量控制需要电机转子在一周内持续转动,而定子线圈相差120°,就必须依靠三相线圈来模拟连续旋转磁场来拖动转子进行旋转,那么产生连续旋转磁场就必须在法拉第电磁感应定律应用,即需要三相线圈有正弦的交流电来产生连续旋转磁场,即必须通入线圈为三相正弦电压从而产生三相正弦电流来控制三相电机。那么Clark变换能够将三相电流分解投影在静止ab坐标轴上得到的ia,ib,ic后将输入的三维三相信号进行变换处理得到二维直角坐标系(αβ坐标系)中的iα,iβ信号后作为Park变换的输入量,可以理解的是采集三相电流ia,ib,ic是三相交流电流,经过Clark变换到α,β轴上实质也是正弦交流信号,此时的角度信息和幅值信息并没有解耦,但是能够经过作为Park变换后的dq轴的电流和角度信息才真正的解耦,此时供给于PID进行反馈控制,形成真正意义上的闭环,总的来说:Clark变换的实质就是将空间矢量的表现形式从三相静止的坐标系转换为两相静止的坐标系,如下图所示:
图2:三相静止坐标系表示转换为两相静止坐标系
对于无刷电机的三相电流Ia,Ib,Ic作为Clark变换的输入参量的前提条件是获取到电机的电流参数,本设计采用无感驱动的三电阻采样形式即对三相电流采样并不采取编码器或者霍尔传感器的有感形式,而是采用观测器的形式来预测电机参量模型,在三相误差120°相位的坐标系abc轴投影出对应的Ia,Ib,Ic的值,根据方向投影的计算公式,以及基尔霍夫定律(KVL)Ia+Ib+Ic=0的约束条件下,得到在旋转矩阵表达上采用等幅变换的数学表达式如下图所示。对于Clark坐标变换的2/3变换系数目的是基于FOC的等幅值变化得到的等幅值变化系数。
图4:Clark变换矩阵表示形式
利用MATLAB/Simulink仿真工具对Clark变换的旋转矩阵转换公式在函数子模块中使用,输入三个输入量分别为Ia,Ib,Ic以及两个输出量Iα和Iβ,搭建仿真模型如下所示:
图4:基于Matlab-Simulink的Clark变换框图
结果为Simulink模拟框图显示对应实际工程设计的采集到的相差120°相位的三相电流Ia,Ib,Ic经过封装的Clark变换子模块转化为Iα和Iβ的两相正弦交流电,三相旋转坐标系转换到静止两相坐标系,对应仿真结果波形如下所示:
图2:基于Simulink的Clark变换输出波形图
反Clake变换为Clark变换的逆变换,正变换将三相电流从时域上转换到αβ轴旋转坐标系中,在实际工程中,默认将αβ坐标系中的α轴与电流参数平衡零序分量对齐,将β轴与电流参数的正负序分量对齐,本质上将三相交流电流经过正变换后的两相正弦电流输入到Park变换后将dq轴的电流和角度信息解耦分开,便于将参量信息输入到PID进行反馈。而反Clark变换扮演着将旋转坐标系中的αβ分量恢复到时域中的实际控制无刷电机的量纲,值得注意的是Park变换和Clarke变换的变换对象是电流,而反Park变换和反Clarke变换的变换对象是电压,其旋转矩阵变化数学公式如下:
图4:反Clark变换矩阵表示形式
通过Matlab/Sumilink中的Fcn函数模块将反Park变换进行子模块封装,对Fcn模块输入反Clark变换对应的矩阵表示形式作为变换函数表达式,将经过Clark变换的Iα,Iβ作为输入量经过变换后得到三相交流电流信号Ia,Ib,Ic,对应框图如下:
图4:基于Matlab-Simulink的反Clark变换框图
1.4 SVPWM调制原理驱动
SVPWM(Space Vector Pulse Width Modulation)空间矢量脉宽调制,是一种基于矢量控制理论实现精确的电压输出控制,空间矢量定义为控制无刷电机的过程中虚拟出来的矢量,与PWM脉宽宽度调制以输入信号转化为方波形式的脉冲信号相比,矢量其特点是其能在空间上其大小和方向,在无刷电机的驱动方式中,通常可以分为两种:梯形波形式六步换相驱动和正弦波驱动,在同步电机的运行原理中,三相定子绕组ABC通常加上相位相差120°的正弦交流电流,则定子绕组将会产生合成旋转磁场,将会拖动着永磁转子本身的磁场进行转动,电机本质上是随着这个合成旋转磁场进行转动的,在扇区区域内表现出合成的向量正是希望通过控制三相全桥逆变器所输出的波形所得到的,三相逆变器本质是6个上下桥臂MOS管共同组成的驱动电路,能够实现将直流参量转化为交流参量,即产生电流流向可以改变的电路,在不同时刻施加不同方向的电压(电流)对无刷电机进行驱动。三相逆变电路如下所示:
图4:BLDC三相全桥逆变电路
其原理是通过两两MOS管的上下导通关系来驱动电机,为了防止上下开关管形成短路,同一桥臂的上下开关管必须是互补导通的,那么三组半桥组成的全桥根据导通情况,记上桥臂导通和下桥臂导通的全部组合共有对其进行二进制编码分别为:000、001、010、011、100、101、110、111。这8种开关组合对应空间中的六个非零矢量分别为U1(001)、U2(010)、 U3(011)、 U4(100)、 U5(101)、U6(110)和两个非零矢量U0(000)、U7(111),零空间矢量代表六个MOS管组合无法形成上下导通。
项目硬件电路介绍:
本项目作为无刷电机驱动控制一体式设计尝鲜版,在一些细节上面可能没有做的很到位,求大佬轻点喷~下面为大家简单介绍一下设计原理:首先在总体硬件电路上:一体式无刷电机控制驱动器由控制器和驱动器共同组成,系统硬件设计包括主控中心单元模块,滤波电容模块,LED指示灯模块,晶振RCC电路,SW下载电路模块,复位电路模块,Vcp驱动Typec模拟串口模块,CAN通信接口模块,DC-DC降压模块,启动电流-储能电容组模块,高边电流采样检测模块,编码器接口,三相全桥逆变电路模块,预驱核心控制处理器模块,径向IPS接口,轴向涵道接口,三相输出接口,电源输入接口。其次在原理图设计上,主要参考以下相关资料进行总结得到的集大成者的原理图,对于各位是否掌握FOC相关知识,只提供相关入门笔记(以上正在更新中)并不解答相关FOC知识点,对于国外和国内受众度最高的FOC驱动板大家:本杰明和Odrive相信大家都有清晰的相关认识以及了解,作为一名硬件爱好者,收藏多少无刷电机驱动板是吾辈责任和义务hhhh,以下是所有我学习的相关资料,如果有兴趣可以在评论区向我提问,同时本次开源仅开源硬件设计,软件设计正在打包整理中。
接下来为大家介绍一些各模块简易的分析。
最小系统电路模块,本文的主控中心单元芯片选型为STM32F405RGT6,用于提供 驱动控制信号,该主控芯片是意法半导体公司推出的一款高性能的32位 ARM Cortex-M4内核系列的微控制器,主频最高可达168Mhz,同时内部集成硬件浮点运算单元FPU,具有1MB的FLASH和192KB的SRAM,复杂FOC算法程序存储也能满足要求。其提供的丰富外设,如SPI,I2C,USART,CAN通信接口,其配备的12位16通道的ADC模数转换器,以及12个通用型16位系统定时器,能够满足一体式无刷电机控制驱动器使用,在Robocon全国机器人大赛赛场上,既需要兼顾硬件成本,又需要兼顾处理性能,此款能够满足成本较低下控制更优的要求。
主控中心运用了三路两两互补的PWM信号输出,分别为PA8-PA10的INH_A,INH_B,INH_C,互补信号PB13-PB15的INL_A,INL_B,INL_C,内部互补PWM信号均由定时器输出,运用了一路I2C通信,PB10-PB11的I2C2_SCLA,I2C2_SDA,用于径向IPS显示模组的双向通信,运用了1路CAN通信,分别为PB8~PB9的CAN1_RX和CAN1_TX,用于和外界无刷电机进行双向通信。三路PC6-PC8的HALL1,HALL2,HALL3,用于有感霍尔编码器连接。一路SPI接口,分别为PC9-PC12,用于主控单元跟预驱芯片DRV8301DCAR进行内部电流采样运放的放大倍数选择。三路电压监测PA-PA2对应的Voltage_A,Voltage_B,Voltage_C,用于系统电压监测,三路电流采样监测PC0-PC2对应的Current_A,Current_B,Current_C,用于系统电流采样,为底层电流环提供基准参数。提供USB_DP和USB_DM预烧录USB-USART双向通信固件,可通过Typec线连接图形化调试工具(VOFA+)作为上位机,或通过本杰明VESC开源的VESC_Tool上位机进行控制,通过模拟示波器功能,参数显示功能,可以在调试过程中实时显示各类波形以及电机的转速,电流等信息。主控单元最小系统电路包括晶振电路采用两脚无源晶振,提高了系统外部RCC时钟的振荡稳定性,下载电路采用4脚LINK下载方式,模式选择BOOT0默认拉低。两路LED测试指示灯用于测试主控中心单元是否能够正常烧录程序。
针对无刷电机进行FOC算法调试主要聚焦于讨论主频是否满足要求,定时器是否满足要求,电流采样模块是否满足要求,针对驱动电路的预驱芯片DRV8301DCAR需主控单元提供三路互补PWM波信号,电流采样高边监测模组所需12位ADC的精度为1/4096,能够满足系统监测要求。对于矢量控制产生的三相电流,将由对应的采样模块进行采集。同时主控中心提供了多个可供编程的I/O口进行调试,综上所述,STM32F405RGT6芯片能够完全满足设计需求,可以作为一体式无刷电机控制驱动器的主控中心单元。如下图所示为主控中心单元控制电路。
整个系统的电源PMU管理只通过一个6S锂电池5500mAh的TB47直流电源进行供电,对于预驱芯片DRV8301DCAR的PVDD输入电压范围为6V-60V,通过直流电源对预驱芯片进行供电,在DRV8301数据手册中明确说明了内部自带BST_BK引脚的恒流源DC-DC芯片,只需外部搭配电容,电感以及肖特基二极管即可组成5V降压电路,直流电源24V输入电压通过芯片即可自行降压至5V,5V供电将提供给编码器外部输入接口,所以本系统电源模块可以减少一个24V降压5V的电源电路。主控单元STM32F405RGT6需要3.3V供电,因此只需要1个外部降压电路为主控单元进行供电,主要的DCDC降压电路如下图所示,24V输入电压通过SY8089A1AAC可提供3.3V 3A的输出负载能力。对于低压降的降压选择,本系统采取了低纹波的DCDC电路,而并未采取常用的LDO电路。此款DCDC芯片选择来自于RM-C开发板的SY8089,矽力杰厂家的驱动芯片,对于此款DCDC芯片的介绍如下:SY8089和SY8089A是高效、高频同步降压DC-DC调节器IC,能够提供高达2A的输出电流。SY8089和SY8089A在从2.7V到5.5V的宽输入电压范围内工作,并集成了主开关和同步开关与极低的RDS(ON),以最小化导电损失。低输出电压纹波和小的外部电感和电容器尺寸实现大于1MHz开关频率。SY8089集成了短路和过电压闭锁器关闭保护。特点内部开关(顶部/底部)的低RDS(开启):110mΩ/80mΩ。2.7-5.5V输入电压范围2A连续、3A峰值负载电流能力1MHz开关频率使外部组件最小化内部软启动限制了涌入电流可靠的短路保护:SY8089:锁闭关闭保护SY8089A:连帽杯模式保护可靠的过电压保护:SY8089:锁闭关闭保护SY8089A:无锁止关闭保护。其实这些都只是一些废话而已,对于硬件爱好玩家来说,只需要掌握相关电感的选型和快恢复二极管以及反馈回路的选型即可。
启动电流-储能电容组用于针对6S强电电路上电的缓冲,特别是针对FOC驱动板所需要使用的预驱芯片,比如FD6288,EG2134,IR2101等,针对VIN上电PVDD的都是要求低ESR,高的纹波电流,在此我们选用了黄宝石电容作为滤波电容以及搭配10uF小电容组,组成大电容+小电源的组合。其实有很多面试官喜欢抛出来一道问题:“电源上并联两个10uF和两个100nF,为什么不直接用一个22uF电容?这样还可以节省PCB空间”。这个问题比较小众,面试中标的概率比较小,但实际使用时却经常用到。一般而言,工作过几年的工程师,要么是已经搞得很清楚,要么是对这种小细节,已经视而不见,直接忽视。本次讨论是从滤波器的插入损耗的维度进行分析,在2M~300MHz目标频段内,相对于单颗22uf电容,2x10uF+2x0.1uF这个电容组合具有更大的插入损耗,更有利于电源滤波。其实,滤波器插入损耗只是分析这个问题的其中一个维度,还有其他解释方法,电容频率阻抗曲线也是一个维度。仿真对比验证有的小伙伴可能会提到电容的频率阻抗曲线,今天我们不聊这方面,我们从滤波器的S参数维度来分析这个问题。,我们使用村田的在线仿真软件SimSurfing进行验证。我们假定该12V电源是由Buck电路产生,而Buck电路的开关频率为2.2MHz。为了更清楚的观察对比效果,针对该电源,我们重点关注2M-300MHz的频率范围。第一步:先搭个简单的滤波电路:0.1uF+10uF。
看下这个滤波电路的S21(插入损耗)曲线,如下图所示。
可能这样并看不出什么。如果把电源上的两个10uF和两个0.1uF合并呈一颗22uF,结果会怎样?
第二步:再搭一个滤波电路,只有22uF:
再看下滤波电路的S21曲线。
明显可以看出,10uF+0.1uF的S21曲线在2M~300MHz具有更大的插入损耗。根据滤波器的阻抗失配原则,滤波电路在目标频段内的插入损耗越大越好。
即:10uF+0.1uF在有限的频段内具有更好的滤波效果。
第三步:再搭一个滤波电路:2x0.1uF+2x10uF。
我们再看下滤波电路的S21曲线。如下图所示:三种方案中,在2M~300MHz范围内,2x10uF+2x0.1uF具有最大的插入损耗,即滤波效果最好。
同时需要注意的是黄宝石电容的购买并不容易,立创商城大容值的黄宝石电容根本没有找不到多少个,黄宝石电容最为显著的特点就是其非常低的ESR,相对于我们经常使用的铝电解电容来说,黄宝石电容高纹波电流,在电源稳定点这一点发挥着非常大的作用,经过示波器的触发Trigger功能对上电波形滤波的处理,在工程时间中,我们针对固态电解电容和黄宝石电容的滤波效果和纹波效果进行测试,通过示波器效果得出,黄宝石电容的效果是高很多个点的。
同时针对FOC最为重要的底层三环之一:电流环来说我们最重要的是采样电流的电路设计,目前市面上FOC电路最为广泛的是三电阻采样电路,但是也不乏有两电阻采样电路,其实我觉得双电阻采样电路已经够了,针对相线电流的两段采样,最后一段可以根据基尔霍夫定律KVL方程根据Ia+Ib+Ic=0来求解最后一段的电流,但是针对采样电路,讨论最多的就是高端采样电路和低端采样电路。根据下面参考文章各位可以自行进行认识和了解:电流检测的应用
电路检测电路常用于:高压短路保护、电机控制、DC/DC换流器、系统功耗管理、二次电池的电流管理、蓄电池管理等电流检测等场景。
对于大部分应用,都是通过感测电阻两端的压降测量电流。
一般使用电流通过时的压降为数十mV~数百mV的电阻值,电流检测用低电阻器使用数Ω以下的较小电阻值;检测数十A的大电流时需要数mΩ的极小电阻值,因此,以小电阻值见长的金属板型和金属箔型低电阻器比较常用,而小电流是通过数百mΩ~数Ω的较大电阻值进行检测。
测量电流时, 通常会将电阻放在电路中的两个位置。第一个位置是放在电源与负载之间。这种测量方法称为高侧感测。通常放置感测电阻的第二个位置是放在负载和接地端之间。这种电流感测方法称为低侧电流感测。
两种测量方法各有利弊,低边电阻在接地通路中增加了不希望的额外阻抗;采用高侧电阻的电路必须承受相对较大的共模信号。低侧电流测量的优点之一是共模电压, 即测量输入端的平均电压接近于零。这样更便于设计应用电路, 也便于选择适合这种测量的器件。低侧电流感测电路测得的电压接近于地, 在处理非常高的电压时、 或者在电源电压可能易于出现尖峰或浪涌的应用中, 优先选择这种方法测量电流。由于低侧电流感测能够抗高压尖峰干扰, 并能监测高压系统中的电流。
电流检测电路
低侧检测
低侧电流感测的主要缺点是采用电源接地端和负载、系统接地端时,感测电阻两端的压降会有所不同。如果其他电路以电源接地端为基准,可能会出现问题。为最大限度地避免此问题,存在交互的所有电路均应以同一接地端为基准, 降低电流感测电阻值有助于尽量减小接地漂。
如上图,如果图中运放的 GND 引脚以 RSENSE 的正端为基准,那么其共模输入范围必须覆盖至零以下,也就是GND - (RSENSE × ILOAD)。Rsensor将地(GND)隔开了。
高侧检测
随着大量包含高精度放大器和精密匹配电阻的IC的推出,在高侧电流测量中使用差分放大器变得非常方便。高侧检测带动了电流检测IC 的发展,降低了由分立器件带来的参数变化、器件数目太多等问题,集成电路方便了我们使用。下图为一种高侧检测的 IC 方案:
检测电路连出方式
对电流通过电阻器时的压降进行检测,需要从电阻器的两端引出用于检测电压的图案。电压检测连接如下图(2)所示,建议从电阻器电极焊盘的内侧中心引出。这是因为电路基板的铜箔图案也具备微小的电阻值,需要避免铜箔图案的电阻值所造成的压降的影响。如果按照下图(1)所示,从电极焊盘的侧面引出电压检测图案,检测对象将是低电阻器电阻值加上铜箔图案电阻值的压降,无法正确地检测电流。
PCB Layout参考:
根据VESC4.0和VESC6.15 PLUS版本得出的结论为:前面的版本VESC均采用成本较低的低端采样电路,而且均为使用同相差分运放电路,我们较为熟悉的是INA226,LM321,LM254等常规运放搭建的采样电路,低端采样成本较低,对于自研发的测试来说较为友好,高端采样常用芯片有ADI公司的AD8418但是高端采样的成本较高,得到的采样值较为精确,同时两种不同采样的方式优缺点在上方有进行对比。
- 对于预驱芯片的选择,不同的预驱芯片包括内置MOS,外置MOS,也包括内置驱动,外置驱动IC,DRV系列均为外置MOS内置驱动IC,内部驱动的限制在于自举电容的GVDD波形幅值限制在芯片内部,同时肖特基二极管也被集成与芯片内部,针对此款DRV8301的详细说明如下:电压6V到60V
- 1.7A栅极驱动电流,2.3A吸收电流
- 支持3.3V和5V接口
- 集成一个buck电源,可调节输出电压和开关频率,可对外提供1.5A电流
- 死区时间可调整、过流保护可调整、PVDD 和GVDD欠压锁定、GVDD过压锁定、过温提示/关机
内部框图和引脚介绍
buck电源相关引脚
name |
NO. |
Type |
描述 |
---|---|---|---|
EN_BUCK |
55 |
I |
buck电源使能引脚。悬空使能。使用两个电阻来调节输入电压锁定值。 |
PWRGD |
4 |
O |
开漏输出,需要外部上拉。如果由于热关闭、dropout、过压或EN_BUCK关闭而导致buck输出电压低,则该脚会输出低。 |
COMP |
2 |
O |
降压误差放大器的输出和输入到输出开关电流比较器。 |
SS_TR |
56 |
I |
Buck软启动和跟踪。连接到此引脚的外部电容设置输出上升时间。因为这个引脚上的电压覆盖内部参考,它可以用于跟踪和排序。 |
RT_CLK |
1 |
I |
接一个电阻到地来调节buck电源的外部时钟 |
PVDD2 |
53,54 |
P |
buck电源的供电电源输入。 |
VSENSE |
3 |
I |
buck电源的输出电压反馈管脚。 |
BST_BK |
52 |
P |
buck电源的自举电容引脚。 |
PH |
50,51 |
O |
接到buck电源内部的高侧MOSFET上,外面需要电感、二极管电路来构成完整的buck电路。 |
其他电源相关引脚
name |
NO. |
Type |
描述 |
---|---|---|---|
DVDD |
23 |
P |
内部3.3 v供电电压。 |
AVDD |
27 |
P |
内部6v供电电压。 |
AGND |
28 |
P |
模拟地。 |
GVDD |
13 |
P |
内部栅驱动电压调节器。 |
CP1 |
14 |
P |
电荷泵引脚。 |
CP2 |
15 |
P |
电荷泵引脚。 |
PVDD1 |
29 |
P |
栅极驱动器、采样电流放大器和SPI通信的电源。PVDD1是和buck电源PVDD2独立的。 |
SPI通信和故障指示引脚
name |
NO. |
Type |
描述 |
---|---|---|---|
nOCTW |
5 |
O |
过流、过温报警指示。开漏输出,需要外部上拉电阻。可通过SPI修改寄存器来配置输出模式。 |
nFAULT |
6 |
O |
故障指示。开漏输出,需要外部上拉电阻。 |
nSCS |
8 |
I |
SPI片选 |
SDI |
9 |
I |
MOSI |
SDO |
10 |
O |
MISO |
SCLK |
11 |
I |
SCK |
VDD_SPI |
49 |
I |
SPI供电电源,可以使用3.3V或5V |
栅极驱动和PWM输入引脚
name |
NO. |
Type |
描述 |
---|---|---|---|
EN_GATE |
16 |
I |
启用栅极驱动和采样电流放大器。 |
INH_A |
17 |
I |
半桥A高侧PWM输入 |
INL_A |
18 |
I |
半桥A低侧PWM输入 |
INH_B |
19 |
I |
半桥B高侧PWM输入 |
INL_B |
20 |
I |
半桥B低侧PWM输入 |
INH_C |
21 |
I |
半桥C高侧PWM输入 |
INL_C |
22 |
I |
半桥C低侧PWM输入 |
DTC |
7 |
I |
外接一个电阻到GND来调整死区时间。0到150K对应50ns到500ns的死区时间。 |
半桥电路相关引脚
name |
NO. |
Type |
描述 |
---|---|---|---|
SL_C |
34 |
I |
半桥C低侧MOSFET的源极。 |
GL_C |
35 |
O |
半桥C低侧MOSFET的栅极驱动输出。 |
SH_C |
36 |
I |
半桥C高侧MOSFET的源极。 |
GH_C |
37 |
O |
半桥C高侧MOSFET的栅极驱动输出。 |
BST_C |
38 |
P |
半桥C自举电容。 |
SL_B |
39 |
I |
半桥B低侧MOSFET的源极。 |
GL_B |
40 |
O |
半桥B低侧MOSFET的栅极驱动输出。 |
SH_B |
41 |
I |
半桥B高侧MOSFET的源极。 |
GH_B |
42 |
O |
半桥B高侧MOSFET的栅极驱动输出。 |
BST_B |
43 |
P |
半桥B自举电容。 |
SL_A |
44 |
I |
半桥A低侧MOSFET的源极。 |
GL_A |
45 |
O |
半桥A低侧MOSFET的栅极驱动输出。 |
SH_A |
46 |
I |
半桥A高侧MOSFET的源极。 |
GH_A |
47 |
O |
半桥A高侧MOSFET的栅极驱动输出。 |
BST_A |
48 |
P |
半桥A自举电容。 |
SN1 |
33 |
I |
连接到电流采样电阻1的上侧 |
SP1 |
32 |
I |
连接到电流采样电阻1的下侧 |
SN2 |
31 |
I |
连接到电流采样电阻2的上侧 |
SP2 |
30 |
I |
连接到电流采样电阻2的下侧 |
SO1 |
25 |
O |
电流放大器1的输出 |
SO2 |
26 |
O |
电流放大器2的输出 |
REF |
24 |
I |
设置采样电流放大器的偏置电压,该偏置电压值等于本引脚上电压的一半。连接到MCU的ADC参考电压上。 |
DC_CAL |
12 |
I |
当DC_CAL拉高时,器件短路采样电流放大器的输入并断开负载。直流偏置校正可通过外部单片机实现。 |
采样电流放大器
DRV8301包括两个高性能的电流放大器,用于精确的电流测量。
电流放大器通过SPI寄存器有四个可编程增益设置,分别是10、20、40和80 V/V。
电流放大器提供高达3V的输出偏置,以支持双向电流检测。偏移量被设置为参考引脚(REF)上电压的一半。
为了减小直流偏置和漂移超温,提供了一种通过DC_CAL引脚或SPI寄存器进行校准的方法。当直流校准启用时,设备将短路电流放大器的输入并断开负载。直流校准可以在任何时候完成,甚至在MOSFET开关期间,因为负载是断开的。为了获得最好的结果,在无负载时,在开关OFF期间进行直流校准,以减少潜在的噪声对放大器的影响。
电流分流放大器的输出可计算为:
简化框图:
保护功能
过流保护(OCP)
由于MOS管有内阻,通过VDS = IDS × RDS(on)可以把电流值转换为电压值,再和通过SPI修改寄存器设置的过流值比较判断是否出发过流保护。高侧过流保护是采集PVDD1和SH_X之间的电压,低侧是采集SH_X和SL_X之间的电压,因此他们最好差分走线来消除PCB线阻差异。设置的过流值最好留20%的余量。
通过SPI寄存器可以设置四种不同的过流模式(OC_MODE)。OC状态位以锁存模式操作。当过流情况发生时,对应的OC状态位将锁定在DRV8301寄存器中,直到下一个SPI读取命令。在读取命令之后,OC状态位将从寄存器中清除,直到出现另一个过流状态。
1、限流模式
在限流模式下,设备在过流事件期间使用电流限制而不是设备关机。
在这种模式下,设备通过nOCTW引脚报告过流事件。nOCTW引脚将被保持低最大64µs周期(内部定时器)或直到下一个PWM周期。如果另一个过流事件由另一个MOSFET触发,在先前的过流事件期间,报告将继续另一个64µs周期(内部定时器将重新启动)或直到两个PWM信号周期。在检测到过流的场效应晶体管中,将置位相关的状态位。
在限流模式中有两个电流控制设置。这些是由SPI寄存器中的一位设置的,默认模式为CBC (cycle by cycle)。
- Cycle by Cycle mode (CBC):在CBC模式下,检测到过流的MOSFET将关闭,直到下一个PWM周期。
- Off-Time控制模式:在Off-Time模式下,当MOSFET检测到过流时,关闭时间为64µs(由内部定时器设置)。如果在另一个MOSFET中检测到过流,定时器将重置另一个64µs周期,两个MOSFET将在此期间被禁用。在此期间,特定MOSFET的正常运行可以通过相应的PWM周期恢复。
2. 锁存关闭模式
当过流事件发生时,高边和低边mosfet将在相应的半桥中被禁用。nFAULT引脚和nFAULT状态位将与检测过流的MOSFET的相关状态位一起被激活。OC状态位将锁定直到下一个SPI读取命令。nFAULT引脚和nFAULT状态位将锁定,直到通过GATE_RESET位接收到复位或快速的EN_GATE复位脉冲。
3.只报告模式
在此模式下,当发生过流事件时,不会采取保护动作。过流事件将通过nOCTW引脚(64 μ s脉冲)和SPI状态寄存器报告。外部单片机应根据自身的控制算法采取相应的行动。
4. OC禁用模式
设备将忽略且不报告所有过流检测。
欠压保护 (PVDD_UV and GVDD_UV)
当PVDD或GVDD低于其欠压阈值(PVDD_UV/GVDD_UV)时,DRV8301通过拉低GH_X、GL_X提供欠压保护。这将使外部mosfet处于高阻抗状态。当设备处于PVDD_UV时,它将不响应SPI命令,SPI寄存器将恢复到默认设置。
PVDD1从13µs到15µs的瞬时欠压限电,会导致DRV8301对外部输入无响应,直到满功率周期。瞬态条件是PVDD1大于PVDD_UV水平,然后PVDD1在13 ~ 15µs的特定时间内降至PVDD_UV水平以下。瞬变时间短于或长于13 ~ 15µs不会影响欠压保护的正常运行。可以在PVDD1上增加额外的大电容以减少欠压瞬变。
过压保护 (GVDD_OV)
如果GVDD电压超过GVDD_OV阈值,设备将关闭栅极驱动器和电荷泵,以防止与GVDD引脚或电荷泵相关的潜在问题(例如,外部GVDD电容或电荷泵电容短路)。故障是一个锁存故障,只能通过EN_GATE引脚上的复位转换来复位。
过温保护
实现了两级超温检测电路:
•1级:超温警报(OTW)
对于默认设置,OTW通过nOCTW引脚(过流和/或过温警告)报告。
OCTW引脚可以设置为仅通过SPI寄存器报告OTW或OCW。参见SPI寄存器部分。
•2级:门驱动器和电荷泵的超温锁存关闭(OTSD_GATE)
OTSD_GATE通过nFAULT引脚报告。这是一个闩锁关闭,所以门驱动器不会自动恢复,即使超温条件不再存在。EN_GATE复位或SPI (RESET_GATE)需要在温度低于预设值tOTSD_CLR后恢复门驱动器正常运行。
SPI操作仍然可用,在OTSD操作期间,只要PVDD1在定义的操作范围内,寄存器设置就会保留在设备中。
故障和保护的处理
nFAULT引脚指示何时发生关机事件,这些事件包括过流、过温、过压或欠压。注意,nFAULT是一个开漏信号。在开机启动过程中,当栅极驱动为PWM输入做好准备时,nFAULT将会拉高。
nOCTW引脚指示过流事件或过温事件何时发生。这些事件与关机无关。
表5提供了所有保护特性及其报告结构的摘要。
开关机顺序
在上电过程中,所有栅极驱动输出保持低电平。通过将EN_GATE从低状态切换到高状态,可以启动栅极驱动器和电流放大器的正常工作。如果没有错误存在,DRV8301准备接受PWM输入。只要PVDD在功能区域内,即使在栅极驱动禁用模式下,栅极驱动也始终对MOS进行控制。
从SDO到VDD_SPI有一个内部二极管,因此VDD_SPI需要一直被供电到与其他SPI设备相同的功率级别(如果有来自其他设备的SDO信号)。在SDO引脚上出现任何信号之前,VDD_SPI电源应该先通电,在完成所有SDO引脚上的通信之后再断电。
EN_GATE功能说明
EN_GATE low用于将栅极驱动器、电荷泵、电流放大器和内部稳压器模块置于低功耗模式,以节约能源。在此状态下SPI通信不被支持,SPI寄存器在完全EN_GATE重置后将恢复到它们的默认设置。只要PVDD仍然存在,器件将把MOSFET输出级设置为高阻抗模式。
当EN_GATE引脚从低到高时,它将经过一个上电序列,使能门驱动器、电流放大器、电荷泵、内部调节器等,并复位所有与门驱动器块相关的锁存故障。EN_GATE也将重置SPI表中的状态寄存器。当在错误事件之后切换EN_GATE时,所有锁存故障都可以重置,除非故障仍然存在。
当EN_GATE从高到低时,它会立即关闭门驱动块,因此门输出可以将外部fet置于高阻抗模式。然后,它将等待10µs,然后完全关闭其余的区块。一个快速的故障复位模式可以通过切换EN_GATE引脚非常短的时间(少于10µs)来实现。这将防止设备关闭其他功能块,如电荷泵和内部调节器,并带来更快和简单的故障恢复。SPI在这样一个快速的EN_GATE重置模式下仍然可以工作。要执行完全复位,EN_GATE应该被切换超过20µs。这允许所有功能模块完全关闭并达到已知状态。
10 - 20 μ s的EN_GATE复位脉冲(高→低→高)不应该应用于EN_GATE引脚。DRV8301有一个从快速复位模式到完全复位模式的过渡区域,这会导致设备对外部输入无响应,直到一个全功率循环。如果期望在EN_GATE引脚上出现此周期的重置脉冲,可以在引脚外部添加RC滤波器。
重置所有错误的另一种方法是使用SPI命令(RESET_GATE),它只重置门驱动模块和所有SPI状态寄存器,而不关闭其他功能块。
一个例外是重置GVDD_OV错误。快速的EN_GATE快速故障复位或SPI命令复位将不适用于GVDD_OV故障。重设GVDD_OV故障需要一个完整的EN_GATE,低电平保持时间大于20µs。TI强烈建议在GVDD_OV发生时检查系统和单板。
SPI通信
数据帧结构
The SDI input data word is 16 bits long and consists of:
• 1 read/write bit W [15],0表示写,1表示读。
• 4 address bits A [14:11]
• 11 data bits D [10:0]
The SDO output data word is 16 bits long and consists of:
• 1 fault frame bit F [15]
• 4 address bits A [14:11]
• 11 data bits D [10:0]
寄存器
共有4个寄存器,两个只读的状态寄存器,两个可读写的控制寄存器
0x00状态寄存器是故障指示,0x01状态寄存器是设备ID。
0x02寄存器控制栅极驱动电流大小、栅极驱动复位、PWM模式、过流保护模式、过流保护电压值。
过流保护电压值如下表,如果设置为20,那么VDS=0.648V,假如RDS(on)=0.1Ω,根据VDS = IDS × RDS(on),那么IDS=6.48A
PWM模式有6PWM和3PWM,6PWM就是使用6个PWM来控制3个半桥,3PWM就是使用3个PWM来控制3个半桥。
0x03寄存器控制nOCTW报告过流或过温故障、电流增益、直流校准功能、过流保护的限流模式
最后一个电路模块是大家较为熟悉的三相全桥逆变电路,三相全桥逆变电路的本质是通过MOS管将直流量转化为交流量以控制我们的无刷电机BLDC或者PMSM,那么针对三相全桥逆变电路最为重要的是MOS管的选型,针对MOS管的选型,我统计了相关参数表,尤其重要的是千万不要觉得MOS管的参数选型只需要考虑Vdss和Idss,因为其实这两个参数都是在MOS管稳定开关状态下提出的参数,(这就必须要提到根据我们的测试情况来说,我们第一次测试互补PWM的情况经过DRV8301输出的波形是否符合要求的时候,我们通过Cubemx只使能了A组的上下MOS管,通过MCU的定时器互补PWM输出经过DRV8301输出给我们的MOS管,经过我们的测试点发现上管的波形不正常,而且我们的死区时间根据DCT引脚的配置并没有起作用,而且我们软件写的DeadTime也没有起作用,但是我们的MOS管并没有因为没有导通时间而短路,而且除了波形不正常,幅值和相位都是正常的,但是我们也不知道为什么,突然B和C组的MOS管下管就直接短路了,我们明明没有使能B和C的MOS管,而且我们的三相线就直接短路了,我们误以为是A管的下管影响到了B和C管,我们将A,B,C三组的下管MOS管拆焊后,发现了一个奇怪现象,就是我们的A管下管MOS管本身击穿,所有引脚直接导通,但是我们的A管下PCB并没有导通,意思就是我们重新焊回去MOS,A组的下管就没问题了,但是B和C的MOS拆下来后发现PCB直接击穿短路了。。。但是B和C的MOS管并没有出问题,也就是还能用!!导致的现象就是和A组的下管完全相反)我们也很奇怪,所以对于MOS管的选型我们也没有准确的定义,但是MOS管的选型针对固件的Vesc_tool的影响在于固件里面的死区时间的影响。
PCB相关介绍:
本PCB因为是第一个版本所以也存在比较多的问题,主要问题为:对于PCB的设计希望大家能够在观看了许多无刷电机驱动板的PCB设计后再进行设计,因为其实PCB的设计对于驱动板的影响是非常大的,画的好和画的不好的驱动板对于整个板子是否能成功运算FOC算法是非常重要的,特别是散热,MOS管和栅极电阻,预驱芯片以及电流采样电路的开尔文接法等等,同时FOC2.0的版本解救了以下问题,再整理完相关笔记后会进行开源。
3D图鉴赏:
同时此PCB的大小为非常小的5.5✖5.5,所以对于PCB设计也耗费了大量的时间,对于FOC1.0来说,针对增量的功能为轴向IPS和径向涵道风扇,这两个特点再FOC2.0将会进行解释。哈哈哈给大家爆几张最近设计的F0C2.0~绝对相比F0C1.0来说从硬件底层和软件算法上有着非常大的更新~其余的话就不过多说了,承蒙大家的偶爱,如果大家有什么需要可以在评论区问我。
相关无刷电机FOC个人笔记:
唐老师源ODrive直流无刷电机BLDC控制系统,基于DRV8301与STM32F405的FOC伺服驱动器硬件介绍
Odrive核心器件:DRV8301与STM32F405RGT6
- 实物图:驱动两路高达60A的驱动电流,可以接两路有感编码器,AUX要接刹车电阻,供电可以24V也可以48V,刹车电阻是制动或者减速的时候,BLDC就会发电,让总线电压升高,所以接入刹车电阻用来消耗能量。也就是将动能转化为热能消耗出去,
- 软件下载地址:odriverobotics.com
- CSDN博主
- b站博主:灯哥
- Odrive的PCB布局:右上角两个编码器,左边是直流DC输入24v/48v,两片DRV8301.
- SWD+USB+CAN
- 然后这边是两路编码器,每一路编码器跟Odrive相连,5V跟3V3选择一个供电。
- 系统供电:5V降压3V3为VCC的数字地,然后5V转为AVCC为模拟地,用了两片LDO 降压为数字地和模拟地,一个是AZ1117为DVCC,然后另外一个LP5907降为AVCC对应的AGND,然后数字地跟模拟地直接0R或者磁珠或者短接块相接。
- 数字VCC上拉三个电阻到编码器:
- 然后输入母线电压DCBUS对应PGND,8个470uF的贴片电解电容进行大电容滤波,24V版本至少1.5倍,耐压一定大,电机减速或者制动的时候就相当于发电机,反电动势会叠加到母线上,就会超过原本的24V或更多。然后母线电压采集通过分压电阻来实现:
- 假设检测到总线电压超过24V就要接入刹车电阻,也就是说刹车电阻的作用,刹车电阻就是通过一个开关然后大功率金属电阻到GND,一旦检测到DCBUS的电压过高就闭合开关通过电阻来放电,消除过高电压,一旦降低到正常值,再断开开关。(为什么不做动能能量回收呢?)————怎么回收?回收效率能达到多少?那点能量值得回收吗?回收要有电池,如果没有电池就要用电阻!汽车上都是回收到电瓶里,这个小实验根本不需要回收。
- 核心器件:8301,53和54接的是DCBUS,CP1和CP2接的是降压型电荷泵,就是把DCBUS通过电荷泵把24V降压到12V来驱动NMOS(假设)运用了8301内部的BUCK降压型电路,不用电荷泵可以外接DCDC的12V?
- 8301的内部结构:如果不通过电荷泵产生的降压就要通过外部产生的12V接到进入GVDD的13脚,同时去掉C3电容也可以。
- 这里的13,14,15就是内部降压到GVDD。
- 右边是三相逆变桥,Q1和Q2完全并联关系来增大过电流的能力,同时降低Rdson。型号:NTMFS4935NT1G为Odrvide的MOS管。然后R27是取样电阻为低端电阻防止过流:SN1和SP1要链接到DRV8301而且要差分走线,等长紧密跟随。0.5mR的采样电阻,两组采样差分走线。 (采样电流要注意是从-到+流过的,所以是SN到SP的,也就是上面是N下面是P,但理解成电流方向是错的,TI是理解成N和P指的是内部运放的反向端和同向端。)
- 热敏电阻的NTC电阻靠近MOS管来测量MOS管的温度
- MOS管和三相所有网络基本都是铺铜的。我的VESC1.0版本这一点没有做好需要改进。
- LM5109半桥驱动IC,这个J23就是接了一个刹车电阻,不需要太大,20R,10R,100R,电阻越小刹车时间越短,电阻越大刹车时间月满,GVDD就是8301的内部电荷泵降压到12V来给LM5109供电。刹车电阻的功率假设流过最大电流2A然后计算处50W10R的电阻:这里接了一个0.5mR的采样电阻,低端采样,AD8418运放放大后的电压通过RC低通滤波器进入到我们的MCU的ADC,AD8418是专门的电流采样芯片一般都是做高端采样更精度高的,如果低端采样直接同向比例或者LM358,LM324,INA271,INA240这些直接就够了。
- 高端采样都要用专用的芯片来控制INA271,282,191,AD8318,如果是低端直接一个同向比例即可。
- 比如低端采样直接一个采样电阻+同向比例,R14并联一个电容C1和R14形成低通滤波器,就形成截止频率取到100hz或者10hz。运放3V3供电一个AVCC,用GS8551,单供电运放都行。AD8418专门做高采的。 抑制高频干扰通过在反馈电阻上并电容形成低通滤波器来实现。
- 高采的做法,负载J23放下面,采样电阻放上面:反向电动势形成的电流流向是从耗散电阻到R56?
- NTMFS4935N耐压30V如果供电48V同时制动反电动势肯定超过30V了,如果是24V的版本还能过得去,很勉强。一定要留有余量,Vds才30V没有余量,如果是48V供电,至少60V,80V,100V的Vds
- MOS管推荐:应用筛选后:
- 可以选择这款:都是DFN封装KNY3204
- 英飞凌的这款:BSC022N04 100A 2.2mR 40V
- 假设是48V供电,选择Vdss至少大于60V,贴片8引脚封装:江苏长电科技的这款CJAC100S。
- 必须留有余量:
唐老师讲电赛——基于DRV8301与STM32F405的开源ODrive直流无刷电机BLDC控制系统.基于DRV8302与STM32F405的开源VESC直流无刷电机BLDC控制系统
- Odrive双路驱动器可以驱动双路BLDC每一路都可以接编码器和刹车电阻,drv8301内部集成BUCK,只需要输入DBUS也就是24V就可以输出1.5A的5V输出电流。
- Odrive的开源地址:
- 今天介绍VESC本杰明无刷驱动器:也是F405RGT6,本杰明VESC4用的是DRV8302。
- 接下来是Simplefoc用的Arduino控制的,BLDC驱动器+Arduino的MCU和欧姆龙的位置传感器,Simplefoc用的L6234内部集成六个MOS和驱动器,宽电压输入7-52V,0.3R的Rdson的NMOS,5A的峰值电流,工作频率最高 150khz,所以是小功率的FOC,如果是10kw的BLDC,只需要更改NMOS,NMOS外置+驱动器即预驱芯片
- 这里推荐一片EG2334+6片大功率NMOS,EG2334最高频率500khz.
- 芯片特点介绍:EG2334搭配外置六个NMOS,大功率还是推荐IGBT
- simplefoc的预驱是L6234的8,3,13接在一起通过一个4.7K电阻到GND下拉,如果给IC供电,默认EN使能端是不工作的。只有SCT4上拉才可以工作:SCT4是二选一的开关,如果1和3链接,如果2和1链接就用PIN7控制。
- 14引脚可以用13,6,11PIN来控制的三选一任意一个引脚控制IN3。
- PCB介绍:如果1和3焊接0R就用一个端口控制,如果1和2焊接0R就用一个端口控制。二选一控制器,自始自终只能焊接1个不能同时焊接。
- simplefoc大量采用这种设计:
- 其余就是一些控制引脚和电源模块了。
- 这里是编码器接口,编码器也是用选择器的介绍,让程序有操作性。
- VESC4介绍:首先是NTC温度检测电路,过温保护,通过NTC和10K分压进行MCU的ADC采集,NTC可能放置再靠近电机检测温度的作用。这个是板载温度检测,检测整个板子的温度的,而不是电机温度。
- 标配电机相连需要九根线,三根HALL,三根UVW,两根DBUS,GND还有一根电机温度的TEMP_IN的线,霍尔传感器有标配两种:一种是开关霍尔和线性霍尔,这三个的HALL是线性霍尔是开关霍尔,,如果是线性霍尔接上拉电阻就完蛋了,开关霍尔可以接上拉,线性霍尔不允许接上拉电阻,然后再经过RC低通滤波器送到单片机的IO口中,温度需要用AD,其他任意IO口。
- 关于Drv8302的介绍内部集成了驱动电路和BUCK电路,集成的这一整块都是BUCK电路:这个BUCK电路的IC再芯片内部
- 这个芯片内部集成的是TPS54160。
- 13,14,15引脚内部集成了内部降压型电荷泵的目的假设芯片的供电电压是7-60V,DRV8302是7-60V因为降压型电荷泵,加入给的供电电压是>=12V假如V_supply也就是总的供电电压输入是12-60V经过13引脚都会降压到12V,假如13引脚GVDD就是12V,那么如果V_supply输入的是7-12V没有超过12V,那么GVDD这个13引脚就=V_supply,通过比较型输出小于就跟随,大于就限制12V,降压型电荷泵。
- 那么13号引脚GVDD也可以输出电压给其他器件使用,但是外部负载电流控制小一点,因为可能5mA以下才可以,这里的14和15相连的电容称之为:飞跨电容Cfly=22nF,证明电荷泵开关频率很高,因为一般开关频率20khz对应10uF,说不定是300khz的开关频率。
- 然后BUCK都需要FB作反馈电阻,那么5V就是根据R17和R18的3号引脚内部的VSENSE是误差放大器的反向输入端,同相输入端接的是0.8V的参考源,根据虚短,Vo(5V)✖R18➕R17分之R18=0.8V,那么就可以改变R17和R18得到不同的输出电压,修改反馈电阻即可,这些引脚全部抖不接是可以的,只不过就要外置BUCK了。
- 这个NTC的TEMP应该是测量NMOS的温度的,用来测量NMOS温度的:
- 接下来是这个三相逆变桥:这个桥臂IRFS7530接了两个采样电阻然后送到DRV8302上。
- DRV这里采用双电阻检流方式两个H1_LOw和H3_LOW到地的方式:
- 然后就是分压电阻来测量供电电压的方式AN_IN用来测量母线电压,还有USB的上位机通信的方式,VESC不需要焊接0R只需要链接通信线就行链接上位机,VESC两个测量温度的引脚应该一个是测量MOS的温度,一个是测量电机的温度。
- DRV8301和DRV8302的区别:8302内部集成了一个TPS5460,开关频率公式,SS引脚接了一个电容到GND,这个电容是软启动引脚,电容容量越大,软启动时间越长,RT是控制开关频率Fsw的,RT越大,Fsw频率越小。COMP是作环路补偿的。这个BOOT电容是自举电容,电容和肖特基二极管组成自举回路,而且肖特基的耐压必须>=1.2倍的Vsupply,如果8302供电60V给DRV,那么肖特基的耐压必须为80V或者100V.BUCK电路的电感输出最大1.5A,R1和R2是反馈回路用来确定输出电压的,而我们的VSENSE接的是误差放大器的反向输入端,误差放大器的同向输入端接的是0.8V的参考电压,0.8V的参考源不一定是0.8,这个参考电压是跟软启动的电容有关CSS,当给IC供电,CSS里面就有一个电流源给CSS充电。CSS参考源一开始是0V,然后就开始慢慢增加到0.8V
- 还有PWRGD的6号引脚是一个开漏OD,当参考电压从0V开始增加,当参考电压充电到0.8V的八成也就是0.72V的时候,PWRGD就会开漏输出一个高电平,就可以上拉一个电阻来输出信号代表IC启动了。COMP是环路补偿的电容电阻参数是严格要求精确的,否则就不精确了。
- 8301和8302的区别:49号引脚和8.9.10.11的区别:8301可以通过SPI跟MCU单片机进行通信,8302不可以
- DRV8301还是8302内部都是单独集成了两路差分放大电路,也就是只能测量两个桥臂的电流,三个桥臂电流必须外部单独拓展。
- 采样电路走线的时候一定要差分走线:
- 然后采样电阻一定要开尔文接法:
- PCB布局:这里的SH_A,SH_B,SH_C都要大面积铺铜走线。
- 母线供电电路:2个220uF的铝电解+MLCC,外加上RC吸收电路用来吸收高频干扰电路左边是采集母线电压。
- 这里也是:RC吸收回路用来吸收高频干扰信号+双向30VTVS作过压保护。
- 然后最好划分AGND,PGND,还有GND,功率地,模拟地,信号地。
- 三个桥臂内部只集成了两路差分放大采样电路在8301里面,采样电路要差分走线,推荐用8302,8301的SPI好像没什么用。
- 这里的DTC引脚是死区控制引脚:如果直接接GND,或者接电阻到GND,那么死区时间就很长,因为IC内部已经加了死区时间了,电阻越大死区时间越长,可能有电阻到GNG搭配DTC引脚的时候就不需要软件给死区时间了,IC已经处理好了。
- DRV8302更加便宜其实可以用DRV8302的。8301的SPI与MCU通信好像是用来控制差分放大器里面的差分放大倍数控制的,好像可以控制10,20.80倍,通过通信的方式来控制,放大倍数。通过SPI总线控制反馈电阻S1-S4哪几个闭合来控制倍数。
FOC驱动芯片DRV8301/8302/8303的功能详细说明
- ①首先8303相比8301就是内部少了内置BUCK电路生成5V的电路,8303没有集成DCDC,DRV8303的成本低一点。
- ②8301的nOCTW引脚:过流或者过温警告,开漏输出需要外接上拉电阻,可以通过SPI引脚设置,即设置过温的时候输出高电平,或者IC过流的时候输出高电平的意思。
- ③nFAULT:也是开漏输出的引脚,错误报告即需要外部上拉电阻,这里两个引脚因为是开漏引脚所以是不向外部输出电流的,只有通过上拉引脚提供电流才能工作。nFault这里的两个PMOS也就是说当这两个引脚输出低电平的时候,LED点亮,代表IC有错误或者过温过流。
- ④DTC引脚:死区时间调整引脚
- 内部电路图:
- DTC代表的是:DTC被下拉到GND的时候提供最小的死区时间50ns。
- 而下拉控制电阻,通过一个电阻来控制死区时间的登记,从500ns到150kR为最大500ns的死区时间控制。ns级别,那这个死区时间IC有控制的话还需要程序上进行死区时间控制吗?
- 8301的新增4个SPI通信引脚,8303也有这个SPI通信引脚,这个的目的是对IC状态和参数进行设置或者读取。
- 内部SPI接口:
- SPI通讯介绍:SPI作为从机操作的,数据类型包括16位的SPI,16位里面包括1位读写位,后面四位是地址位,是SPI内部寄存器的地址,后面是数据位,SDO也是相关操作。
- ④DC_CAL引脚:当其为高电平的时候,设备8301就会短接输入然后分流放大器会和负载断开,从而DC直流偏流矫正就可以通过外部控制来完成,也就是外部控制器MCUSTM32置DC_CAL为高电平的时候就会执行上述操作。
- 内部结构图:一开始这个电阻是放电用的,把线路上面的余电给放掉,保证初始化为低电平,接入两个差分电流放大器,这里昂个运放SN1,SP1,SN2,SP2这两个的作用接了两个电阻然后接地了。这两个是检流电阻作电流检测。
- 低采的方式,判断流过电阻两端的电压的大小然后输入到放大器进行差分放大通过SO1和SO2输出,就可以直接C相的电流是多大了.
- 8301有三相,但是因为内部只有两个分流放大器,所以只检测了两相。第三相的电流如何检测呢,可以检测总的母线电流-两相电流,即KCL方程。那么DC_CAL跟低采的关系呢?
- DC_CAL是整体运放的控制输入,SO是对某一相差分放大的输出SO得到单相的输出电压然后反推电流大小。上下管用0.2R的精密电阻进行采样。通过电压的变化然后输出的SO1和SO2的放大的压差输出到单片机的ADC引脚,然后通过ADC控制器的通道来检测电压的大小来判断当前的电流大小。通过电压的变化来反映电流,I=U/R。
- 整体运放的电路什么作用:1个基准电压VREF还有两个运放,详细解释:DC_CAL是对分流运放因为时间运行过长,整体出现偏移,误差的情况,就不准确了,就把DC_CAL变成高电平,从而复位我们的运放然后重新执行,也就是设备短接分流放大器然后断开负载的意思,就是说DC_CAL的两个非是低电平有效,也就是DC_CAL是低电平的时候,因为两个NMOS,所以高电平合上开关,然后SN和NP作为运放的输入端,但是DC_CAl高电平的时候开关就断开了。那么运放就不起作用了。短接指的是MOS管短接,运放的-+都接地了,也就是校正复位了。
- 详细解释:DC_CAL高电平的时候短接两个MOS的意思然后断开两个开关,直流的矫正任何时候都可以执行,MOS管的开关工作的时候都可以执行直接关断,因为负载只要关断, 就不会影响到电路了。
- 而VREF参考输入基准电压的作用是经过两个电阻分压后进入同向输入端1.65V,因为VREF是IC芯片产生的3.3V,是给PCB整个板子上需要作参考的地方产生的基准电压。放大器的参考3.3V,IC内部产生的,同向进入1.65V,然后导线反馈到反向输入端,也就是一个跟随器输出1.65V。
- 然后1.65V的电压最终给上面的运放提供参考电压的,相电流采样是参考电压输出给正向输入端的,S1-S4的作用是通过电阻的作用进行和SP分压后,等效到SP接地,分压进入到我们的同向输入端。而我们的SN是检测这两个电阻之后。
- 这个SN是上端SN接到反向输入端跟0.15比较,然后比较结果放大输出为S0。S0过来接入MCU的单片机ADC引脚,就可以对电压进行检测了。
- 这4个开关实质上是SPI进行放大倍数的选择,每次只会闭合一个,上下同时闭合,通过SPI控制的,其实就是放大倍数可以通过SPI的4个编程器件进行控制,4个设置指的就是4个开关,作用是10,20,40,80的增益,还有Vo的输出公式。、
- 假设s1闭合算出来0.15进入同向输入,假设S2闭合,算出来就是不同的电压,粗略的算一下,就是10分之1,20分之1,然后算一下这个电流,假设S1开关的0.15V的基准电压,然后反向输入端的电压可以通过假设采样电阻是0.02R、
- 根据P=I2R算出最大功率运作的时候的运作电流4.16A,然后三相还需要➗3,每一相最大就是1.39A再✖0.02R的采样电阻,算出来0.0278V最大的电压进入同样输入端。
- 跟0.15V比较之后很小,所以增益很大,那么增益就可以不选50K,可以选择增益小一点的,就是根据电机的功率来计算的。然后带入公式就可以得到V0最大输出是多少的方法:S1-S4是通过修改SPI的寄存器来调节的。
- 只需要修改D0-D4的修改地址和位就可以得到不同的关系。
实物欣赏:
设计图

BOM


评论