并网问题,最近老师布置了一道并网的问题,博主之前也有尝试过,不过之前做的不深。
至于这一个问题,解释起来比较麻烦,相信做过或者了解过的人应该知道,简单来说,就是一个同步。

我们知道,220v 50hz的电网波动其实还是有的,一般认为波动在49.5~50.5Hz左右变换,我们用变压器变压过来,通过一个比较器等可以整形成一个脉冲波,我们测脉冲波的频率就可以知道此时电网的频率。

提前说明

spwm说明

在实现spwm波形时,将源建议的400个pwm改成672个pwm方便扩展精度
当频率在49.5~50.5Hz变动时,更改原因:

1. 配置400个点时,对应pwm个数(波表个数)变动范围404~396,上下变动为8
2. 配置672个点时,对应pwm个数(波表个数)变动范围678~665,上下变动为13
3. 变动范围增大,为下面避免单个增加pwm个数做准备

pwm初始化函数

TIM1_PWM_Out_Init(1000-1,5-1,48);

TIM1时钟为168M,对应单个pwm频率为168∗1000000/1000/5=33.6khHz168∗1000000/1000/5=33.6khHz168*1000000/1000/5=33.6khHz
672个pwm波形滤波之后,可以对应50hz正弦波波形

增加输入频率

增加输入频率,在不改变点数情况下

原理分析

输入频率增加,对应输入方波的周期变小,而672pwm输出点数不变,势必会造成
spwm波形被部分截取,具体是尾部截取

现象分析

现象及过程·分析

随着频率的增加,即采样进来的方波信号周期变小,出现发波表过多,这时候,程序认为:

  • 波表数没有发完,这时候,捕获到上升沿标志了,使能一次定时器溢出更新中断(程序原设定要求)
  • 当剩余几个波表发完成后,应该清楚波表计数,同时关闭定时器更新中断,等待下一次捕获到来使能更新断
  • 此时,由于上升沿来之后,波表才发完,造成,下一次中断更新在下一次上升沿来

即:下一个方波来,才会重新输出,中间间隔段为定时器关闭情况
解决办法:减少波表个数,使上升沿来是波表刚好发完或者,在上升沿来之前把波表发完

减少输入频率,在不改变点数的情况下

原理分析

输入频率变小,即方波周期变大,出现发出672波点数不足的情况,会造成spwm波提早结束,具体spwm波结束有一段横线(定时器提前关闭造成)

现象分析:


A:波表发送完毕,下一次捕获还未来
B:定时器关闭,等待下一次捕获来临,定时器不输出
C:下一次捕获,上升沿到来,重新打开定时器
解决办法:增加波表个数,使波表发送完毕时,下一次上升沿刚好到来

同步办法

计算pwm个数

经过验证,方便波表的选取,pwm个数为偶

ps:在一个误差周期内,实际给出误差以红色为主。

程序实现

void Frequency_take(void)
{if(Frequency<49.5f){cnt_start=1;frequencyNum=339;}if(Frequency>=49.5f && Frequency<49.6f){cnt_start=1;frequencyNum=339;}//49.5+3补充if(Frequency>=49.6f && Frequency<49.7f){cnt_start=2;frequencyNum=338;}//49.6if(Frequency>=49.7f && Frequency<49.8f){cnt_start=2;frequencyNum=338;}//49.7if(Frequency>=49.8f && Frequency<49.9f){cnt_start=2;frequencyNum=337;}//49.8if(Frequency>=49.9f && Frequency<50.0f){cnt_start=3;frequencyNum=336;}//49.9if(Frequency>=50.0f && Frequency<50.1f){cnt_start=3;frequencyNum=336;}//50if(Frequency>=50.1f && Frequency<50.2f){cnt_start=4;frequencyNum=335;}//50.1if(Frequency>=50.2f && Frequency<50.3f){cnt_start=4;frequencyNum=334;}//50.2if(Frequency>=50.3f && Frequency<50.4f){cnt_start=4;frequencyNum=334;}//50.3if(Frequency>=50.4f && Frequency<50.5f){cnt_start=5;frequencyNum=333;}//50.4if(Frequency>=50.5f && Frequency<50.6f){cnt_start=4;frequencyNum=333;}//50.5if(Frequency>50.5f){cnt_start=5;frequencyNum=332;}
}

中断处理部分

更改点数处理

void TIM1_UP_TIM10_IRQHandler(void)
{if(TIM_GetITStatus(TIM1,TIM_IT_Update)==SET) {TIM3->CR1 &= (uint16_t)~TIM_CR1_CEN;if(dir_flag==1){//半波翻转标志位TIM1->CCR1 = arr*(0.5f+coefficient*sin_table[cnt++]);if(cnt>=frequencyNum){dir_flag=0;cnt=cnt_start;}}else{TIM1->CCR1 = arr*(0.5f-coefficient*sin_table[cnt++]);if(cnt>=frequencyNum){dir_flag=1;cnt=cnt_start;TIM_ITConfig(TIM1,TIM_IT_Update,DISABLE);    GPIO_ResetBits(GPIOD,GPIO_Pin_1);}}TIM3->CR1 |= TIM_CR1_CEN;    }TIM_ClearITPendingBit(TIM1,TIM_IT_Update);
}

程序说明

按计算,50hz对应半波点数为336个点数,人为在波表前面各加三个数,将波表改成336+3+3=342个波表

double sin_table[342]={
-1.000, -1.000, -1.000,

-1.000, -1.000, -1.000, -1.000, -0.999, -0.999, -0.998, -0.998, -0.997, -0.996,
-0.996, -0.995, -0.994, -0.993, -0.991, -0.990, -0.989, -0.987, -0.986, -0.984,
-0.983, -0.981, -0.979, -0.977, -0.975, -0.973, -0.971, -0.968, -0.966, -0.964,
-0.961, -0.958, -0.956, -0.953, -0.950, -0.947, -0.944, -0.941, -0.938, -0.934,
-0.931, -0.927, -0.924, -0.920, -0.917, -0.913, -0.909, -0.905, -0.901, -0.897,
-0.893, -0.889, -0.884, -0.880, -0.875, -0.871, -0.866, -0.861, -0.857, -0.852,
-0.847, -0.842, -0.837, -0.832, -0.826, -0.821, -0.816, -0.810, -0.805, -0.799,
-0.793, -0.788, -0.782, -0.776, -0.770, -0.764, -0.758, -0.752, -0.746, -0.739,
-0.733, -0.727, -0.720, -0.714, -0.707, -0.701, -0.694, -0.687, -0.680, -0.673,
-0.666, -0.659, -0.652, -0.645, -0.638, -0.631, -0.624, -0.616, -0.609, -0.601,
-0.594, -0.586, -0.579, -0.571, -0.563, -0.556, -0.548, -0.540, -0.532, -0.524,
-0.516, -0.508, -0.500, -0.492, -0.484, -0.476, -0.467, -0.459, -0.451, -0.442,
-0.434, -0.426, -0.417, -0.409, -0.400, -0.391, -0.383, -0.374, -0.365, -0.357,
-0.348, -0.339, -0.330, -0.322, -0.313, -0.304, -0.295, -0.286, -0.277, -0.268,
-0.259, -0.250, -0.241, -0.232, -0.223, -0.214, -0.204, -0.195, -0.186, -0.177,
-0.168, -0.158, -0.149, -0.140, -0.131, -0.121, -0.112, -0.103, -0.094, -0.084,
-0.075, -0.066, -0.056, -0.047, -0.038, -0.028, -0.019, -0.009,

-0.000, 0.009, 0.019, 0.028, 0.037, 0.047, 0.056, 0.065, 0.075, 0.084,
0.093, 0.103, 0.112, 0.121, 0.130, 0.140, 0.149, 0.158, 0.167, 0.177,
0.186, 0.195, 0.204, 0.213, 0.222, 0.231, 0.241, 0.250, 0.259, 0.268,
0.277, 0.286, 0.295, 0.304, 0.312, 0.321, 0.330, 0.339, 0.348, 0.356,
0.365, 0.374, 0.383, 0.391, 0.400, 0.408, 0.417, 0.425, 0.434, 0.442,
0.451, 0.459, 0.467, 0.475, 0.484, 0.492, 0.500, 0.508, 0.516, 0.524,
0.532, 0.540, 0.548, 0.555, 0.563, 0.571, 0.579, 0.586, 0.594, 0.601,
0.609, 0.616, 0.623, 0.631, 0.638, 0.645, 0.652, 0.659, 0.666, 0.673,
0.680, 0.687, 0.694, 0.700, 0.707, 0.714, 0.720, 0.727, 0.733, 0.739,
0.746, 0.752, 0.758, 0.764, 0.770, 0.776, 0.782, 0.788, 0.793, 0.799,
0.805, 0.810, 0.815, 0.821, 0.826, 0.831, 0.837, 0.842, 0.847, 0.852,
0.856, 0.861, 0.866, 0.871, 0.875, 0.880, 0.884, 0.888, 0.893, 0.897,
0.901, 0.905, 0.909, 0.913, 0.917, 0.920, 0.924, 0.927, 0.931, 0.934,
0.937, 0.941, 0.944, 0.947, 0.950, 0.953, 0.956, 0.958, 0.961, 0.963,
0.966, 0.968, 0.971, 0.973, 0.975, 0.977, 0.979, 0.981, 0.983, 0.984,
0.986, 0.987, 0.989, 0.990, 0.991, 0.993, 0.994, 0.995, 0.996, 0.996,
0.997, 0.998, 0.998, 0.999, 0.999, 1.000, 1.000, 1.000,1.000, 1.000, 1.000
};

当频率改变时,我们只要改变整个波表起始位置就可以.比如,当输入方波信号为49.5,通过计算,应当输出678个pwm对应半波339个
程序中设置cnt_start=1,frequencyNum=339,遍历波表时从第一个数到第339个数,共339个数,对应使用336个波表时,我们额外补充的前3个数中的第2和3个 -1.000 和后三个数中第一个1.000,也就是将缺少的3个pwm补上

同样其他频率变化时,实现同步。

spwm单项并网的实现相关推荐

  1. 关于21年电赛,这些一定要熟悉!

    ▼点击下方名片,关注公众号▼ 知识点概要 仪器仪表:小信号放大.滤波器.程控放大.频率相位测量.锁相频率合成.峰值检波测量.功率放大.A/D,D/A,FFT等. 通信高频:振荡.混频.调制解调(AM. ...

  2. STM32微控制器综合实训12 单相并网逆变器SPWM发生器

    实验12 单相太阳能并网逆变器SPWM发生器设计 了解SPWM的应用领域,掌握单相并网逆变器SPWM发生器的设计方法. 代码讲解 main.c #include "led.h" # ...

  3. 准Z源光伏并网系统MATLAB仿真模型,采用了三次谐波注入法SPWM调制,具有更高的电压利用效率。

    准Z源光伏并网系统MATLAB仿真模型,采用了三次谐波注入法SPWM调制,具有更高的电压利用效率. 并网部分采用了电压外环电流内环. 电池部分采用了扰动观察法,PO. Z源并网和逆变器研究方向的同学可 ...

  4. 准Z源光伏并网系统MATLAB仿真模型,采用了三次谐波注入法SPWM调制

    准Z源光伏并网系统MATLAB仿真模型,采用了三次谐波注入法SPWM调制,具有更高的电压利用效率. 并网部分采用了电压外环电流内环. 电池部分采用了扰动观察法,PO. Z源并网和逆变器研究方向的同学可 ...

  5. 1093芯片做正弦波逆变器_正弦波逆变器中的SPWM调制(钟任生)

    欢迎加入技术交流QQ群(2000人):电力电子技术与新能源 905723370 高可靠新能源行业顶尖自媒体 在这里有电力电子.新能源干货.行业发展趋势分析.最新产品介绍.众多技术达人与您分享经验,欢迎 ...

  6. 调制的缺点_论文 | 下篇:中点箝位型光伏并网逆变器调制策略及效率对比

    作者: 石祥花 谢少军 南京航空航天大学自动化学院 本文原文刊登于<南京航空航天大学学报>. " 在上篇文章中,我们和大家探讨了4种3L-NPC型拓扑(二极管NPC.有源式NPC ...

  7. 共模电压 matlab,三电平并网逆变器共模电压抑制方法研究

    3 SPWM控制及共模电压影响 常规SPWM对NPC三电平并网逆变器三相桥臂控制方式为:以a相为例,就是一个正弦波和等幅值.同相位.位置相差一个幅值的两个三角载波进行比较后得到NPC三电平逆变器a相桥 ...

  8. 基于matlab的单周期控制三相高功率因数并网逆变器的建模与仿真,基于Matlab的单周期控制三相高功率因数并网逆变器的建模与仿真...

    0引言近年来,谐波电流对电网的污染问题受到人们的关注.无论是太阳能发电还是风力发电,并网逆变器的研究主要集中于提高电网侧功率因数以及减少电流总谐波畸变(THD).逆变器的控制主要采用正弦波脉宽调制(S ...

  9. 光伏发电极其并网控制matlab simulink仿真文件,最大功率点跟踪采用扰动观察法

    光伏发电极其并网控制matlab simulink仿真文件,最大功率点跟踪采用扰动观察法,有定步长和变步长两种,调节boost电路占空比控制输出电压,电压电流双闭环控制,控制方式采用spwm控制,能很 ...

最新文章

  1. 活着不容易!几度被扼杀又雄起的NLP简史
  2. Camel In Action 读书笔记 (1)
  3. DHCP Client 无法启动 拒绝访问
  4. ESP8266-SDK的硬件定时器
  5. JAVA数据库连接池实现
  6. akka_Akka的字数统计MapReduce
  7. 群晖docker安装cms_Nas码农篇:群晖Docker安装Gitlab
  8. unity text不能刷新_unity自走棋制作(二)-UI制作
  9. 有高手想换工作的么?
  10. 运行MYSQL数据库命令时connetion Timeout expired异常问题
  11. 这文字的起始位置_如何用AE快速制造文字特效视频的效果?3分钟教你学会
  12. 使用Breed为极路由4增强版(B70-HC5962)刷老毛Padavan固件,配置Nginx代理SSH内网映射
  13. 深入浅出ERC777合约
  14. 跑跑飞弹室外跑步AR游戏代码方案设计
  15. Neos - 漂亮的JABBER客户端
  16. R语言 面板数据分析 plm包实现(一) ——LSDV和固定效应模型
  17. pyhon使用CDS API抓取哥白尼气候数据(详细步骤)
  18. vba 错误 自动化错误_经典的自动化错误
  19. 【嵌入式C语言】常用工具函数之数字字符串与十进制数字转换函数
  20. 123我爱你计算机音谱大全,抖音123我爱你尤克里里琴谱 123我爱你简谱

热门文章

  1. 兄弟mfc7220打印没反应_设备操作面板按键无反应
  2. SQL如何从字符串截取指定字符(LEFT、MID、RIGHT三大函数)
  3. 相同局域网,如何实现windows远程桌面
  4. 运维工具 ansible
  5. 浅谈易语言多线程 by逆风
  6. 微信机器人换了服务器掉线,故障2:微信频繁掉线
  7. Google Earth Engine(GEE)——几何图形ee.Geometry
  8. 串口通信基本原理介绍
  9. C语言之复数的加减乘除
  10. Watch Out!(中文名:贱鸟跳跳)