前言

最近在学习和电机驱动有关的知识,其中涉及了PWM控制脉宽周期以及输出电压电流FOC驱动算法,H桥驱动电路,PID控制......信息量过大,在此记录一下以防忘记,学习主要参考正点原子官网的电机资料以及下面的一些链接

【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术 - 知乎 (zhihu.com)

PWM 驱动电路的结构 - 知乎 (zhihu.com)

peng-zhihui/Dummy-Robot: 我的超迷你机械臂机器人项目。 (github.com)

TB67H450FNG (szlcsc.com)

克拉克变换(Clarke Transformation)

芯片部分

这是一块由东芝出品的基于PWM输入斩波型直流有刷电机驱动器(对于两相步进电机也适用),额定输出电压为50V,有前进/倒挡/刹车/停车四种模式,允许大电流驱动,

内部逻辑

宏观上的四种模式由这两个输入口决定,特别注意的是当IN1和IN2均为低电平进入休眠模式后过1ms会进入准备状态

而从准备模式进入工作模式也有30微秒的延时

我们先看一下宏观逻辑图

特别强调一点,由于电机线圈是电感类元器件,因此在工作时会涉及能量的循环利用,为此设计者配置了三种不同的模式来利用这部分能量,这在后面会提到

明白了逻辑后我们再看引脚图就会清晰很多

这里的输入信号即为单片机发出的PWM信号,在提PWM之前我们先来看看斩波电路

斩波电路

简单来说,斩波电路就是将恒定的输入信号转换为目标信号的电路,通常为DC-DC,大致原理为:将连续的信号斩断成一节一节的脉冲信号,斩波电路一般有降压斩波电路、升压斩波电路、升降压斩波电路、Cuk斩波电路、Sepic斩波电路、Zeta斩波电路,我们来简略介绍一下前三种

降压斩波电路(BUCK)

我们看左边的电路图,Ui为电压源,U0为负载电压,V是一个可控开关,当V导通时,负载电压等于电压源电压,当V断开时,二极管D续流,此时U0为0,因此在一个单位周期T内,负载的电流等于Ui*α,其中α为占空比,即一个周期内V导通的时间Ton/T

因此我们不难得出,U0的最大电压只能为Ui,此时α=1,如果减小占空比单位负载电压也会随之减小,故称该电路为降压斩波电路

升压斩波电路(BOOST)

和之前的配置差不多,当V为导通态时,Ui会持续给电感L1充电,同时给C1充电,C1再给U0充电,当电路处于稳态时,电感在一个周期内吸收到的能量为Ui*I1*Ton

当V断开时,电感和电压源一起给U0充电,此时电感的电压为Ui-U0,由于稳态系统能量守恒

Ui*I1*Ton = (Ui-U0)*I1*Toff

不难得出U0 = (T/Toff)*Ui,因此无论何时T/Toff >= 1,故称之为升压斩波电路

升压降压斩波电路

根据图中信息我们可以得知,当V导通时电压源Ui给L1充电且给U0充电,当V断开时电感给U0充电且方向与Ui相反,因此易得U0 = (Ton/T-Ton)* Ui,因此当占空比0<α<0.5时为降压电路,反之为升压电路

H桥驱动电路

现在我们知道PWM信号控制的是输入信号的占空比进而控制斩波电路的输出信号,那么我们在之前步进电机原理部分学习到,电机线圈上的电流每发生一次换向电机转子移动一个步距角,用于改变电机电流方向&大小的方法即为----H桥

先不急着看这些衰减模式到底有何作用,我们就从最左边的图来分析H桥,该电路简单来看就是由四个MOS管开关组成,将输入的交流信号转换为直流信号,或者将直流信号转换为交流信号,通过开关的在时间节点上的关断实现,不难理解,我们来聊聊衰减模式

快速衰减

快速衰减就是断开加在电机绕组线圈的电压,同时将其内部储存能量释放给其他用电器,由于

Q = I*R^2*T,含有电阻元件的用电器消耗能量快,进而衰减速率快,因此称为快速衰减

慢速衰减

和上面形成对比,在慢速衰减模式下,断开加在电机线圈绕组的电压,同时将电机绕组正负极相接,由于绕组没有电阻元件,此时能量消耗较慢,称为慢速衰减

二者比较

一般根据电机的转速来选择衰减方式:转速高进快速衰减,转速低进慢速衰减,高速衰减会出现震动大有噪声的情况,慢速衰减会导致电机转矩不够进而定位不准

导致上述现象的原因为,快速衰减时PWM信号断开,再到重新启动的过程中会存在一个较大的死区,信号需要从0加载回目标值,而慢速衰减时会有一个大的电流信号无法流向其他负载而是直接流向H桥,严重可能导致烧坏,所以我们一般采用混合衰减模式,高速用快速衰减,降到低速换回慢速衰减

控制部分

PID算法

相信大部分学过自控的朋友都有涉猎过,三个参数P(比例)I(积分)D(微分),我简单带过一下全局PID算法

通俗地说就是目标值和测量值之间存在误差Δ,我们就用P*Δ去逼近目标值,有时候这个逼近的过程太慢或者出现稳态误差(在未到达目标值之前系统就收敛)

我们就需要引入积分项I令其乘上累计误差,我们用I*Δ + P*Δ即为比例积分输出,但有时候可能会出现响应过快的情况(超调

此时我们就需要引入第三个参数:微分项D,其计算公式为D*(Δi - Δi-1),此时输出的计算公式就可以称为一个完整的PID系统

FOC算法

诞生背景

在提FOC之前,我们先来看看FOC的一般应用场合----直流无刷电机(BLDC)&永磁同步电机(PMSM),在之前也提到了步进电机的内部组成,广义地说,步进电机也能算是无刷直流的一个子集,电机驱动都离不开MOS管开关

那么BLDC的驱动原理也应该和步进电机类似----控制加载在电机绕组上的电流值来精准控制电机转子的转动,那么只是普通的给绕组电流肯定是不够的,之前提到了电机驱动软件细分的原理就是通过PWM持续发送离散的正弦信号给线圈进而控制电流,这样能够使电机输出的转动更为丝滑,个人拙见认为FOC与其有异曲同工之妙

拿三相电机举例,如果我们想让转动时的精度最高,效果最好,那么不难得出我们要尽可能地控制电机输出的三个相信号之间要存在120°的相位差(360°/3),为此,FOC便诞生了

三相逆变电路

补充一下BLDC的驱动原理----三相逆变电路,和H桥类似,只不过这里用了三组半桥MOS管组成电路,通过按一定顺序控制MOS管的关断就可以控制三组绕组按一定次序的工作,注意这里的MOS自带了二极管,其目的是为了后面利用电机绕组电感产生的电流

但我们知道如果输入给驱动器的信号大小不变的话,绕组产生的力也不变且转子转动的角度不好控制,为此我们就要引入FOC算法,在那之前我们要先介绍FOC中的一些数学知识----Clark变换&Park变换

Clark变换

当我们用手转动PMSM的输出轴时,通过示波器我们可以观测到输出的信号为三组正弦波

我们已经知道了三相逆变电路的工作流程,不难想象当电机稳定工作时传感器能采样到的电流应该如下如图所示(相位差120°)

那么如果我们反过来给电机三组正弦波信号,电机就能匀速丝滑的转起来,但是作为一个系统来说,这个系统是非线性的,运算量过大,因此我们需要利用数学工具来线性化系统

创建一个三维CUBE并将其投影到二维平面

投影的图像方向与a',b',c'相同,我们需要乘上一个比例系数K1,以a为例,a在二维平面上的电压大小会变为Ua = K1*Ua’*sinθ

在经过三维->二维的变换后,我们现在只需要通过一组正交基就可以表达三相信号

为了防止产生相位差,我们令α坐标与a'重合,此时α = K2*α,K2为新的比例系数,利用三角函数以及矢量合成可以得出最终Uα和Uβ分别为

这样一个Clark变换就算初步完成了,但还需要做一些调整

我们假设在变换前电机三相绕组数为N1,变换后电机二相绕组数为N2

从下图公式可以看出,当a与α同方向时,Umax = 3/2Ua,根据幅值不变原理,我们需要在最终得到的结果前乘上2/3

故N1/N2 = 2/3

利用齐次方程组表示为

再利用基尔霍夫电流定律(KCL)可以求解方程最终解

于是我们便成功地将三个正弦波转换成了两个正弦波

但两个正弦波直接并不是线性无关的,还没有完全解耦,控制起来难度还是很大,所以接下来就要引入Park变换

Park变换

Park变换简单来说就是将静态的坐标系变为动态的,变换后的坐标系会随着转子一直持续转动,这样就能得到最终解耦出的信号,分别为励磁分量转矩分量,其中励磁分量从狭义上来讲就是通过电机绕组的电流量,这两个分量始终相互垂直,线性无关

简单地说,Park变换就是通过变换矩阵改变坐标系的位置进而实现解耦,和机械臂中的空间变换矩阵有类似的效果

具体计算即为下面这个简单的变换矩阵

经过Park变换后,坐标系始终与运动中的电机转子保持同步,这个向量最终变成了一个定值,两个控制变量都完成了线性化

但Id是我们不需要的,我们需要的只是Iq

因为我们要尽可能地减少励磁效应带来的电流误差,我们要尽可能得到精确的力矩分量

但最后我们还需要进行逆Park变换,这是为什么呢,因为三相逆变电路的输入信号是SVPWM,该信号计算需要用到静态的坐标系,因此在我们经过PID闭环处理后需要进行一次逆Park变换交给SVPWM处理

SVPWM

在介绍SVPWM之前,我们要先提一下空间矢量电压的概念,直观地说就是在三相线圈上的电压值按照矢量合成的结果

在三相电路中,各相位电压的表达式如下,其中Um为输入的最大电压,而最右侧的式子是经欧拉公式转换得到的

经过了Park逆变换后,动态坐标系变为静态,此时角速度为0,经过简化得到最终的合成矢量电压

由结果可以看出得到的结果为一个旋转的空间矢量,它的幅值不变,为相电压峰值的 1.5 倍,且以角频率 ω= 2πf 按逆时针方向匀速旋转的空间矢量

我们知道三相电路的六个半桥MOS管能够产生8种输出(2^3),全部可能组合共有八个,包括 6 个非零矢量 Ul(001)、U2(010)、U3(011)、 U4(100)、U5(101)、U6(110)、和两个零矢量 U0(000)、U7(111)

举个例子,当我们MOS管状态为100时,A相上半桥导通,B,C相下半桥导通,等效电路如下

不同的输入产生不同的电压值

这些不同的MOS管状态就产生了不同的相位扇区

因此我们可以用这六个扇区的矢量电压以及两个零电压来表示所有的电压值,公式的直观解释就是控制单位时间内不同电压的占空比来控制最终的输出电压

下面给出公式推导

最后我们就可以求得每个扇区所占用单位周期的比重(脉宽调制比)

在做完这些操作以后,我们还需要做最后一步,那就是设计MOS开关的顺序,为了减少资源消耗,我们要尽可能地让每次状态切换只产生一个相位的改变,因此就需要用到七段式SVPWM调制法

最终,在经过这样有序的周期性SVPWM输出调节后,我们的电机总算能够稳定且丝滑地被驱动了

总结

总结一下驱动的整体流程,我们要先通过力矩环即电流环来实现对Iq&Id的控制,然后进入速度环进行控制,利用编码器读取电机输出的脉冲信号计算速度,将速度环的输出传递给电流环作为输入,这样就形成了双闭环控制,亦或者我们可以将速度环直接替换成位置环,这在机械臂运动中应用性更好

闭环部分介绍完了就该介绍FOC部分了,我们先将三相信号经过Clark变换变为‘二相’信号,再经由Park变换变为线性信号传给PID闭环,然后再逆Park变换静态坐标系SVPWM部分静态矢量计算,将要控制的脉宽系数传递给三相逆变驱动,最后成功驱动电路

从TB67H450FNG了解电机驱动原理(PWMFOC三相逆变PID)相关推荐

  1. FOC——9.三相逆变桥

    文章目录 1.三相逆变电路 2.导通原理 3.方波六步换相时序分析 4.死区问题 4.1.理论分析 4.2.实际波形 4.3.MOS关断时的尖峰电压问题 5.带死区的互补载波电流流向分析 1.三相逆变 ...

  2. FOC项目知识点总结二 | 电机基础复习及用直流控制三相电机的三相逆变电路

    电机基础复习 当我们给定子绕组通交流电的时候,会产生磁场: 这个时候因为转子本身也有磁场,由于磁极异性相吸,同性相斥的原理,如果有一个磁场旋转,则另外一个磁场就会我们的转子在定子磁场变化的情况下就可以 ...

  3. 专用SPWM芯片EG8030在三相逆变中的使用

    专用SPWM芯片EG8030在三相逆变中的使用 引脚说明 引脚定义 各部分电路 原理图和pcb图 这一学期依然需要做科研训练.因为上学期做了单相逆变,这学期导师建议做一做三相的.本人单片机这方面属实没 ...

  4. 基于matlab的三相逆变电路仿真,三相逆变电路matlab仿真.docx

    三相逆变电路matlab仿真.docx 三相逆变电路仿真 姓 名: 朱龙胜 班 级: 电气 1102 学 号: 11291065 日 期: 2014 年 6 月 6 日 指导老师: 郭希铮 北 京 交 ...

  5. 直流微电网仿真模型 包含光伏+boost、储能+双向DCDC、三相并网逆变器+锁相环、三相逆变+异步电动机等部分

    直流微电网仿真模型[含个人笔记+建模过程] 包含光伏+boost.储能+双向DCDC.三相并网逆变器+锁相环.三相逆变+异步电动机等部分. 光伏发电经过boost升压到直流母线750V 采用电导增量法 ...

  6. 三相逆变 单相/三相逆变器 SPWM

    三相逆变 单相/三相逆变器 SPWM -stm32主控(输入.输出具体可根据需要设定),本逆变器可以二次开发. 本内容只包括 逆变程序,实现变频(0-100Hz).变压调节,均有外接按键控制(使用C语 ...

  7. 三相逆变/整流并网,正负序分离,在电网电压不平衡跌落/平衡跌落时,消除负序电流,维持电网电流三相对称

    三相逆变/整流并网,正负序分离,在电网电压不平衡跌落/平衡跌落时,消除负序电流,维持电网电流三相对称,可用于光伏和风力发电系统 有参考文献 YID:7750661862079056未见花开

  8. DSP28335,三相逆变电路电压闭环程序,三相逆变数字电源程序

    DSP28335,三相逆变电路电压闭环程序,三相逆变数字电源程序. 包括源代码文件和PDF说明文件. 详细说明了代码含义,三相逆变电路电路电压闭环分析,电路设计步骤,软件设计流程,软件调试步骤等. I ...

  9. stm32三相逆变程序,pcb,以及板子。stm32输出三相spwm波驱动6个mos管实现三相逆变

    .逆变器本身可稳压,可任意设定输出电压,pid参数可用电脑通过串口调节.输入12-40 v,自动生成辅助电源供电.资料齐全,程序注释详细,稳定可靠,适合新手学习以及项目应用. stm32三相逆变开环驱 ...

最新文章

  1. 在VSO8中使用QT
  2. 华硕的服务器怎么看型号,怎么识别华硕主板型号
  3. Python startswith() 方法
  4. OpenCV简单的过滤器平滑的实例(附完整代码)
  5. PyTorch深度学习实践07
  6. rsync+lsyncd实现(本地以及远程)文件实时同步
  7. phpStrom编辑器常用功能教程
  8. 下载 Bootstrap3 的 Sass 版本
  9. nginx ngx_http_autoindex_module
  10. mongodb启动时报错ERROR: child process failed, exited with error number 1
  11. python重定向作用_Python重定向不起作用
  12. openssl 升级到OpenSSL 1.0.1g 修复HEARTBEATS漏洞
  13. 190121每日一句
  14. 组合逻辑电路的分析与设计
  15. 修改注册表禁用触摸板
  16. 三星S8原生android8.0,三星S8惧怕的全面屏机皇杀到,原生安卓8.0系统
  17. 与、或、非、与非、或非、异或、同或的区别
  18. 百度地图离线开发2.0
  19. 世界鸭都的病态美食审美
  20. list.isEmpty() CollectionUtils.isEmpty(list)区别?

热门文章

  1. 【2016阿里安全峰会】风声与暗算,无中又生有:威胁情报应用的那些事儿【附PDF下载】...
  2. 织梦.html和htm,织梦dedecms之article_article.htm(文章内容页模板)介绍
  3. 融合差分进化和混合多策略的麻雀搜索算法
  4. 如何解决近期微赞或微擎有些模块提示不是官方安装的解决办法
  5. 历年英语四级高频单词统计
  6. 一文搞懂离心铸造的转速计算
  7. 给兰姐姐的苹果爱思下载和使用教程
  8. python plot label_python - matplotlib子图的通用xlabel / ylabel
  9. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xc1 in position 41694: invalid start byte解决方案
  10. 2022年工业机器人的5大应用行业