2021-08-12

本文详细介绍了电源电路中电压纹波的定义、产生原因及测试方法。纹波是直流电压中的交流成分,与负载电流、电容ESR等因素相关。测试纹波时需使用适当的探头和设置,如选择交流耦合,限制带宽,并减少耦合信号的面积。对策包括使用低阻高频电容、增加电容容值以及改善辐射干扰源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PCBA电源电路电压纹波测试

一.什么是电压纹波
1.纹波就是一个直流电压中的交流成分。直流电压本来应该是一个固定的值, 但是很多时候它是通过交流电压整流、滤波后得来的,由于滤波不干净,就会有剩余的交流成分,即便如此,就是用电池供电也因负载的波动而产生波纹。事实上,即便是最好的基准电压源器件,其输出电压也是有波纹的。
纹波是出现在输出端子间的一种与输入频率和开关频率同步的成分,用峰-峰(peak to peak)值表示,一般在输出电压的0.5%以下;噪声是出现在输出端子间的纹波以外的一种高频成分,也用峰-峰(peak to peak)值表示,一般在输出电压的1%左右。纹波噪声是二者的合成,用峰-峰(peak to peak)值表示,一般在输出电压的2%以下。

2.如果是开关电源,输出纹波是有规律的摆动,摆动的频率等于开关频率。纹波的形成是因为电流流过输出电容,在电容的ESR(等效串联电阻)上所引起的压降,开关电源中不断地有脉动的电流流经电容,所以它的纹波的频率等于开关频率。

脉动的电压波动上叠加了突变的尖峰,这是开关电源开关信号所引起的开关噪音。因此,准确地说,电源的输出波动实际上有两个部分组成,纹波噪音

电源的输出波动的分解图如下:
在这里插入图片描述

3.纹波电压和噪声的形成:
纹波电压的形成与脉动电流电容的ESR相关,所以在测试时需要分别测试不同负载电流下的纹波电压,这是基于不同的脉动电流的考量。最需要的注意的是不要人为地增加ESR,所以测试时需要在输出电容的两端就近测量,否则路径会额外增加ESR值。

噪音的形成与开关路径上的寄生电感相关,所以在测试时需要注意不能引进额外的寄生电感,否则测试所得的开关噪音会大于实际值。

二.纹波测试
1.调试校准示波器
在这里插入图片描述

2.将示波器调至x1档
10:1的探头会把被测信号衰减10倍再送入示波器,然后示波器再对被测信号进行10倍的数学放大。这种探头的好处是通过前面的匹配电路提升了探头带宽可以到几百MHz,而且扩展了示波器的量程,但是对于小信号的测量不是特备有利。
在这里插入图片描述

如果被测信号幅度本身就小,再衰减10倍可能就淹没在示波器的底噪声里了,即使再做10倍的数学放大,对于信噪比本身也是没有改善的。所以对于电源纹波噪声的测量应该尽量使用小衰减比的探头,比如1:1的探头。这种1:1的无源探头虽然带宽不高(6MHz-12MHz左右),但衰减比小,对于小信号测试非常合适。

3.示波器"MEASURE"(测量)键进入页面,选择耦合"交流"、带宽限制"20MHz"。
限制示波器带宽为 20MHz,目的是避免数字电路的高频噪声影响纹波测量,尽量保证测量的准确性。
设置耦合方式为交流耦合,方便测量(以更小档位来仔细观测纹波,不关心直流电平)。
在这里插入图片描述

4.测试纹波要减小示波器探头的回路面积,减小耦合信号。
因为这个本身的夹子与地线会形成环路,像一个天线接收杂讯,引入一些不必要的杂讯。地线环的面积越大,开关过程中获取的噪声就越大。如下图所示:
在这里插入图片描述

在测试时必须移除多余闲置的探棒,避免人为地引入噪音。
在这里插入图片描述

大回路面积出现的波形,如图(噪声干扰很大)图片示例,来源网络:
图片示例,来源网络

测量纹波时应该使用纹波帽,如图示意,这样可以保证测量路径最短,引入的噪音最少。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测量的纹波波形如图(噪声干扰明显减小)图片示例,来源网络:
在这里插入图片描述

5.测试时,注意板上电感,变压器等干扰辐射源于空间对纹波测试结果的干扰。测量时探头要偏向无高频区域。.
(图片示例,来源网络)
在这里插入图片描述

6.测试纹波时,要在探头上并联一个47UF电解电容与一个0.1UF瓷片电容(是测试纹波的一个行业国际标准)。
在输出端并联电解电容(一般是47uF)是为了隔断直流干扰,并联瓷片电容(一般是0.1uF)是为了滤掉高频干扰,这个干扰的频率远比所测的纹波频率要大,并联电容是为了虑掉杂讯(杂讯不是纹波),滤除因测试条件或手段不良附加的干扰。
在这里插入图片描述
在这里插入图片描述

三.纹波对策方法
纹波电压的形成与脉动电流和电容的ESR相关,因此对策方法主要从这两方面考虑。
ESR,是Equivalent Series Resistance三个单词的缩写,翻译过来就是“等效串联电阻”。 ESR的出现导致电容的行为背离了原始的定义。ESR是等效“串联”电阻,意味着,将两个电容串联,会增大这个数值,而并联则会减少之。
理论上,一个完美的电容,自身不会产生任何能量损失,但是实际上,因为制造电容的材料有电阻,电容的绝缘介质有损耗,各种原因导致电容变得不“完美”。这个损耗在外部,表现为就像一个电阻跟电容串联在一起,所以就起了个名字叫做“等效串联电阻”。
比如,我们认为电容上面电压不能突变,当突然对电容施加一个电流,电容因为自身充电,电压会从0开始上升。但是有了ESR,电容自身会产生一个压降,这就导致了电容器两端的电压会产生突变。无疑的,这会降低电容的滤波效果,从而导致了纹波的出现。

电容的阻抗计算公式如下:
在这里插入图片描述

有上述可知,电容的容抗越大就会导致电容滤波效果越差,纹波也会变大。若要改善纹波,那么由公式可以得出可以减小Xc容抗,加大交流信号频率f,加大电容容量C

1.使用高频低阻的输出电容

2.加大输出电容的容值。

3.注意改善电路中电感、变压器和电机等会造成空间辐射干扰的器件。

<think>好的,我现在需要处理用户提供的SQL插入语句,目标是改进它们,包括显式列名、批量插入和事务控制。首先,我要仔细分析用户给出的原始代码。 用户提供了多个INSERT INTO语句,都是向t_user02表中插入数据。原始语句没有指定列名,直接使用VALUES,这样可能存在风险,特别是当表结构发生变化时,列顺序或数量变动会导致插入错误。所以,显式列出列名是必要的,这能提高代码的可维护性和安全性。 接下来,批量插入。当前的每个INSERT语句都是单独的,可以合并成一个多行插入,减少数据库的请求次数,提高效率。需要注意的是,不同的数据库对批量插入的支持可能不同,比如MySQL支持多行VALUES,而某些数据库可能需要使用其他语法,但用户给出的例子看起来像是标准的SQL,所以暂时假设目标数据库支持多行插入。 然后是事务控制。将所有插入操作放在一个事务中,可以确保数据的一致性,要么全部成功,要么全部回滚。这对于保持数据的完整性非常重要,特别是在处理多个相关插入时。 现在,我需要检查原始INSERT语句的结构。所有插入的值都是五元组,对应的列应该是五个。假设表t_user02的列名依次是date、id、department_id、name、status(或者其他有意义的名称,但用户没有提供,可能需要根据数据猜测)。例如,第一个插入的值是'2021-06-03'(日期),9(数值),1(数值),'jack'(名字),3(数值)。可能需要确认列的实际名称,但用户没有给出表结构,所以可能需要用占位符或者根据常见命名习惯来命名列,比如insert_date、user_id、dept_id、user_name、user_status等。 这里可能需要提醒用户,正确的列名需要根据实际表结构来定,但为了示例,可以假设列名。比如: - 第一个字段是日期,可能对应insert_date或create_date。 - 第二个是数值,可能是user_id。 - 第三个是部门ID,比如dept_id。 - 第四个是用户名,user_name。 - 第五个可能是状态或等级,比如status或level。 接下来,将每个INSERT语句转换为带有显式列名的形式,然后合并成批量插入。同时,用事务控制包裹整个插入过程。 另外,需要注意SQL的语法是否正确,比如列名是否需要引号(通常不需要,除非是保留字),值中的字符串需要用单引号,数值不需要。用户提供的原始语句中,数值没有引号是正确的,所以保持原样。 现在,处理原始代码: 原始每个INSERT都是: insert into t_user02 values ('2021-06-03',9,1,'jack',3); ... 需要改为: INSERT INTO t_user02 (insert_date, user_id, dept_id, user_name, status) VALUES ('2021-06-03', 9, 1, 'jack', 3), ('2021-06-10',10,2,'rose',2), ...; 然后,用BEGIN TRANSACTION;和COMMIT;包裹起来,或者根据数据库的语法,比如MySQL可能用START TRANSACTION;,或者直接BEGIN;。 另外,检查是否有分号的问题。在批量插入中,多个VALUES之间用逗号分隔,最后一个用分号结束。事务控制语句的语法也需要正确。 最后,给出修改后的代码,并解释每个改进点,确保用户理解这些改动的好处,比如显式列名避免列顺序依赖,批量插入提高性能,事务保证原子性。</think>以下是针对提供的SQL插入语句的改进方案,主要从显式列名、批量插入、事务控制三方面优化: --- ### **一、改进后的SQL代码** ```sql BEGIN TRANSACTION; INSERT INTO t_user02 ( create_date, -- 日期字段(假设列名) user_id, -- 用户ID(假设列名) dept_id, -- 部门ID(假设列名) user_name, -- 用户名(假设列名) status -- 状态字段(假设列名) ) VALUES ('2021-06-03', 9, 1, 'jack', 3), ('2021-06-10', 10, 2, 'rose', 2), ('2021-07-03', 11, 1, 'jim', 2), ('2021-07-05', 12, 1, 'grace', 2), ('2021-07-12', 13, 2, 'tom', 2), ('2021-08-15', 14, 3, 'bush', 3), ('2021-08-12', 15, 3, 'helen', 3); COMMIT; ``` --- ### **二、改进点详解** #### 1. **显式指定列名** - **原问题**:原始语句未指定列名(`INSERT INTO ... VALUES`),依赖表中列的隐式顺序,易因表结构变更导致插入错误。 - **改进**:显式列出列名(`INSERT INTO (col1, col2, ...) VALUES ...`),确保数据插入位置明确,与表结构解耦。 - **注意事项**:需根据实际表结构调整列名(如`create_date`可能为`register_date`)。 #### 2. **批量插入优化** - **原问题**:多次单行插入效率低,频繁连接/断开数据库增加开销。 - **改进**:合并为一条`VALUES`语句,多行数据用逗号分隔,减少网络传输和SQL解析开销。 - **性能提升**:批量插入比单条插入快5-10倍(因数据库类型而异)。 #### 3. **事务控制** - **原问题**:无事务控制,部分失败时数据不一致。 - **改进**:用`BEGIN TRANSACTION`和`COMMIT`包裹插入操作,保证原子性: ```sql BEGIN TRANSACTION; -- 开启事务 -- 执行插入操作 COMMIT; -- 全部成功则提交 ``` - **异常处理**:可添加`ROLLBACK`逻辑(需在应用程序或存储过程中实现)。 --- ### **三、扩展建议** 1. **参数化查询**:防止SQL注入,提升安全性(尤其在应用层代码中)。 2. **错误日志**:捕获插入异常并记录日志,便于排查问题。 3. **索引优化**:若表数据量大,插入前可暂时禁用索引,完成后再重建。 --- ### **附:不同数据库的语法差异** | 特性 | MySQL | PostgreSQL | SQL Server | |--------------|----------------------------|----------------------------|--------------------------| | 事务语法 | `START TRANSACTION;` | `BEGIN;` | `BEGIN TRANSACTION;` | | 批量插入 | 支持多行`VALUES` | 支持多行`VALUES` | 支持多行`VALUES` | | 提交方式 | `COMMIT;` | `COMMIT;` | `COMMIT TRANSACTION;` | 根据实际数据库类型调整语法细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值