基于PSOCTM 62处理器的谐波发生器设计实现

处理器/DSP

891人已加入

描述

一、项目背景

随着社会经济的发展和人民生活水平的提高,居民生活用电、商业用电的结构和用电量也发生了根本性的变化,已经从过去单一的照明用电变为以电子设备和电炊具等家用电器为主的生活、办公用电,这些用电设备的广泛普及与增换,必然使在同区域的居民用电量大幅增长的同时,实际供电质量与国家标准要求还存在不小的差异。

无功损耗增加、功率因数下降、谐波增加,会影响到用户用电设备的正常运行,严重时会造成用电设备损坏,增大电气设备损耗、温度升高、降低运行效率,绝缘加速老化、缩短设备使用寿命;降低供用电设备的继电保护、控制以及检测装置的工作精度和可靠性。

20世纪20年代末,人们开始注意到电力系统非线性负载会产生谐波。20世纪50年代,随着科学技术的进步,大量非线性负载给电力系统带来了严重的谐波干扰。20世纪70年代以来,由于谐波所造成的危害日趋严重,世界各国对谐波问题都予以充分的关注,国际上召开了多次有关谐波问题的学术会议。最近40年,世界各国对电力系统谐波问题的研究已超过了电力系统自身的研究范畴,并且取得了前所未有的发展。

目前谐波治理设备检测一般通过更改有源电力滤波器(APF)的代码,使其工作于负载模式,模拟谐波源,将谐波注入待测电网,而谐波治理设备并入后,通过一系列检测算法计算出电网含有谐波电流的大小,发出与谐波源大小相等,方向相反的谐波电流,在并网处叠加抵消,达到治理的效果。通过对比治理设备投入前后剩余谐波电流大小并于相关标准对比,最终判定谐波治理设备的功能特性。

本次比赛实验主要基于PSOC6处理器PWM模块发波,在功率驱动板侧检测波形和相关驱动能力。

二、项目开发原理

由于全控型电力半导体器件的出现,不仅使得逆变电路的结构大为简化,而且在控制策略上与晶闸管类的半控型器件相比,也有着根本的不同,由原来的相位控制技术改变为脉冲宽度控制技术,简称PWM技术。采用PWM方式构成的逆变器,其输入为固定不变的直流电压,可以通过PWM技术在同一逆变器中既实现调压又实现调频。

工程实际中应用最多的是正弦PWM法(简称SPWM),它是在每半个周期内输出若干个宽窄不同的矩形脉冲波,每一矩形波的面积近似对应正弦波各相应每一等份的正弦波形下的面积可用一个与该面积相等的矩形来代替,于是正弦波形所包围的面积可用这N个等幅(Vd)不等宽的矩形脉冲面积之和来等效。各矩形脉冲的宽度自可由理论计算得出,但在实际应用中常由正弦调制波和三角形载波相比较的方式来确定脉宽:因为等腰三角形波的宽度自上向下是线性变化的,所以当它与某一光滑曲线相交时,可得到一组幅值不变而宽度正比于该曲线函数值的矩形脉冲。若使脉冲宽度与正弦函数值成比例,则也可生成SPWM波形。

在进行脉宽调制时,使脉冲系列的占空比按正弦规律来安排。当正弦值为最大值时,脉冲的宽度也最大,而脉冲间的间隔则最小。反之,当正弦值较小时,脉冲的宽度也小,而脉冲间的间隔则较大;这样的电压脉冲系列可以使负载电流中的高次谐波成分大为减小,称为正弦波脉宽调制。三相互差120°PWM波形如图 1所示:

处理器

图1 三相PWM波形

工程中,一般将三相正弦波数据制表,然后通过查表法将数据与定时器的计数值进行比较,输出PWM波形。一般采用两个定时器,一个高级定时器(需要具备三路互补输出的PWM)和一个基本定时器(通用定时器),其中高级定时器用于输出PWM,作为高频载波。而基本定时器用于设置输出波形的周期(频率),通过定时的查表读取数据,调节高级定时器脉冲的占空比,实现正弦波的输出。需要注意的是,高级定时器输出的波形依然是相较规则的脉冲,通过功率驱动板放大输出,驱动IGBT功率管。两路互补的PWM波形如图 2所示:

处理器

图2 互补PWM波形

经过功率驱动板放大后的PWM信号,驱动IGBT的栅极,由于IGBT结电容的存在,会导致PWM信号出现一些不规则的变化,通过添加栅极电阻可以调整作用在IGBT栅极上的PWM波形。在IGBT输出交流测输出的依然是不规则的直流电压,需要对输出进行滤波,在出线侧加装电感器,滤除高频成分,而保留低频部分。经过滤波处理后的三相电流与电压波形如图3所示,由于驱动采用调制波采用单极性,因此波形电压于电流均含有直流分量。

目标设计PWM频率为20KHZ,输出波形频率50Hz,调制波为多个高次谐波叠加基波,不再是标准的正弦波。需要对各次谐波的幅值设置可调,相位可调。通过仿真进行频谱分析各次谐波含有率及总畸变率如图4所示。

处理器

三、项目硬件

1、主控制器

PSoC®6单片机是一款高性能、超低功耗、安全的单片机平台,专为物联网应用而设计。
CY8C62x8/A产品线,基于PSoC 6 MCU平台,是一个双CPU微控制器与低功耗闪光技术、数字可编程逻辑、高性能模拟到数字转换和标准通信和定时外设的组合。PSOC 6是双核CPU系统,具有一个M4F核和一个M0+内核,其中M4F内核150MHz,M0+内核100MHz,具备丰富的存储,高达2M 的Flash以及1M 的SRAM。

计时器/计数器/脉宽调制器(TCPWM)
■TCPWM支持以下操作模式:
❐计时器计数器比较
❐计时器与捕获
❐正交解码
❐脉宽调制(PWM)
❐伪随机PWM
❐PWM与死时间
■上,下,上/下计数模式
■时钟调整(除1、2、4,…。64,128)
■双缓冲比较/捕获和周期值■下流,溢出,和捕获/比较输出信号
■支持中断:
❐终端计数-取决于模式;通常发生在溢出或下流❐捕获/比较-计数被捕获到捕获寄存器或计数器值等于比较寄存器
■互补输出
■可选择开始、重加载、停止、计数和捕获事件信号;有上升边,下降边,两个边,和水平触发选项。TCPWM具有一个刹车输入,以强制输出到预定状态。
在PSOC 6设备中有:
■8个32位TCPWMs
■24个16位TCPWMs

本次IGBT驱动采用板子上的Arduino扩展接口CON7上的1-6脚,刚好对应3对互补输出的PWM,其对应关系如下表:

处理器

2、功率驱动板

由PSOC 6单片机TCPWM模块输出的PWM信号不足以直接驱动IGBT,需要对其进行功率放大,采用厚膜驱动。功率驱动板设计6单元IGBT驱动,可驱动300A/1700V 以下的 IGBT,每路输出电流可达6A。其中互补的两个单元共用一路辅助电源。可以测试带IGBT和不带IGBT两种情况。

3、IGBT模块

IGBT模块采用英飞凌6单元封装IGBT,型号为FS50R12KT3,集电极-发射极电压1200V,连续集电极电流可达50A,栅极阈值电压为5-6.5V;其反并联二极管正向压降1.65V。IGBT模块自带负温度系数热敏电阻,25℃时,其额定阻值为5000欧姆。

4、直流电源

功率驱动板仅需要一路直流电源,就可以实现驱动6单元IGBT,直流电源采用直流稳压电压。

四、项目软件

软件采用RT-Thread Studio开发,RT-Thread系统版本为5.0.1,BSP版本为1.0.3。

1、程序流程

(1)、初始化开发板;
(2)、PWM初始化;
(3)、设置含谐波次数及幅值;
(4)、PWM输出;

2、关键程序
/*

  • Copyright (c) 2006-2023, RT-Thread Development Team
  • SPDX-License-Identifier: Apache-2.0
  • Change Logs:
  • Date Author Notes
  • 2022-06-29 Rbb666 first version
    /
    #include
    #include
    #include "drv_gpio.h"
    #include "cyhal_pwm.h"
    /线程控制块
    **/
    rt_thread_t led_thread=RT_NULL;
    rt_thread_t pwm_thread=RT_NULL;
    /***********线程入口函数*************/
    static void led_thread_entry(void *parameter);
    static void pwm_thread_entry(void *parameter);
    #define LED_PIN GET_PIN(0, 1)
    /***********A、B、C三相*************/
    uint16_t ua[128]={
    0
    };
    uint16_t ub[128]={
    0};
    uint16_t uc[128]={
    0
    };
    cyhal_pwm_t pwm_obj1;
    cyhal_pwm_t pwm_obj2;
    cyhal_pwm_t pwm_obj3;
    cyhal_clock_t clock_obj;
    /***********互补输出PWM初始化函数*************/
    static void pwm_init(void)
    {
    pwm_obj1.dead_time_set=1;
    pwm_obj1.pin=P5_0;
    pwm_obj1.pin_compl=P5_1;
    cyhal_pwm_init_adv(&pwm_obj1,P5_0,P5_1,CYHAL_PWM_CENTER_ALIGN,1,2,1,&clock_obj);
    cyhal_pwm_set_period(&pwm_obj1,3000-1,0);
    cyhal_pwm_start(&pwm_obj1);
    pwm_obj2.dead_time_set=1;
    pwm_obj2.pin=P11_2;
    pwm_obj2.pin_compl=P11_3;
    cyhal_pwm_init_adv(&pwm_obj2,P11_2,P11_3,CYHAL_PWM_CENTER_ALIGN,1,2,1,&clock_obj);
    cyhal_pwm_set_period(&pwm_obj2,3000-1,0);
    cyhal_pwm_start(&pwm_obj2);
    pwm_obj3.dead_time_set=1;
    pwm_obj3.pin=P11_4;
    pwm_obj3.pin_compl=P11_5;
    cyhal_pwm_init_adv(&pwm_obj3,P11_4,P11_5,CYHAL_PWM_CENTER_ALIGN,1,2,1,&clock_obj);
    cyhal_pwm_set_period(&pwm_obj3,3000-1,0);
    cyhal_pwm_start(&pwm_obj3);
    }
    /***********main函数*************/
    int main(void)
    {
    rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT);
    pwm_init();
    led_thread=rt_thread_create("led",led_thread_entry,RT_NULL,256,3,10);
    if(RT_NULL!=led_thread)
    {
    rt_thread_startup(led_thread);
    }
    pwm_thread=rt_thread_create("pwm",pwm_thread_entry,RT_NULL,256,2,10);
    if(RT_NULL!=pwm_thread)
    {
    rt_thread_startup(pwm_thread);
    }
    }
    /***********LED线程入口函数*************/
    static void led_thread_entry(void *parameter)
    {
    while(1)
    {
    rt_pin_write(LED_PIN, PIN_HIGH);
    rt_thread_mdelay(500);
    rt_pin_write(LED_PIN, PIN_LOW);
    rt_thread_mdelay(500);
    }
    }
    /***********谐波注入PWM线程入口函数*************/
    static void pwm_thread_entry(void *parameter)
    {
    uint8_t i=0;
    while(1)
    {
    for(i=0;i<128;i++)
    {
    cyhal_pwm_set_period(&pwm_obj1,3000-1,ua[i]);
    cyhal_pwm_set_period(&pwm_obj2,3000-1,ub[i]);
    cyhal_pwm_set_period(&pwm_obj3,3000-1,uc[i]);
    rt_thread_mdelay(20);
    }
    }
    }
    五、实验结果
    1、开发板PWM输出

处理器

图9 互补PWM输出

处理器

2、驱动板PWM输出

处理器

3、IGBT谐波输出波形

处理器

处理器

六、结论和后期展望

1、结论

通过采用PSOC 6处理器的PWM以及基于类SPWM调制实现输出谐波,基本实现了本次比赛预计的功能。

2、后期工作

后续将采用ARM+FPGA架构,进一步针对SPWM,实现谐波输出;增加人机交互,参数设置可视化,利用FFT算法展示谐波频谱;故障处理,紧急切除IGBT;增加输出反馈信号采集,实现输出闭环控制,提高精度。目前就ARM+FPGA主控制、主电路、电源部分已完成初步设计。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分