hello-boy
认证:优质创作者
所在专题目录 查看专题
国产MCU设计6.6kW充电桩,交错PFC+LLC,踩坑续(3)
国产MCU设计6.6kW充电桩,交错PFC+LLC,踩坑续(4)
国产MCU设计6.6kW充电桩,交错PFC+LLC,踩坑续(5)
国产MCU设计6.6kW充电桩,交错PFC+LLC,踩坑续(6)
国产MCU设计6.6kW充电桩,交错PFC+LLC,踩坑续(7)
国产MCU设计6.6kW充电桩,交错PFC+LLC,踩坑续(8)
作者动态 更多
分享一个使用C语言实现锁相环(PLL)以跟踪输入电压(正弦波)的例程代码
10-30 17:18
一文读懂几种永磁同步电机(PMSM)的区别
04-10 16:23
SJ/T 11893-2023《便携式锂离子电池储能电源技术规范》解读
01-29 15:44
#征文#基于DSP的无感FOC驱动嵌入式软件设计
01-17 21:15
电机V/F、开环矢量SVC、闭环矢量FVC控制的区别与应用
01-03 17:22

国产MCU设计6.6kW充电桩,交错PFC+LLC,踩坑续(7)

产品的系统架构和控制算法在此就不再做介绍了,可以参考第一篇文章。今天继续和大家分享调试过程中的踩坑。

踩坑9、交流输入电压、电流有效值计算

交流电压和交流电流的有效值,在我软件里面主要是做交流软件输入过流保护、输入电压欠压保护、过压保护、交流掉电保护、输入限流32A工作等功能。总的来说交流电压和电流的有效值还是有很多地方需要用到的。

1)其实有效值的计算说起来很简单,就是多次采样求平均值,此处为什么会踩坑呢?我们先看看有效值计算的公式机:

U---有效值电压

T---积分时间

u(t)---瞬时电压

有效值就等于单位时间的电压平方的积分开根号。

踩坑的地方就是:计算的有效值时间太长,为了减小有效值的波动,不得不拉长采样周期,计算很多个交流周期,才能减小计算所得的数据的波动。如果计算周期太长,比如输入限流32A就会出现好几个周期,甚至是10个周期以上才调整过来,这个时候用户用的32A的漏电保护器早就跳闸了!!!

2)下面我就介绍下我采用的单周期计算算法,其实也很简单,就是在交流电过零点的时候计算,没次计算半个周期,这半个周期的有效值就是交流输入电压或者电流的有效值。这样就做到了每个周期单独计算有效值,对前面提到的输入32A限流这些需要动态响应高的地方就很友好了

那就说说具体算法吧,直接上源代码

/**
  * 函数名:Effective_Vac
  * 描 述:交流电压有效值计算
  * 输 入:无
  * 返 回:无
*/
void Effective_Vac(void)
{
 AC_volt= ACL_volt -ACN_volt ;
if(AC_volt> 0)
{
AC_volt= AC_volt;
Positive_num++;
Vin_squar = (AC_volt  * AC_volt ) >> 11;
if((Positive_num == 10)&&(Negative_num >= 60))    //1ms and 6ms 
{
Vin_squar_aver = Negative_squar_sum / Negative_counter;
Negative_num = 0;
Negative_squar_sum = 0;
}
else if(Positive_num > 10)
{
Negative_num = 0;
Negative_squar_sum = 0;
if(Positive_num >= 100)
{
Vin_squar_aver = Positive_squar_sum / Pegative_num;
Positive_num = 0;
Positive_squar_sum = 0;
}
}
Positive_squar_sum = Vin_squar + Positive_squar_sum; 
}
else
{
AC_volt= (-AC_vol)t;
Negative_num++;
Vin_squar = (AC_volt  * AC_volt ) >> 11;
if((Negative_num == 10)&&(Positive_num >= 60))    //1ms and 6ms 
{
Vin_squar_aver = Positive_squar_sum / Positive_counter;
Positive_num = 0;
Positive_squar_sum = 0;
}
else if(Negative_num > 10)
{
Positive_num = 0;
Positive_squar_sum = 0;
if(Negative_num >= 100)
{
Vin_squar_aver = Negative_squar_sum / Negative_num;
Negative_num = 0;
Negative_squar_sum = 0;
}
}
}
}

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 4
收藏 7
关注 154
成为作者 赚取收益
全部留言
0/200
  • dy-pxnXXQhk 2023-11-06 19:44
    这个只是电压计算是吧,电流也是这样计算吗,博主可以再分享一下吗
    回复 1条回复