Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
基于PSOCTM 62处理器的谐波发生器实现
发布于 2023-07-13 20:59:07 浏览:353
订阅该版
[tocm] # 基于PSOCTM 62处理器的谐波发生器实现 # 一、项目背景 随着社会经济的发展和人民生活水平的提高,居民生活用电、商业用电的结构和用电量也发生了根本性的变化,已经从过去单一的照明用电变为以电子设备和电炊具等家用电器为主的生活、办公用电,这些用电设备的广泛普及与增换,必然使在同区域的居民用电量大幅增长的同时,实际供电质量与国家标准要求还存在不小的差异。 无功损耗增加、功率因数下降、谐波增加,会影响到用户用电设备的正常运行,严重时会造成用电设备损坏,增大电气设备损耗、温度升高、降低运行效率,绝缘加速老化、缩短设备使用寿命;降低供用电设备的继电保护、控制以及检测装置的工作精度和可靠性。 20世纪20年代末,人们开始注意到电力系统非线性负载会产生谐波。20世纪50年代,随着科学技术的进步,大量非线性负载给电力系统带来了严重的谐波干扰。20世纪70年代以来,由于谐波所造成的危害日趋严重,世界各国对谐波问题都予以充分的关注,国际上召开了多次有关谐波问题的学术会议。最近40年,世界各国对电力系统谐波问题的研究已超过了电力系统自身的研究范畴,并且取得了前所未有的发展。 目前谐波治理设备检测一般通过更改有源电力滤波器(APF)的代码,使其工作于负载模式,模拟谐波源,将谐波注入待测电网,而谐波治理设备并入后,通过一系列检测算法计算出电网含有谐波电流的大小,发出与谐波源大小相等,方向相反的谐波电流,在并网处叠加抵消,达到治理的效果。通过对比治理设备投入前后剩余谐波电流大小并于相关标准对比,最终判定谐波治理设备的功能特性。 本次比赛实验主要基于PSOC6处理器PWM模块发波,在功率驱动板侧检测波形和相关驱动能力。 # 二、项目开发原理 由于全控型电力半导体器件的出现,不仅使得逆变电路的结构大为简化,而且在控制策略上与晶闸管类的半控型器件相比,也有着根本的不同,由原来的相位控制技术改变为脉冲宽度控制技术,简称PWM技术。采用PWM方式构成的逆变器,其输入为固定不变的直流电压,可以通过PWM技术在同一逆变器中既实现调压又实现调频。 工程实际中应用最多的是正弦PWM法(简称SPWM),它是在每半个周期内输出若干个宽窄不同的矩形脉冲波,每一矩形波的面积近似对应正弦波各相应每一等份的正弦波形下的面积可用一个与该面积相等的矩形来代替,于是正弦波形所包围的面积可用这N个等幅(Vd)不等宽的矩形脉冲面积之和来等效。各矩形脉冲的宽度自可由理论计算得出,但在实际应用中常由正弦调制波和三角形载波相比较的方式来确定脉宽:因为等腰三角形波的宽度自上向下是线性变化的,所以当它与某一光滑曲线相交时,可得到一组幅值不变而宽度正比于该曲线函数值的矩形脉冲。若使脉冲宽度与正弦函数值成比例,则也可生成SPWM波形。 在进行脉宽调制时,使脉冲系列的占空比按正弦规律来安排。当正弦值为最大值时,脉冲的宽度也最大,而脉冲间的间隔则最小。反之,当正弦值较小时,脉冲的宽度也小,而脉冲间的间隔则较大;这样的电压脉冲系列可以使负载电流中的高次谐波成分大为减小,称为正弦波脉宽调制。三相互差120°PWM波形如图 1所示: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/7a440e728cc343800726121f51712746.png.webp) 图1 三相PWM波形 工程中,一般将三相正弦波数据制表,然后通过查表法将数据与定时器的计数值进行比较,输出PWM波形。一般采用两个定时器,一个高级定时器(需要具备三路互补输出的PWM)和一个基本定时器(通用定时器),其中高级定时器用于输出PWM,作为高频载波。而基本定时器用于设置输出波形的周期(频率),通过定时的查表读取数据,调节高级定时器脉冲的占空比,实现正弦波的输出。需要注意的是,高级定时器输出的波形依然是相较规则的脉冲,通过功率驱动板放大输出,驱动IGBT功率管。两路互补的PWM波形如图 2所示: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/233529057ea2075c5f1927999255d9bb.png.webp) 图2 互补PWM波形 经过功率驱动板放大后的PWM信号,驱动IGBT的栅极,由于IGBT结电容的存在,会导致PWM信号出现一些不规则的变化,通过添加栅极电阻可以调整作用在IGBT栅极上的PWM波形。在IGBT输出交流测输出的依然是不规则的直流电压,需要对输出进行滤波,在出线侧加装电感器,滤除高频成分,而保留低频部分。经过滤波处理后的三相电流与电压波形如图3所示,由于驱动采用调制波采用单极性,因此波形电压于电流均含有直流分量。 目标设计PWM频率为20KHZ,输出波形频率50Hz,调制波为多个高次谐波叠加基波,不再是标准的正弦波。需要对各次谐波的幅值设置可调,相位可调。通过仿真进行频谱分析各次谐波含有率及总畸变率如图4所示。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/e74f3fc8dff6efb294b47f615388a712.png.webp) 图3 三相注入谐波波形 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/c193b98b96c8d2579c4d4ef9fc201ccb.png.webp) 图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 主控制板如图5所示。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/b3d665f16ba2dd7d7a922f1fcd77a1cf.png.webp) 图5 主控制板 本次IGBT驱动采用板子上的Arduino扩展接口CON7上的1-6脚,刚好对应3对互补输出的PWM,其对应关系如下表: ![表1.jpg](https://oss-club.rt-thread.org/uploads/20230713/944cc6addb12dfb35a76a88398f01e57.jpg.webp) ## 2、功率驱动板 由PSOC 6单片机TCPWM模块输出的PWM信号不足以直接驱动IGBT,需要对其进行功率放大,采用厚膜驱动,功率驱动板如图6所示。功率驱动板设计6单元IGBT驱动,可驱动300A/1700V 以下的 IGBT,每路输出电流可达6A。其中互补的两个单元共用一路辅助电源。可以测试带IGBT和不带IGBT两种情况。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/5d6dc1cba1fea51bac562b3c407d50cb.png.webp) 图6 功率驱动板 ## 3、IGBT模块 IGBT模块采用英飞凌6单元封装IGBT,型号为FS50R12KT3,集电极-发射极电压1200V,连续集电极电流可达50A,栅极阈值电压为5-6.5V;其反并联二极管正向压降1.65V。IGBT模块自带负温度系数热敏电阻,25℃时,其额定阻值为5000欧姆。FS50R12KT3模块如图7所示。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/22f6f505f74456bb2f91c5d8733f062e.png.webp) 图7 IGBT模块 ## 4、直流电源 功率驱动板仅需要一路直流电源,就可以实现驱动6单元IGBT,直流电源采用直流稳压电压。直流稳压电源如图8所示。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/e724e9e0959fb3c22e16ec44c3eeb8fc.png.webp) 图8 直流稳压电源 # 四、项目软件 软件采用RT-Thread Studio开发,RT-Thread系统版本为5.0.1,BSP版本为1.0.3。 ## 1、程序流程 (1)、初始化开发板; (2)、PWM初始化; (3)、设置含谐波次数及幅值; (4)、PWM输出; ## 2、关键程序 ```c /* * 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输出 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/193b52f22f023803d9e73dc1626a14ff.png.webp) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/791dbe9235e116c947a5d3d1bdaf0dcb.png.webp) 图9 互补PWM输出 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/49a3cd9fe6b9a9b12fe4f58a3b5f4b1e.png.webp) 图10 三相SPWM ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/40e94f096fdd47c487956522c783198d.png.webp) 图11 三相互补SPWM ## 2、驱动板PWM输出 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/68590c86a29edf4280c0b7a74dd131ba.png.webp) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/c12779596cd5f07a0a51ca34d49d2dac.png.webp) 图12 驱动板PWM发波测试 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/15273a5b950fe8e5867997b7b7bc34f6.png.webp) 图13 驱动板PWM波形 ## 3、IGBT谐波输出波形 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/54ba57cd39f6b7c9c95666e3d6fbe67d.png.webp) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/58a668b367194118d98cf78de83e8ee8.png.webp) 图14 谐波输出测试(基波和基波叠加3次谐波) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/efa1d37f7a80f938b331c6e60a7e1239.png.webp) 图15 谐波输出测试(基波叠加9次谐波) # 六、结论和后期展望 ## 1、结论 通过采用PSOC 6处理器的PWM以及基于类SPWM调制实现输出谐波,基本实现了本次比赛预计的功能。 ## 2、后期工作 后续将采用ARM+FPGA架构,进一步针对SPWM,实现谐波输出;增加人机交互,参数设置可视化,利用FFT算法展示谐波频谱;故障处理,紧急切除IGBT;增加输出反馈信号采集,实现输出闭环控制,提高精度。目前就ARM+FPGA主控制、主电路、电源部分已完成初步设计。主控制、主电路、电源、出线电抗PCB布图如图16、图17、图18和图19。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/2a217749dc8548284dd6efde9ca28126.png.webp) 图16 主控制 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/eb6da55b11ef5df350f96b7927cdad6a.png.webp) 图17 主电路 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/ae040e42604199ce33b9724a6b14c80f.png.webp) 图18 电源 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/5dbf91a560929d0923e6b3a7582b4897.png.webp) 图19 出线LC滤波 # 七、源码下载地址和视频观看地址 源码地址:https://gitee.com/zhang_en/psoc62_match.git 视频地址:https://pan.baidu.com/s/1EGvwJiaoyraU-J5phfy3QQ 提取码:ejny ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230713/9ee1519d18ef3b62665b7a417fdcb6f5.png)
3
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
zeshoufx
这家伙很懒,什么也没写!
文章
2
回答
8
被采纳
0
关注TA
发私信
相关文章
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
a1012112796
20
个答案
3
次被采纳
张世争
11
个答案
3
次被采纳
踩姑娘的小蘑菇
7
个答案
3
次被采纳
rv666
9
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
RTT_逍遥
1
篇文章
6
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部