• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

【逆变原创】低成本高性能极致------DSP数字逆变器实现

2015-07-26:更新 单极性调制过零点畸变问题

2015-06-30:更新 市电和逆变切换逻辑 84楼

2015-06-25:更新 UPS上常用的限流方法 62楼

 

开贴之前,说说自己观察到的几个现象:

1. 做UPS多年,发现Online的UPS基本都是数字化,后备机则用硬件实现居多,逆变器跟后备机类似,论坛上大多都是用单片机来实现的,功能相对单一。

   

2. 在1~20k的功率段,UPS基本都是半桥的拓扑。逆变器主要家用功率段集中在1~5k,基本都是全桥为主。UPS的负载比较单一,逆变器的负载比较多样,半桥不能带半波负载,全桥因为有零电平的存在,跟三电平拓扑类似。

   

3. 逆变器作为比较小的一个分支,国内UPS/并网逆变器大厂都没有特别重视,市场上流行的工频机大多是从山特出来的方案,高频机则基本没有数字化的方案。

                                                                             

看论坛上各种逆变器,基本都是用单片机打出一个PWM,驱动/死区都是用硬件来做,只是单纯的实现逆变,其中涉及到的各种逻辑,显示,通信等都无法集中在一个芯片上搞定。鉴于此,我一直在想用UPS的经验来做逆变器,把UPS上相对成熟又灵活的方案移植到逆变器上。这个过程中跟论坛上某位大牛版主学到了不少经验,给我了不少启发。而且TI推出的Piccolo系列DSP 28027,价格10元左右,跟PIC价格差不多,基本能满足低成本高性能的要求。

  

DSP 2802x系列2种封装,48PIN和38PIN,如果48PIN觉得还贵的话,可以选用38PIN的低频系列的,绝对比单片机要强大很多。

                                                                                                                                                            

下图是用28027做的控制板,对国内某厂家高频逆变器(硬件做的)进行改进的项目,图片如下:

先写到这里,具体功能后续详细讲解。

1.DSP直接输出4路PWM,驱动IGBT产生SPWM波。

 

2.DSP可以直接输出2路脉宽可变,相位相差180°的PWM驱动,实现对母线电压的控制。3525只能固定50%占空比,这里可以把3525省掉。

 

3.多达13路ADC采样,所有模拟量都能采集到。

 

4.内部集成2路比较器,不需外部增加比较器,即可实现对逆变电流逐波限流控制。

 

5.各种参数可以随意设置,可以实现208/220/230/240V,50/60Hz的输出。

 

6.内部有1路SCI接口,可以MODBUS/SNT等各种协议。

 

7.可以实现段码LCD/数码管显示。

  

各位大侠们有啥问题需求,可以提出来一起讨论~

 


先上个图,这是国内某厂家的逆变/充电 一体机,前级推挽是用3525做的,后级逆变驱动+控制都是用硬件做的,后续就在这个基础上进行的改进,改进后硬件简单很多,功能更强大。

更改后功率板如下:

 

简单说下拓扑结构:

1. 前级暂时还用3525,后续直接用DSP直接控制母线电压。

2. 后级全桥拓扑,低频臂和高频臂固定。

3. 带有市电充电器功能。

4. 有市电和旁路切换功能,可以设置为市电优先或逆变优先,可以设置节能模式。

由于用DSP直接控制,改动起来比较灵活,在处理客户非标需求时就灵活很多了。

 

这是改进第一版本,控制部分全部在控制板区域,后续上简单的SPEC.

 

先上个调试图片:

 

 

目前有几个问题:

1. 空载电流还是有点大,没有钳流表,不知道实际电流多少。

2. 逆变波形过零处死区效应很明显,目前死区1.5us。还有点小小的畸变,这个已经是优化过的了。

没办法全桥的拓扑决定了。

全部回复(207)
正序查看
倒序查看
dobetter
LV.7
2
2015-06-21 22:56
占座,一不小心成了第一个发参赛帖的了~
0
回复
dobetter
LV.7
3
2015-06-21 23:01

发帖的编辑功能太难用了:

1. 怎么插入空格呢?

2. 在哪里改变字体大小,字体颜色呢?

0
回复
2015-06-22 17:44
坐等你的更新,我上一次采用了STM32作为主控制器,最后没有做成功,最后的效果就是正弦输出全部为负的,没有正半波。这是什么原因呢?应该是脉冲分配不对导致的。后来也没时间做了
0
回复
dobetter
LV.7
5
2015-06-22 19:08
@皇甫仁和
坐等你的更新,我上一次采用了STM32作为主控制器,最后没有做成功,最后的效果就是正弦输出全部为负的,没有正半波。这是什么原因呢?应该是脉冲分配不对导致的。后来也没时间做了

STM32的外设不了解,可能是你PI环路输出转化为PWM寄存器值时出了问题吧。

 

半桥的发波方式跟全桥不同,半桥50%占空比时,输出电压对应为0,从正半周到负半周,占空比没有突变,所以不存在过零点波形畸变的问题,当然死区效应还是存在的。

 

全桥发波有几种形式,一种工频臂和高频臂固定,一种工频臂和高频臂换边,固定时高频臂的占空比在过零点时会有突变,导致输出电压会有畸变,如果处理不好,电感在过零点时会有明显的叫声。

0
回复
2015-06-23 10:01
@dobetter
占座,一不小心成了第一个发参赛帖的了~[图片][图片]
这个不小心我喜欢!~
0
回复
2015-06-23 10:06
@dobetter
发帖的编辑功能太难用了:1.怎么插入空格呢?2.在哪里改变字体大小,字体颜色呢?

 空格不需要插入吧,直接空格键呗~字体大小颜色 版主核心会员以后会有滴


0
回复
2015-06-23 10:52
@dobetter
STM32的外设不了解,可能是你PI环路输出转化为PWM寄存器值时出了问题吧。 半桥的发波方式跟全桥不同,半桥50%占空比时,输出电压对应为0,从正半周到负半周,占空比没有突变,所以不存在过零点波形畸变的问题,当然死区效应还是存在的。 全桥发波有几种形式,一种工频臂和高频臂固定,一种工频臂和高频臂换边,固定时高频臂的占空比在过零点时会有突变,导致输出电压会有畸变,如果处理不好,电感在过零点时会有明显的叫声。
我是来点赞  等更新的!
0
回复
2015-06-23 11:16
这也是一种创新,期待
0
回复
zwcyqxzcx
LV.6
10
2015-06-23 11:35
@dobetter
占座,一不小心成了第一个发参赛帖的了~[图片][图片]

好贴,顶起来!全力支持!希望楼主详细的讲解下,

对了,问一下:楼主代码要开源吗?

0
回复
dobetter
LV.7
11
2015-06-23 11:43
@zwcyqxzcx
好贴,顶起来!全力支持!希望楼主详细的讲解下,对了,问一下:楼主代码要开源吗?[图片]

,一起交流~

俺这只是在前人基础上改进,不敢公开代码,不然没法混了

0
回复
PCBBOY1991
LV.3
12
2015-06-23 12:20
DSP的入门是不是更难一些呢?比如仿真器?
0
回复
zwcyqxzcx
LV.6
13
2015-06-23 14:04
@dobetter
[图片],一起交流~俺这只是在前人基础上改进,不敢公开代码,不然没法混了[图片]
支持,那就交流交流思路也挺好的。
0
回复
dobetter
LV.7
14
2015-06-23 14:40
@PCBBOY1991
DSP的入门是不是更难一些呢?比如仿真器?

入门不难,主要是外设多,中文资料少。。。

仿真器比较便宜,XDS100淘宝上几十元就能买到了~

0
回复
2015-06-23 17:15
@dobetter
STM32的外设不了解,可能是你PI环路输出转化为PWM寄存器值时出了问题吧。 半桥的发波方式跟全桥不同,半桥50%占空比时,输出电压对应为0,从正半周到负半周,占空比没有突变,所以不存在过零点波形畸变的问题,当然死区效应还是存在的。 全桥发波有几种形式,一种工频臂和高频臂固定,一种工频臂和高频臂换边,固定时高频臂的占空比在过零点时会有突变,导致输出电压会有畸变,如果处理不好,电感在过零点时会有明显的叫声。
外设一样的,我现在是用的28335,但是也没时间来调试了。。。。
0
回复
dobetter
LV.7
16
2015-06-23 22:42
@zwcyqxzcx
支持,那就交流交流思路也挺好的。
0
回复
dobetter
LV.7
17
2015-06-23 22:43
@皇甫仁和
外设一样的,我现在是用的28335,但是也没时间来调试了。。。。
28335用来做小功率的逆变器太浪费了,我们大功率的UPS也是用的28335~
0
回复
PCBBOY1991
LV.3
18
2015-06-23 22:54
@dobetter
入门不难,主要是外设多,中文资料少。。。仿真器比较便宜,XDS100淘宝上几十元就能买到了~
好的!
0
回复
2015-06-23 23:02

这样的贴,必须要顶。

这样的实现方式,是和我想的完全吻合。

这个东西才是有前途的方案!

请教几个问题:

1;当逆变上欠压保护的时候,此时市电在线,这时候逻辑上要切换到市电,假设开机时,此时还没有锁相完成,这个时候是切换还是不切换呢?

2;机器的开机初始化过程是什么样子的。

3;当逆变工作过程中,锁相有没有失败的可能性呢??发生锁相失败的情况,一切逻辑就要重新运行,这个过程中,如果遇到要切换的状态,是挂起还是怎么样呢?

4;当逆变VRMS值和市电VRMS值相差比较大的情况下,切换吗?比如有人拿30AH的电池,带个1KW,很快造成电池欠压保护,此时欠压保护点,对应了逆变此时会输出相对很低的VRMS值,此时要切换了,该怎么办?

0
回复
dobetter
LV.7
20
2015-06-23 23:23
@lizlk
这样的贴,必须要顶。这样的实现方式,是和我想的完全吻合。这个东西才是有前途的方案!请教几个问题:1;当逆变上欠压保护的时候,此时市电在线,这时候逻辑上要切换到市电,假设开机时,此时还没有锁相完成,这个时候是切换还是不切换呢?2;机器的开机初始化过程是什么样子的。3;当逆变工作过程中,锁相有没有失败的可能性呢??发生锁相失败的情况,一切逻辑就要重新运行,这个过程中,如果遇到要切换的状态,是挂起还是怎么样呢?4;当逆变VRMS值和市电VRMS值相差比较大的情况下,切换吗?比如有人拿30AH的电池,带个1KW,很快造成电池欠压保护,此时欠压保护点,对应了逆变此时会输出相对很低的VRMS值,此时要切换了,该怎么办?

哈哈,多谢老哥顶贴,一下子提了这么多问题,一个一个来:

1.逆变欠压保护,这时候负载肯定是在逆变的,如果市电OK,必须要快速切到市电去。开机时,默认输出在旁路,如果逆变优先模式,需要等逆变锁相完成后再切到逆变来。

 

2.开机初始化,检测各开机条件是否OK,比如电池电压是否在开机范围内,前级是否满足开机条件,如果满足,则开DCDC升母线,母线稳定后,判断逆变是否能够开机,如果可以则开逆变。

 

3.逆变工作过程中,如果市电存在且市电频率在可跟踪范围内,则跟踪市电频率。如果超出可跟踪范围,则按额定频率来运行。如果这个时候需要切换,则不需锁相,直接切换,这种情况下输出可能有间断,但是也没有更好的办法了。

 

4.逆变Vrms和市电Vrms差值不会很大,所举例子包含几个情况都可能导致输出切市电:a:电池低压 b:电池低压会导致母线电压低 c: 逆变Vrms值变低。这3个情况都会导致输出切市电,看哪个最先满足了。

0
回复
2015-06-23 23:28
@dobetter
哈哈,多谢老哥顶贴,一下子提了这么多问题,一个一个来:1.逆变欠压保护,这时候负载肯定是在逆变的,如果市电OK,必须要快速切到市电去。开机时,默认输出在旁路,如果逆变优先模式,需要等逆变锁相完成后再切到逆变来。 2.开机初始化,检测各开机条件是否OK,比如电池电压是否在开机范围内,前级是否满足开机条件,如果满足,则开DCDC升母线,母线稳定后,判断逆变是否能够开机,如果可以则开逆变。 3.逆变工作过程中,如果市电存在且市电频率在可跟踪范围内,则跟踪市电频率。如果超出可跟踪范围,则按额定频率来运行。如果这个时候需要切换,则不需锁相,直接切换,这种情况下输出可能有间断,但是也没有更好的办法了。 4.逆变Vrms和市电Vrms差值不会很大,所举例子包含几个情况都可能导致输出切市电:a:电池低压b:电池低压会导致母线电压低c:逆变Vrms值变低。这3个情况都会导致输出切市电,看哪个最先满足了。

第一个问题:

如果输入是快速掉电,也就是说,输入的电源,功率不能足够保证,比如有人用个开关电源,做电池,如果此开关电源功率为200W,他开机之后,市电也在线,逆变输出,且为空载,他突然加了一个1KW的灯,往上干,此时可以保证切换不炸机吗?特别是在市电还没有锁相完全执行下,操作了此项。

0
回复
154600
LV.9
22
2015-06-23 23:31
@dobetter
哈哈,多谢老哥顶贴,一下子提了这么多问题,一个一个来:1.逆变欠压保护,这时候负载肯定是在逆变的,如果市电OK,必须要快速切到市电去。开机时,默认输出在旁路,如果逆变优先模式,需要等逆变锁相完成后再切到逆变来。 2.开机初始化,检测各开机条件是否OK,比如电池电压是否在开机范围内,前级是否满足开机条件,如果满足,则开DCDC升母线,母线稳定后,判断逆变是否能够开机,如果可以则开逆变。 3.逆变工作过程中,如果市电存在且市电频率在可跟踪范围内,则跟踪市电频率。如果超出可跟踪范围,则按额定频率来运行。如果这个时候需要切换,则不需锁相,直接切换,这种情况下输出可能有间断,但是也没有更好的办法了。 4.逆变Vrms和市电Vrms差值不会很大,所举例子包含几个情况都可能导致输出切市电:a:电池低压b:电池低压会导致母线电压低c:逆变Vrms值变低。这3个情况都会导致输出切市电,看哪个最先满足了。
好东西,来学习了
0
回复
2015-06-23 23:32
@dobetter
哈哈,多谢老哥顶贴,一下子提了这么多问题,一个一个来:1.逆变欠压保护,这时候负载肯定是在逆变的,如果市电OK,必须要快速切到市电去。开机时,默认输出在旁路,如果逆变优先模式,需要等逆变锁相完成后再切到逆变来。 2.开机初始化,检测各开机条件是否OK,比如电池电压是否在开机范围内,前级是否满足开机条件,如果满足,则开DCDC升母线,母线稳定后,判断逆变是否能够开机,如果可以则开逆变。 3.逆变工作过程中,如果市电存在且市电频率在可跟踪范围内,则跟踪市电频率。如果超出可跟踪范围,则按额定频率来运行。如果这个时候需要切换,则不需锁相,直接切换,这种情况下输出可能有间断,但是也没有更好的办法了。 4.逆变Vrms和市电Vrms差值不会很大,所举例子包含几个情况都可能导致输出切市电:a:电池低压b:电池低压会导致母线电压低c:逆变Vrms值变低。这3个情况都会导致输出切市电,看哪个最先满足了。

3.这个切换的时候,也就是说当市电输入在线,且频率不再锁相范围内,就不锁,要转到逆变上的时候,不锁相就切换,这个是有点危险吧,我的做法就是:

此时逆变器关闭,让输出为0,然后从市电切换到逆变,切换后之后,再次开启逆变,你认为这个方式好不好呢?

虽然有停顿,但是至少没有安全隐患。

0
回复
dobetter
LV.7
24
2015-06-23 23:36
@lizlk
第一个问题:如果输入是快速掉电,也就是说,输入的电源,功率不能足够保证,比如有人用个开关电源,做电池,如果此开关电源功率为200W,他开机之后,市电也在线,逆变输出,且为空载,他突然加了一个1KW的灯,往上干,此时可以保证切换不炸机吗?特别是在市电还没有锁相完全执行下,操作了此项。

梳理一下,主要问题是输入功率不够,电压快速下跌 :

1. 检测到电池电压快速下跌,输出会很快切市电,不管是否锁相完成。

2. 炸机为何?逆变有硬件逐波限流保护,导致前级的电流不会很大。另当输出电压减小时,输出的功率也会对应减小。

这里炸机是因为切换时候引起的吗?

0
回复
2015-06-23 23:39
@lizlk
3.这个切换的时候,也就是说当市电输入在线,且频率不再锁相范围内,就不锁,要转到逆变上的时候,不锁相就切换,这个是有点危险吧,我的做法就是:此时逆变器关闭,让输出为0,然后从市电切换到逆变,切换后之后,再次开启逆变,你认为这个方式好不好呢?虽然有停顿,但是至少没有安全隐患。
路过学习了
0
回复
2015-06-23 23:40
@dobetter
哈哈,多谢老哥顶贴,一下子提了这么多问题,一个一个来:1.逆变欠压保护,这时候负载肯定是在逆变的,如果市电OK,必须要快速切到市电去。开机时,默认输出在旁路,如果逆变优先模式,需要等逆变锁相完成后再切到逆变来。 2.开机初始化,检测各开机条件是否OK,比如电池电压是否在开机范围内,前级是否满足开机条件,如果满足,则开DCDC升母线,母线稳定后,判断逆变是否能够开机,如果可以则开逆变。 3.逆变工作过程中,如果市电存在且市电频率在可跟踪范围内,则跟踪市电频率。如果超出可跟踪范围,则按额定频率来运行。如果这个时候需要切换,则不需锁相,直接切换,这种情况下输出可能有间断,但是也没有更好的办法了。 4.逆变Vrms和市电Vrms差值不会很大,所举例子包含几个情况都可能导致输出切市电:a:电池低压b:电池低压会导致母线电压低c:逆变Vrms值变低。这3个情况都会导致输出切市电,看哪个最先满足了。

4.有没有考虑在这种情况下:

由于机器默认的切换位置是再市电上,当输入的功率有限流保护,比如超载,输入电压会降低,拉低输入电压,在此之前,逆变一直在工作,此时检测到这个输入降低,可能来的太晚,继电器此时又在逆变上,既有可能造成辅助电源急剧掉电,以至于继电器掉电,切换回市电,此时相当于负载开路,输入电压又会很快回升,CPU此时根本没有来得及执行欠压保护动作后,电压又回升了,此时继电器可能又从市电位置切换到逆变下,因为CPU上的供电,掉的没有继电器的快,控制继电器的IO,一直在保持着正常的逻辑,但是继电器的供电掉了,因为辅助电源掉了。这种情况是如何处置的呢,虽然是极端,但是我搞过测试,烧的几率很大。

0
回复
2015-06-23 23:45
@dobetter
梳理一下,主要问题是输入功率不够,电压快速下跌:1.检测到电池电压快速下跌,输出会很快切市电,不管是否锁相完成。2.炸机为何?逆变有硬件逐波限流保护,导致前级的电流不会很大。另当输出电压减小时,输出的功率也会对应减小。这里炸机是因为切换时候引起的吗?
快速下跌,很快切换到市电,不管锁相,95%的几率是炸机的。这点一定要慎重,因为这是极端情况,我的做法,是这种情况,不切换,一旦CPU在工作的时候遇到这种问题,此类故障一直保持,继电器不会切换到市电上,而且逆变器和DC-DC都会被关闭,等输出电压到0的时候才切换。
0
回复
2015-06-23 23:46
@dobetter
梳理一下,主要问题是输入功率不够,电压快速下跌:1.检测到电池电压快速下跌,输出会很快切市电,不管是否锁相完成。2.炸机为何?逆变有硬件逐波限流保护,导致前级的电流不会很大。另当输出电压减小时,输出的功率也会对应减小。这里炸机是因为切换时候引起的吗?
逐个波形限流,估计都很难解决此类问题,因为他不是短路的这种情况了。市电过来功率太强大,一个电弧就烧脆弱的IGBT。
0
回复
dobetter
LV.7
29
2015-06-23 23:46
@lizlk
3.这个切换的时候,也就是说当市电输入在线,且频率不再锁相范围内,就不锁,要转到逆变上的时候,不锁相就切换,这个是有点危险吧,我的做法就是:此时逆变器关闭,让输出为0,然后从市电切换到逆变,切换后之后,再次开启逆变,你认为这个方式好不好呢?虽然有停顿,但是至少没有安全隐患。

恩,这个说的没有问题。切换的时候可以关逆变,如果逆变本身有问题且没有锁相成功,就把逆变关掉,如果是其他问题引起则不需要关逆变。

另小功率一般都是用继电器来切换,没有并SCR,所以逆变和市电不存在共通的问题,所以引起炸机的概率很小。

0
回复
dobetter
LV.7
30
2015-06-23 23:47
@154600
好东西,来学习了
0
回复
dobetter
LV.7
31
2015-06-23 23:47
@象山宝马电脑
路过学习了
宝马也来了,呵呵
0
回复