关于lm2907-8的lm2917频率电压转换器电路原理电路,哪位大神可以指点我一下,按照手册做了几个效果不是很好?

提供以下两种思路:(1)电流环路参数设置不合理,即环路对于慢响应可行,但对于快响应会造成异常。(2)角度估算模型在负载突变时,是否能够及时响应?需要做实验验证。同时附上作者一篇查找问题,解决问题思路的文章,供楼主参考。“哎,XXX工,电机运行突然停了!” 作为电机控制从业者,恐怕最不愿意听到的就是这句话。笔者也是经常遇到这种情况,在设计开发阶段,测试人员经常不耐烦的说“电机又停了,影响测试了!”。通常这种情况都是因为硬件过流保护造成的电机停机,这时的你该怎么下手解决问题呢?对于普通的应用场合,如空调冰箱中的压缩机、风机、水泵等产品,电机突然停止可能带来的损失还可以接受,而且软件功能设计上一般也会采取出现硬件过流时,电机自动进行尝试重启运行的方法;而对于事关人体生命安全的应用场合,如电动汽车、电梯、医疗设备中呼吸机、缺氧机等,那么出现硬件过流就是要命的事了。怎么从理论和实践上去避免电机运行过程中出现硬件过流,甚至完全去除硬件过流发生的概率,这是一个涉及电机、电子、硬件、软件、电磁兼容、结构等多学科的综合性课题。笔者根据自己多年的经验试着阐述一些查找硬件过流根本原因的方法和应对硬件过流的基本思路。首先,这是一个态度问题。有的人说,“硬件过流出几次也没事,不是有重启嘛,只要控制器和电机不发生不可逆的损坏就好,总是要允许有小概率事件的发生嘛!”。从技术角度出发,我们一定要明白一个基本原则:正常的控制器和电机运行时绝对不应该出现硬件过流,出现硬件过流就一定是某方面有问题了。如果不加以解决,小问题可能会慢慢发展最终酿成大问题,造成将来不可避免的损失。所以从态度上我们首先要端正对它的处理倾向,一定要重视,一定要及时处理。其次,我们要从理论上明白为什么会发生硬件过流?变频控制器按照FOC经典的矢量控制框图执行程序,既然都已经运行了一段时间,那么就说明软硬件基本上是没有问题的,怎么会好端端的运行时间一长就出问题呢?搞工程的人都有一个基本原则:出问题不可怕,可怕是没办法定位问题的根本原因,只要定位清楚问题是怎么发生的,解决问题只是水道渠成的事。那我们首先定位问题,分别从软件、硬件、电机三个角度出发分析可能的原因。以下是矢量控制的框图,其中蓝色部分是软件代码执行部分,这部分有一个输入即通过硬件采样到的三相电流值,然后经过FOC控制环路的运算,有一个输出即注入到电机UVW的三相电压值;红色部分是硬件部分,包括三相电桥驱动电路,三相电流采集电路、MCU外围电路、输入电源整流逆变电路等(图中部分是只是一个示意);绿色部分是电机部分。矢量控制框图软件上有没有可能出错呢?相当有可能,下面任何一种情况都有可能导致软件出错。源头错误:输入的三相电流转换成AD值时错误;中间错误:电机参数输入错误、转子角度估算模型错误、控制环路参数设置不当、某种条件下数据存储格式错误,还有其它各种想都想不到的奇葩错误等等;结果错误:输出的三相电压值错误;上述任何一个小细节错误都有可能导致软件上的错误,最终导致软件上设置输出的三相电压值是错误的,最终造成电机在运行到下一个PWM控制时刻时没有得到正确的电压值,那么电机自然就运行异常了。硬件上没有可能导致电机异常呢?更有可能。母线电压经过MCU采集参与软件运算,但硬件上没有做好滤波,当有毛刺信号进入时引入干扰导致运算错误;功率模块供电电压异常,大部分功率模块都带有欠压和过压保护功能,一旦电压超出某合理范围,会自动关闭PWM输出;硬件过流保护电路误报警。这就需要设计阶段对过流保护门槛值做反复的确认和测试,确保电流保护门槛值始终正确,过流保护的反应时间应该在在功率模块手册要求的安全时间区域内;功率模块散热设计不合理,模块温升过高从而导致功率模块运行不正常;MCU发生不应该发生的复位;某些器件在长时间运行过程中发生失效,特别是一些关键器件,如功率模块、驱动模块、母线电容等三相电流采集电路出错,这在无传感的应用场合中特别容易出现。对于无传感方案,电流采集电路可以说是核心中的核心,它一旦发生错误,那就是源头错误。采样电路滤波设计不合理导致干扰进入时无法滤除,运放选型压摆率时间过长、采样电阻的感量部分过高导致采样上升时间过长、采样电阻失效等等都有可能。电机端有没有可能?也有可能。电机是否能稳定运行与它可以运行的电压极限圆和电流极限圆密切相关。逆变器直流侧电压最大值为Uc时,Y型连接的电动机可以达到的最大基波相电压峰值是:U_{lim} = \frac{U_{c}}{\sqrt{3}} 电动机稳定运行时,电压的矢量幅值是: u=\sqrt{u_{d}^{2}+u_{q}^{2}}------(1) 电机在dq轴上电压方程可以表示为:u_{d} = -\omega L_{q} i_{q} +R i_{d} u_{q} = \omega L_{d} i_{d} +\omega \psi_{f}+R i_{q} --------(2) 将电压方程(2)代入到电压矢量幅值(1)中,并且使用 U_{lim} 来代替 u 。 由于电动机一般运行于较高转速,电阻远小于电抗,电阻上的电压降可以忽略不计, 最终电压方程可以简化成公式(3): (L_{q} i_{q}) ^{2} +
(L_{d} i_{d} + \psi_{f})^{2} =(u_{lim}/\omega)^{2}----(3) 当 L_{d}\ne L_{q} 时,式(3)是一个椭圆方程,当 L_{d} = L_{q} 时,式(3)是一个以 (-{\psi_{f}}/{L_{d}},0) 为圆心的圆方程。下面以 L_{d}\ne L_{q} 为例进行分析,将式(3)表示在下图的id、iq平面上,即可以得到电动机运行的电压极限椭圆。对某一给定转速,电动机稳态运行时,定子电流矢量不能超过该转速下的椭圆轨迹,最多只是落在椭圆上。随着电动机转速的提高,电压极限椭圆的长轴和短轴与转速成反比例相应缩小,从而形成了一族椭圆曲线。电压极限椭圆和电流极限圆电动机的电流极限方程为: {i_{d}^{2}+i_{q}^{2}} =i_{lim}^{2} -----(4) 式(4)中表示的电流矢量轨迹为以id、iq平面上坐标原点(0,0)为圆心的圆,同样将电流矢量轨迹标注在上图。电动机运行时,定义电流空间矢量既不能超出电动机的电压极限椭圆,也不能超过电流极限圆。如电动机转速为 \omega 时,电流矢量的范围只能是如中阴影线所包围的面积ABCDEF。由此可见,电机的反电动势设计是否合理,电机的力矩常数是否设计合理,电机的额定电流值是否设计合理,这都会导致:在某一转速下,当前输出的电压离电压极限椭圆是否有足够的余量,电动机的电流输出离电流极限圆是否有一定的余量。而这些都会最终影响电机是否能稳定运行。(注:本文只讨论基本理论,使用弱磁算法另作考虑)再次,说了这么多理论,当真正面对问题时,该怎么定位问题到底出在哪呢?那就是涉及到方法论的问题,可以使用工程中常用的替换法。假设拥有一套长期稳定运行的电机和控制器系统,其中命名为软件部分为A,硬件部分为B,电机为C。A+B+C长期运行是正常的的,已经经过了实践的检验。如果升级了软件A后运行不正常,那么基本可以断定是A的问题,或是A和B匹配,A和C匹配的问题。如果升级了硬件B后运行不正常,那么基本可以断定是B的问题,或是B和A匹配的问题。如果更换了电机C后运行不正常,那么基本可以断定是C的问题,或是C和A匹配的问题。定位了某一个门类后,就需要看这一版本的ABC和上一版本的ABC到底做了哪些改动,再仔细分析这些改动和硬件过流之间有什么联系?一条方向线上从过程分析到结果,即从改动了什么对硬件过流的影响去分析;另一条方向线上从结果分析到过程,即硬件过流了是因为什么样的改动造成的。当两条方向上渐渐靠近之时,你就离找到根本原因不远了。如果你问我,如果没有一套长期稳定运行的电机和控制器系统ABC怎么办?我想说,没办法,这是从0到1的问题了。这个过程是必须要有的,而且必然伴随着相当的艰辛和血泪,这也是完全从底层开始自主创新必须要经历的过程。软件设计上,很从人常常使用大厂封装好的库文件来进行开发,看似走捷径了,简单了,但是一旦出问题了,就像个黑匣子,完成不知道该怎么解决。所以立志从事电机控制的同学,老老实实从底层开始,所有的算法,所有寄存器配置都自己写,这样一旦出了问题,也好定位问题的原因。最后,举一个因为软件上数据溢出导致硬件过流的例子。实际现象是当额定电压下降到某一定数值时,电机总会停止运行,出现硬件过流。笔者最初是使用Microchip AN1078的源码来进行开发的,当时花了将近一个星期才找到代码上的漏洞,可谓绞尽脑汁,肝肠寸断。AN1078使用了电压纹波补偿的算法,笔记中是这样描述的。电压纹波补偿描述具体是这样实现的:电压纹波补偿算法实际代码如下,你能看出有什么问题吗?int16_t VoltRippleComp(int16_t Vdq)
{
int16_t CompVdq;
if (TargetDCbus > MeasParm.DCbus)
CompVdq = Vdq + FracMpy(FracDiv(TargetDCbus - MeasParm.DCbus, MeasParm.DCbus), Vdq);
else if (MeasParm.DCbus > TargetDCbus)
CompVdq = FracMpy(FracDiv(TargetDCbus, MeasParm.DCbus), Vdq);
else
CompVdq = Vdq;
return CompVdq;
}笔者只对其中的一个变量数据格式做改变就解决了问题。int32_t CompVdq;CompVdq = Vdq + (int32_t)(FracMpy(FracDiv(target_dcbus - MeasParm.dcbus, MeasParm.dcbus), vdq));相信聪明的你,已经看出问题的所在了。当母线电压下降时,补偿计算得到的值加上原有Vqd的值,会造成定义的有符号整形数据(int16_t)表示溢出, 一旦溢出,那么就是从32767直接变为负值了,电压输出岂有不错的道理?所以只要把(int16_t)更改为(int32_t)定义就解决问题了。这里说的也许很简单,很轻松,但是定位和查找bug的过程是极其痛苦的,但这个痛苦也正是软件工程师必须付出的代价和我们的价值所在。就像我们小时候经常听到过的一个故事:一个大型进口设备坏了,无人能修,外方人员来后只在电路上连了一根线,解决问题,狮子大开口要价十万美金,并信誓旦旦的解释“连一根线1美金,知道在哪连99999美金”。你想当那个知道在哪连线,并体现出自己稀缺价值的人才吗?相信有了这一套“态度 + 理论+ 方法论 + 例子”的处理问题步骤,当再次面对因为硬件过流导致电机异常停机时,你也许就不那么害怕了。你的心里完全可以设想“暴露问题是让产品进一步完善的绝佳机会!”并且充满自信地说:“让我来解决问题吧!”参考文献:《现代永磁电机理论与设计》,唐任远等著,机械工业出版社,1997。}

我要回帖

更多关于 lm2917频率电压转换器电路原理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信