打印
[逆变器]

逆变器平均值电压外环反馈

[复制链接]
楼主: a1301272283
手机看帖
扫描二维码
随时随地手机跟帖
41
SFY2020| | 2020-11-17 14:21 | 只看该作者 回帖奖励 |倒序浏览
tianxj01 发表于 2020-11-16 10:48
回去看38楼的回复吧。

非常感谢,现在波形正常了!

我现在要做稳压,准备在输出端接一个电压互感器,采样半个周期正弦信号的有效值,然后通过PID运算,调整SIN表格数据,达到稳压,这样可以吧?

另外初始的调制比设置多少合适? 1吗?

使用特权

评论回复
42
tianxj01| | 2020-11-17 14:52 | 只看该作者
SFY2020 发表于 2020-11-17 14:21
非常感谢,现在波形正常了!

我现在要做稳压,准备在输出端接一个电压互感器,采样半个周期正弦信号的有 ...

由于正弦波信号采集再整流处理什么的会有误差,而且还必须要运放来组成精密整流,所以,最好的办法衰减后再叠加一个直流直接送ADC,由于逆变器是主动系统,是可以给出精确过零标记的,因此你可以固定采用速率,然后整个半周期累加值作为PID电压采样数据就好。

使用特权

评论回复
43
tianxj01| | 2020-11-17 15:14 | 只看该作者
SFY2020 发表于 2020-11-17 14:21
非常感谢,现在波形正常了!

我现在要做稳压,准备在输出端接一个电压互感器,采样半个周期正弦信号的有 ...

衰减后,其实不叠加直流,也可以,反正我们检测过程只检测半周期,然后处理全周期,当然这时候需要进行负电压箝位,否则,ADC输入端会因为负压,产生错误测量结果。
负电压箝位做法挺简单,将电压衰减回路上电阻分成2个电阻,然后中间接一个二极管到GND,这样经过串联电阻和下电阻进一步衰减,实际送ADC端口的负压就会很低,肯定不会影响ADC正常测试。
不过这样的做法,需要的互感器输出比较高的电压才好,比如,选择AC5V,也就是峰值±7V,然后2次衰减至峰值3V左右,送ADC处理就好了。

使用特权

评论回复
44
SFY2020| | 2020-11-20 10:40 | 只看该作者
tianxj01 发表于 2020-11-17 15:14
衰减后,其实不叠加直流,也可以,反正我们检测过程只检测半周期,然后处理全周期,当然这时候需要进行负 ...

继续请教ADC采样问题 ,

因为我现在是逆变和交流端是共地的,(输入电压和母线电压12V做实验用) ,  我现在是输出的正半周交流通过一个电阻分压(电阻上面16.5K,下面5.1K,然后通过一个1K电阻和103电容到ADC采样脚),然后才用二级管做负压钳位的,我用示波器看了下,输出交流最大值10.8V(调制比设置为0.85),有效值为7.35V,采样端最大值1.06V,有效值0.525V左右,我AD采样的数值大概再0.475-0.57V范围内(仿真查看到的数值),  我想现在有2个问题想请教下:
1 :输出端的最大值和有效值的关系基本到可以确定:Urms= 10.8V*0.707 =7.635v , 基本上和示波器上显示数据差不多,但是为什么到AD采样的有效值电压相差太大,UADC = 1.06V*0.707 = 0.749V(实际为0.525),是和钳位后的波形有关系还是有示波器的误差有关系?
2 : 通过以上的有效值数据,如我的ADC采样的有效值通过计算为0.550V(和示波器上显示有误差),那如何推算输出电压有效值,是不是 Vout = 0.55*4.23(分压倍数)*2   ?? 如果是这样算的话,那和实际的输出电压有效值就相差太大了。

谢谢!

使用特权

评论回复
45
tianxj01| | 2020-11-20 11:31 | 只看该作者
SFY2020 发表于 2020-11-20 10:40
继续请教ADC采样问题 ,

因为我现在是逆变和交流端是共地的,(输入电压和母线电压12V做实验用) ,  我 ...

估计你是直接在ADC输入端二极管负压箝位,导致ADC测量不准确的。
应该进行预先箝位,然后再通过电阻分压,送ADC,这样,ADC负压经过二次分压会低于MOS单片机负压箝位电压,这时候,ADC测试才是可靠的。

在交流端共电情况下,最简单的,你不需要箝位,直接采样半边桥臂经过LC滤波后的电压,分压送ADC就可以。
在正式版本里面,你必须采用电压互感器,这时候就无所谓共地什么的,直接按照典型的做法来就成了。

使用特权

评论回复
46
SFY2020| | 2020-11-20 13:55 | 只看该作者
tianxj01 发表于 2020-11-20 11:31
估计你是直接在ADC输入端二极管负压箝位,导致ADC测量不准确的。
应该进行预先箝位,然后再通过电阻分压 ...

在交流端共电情况下,最简单的,你不需要箝位,直接采样半边桥臂经过LC滤波后的电压,分压送ADC就可以。

我现在是直接分压采样半边的AD值,示波器显示波形有效值为0.52V,但是我采样出来算出来0.75V了.

使用特权

评论回复
47
SFY2020| | 2020-11-20 16:21 | 只看该作者
tianxj01 发表于 2020-11-20 11:31
估计你是直接在ADC输入端二极管负压箝位,导致ADC测量不准确的。
应该进行预先箝位,然后再通过电阻分压 ...

另外我这个程序里面不需要减偏置电压了吧,下面是我采样后转换的代码,

adcValue[100]  //这个是我采样到的数据(直接通过电阻分压采样正半周AD值,采样100个,100US采样一个)

for(i=0,ADCTemp=0;i<sampleTimes;i++)  //
{                                  
            ADCTemp = ADCTemp+pow(adcValue,2);
}        
       
  ADCTemp = sqrt(ADCTemp/sampleTimes);   //开方

    return  (u16)ADCTemp;

谢谢!

使用特权

评论回复
48
tianxj01| | 2020-11-20 16:54 | 只看该作者
SFY2020 发表于 2020-11-20 16:21
另外我这个程序里面不需要减偏置电压了吧,下面是我采样后转换的代码,

adcValue[100]  //这个是我采样 ...

不需要开方,这就是你算法导致的数据差异了。
连续相加后,其实就是一个面积积分(=V对time积分,是二次项),除以相加的次数,产生的就是一个有效值啊。

使用特权

评论回复
49
SFY2020| | 2020-11-20 17:19 | 只看该作者
tianxj01 发表于 2020-11-20 16:54
不需要开方,这就是你算法导致的数据差异了。
连续相加后,其实就是一个面积积分(=V对time积分,是二次 ...

你的意思就是直接:
for(i=0,ADCTemp=0;i<sampleTimes;i++)  //
{                                   
             ADCTemp = ADCTemp+pow(adcValue,2);
}         
         
   ADCTemp = (ADCTemp/sampleTimes);   //除与相加的次数

    return  (u16)ADCTemp;

使用特权

评论回复
50
tianxj01| | 2020-11-21 10:47 | 只看该作者
SFY2020 发表于 2020-11-20 17:19
你的意思就是直接:
for(i=0,ADCTemp=0;i

是的,就是这样,全部累加然后一个累加次数除法,就完事。

使用特权

评论回复
51
1769731564| | 2020-12-15 10:42 | 只看该作者
本帖最后由 1769731564 于 2020-12-15 13:34 编辑
tianxj01 发表于 2020-11-12 09:22
SIN表格的第一个数据为0(正弦波过零点),由于是交叉导通,所以你完全不需要担心共通问题。
从该时刻开 ...

你好  正在做逆变电源   想请教几个问题   这是逆变部....

使用特权

评论回复
52
tianxj01| | 2020-12-15 11:15 | 只看该作者
1769731564 发表于 2020-12-15 10:42
你好  正在做逆变电源   想请教几个问题   这是逆变部分    驱动是stm32产生sin基波  AD9833产生三角波   ...

什么模式?
标准低频正弦波+高速三角波+比较器产生PWM波形?
这什么年代的方法了?
你要这么做,还不如用一个低压的桥接D类放大器芯片,2个输出直接去驱动4个浮栅驱动芯片,人家这类芯片无论是处理精度和能力都远强过你这个方法,而且更加简洁。
你的这种方法,复杂且容易在根本不知道的环节出问题,所以,真的帮不了你。

使用特权

评论回复
53
1769731564| | 2020-12-15 13:31 | 只看该作者
本帖最后由 1769731564 于 2020-12-15 14:08 编辑
tianxj01 发表于 2020-12-15 11:15
什么模式?
标准低频正弦波+高速三角波+比较器产生PWM波形?
这什么年代的方法了?

刚开始用的是TIM1产生的互补SPWM经过反相器电平转换后 驱动    也没出来   这是电路图  
程序:
正弦数据

TIM7

TIM1
中断

使用特权

评论回复
54
tianxj01| | 2020-12-15 13:58 | 只看该作者
1769731564 发表于 2020-12-15 13:31
刚开始用的是TIM1产生的互补SPWM经过反相器电平转换后 驱动    也没出来   这是电路图  
程序:
正弦数据

没仔细看你STM32的函数。
反正能产生正确的SPWM的PWM波形就算正确了。
再后面,你就多余了,STM32的PWM输出端口,是可以直接驱动半桥驱动芯片工作的,而不需要任何其他东西,加入只会让产品变的复杂而且可靠性降低。
关于SPWM和全桥的配合,你可以看前面的讨论,所有驱动类型和方法,前面都已经讨论了。

使用特权

评论回复
55
1769731564| | 2020-12-15 14:07 | 只看该作者
tianxj01 发表于 2020-12-15 13:58
没仔细看你STM32的函数。
反正能产生正确的SPWM的PWM波形就算正确了。
再后面,你就多余了,STM32的PWM输 ...

好的 多谢了

使用特权

评论回复
56
tianxj01| | 2020-12-15 14:15 | 只看该作者

对于初次接触SPWM的人,判断SPWM是否已经正确相位如何,有个很简单的办法,不接后面的驱动输出,PWM端口直接接一个RC回路,10K和104电容就可以清楚的看见滤波后的交流波形,然后双路或者4路多踪示波器联合观察,直到相位正确,波形无失真(只用1阶滤波,会有部分PWM基频调制,这个直接忽略就可以了,只要不影响波形观察)
像2路方波、2路SPWM的驱动形式,则需要自己非常清楚需要的驱动相位,然后RC积分观察是不是成功,联合对比方波部分相位,等到这里成功了,后续的开环测试基本上可以保证一次性通过。

使用特权

评论回复
57
tianxj01| | 2020-12-15 14:18 | 只看该作者

对于通过积分网络观察的,10K和104,其转折频率大概是160Hz,对应50Hz的,其衰减程度以及非常有限,则你同时可以通过观察积分后的输出幅度,来认证是不是符合最大最小占空比的设计初衷。

使用特权

评论回复
58
1769731564| | 2020-12-16 08:42 | 只看该作者
tianxj01 发表于 2020-12-15 14:18
对于通过积分网络观察的,10K和104,其转折频率大概是160Hz,对应50Hz的,其衰减程度以及非常有限,则你 ...

我之前测试过  我这输出是400HZ的三相,, 之前SPWM输出直接接个LC回路后波形,相位差都是正确的  但是接了H桥逆变后   波形非常不理想   噪音非常严重

使用特权

评论回复
59
sanzi666| | 2021-12-9 13:33 | 只看该作者
你这个32的程序在哪里啊,也想学习一下,

使用特权

评论回复
60
sanzi666| | 2021-12-9 14:06 | 只看该作者
在使他们2里面,设置TIM_SetCompare1(TIM1,0);定时器比较寄存器的值是0,对应的端口是不是就输出低电平啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则