PFC控制,FlexSPI,示波器?以及逆变电路分享

一种PFC控制中简单的X电容超前电流补偿的方法

前言:在PFC控制中,通常存在在高压230V输入时轻负载PF值下降的问题,一种方法是优化DCM区域的控制方法,另一个问题是在高压230V输入时X电容引入的电流超前也劣化了PF值和入网电流。

电流波形:

上图是入网电流的示意图,它包含了PFC电感电流和X电容引入的超前电流。特别是在轻负载工作时,X电流引入的超前电流导致在AC零点后突然拉,在后面又直接导致提前到零。因此在PFC的控制上需要根据输入电压和X电容大小来优化电感电流,以实现IC+IL能达成最佳的正弦波。X电容的超前电流可以根据公式计算得出:

为了最佳化全电压范围的X电容补偿方法,建议在90/150/220/270四个AC电压上可以改变补偿电流大小。

了解原理后,可以考虑实现,有两个方法可以引入X电容补偿:1、改变内环电流给定值,2、在电流采样上叠加补偿量。

更具体的实现方法是在AC零点后启动一个下降ramp,然后乘以补偿电流幅度,最后叠加到电流采样上,其它都不需要改变了。可见:

CH3是X电容电流补偿:

叠加到电流采样后,目的是AC零点后直接把IL抬高,这样就可以骗内环控制器,内环控制器看到电流输入变大后就会自动减少零点后的占空比,减少电感电流的目的,而在后面减少电感电流采样值,环路就会在后面加大占空比,增大PFC的IL电流,即可实现X电容电流补偿:

此时AC 235V 2.5KW,ithd 3%,下面取消X电流补偿后:

此时AC 235V 2.5KW,ithd 5%,可以看到输入电流明显地向左侧偏头。

小结:根据X电容超前电流引起的高压PF下降问题,提出一种简单的补偿方法,可以改善高压的PFC控制性能。本人能力有限,如有错误,恳请帮忙指正,谢谢。感谢支持。

查看原文:https://www.dianyuan.com/eestar/article-8577.html


这个FlexSPI有隐藏新功能,让我们解锁它

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT三位数系列隐藏的FlexSPI Remap功能

前段时间痞子衡写了一篇文章 《利用i.MXRT1060,1010上新增的FlexSPI地址重映射(Remap)功能可安全OTA》,介绍了Remap功能在OTA设计中的重要性。如果你对比过i.MXRT三位数(RT500/600)和四位数(RT1xxx)的FlexSPI模块,你会发现它们是一样的,寄存器定义几乎完全一致。但是我们知道这两个系列又分别是来自不同平台(LPC/i.MX),i.MXRT三位数可没有i.MXRT四位数上用于存放Remap控制的IOMUXC_GPR模块,那么在i.MXRT500/600上到底有没有Remap功能呢?本文痞子衡将为你解答。

1. FlexSPI NOR系统映射地址

老规矩还是先看一下FlexSPI在i.MXRT三位数上的系统映射空间。因为内核架构的差异,分配的映射地址与i.MXRT1xxx上完全不同。

i.MXRT500中分配给FlexSPI的系统映射空间如下,两个FlexSPI各分配了128MB。

i.MXRT600中分配给FlexSPI的系统映射空间如下,一个FlexSPI分配了128MB。

2. FlexSPI Remap控制在哪里?

目前我们已经可以从恩智浦官网下载到i.MXRT600的SDK软件包和参考手册,i.MXRT500的资料暂时还没有公布。对于i.MXRT600,无论是在SDK软件包中的头文件还是在参考手册中搜索“Remap”关键字,都搜不到任何信息,莫非是没有Remap功能?

好了,痞子衡就不卖关子了,其实Remap功能是支持的,而且直接做到了FlexSPI模块里,控制寄存器也在FlexSPI里,就在FLEXSPI BASE地址偏移0x420的地方(模块有更新,但文档暂时没有同步更新):

typedef struct
{
    __IO uint32_t HADDRSTART;
    __IO uint32_t HADDREND;
    __IO uint32_t HADDROFFSET;
} FLEXSPI_REMAP_Type;

#define FLEXSPI_REMAP  ((FLEXSPI_REMAP_Type *)(FLEXSPI_BASE + 0x420u));

因为Remap控制嵌在FlexSPI模块寄存器里,所以对于有两个FlexSPI模块的i.MXRT500,Remap控制也有两组,相互独立,这点跟同样有两个FlexSPI模块的i.MXRT1060上Remap设计是不一样的。

3. FlexSPI Remap功能设计

虽然i.MXRT500/600上的Remap控制嵌在FlexSPI模块内部,但Remap设计依然是属于系统架构层面的,只是在AHB总线层面做一个地址重定向。下面是Remap控制寄存器:

Remap设计很简单,就是地址(addr)落在[ADDR_START, ADDR_END]里的AHB读访问,其实际访问到的是addr + ADDR_OFFSET位置处的数据。(注意ADDR_START, ADDR_END, ADDR_OFFSET都是4KB对齐的)

Remap功能及寄存器定义上基本跟i.MX1xxx保持一致,但有一个小区别,就是HADDRSTART寄存器的bit0同时也承担了Remap功能开关控制。

4. Remap对擦写Flash的影响

启用Remap功能后,调用FlexSPI NOR驱动函数去擦写Flash不会受影响,擦写Flash操作正常走的是FlexSPI IPG命令方式,数据没有经过AHB bus。

下面这段测试代码是在MIMXRT500-EVK上跑的,用ROM API驱动擦写0x08100000地址,擦写操作前加了一段Remap设置干扰,实测下来Remap设置对擦写没有任何影响,复位后去读Flash,操作的还是原0x08100000地址。

#define FLEXSPI0_REMAP  ((FLEXSPI_REMAP_Type *)(FLEXSPI0_BASE + 0x420u));

flexspi_nor_config_t flashConfig;
serial_nor_config_option_t configOption;
configOption.option0.U = 0xc0403004;

uint32_t programBuffer[64];
for (uint32_t i = 0; i < sizeof(programBuffer); i++)
{
    *((uint8_t *)programBuffer + i) = (uint8_t)(i & 0xFF);
}

g_bootloaderTree->flexspiNorDriver->get_config(1, &flashConfig, &configOption);
g_bootloaderTree->flexspiNorDriver->init(1, &flashConfig);

FLEXSPI0_REMAP->HADDRSTART  = 0x08100000 | 0x01;
FLEXSPI0_REMAP->HADDREND    = 0x08200000;
FLEXSPI0_REMAP->HADDROFFSET = 0x100000;

g_bootloaderTree->flexspiNorDriver->erase(1, &flashConfig, 0x100000, 0x100);
g_bootloaderTree->flexspiNorDriver->page_program(1, &flashConfig, 0x100000, programBuffer);

Remap寄存器因为在FlexSPI模块中,因此Remap设置代码要在FlexSPI模块初始化之后,仅有模块时钟被开启,模块寄存器才能正常赋值,否则不生效(实测时钟不打开,读写Remap寄存器永远是0,并且不产生HardFault)。

5. 关于ROM API传参的疑惑解释

最后再简单说一下第4节示例代码里一点让人疑惑的地方,我们是在MIMXRT500-EVK上做的测试,i.MXRT500有两个FlexSPI(0/1),Flash是连在FlexSPI0上,但是ROM API里的instance传参竟然需要是1(i.MXRT1060 ROM API的FLEXSPI0传参就是0),这是怎么回事?

下面是i.MXRT500 BootROM中根据instance获取FLEXSPI模块基址的函数代码,其是根据i.MXRT500头文件中FLEXSPI_BASE_PTRS定义来获取基址值的……

查看原文:https://www.dianyuan.com/eestar/article-8567.html


示波器自动触发、标准触发、单次触发的区别

示波器有两大核心功能,采样触发。采样负责将模拟信号数字化,触发负责控制信号波形显示的时刻。其中,触发又分为自动触发标准触发单次触发,三者之间有什么区别呢?

1、自动触发

如果触发电平设置在信号电平范围内,示波器会根据该触发电平选择波形显示时刻,并持续刷新波形;

如果触发电平不在信号电平范围内,示波器会自动选择波形显示的时刻,并持续刷新波形;

简言之,自动触发模式下,示波器是一直在刷新波形的。

2、标准触发

如果触发电平设置在信号电平范围内,示波器会根据该触发电平选择波形显示时刻,并持续刷新波形;

如果触发电平不在信号电平范围内,示波器不会再刷新波形,而是保持最后显示的波形,直至触发电平再次出现在信号电平范围内之后,示波器才会继续刷新波形。

简言之,标准触发模式下,只有触发电平在信号电平范围内,示波器才会持续刷新波形,否则,示波器停止刷新,波形保持不变。

3、单次触发

单次触发模式下,只有当信号满足触发条件时,示波器才会刷新波形,而且仅刷新一次,之后停止刷新,波形保持不变……

查看原文:https://www.dianyuan.com/eestar/article-8593.html


逆变电路基础知识

一、逆变器基础知识

1.1、逆变器的定义:

逆变器是通过半导体功率开关的开通和关断作用,把直流电能转变成交流电能的一种变换装置,是整流变换的逆过程。逆变器也称逆变电源,是光伏太阳能、风力发电、电动汽车、变频空调、变频洗衣机、变频冰箱、电动工具等中的重要部件。

三相逆变电路

1.2、逆变器分类:

逆变器根据输出波形、主电路拓扑结构、输出相数等分类,有多种逆变器:

按输出电压波形分类:

  • 方波逆变器
  • 正弦波逆变器
  • 阶梯波逆变器

按输出交流电相数:

  • 单相逆变器
  • 三相逆变器
  • 多项逆变器

按主电路拓扑结构分类:

  • 推挽逆变器
  • 半桥逆变器
  • 全桥逆变器

其它分类:

  • 按输入直流电源性质分类:电压源型逆变器、电流源型逆变器。
  • 按功率流动方向分类:单向逆变器、双向逆变器。
  • 按负载是否有源分类:有源逆变器、无源逆变器。
  • 按直流环节特性分类:低频环节逆变器、高频环节逆变器。
  • 按输出交流电的频率分类:低频逆变器、工频逆变器、中频逆变器、高频逆变器。
  • 按操作模式分类:独立逆变器、并网逆变器、双峰逆变器。

独立逆变器

并网逆变器

双峰逆变器

1.3、单相电压源逆变器:

1.3.1、推挽式逆变电路


推挽式逆变电路

工作原理:

单相推挽式逆变器的拓扑结构,该电路由两只共负极的功率开关元件和一个初级带有中心抽头的升压变压器组成。VT1导通,VT2截止,变压器输出端感应出正电压,VT2导通,VT1截止,变压器输出端感应出正电压。

推挽电路波形

若负载为感性负载,则变压器内的电流波形连续,输出电压、电流波形如下图:

推挽电路感性负载波形

推挽式方波逆变电路的电路拓扑结构简单,两个功率管可共地驱动,功率管承受开关电压为2倍的直流电压,适合应用于直流母线电压较低的场合,变压器利用率较低,驱动感性负载困难。

1.3.2、半桥式逆变电路

半桥式逆变电路

工作原理:

半桥式逆变电路使用两只串联电容的中点作为参考点,VT1开通时,电容C1上的能量释放到负载上;而当VT2导通时,电容C2上的能量释放到负载上。由于电容两端的电压相同,不会产生磁偏或直流分量,非常适合后级带动变压器负载。

电路工作在工频(50Hz/60Hz)时,电容必须选取较大容量,使电路成本上升,该电路主要用于高频逆变场合……

查看原文:https://www.dianyuan.com/eestar/article-8541.html


更多精彩内容,尽在电子星球 APP(https://www.eestar.com/)

六篇技术文章,让你秒懂电容的脾气秉性

七篇DIY技术文章献给你,让你脑洞全开

五篇文章帮你开启DSP的学习思路

汇总篇:关于PID知识,重点在此

原文链接:,转发请注明来源!