- 本课程为精品课,您可以登录eeworld继续观看:
- 无感电机控制算法与PFC算法的单芯片实现
- 登录
- 课程目录
- 相关资源
- 课程笔记
大家好 欢迎大家参加TI工业研讨会
我是TI Century FAE Igor An
主要负责数字电源及电机控制算法开发
今天由我给大家介绍TI电机控制加PFC解决方案
这里的电机控制主要是无传感电机控制
今天主要介绍的内容是在电机控制算法里面加入PFC算法
使两种算法在同一款MCU中协同工作
首先为大家简单介绍PFC控制算法
以及PFC控制中主要建模及环路建设
那我们知道在单向PFC中
最主要运用到的拓扑就是简单的boost的拓扑
那如图所示
那在boost的拓扑中我们要对这个boost的拓扑进行控制
那首先要做的就是对这个系统进行建模
那按照平均电流法的小信号模型去建模
那从右边这个推导过程中我们可以得到
整个系统的一个稳态的一个关系
就是输入电压和输出电压
以及我们控制的真空比的一个稳态关系
但我们知道对PFC对这个boost的电路控制
实际上我们要实现两个控制目标
第一个就是我要实现我的输出电压
也就是这个直流母线电压上的电压恒定
那是一个电压的一个控制
另外一个控制目标是我要控制我的输入电流
是和输入电压同相位 都为正旋
就是实现高的PF和这个THD
就是高的这个公因数
那基本是1
那如果是实现了这个电压和电流完全同相
那基本就是个 PF就是1
那如果是完全的正旋度完全重合那它的谐波
谐波含量也是基本都是畸波含量
那为了实现这两个控制目标我们要建立控制环路模型
那之前我们推导出的这个稳态的关系
其实并不是我们的被控系统的模型
因为我们要 被控系统如果要建立的话
首先要定义我要实现的控制目标
以及实现这个控制目标的输入和输出值
那控制目标呢其实就是我们模型中的输出量
那到底用什么数量建模
来搭建我的系统呢
那对于这个boost的电路来说
我们如果实现PFC功能一般是建立双环路
就是外环电压环 内环电流环的环路
那内环电流环的输出作为外环电压环的输入
那其实作为电压环的这个最终控制来说
它的输入就是我的电感电流输出就是我的母线电压
那对于电压环的这个输入输出
我的定义好了之后我就根据输入输出
按照平均电流法的小信号模型去解算它的数学模型
同样的对于电流环我要控制的是这个电感电流
那这个就是我的整个模型的输出
那它的输入量就是我去实现这个控制的输入量
实际上就是我们的duty
那实际上电流环的这个模型的输入输出
输入就是duty 输出就是电流
那输入输出建立好了
同样的 我们根据
平均电量法的建模理论对这个系统进行建模
这样我们就得到我们电流环的模型
那看到它的输出是I 就是电感电流
输入是duty 那就是我们的这个真空比
那它得到一个这个模型
当然我们这里是简化模型
像电感的内阻我们并没有考虑
像一些寄生参数我们并没有考虑
如果将这个模型更加细化或者说我们叫更进一步精确
那我们就把这些系统上的量
把它引入进去来得到一个更完备的数学模型
当然我们知道这个其实这个电感里面内阻是
相对来说这个电感来说是很小的
所以你加入它和不加入它
其实对波特图的影响其实是比较微弱的
当然是会有影响那对于有一些系统来说
对于有一些这个建模方式来说
我们可能会引入更多的环节
像我们的电流采样的这个应放调理电路
应放调理电路中的这些滤波
它的带宽 也同样会引入
这些都是一些精细化的设计方法
但是最基本的这种建模方式我们是在这里面给大家列出来
电流环电压环 它的一些建模
当然我们引入不同的这种外界因素会得到不同的数学模型
那有了模型之后
我要考虑的就是说我要建立我的闭环控制环路
来实现我的两个控制目标
那下面呢 就是我们的这个典型的这个boost电路或者叫PFC的
单向PFC的控制环路
那上面我们可以看到就是一个双环结构
外环就是电压环 那这是电压环我们刚才推导出来电压环的数学模型
内环整个电压环输出内环这块就是我们的电流环
那这是电流环的模型
那对PFC来说呢
我的电压是母线电压是直流的反馈也是直流的
经过PI出来 所以这个地方它的物理意义是电流
但是是电流的幅值 它也是个直流量
那我们要实现的控制目标呢
是要把输入电流控制成和输入电压同相位的正旋信号
所以这里我们会需要乘以一个
与输入电压同相位的单位正旋
就说它这个正旋的幅值是1
乘以这个由环路决定的这个电流幅值
最终得到一个正旋的
幅值由电压环决定的一个正旋的电流参考
那我建立一个环路使我的实际电流跟随我的正旋的电流参考
从而实现PFC的这个正旋电流的这个控制目标
那外环电压环就是为了保证我的输出的这个电压值
时时刻刻跟随我的目标的电压值
就是固定死的一个恒定的电压值
那这样我的双环就建立起来了
那细化到这个更深的细节电流环
那我们可以看到基本上是跟上面一样的
这个Ci基本上就是我们的Gi
然后这个current system实际上就是说的模型
那剩下就是采样通道的一些 一些比例
那我们可以注意到这里比上面那个图多增加了一块
那就是我们这里称之为Dc的这地方那这里其实是我们的前馈
它主要解决的问题呢就是我过零点电流畸变的问题
那我们从这个闭环控制回路上我们可以知道
其实就是我一个正旋的参考和一个正旋的
这里是正旋参考
正旋的反馈进行比较然后利用这个error通过一个矫正器
可以是2P2C 也可以是PI 也可以是P
这类的这种矫正器输出一个duty
那我们看假如在过零点的时候那我们的reference基本是零
那实际反馈基本也是零
那这个时候我的输出的这个duty基本上是接近零的
所以是几乎没有duty的那在这种情况下
没有duty的情况下输入电压又非常小的情况下
那我这个时候的电流就会非常小
甚至几乎就是零
那我们一般就可以
就可能会在这个波形上看到它在过零点的时候会有一个平的台阶
那这个台阶会严重地影响我们最终输出的PHD 为了解决这个问题呢
我们引入了一个前馈那这个这个前馈的计算方式
就是由我们之前讲到的这个
稳态的这个输入电压和输出电压的一个关系
就计算出来了
实际上就是duty和输入电压输出电压的关系
那我们这里的M1Volt实际上就是输入电压Vin
IqBusVoltRef 那实际上这个就是代表我的这个Vout
那用VinVout的关系去解这个duty
实际上它就是
一个由稳态关系求出来的一个代数值
那因为这个Vin是个正旋的
所以这个duty实际上是按照这个关系算出来的一个跟正旋相反的一个趋势
在过零点的时候我这个前馈输出的值是最大的
随着到峰值它是会逐渐下降的
相当一个抛物线的一个波形加到这个前馈里面
那这样会大大的改善我过零点的波形
让我实际空出来的这个电流波形完全是接近正旋
那这是一个改善这个电流波形正旋度的一种方式
当然还有其他一些方式可以帮助我们去
改善过零点的这个正旋度
好 那前面呢 跟大家介绍了如何去建立一个PFC控制环路
同时呢加上我们更早之前介绍的这个无传感电机控制
那我们两个控制算法都简单的给大家做了介绍
那如何把这这两个算法共同集成到同一颗C2000 MCU中
让这两个算法协同工作
那尤其是我们之前提到我们PFC的控制环路呢
大概是有40k左右的这个飘轮开关频率
那电机控制呢传统上讲呢一般在5到10k
有一些这种速度不是很高的电机呢就是尽量让这个频率低
以减少我们的损耗
减少我们的这个功率管的开关损耗
所以我们以一个例子
就是我们把这个PFC频率定在40k赫兹
然后把我们的电机控制频率定在5k赫兹
那如果是这样的话 在数字控制领域呢
基本上是我产生一个plam的时候我就要做一次采样 做一次运算
所以这个是同步的
那我们这张图给大家展示呢
就是C2000内部的两个中断的实际的一个配合
那么看到蓝色的这个三角形
就是我们这个电机控制的一个PWM的一个时机
那它产生一个周期的时候
里面包含了8个红色的PFC的这个周期
因为正好是这个它的8倍
那我们知道
如果是我们把这个中断算法的这个事件产生
同时都安排在这个过零的时候
就是我的电机的中断和PFC的中断都是在这个位置的
就会产生中断冲突 当然C2000会有一个中断优先级的问题
那会先执行一个高运行级的
那这取决于我们是用电机控制的中断源和PFC中断源
是选哪个C2000里面的中断源
这些中断源会有一定优先级的安排
但无论选哪个 先执行的那个先算完
后执行的那个等这个先执行的算完了之后
再拿到CPU资源再继续运算
这样的话
那我们认为的就是当前采样
去运算当前的duty的话
它就有一个不可控的一个时间延迟
所以一般地在C2000的这种控制系统中
如果有一个以上的两个或者三个这种中断的话
我们在中断源的安排上尽量的是让它们产生错峰
就是避开相互的这个重叠
那在这个PFC算法中呢
我们PWM是40k的
那我们的实际计算呢是可以低于这个40k的
那我们发波是按40k的只是两个周期的这个plam用同一个值
这里呢 我们是两次plam周期
去进入一个ISR去采样去算一下这个duty的更新
那所以我们看到这些点
就是它产生中断的这些点
尽量地不要去和这个电机的这些中断源的点去重合
那细化到每一个中断
它整个的发生过程 我们以电机为例
首先第一个我们用一个事件去触发adc
那这个事件触发adc以及adc在这段时间开始采样
以及到采样结束
那这段时间我们的CPU是不去控制adc的
就是adc硬件机制去完成采样
那这段时间CPU可以运算其他的后台程序
那当adc采样结束之后我们用adc采样结束的
结束事件就是end of conversion EOC事件
去作为我们的中断源
那这个事件发生之后我们才会进入adc
在adc中直接进入中断
在中断中直接去读adc的结果
然后再用我们的环路进行运算
那假设我整个环路运算用了这么长的时间
到这儿的话我的整个电机算法的这个计算结束
那这个恰好是在我的PFC中呢产生之前结束的
所以它们不会产生任何的重叠和相互影响
两个这个算法非常这个均匀地分配
不会相互打断也不会有这个优先级的问题
那这个 那如果能够实现这种效果
那整个这个中断和CPU资源的安排就是非常合理的
当然会有一些这种特殊情况产生
比如说我的这个电机运算的算法非常复杂
那我在这个整个开始运算到结束的时候用的时间非常长
那它就会覆盖到我这个PFC中断产生就是说在PFC中断产生的时刻
我的电机中断运算还没有完成
那这种情况下
因为C2000的这个中断优先级的概念
并不是像很多的这种PC级的这种中断优先的概念
那它自动地 如果是PC的话它可能自动会打断一个中断
那C2000的这种中断优先级的安排就是
只是在我们之前讲到它两个中断源同时发生的时候
它会让中断优先级去响应
但一旦一个中断先拿到CPU资源CPU在运算的时候
如果你不做软件的处理这个中断是打不断这个电机的中断的
所以只有等当前电机中断的这个算法先执行完了之后
PFC的这个算法才会被执行
所以这个的中断会被推到后面
就是整个这个中断会向后推一段时间
而且这段时间是不确定
那整个PFC的控制有可能在这个周期就会受影响
由于引入了一个不确定的这个延时
我们知道数字控制系统中 采样延时和计算延时的影响是非常大的
所以这个就可能会对系统产生问题
那我们在这个
在软件中我们可以对这个中断进行一些优化和配置
我们期望得到的效果因为我们的这个电机的中断频率很低
所以我们期望的效果就是在电机运算中
如果电机没有算完PFC中断就来了
我们希望PFC中断能够打断电机的这个算法
先把PFC中断的这个运算算完
然后再继续的这个运算电机算法
从而实现像下图所示的这种
中断的这个资源的分配
那这一段的时间正好是它们产生冲突的这段时间
那我们把它放大
就是在这一时刻我PFC的这个adc开始采样
那我们通过刚才的这个讲解大家知道这段
就是从电机采样到它采样结束这段实际上是不需要CPU资源的
我电机控制算法可以继续的运算电机算法
当这个PFC采样结束
PFC的这个ad产生了一个end of conversion的一个事件的时候
PFC就要进入PFC中断
那这个时候我们希望PFC能够拿到CPU资源
那就是这段时间我们变成红色的PFC运算的时间
直到PFC运算结束退出
然后我再切换成电机算法再变成蓝色
让电机继续运算直到结束
那希望得到一个这个效果
但是这种实现是不能自动执行自动实现的
是需要我们的软件的这个软件的支持的
那下面这个给大家列出来了就是我们为了实现这种
我们叫做C2000的中断嵌套
而加入的这段代码
那其实主要是在这个电机的中断里面
我们如果是要允许一个中断
被其他中断打断的话
我们需要再进中断的最开始去把一些中断源释放
这里释放的就是我们这个PFC所对应的中断源
那这个如果您选择的是其他中断源那这面的这个第几组或者是这些值
您可能根据这个中断源去将它改变
然后再出中断时候的处理也是和正常的有所不同的
那PFC中断的处理呢
前面都是你的运算代码
那最终是一个conknowledge和clear那这个都是标准动作
这没有任何不同
所以PFC来说它就是一个
就是正常处理的
这个C2000的中断处理
那对于这个电机来说
我需要在进入中断的一开始就需要把这些值进行一定相应的处理
这样才能保证我的PFC可以打断它
那下面两张图呢是我们就是实际操作中
去实现中断嵌套的两个波形图
那这个黄颜色呢
是我们在这个电机中断里面放的一个L
进入中断的时候把这个L拉低出中断的时候把L拉高
对于这个红色的或者紫色的这个PFC的一样
进入中断的时候我会把这个它拉低出中断的时候把拉高
那从第一张图上我们看呢
它就是一个不允许PFC中断打断电机中断的这种方式
就是我们没做这种软件处理没做嵌套处理的时候
我们看到电机我们先关注一下这个红色的这个频率和周期
之前它的时间间隔
那这里明显时间间隔变大这里又变小
就是相当于这个频率不稳定了
那原因就是因为这个时刻电机算法一直占着CPU并没有算完
只有电机算完了之后PFC的这个才会进入中断打断
再继续运算
那后面这张图呢 就是我们实现了中断嵌套的这种方式
我们可以看到PFC的中断的这个频率非常的稳定
那在这个时刻 就是典型的是时刻
其实是我的这个电机控制算法并没有算完
那我允许了一个PFC中断进入中断服务程序去运算PFC算法
就是它打断了电机控制的这个算法
那上面给大家介绍呢
就是其实是在PFC加电机控制系统中
容易遇到的一个算法或者是中断冲突的一个问题
那给大家提供了一个这个解决的办法
那这个解决的办法在我们的德eSupport的这个论坛上
也有相关的这个解释
大家可以关注一下我们的德eSupport的这个论坛
有一些这个我们内部的一些
您使用中的问题可以在上面提问题 我们会及时给您回复
另外呢就是给大家介绍我们一个C2000
有一些这种免费的open source提供给大家
那包括我们的ControlSUITE在这ControlSUITE 里面呢
我们有非常多的这个TI提供的EUM板的
这种从原理图泵表geber file
完全都是免费的还有几个非常多的这种参考代码
都是完全源码公开的
那这里面着重提一下的就是这个PowerSUITE
它是一个专门针对数字电源的开发设计的一个便捷的工具
里面当然包含很多源码但最重要的是
但最重要的是它有一个图形化的界面
可以供大家去用图形化的方式
去配置你的plum输出端口ad以及ad采样的比列等等等等
就这些硬件的信息可以通过图像化界面去配置
同时它会自动的帮您生成这个控制环路的控制参数
当然您要告诉它这个电感电容啊这些值基本的信息
那我们目前支持几种这个比较简单这种拓扑结构
只要是我们支持的拓扑结构呢您都可以用图形化界面去配置
同时让它去自动生成代码
整个开发过程中呢是不用您自己手写代码的
那这些这个软件的下载地址就在TI的官网都是免费可以下的
另外一个就是MotorWare那这个MotorWare呢
主要是包含我们的instaSPIN FOC和instaSPIN motion
是为了instaSPIN这个算法专门开发的
那在这个里面呢
除了每个工程里面会包含非常多的
这个不同的这个设置的历程
它每个历程里面有不同的特点
当然最核心的还是我们的FAST的估算器
那在这个FAST的估算器的边缘
或者是周边我们设计了很多
这种工业界经常会使用到的一些功能
比如说
这个低速力矩补偿
那这个在单转子压缩机的应用上是大家都很需要的
那这个我们的力矩补偿呢
是一个基于二次线性迭代的
一种自适应的估计力矩曲线的一种算法
和自适用地去补偿
所以它是一个自动机制并不像传统的查表的力矩补偿
然后还有就是说这个我们的IPD加HFI
那已经集成到我们的instaSPIN里面了
那我们这个instaSPIN的MotorWare里面也可以下到
这个高频注入的算法和instaSPIN配合的这种库
好 谢谢大家
希望大家继续关注TI的相关产品
猜你喜欢
换一换
推荐帖子
- (已解决)LM3S8962的GPIO Commit具体是啥意思啊?
- 哪位前辈知道LM3S8962的GPIO Commit具体是啥意思啊?请赐教:$ [ 本帖最后由 lilong8470 于 2010-8-30 23:15 编辑 ]...
- lilong8470 微控制器 MCU
- 看149的朋友学LanuchPad注意了
- G2与149 有很多不同点,不管是比较还是AD捕获等等,我们一定要必备数据手册,与UserGuide 只有他们才能帮助我们,有事没事要多看看哦,加油,我们都在进步...
- Widic 微控制器 MCU
- SAR ADC 的输入注意事项
- 转自:deyisupport 您是否知道输入信号可能会影响为应用选择最佳逐次逼近寄存器 (SAR) 模数转换器 (ADC) 的方式?在我们听到“输入”两个字时,脑海里会立即浮现频率、幅值、正弦波以及锯齿波等几件事。所有这些都是优化信号调节时需要考虑的相关问题。但是,很多人不会预先考虑的一件事是 SAR ADC 的实际输入类型。在本博客中,我将重点介绍三种 SAR 输入(单端、伪差分与差分...
- maylove 模拟与混合信号
- 紧急求救!!!DSP28335上电启动不正常!!!
- DSP28335程序烧写进去了,但是重新上电后DSP好像没有正常启动,因为开始时要点亮的LED灯一直处于微亮状态(此时用示波器观看该IO口电平只有1.6V),等过了一分钟左右,感觉才正常进入DSP程序,灯亮一秒灭一秒,这时灯比较亮(IO口电平在3.3V和0V之间转换,正常)。 监测发现启动时DSP的复位信号每隔4ms左右输出窄的低脉冲。可是烧写的程序里已经禁止...
- forstrongman 微控制器 MCU