Buck DC-DC 的PCB layout

在我刚开始学习画PCB的时候,对于电源这一部分的布局不是很在意,只要输出电压正确,走线载流够就可以了,当时布局布线都是以尽量紧凑为原则。后来在PLL和PA的测试过程中,发现电源网络的噪声会直接影响输出信号的相位噪声(PN)和输出频谱的杂散值。一个好的电源网络设计甚至可以将杂散值降低十几个dB。

当然,在读这篇博客时,我默认大家已经知道了BUCK Converter的原理了。

我们先来看看BUCK DC-DC工作时的电流通路:

当开关管Q1开启时,电流路径如下:
图1
当开关管Q1关闭时,电流路径如下:
在这里插入图片描述
Q1开启和关闭时,差异部分如下图,而在这一部分电路中,电流的变化是剧烈的,因此在PCB布局中需要格外注意
在这里插入图片描述

1、CIN、 CBYPASS、 D1的放置

当输出电流IO ≤ 1A时,可以将CIN和CBYPASS一个陶瓷电容来替代;当输出电流比较大时,则不能将这两个电容合并,并且CIN需要一个容值更大的电容,一般来说,容值越大通常意味着频率特性越差(自谐振频率越低);CBYPASS一般采用X5R或X7R的 0.1uF~0.47 uF贴片型陶瓷电容。

我们先来看看两幅比较好的layout:
在这里插入图片描述
在这里插入图片描述
在上述两幅图中,CBYPASS都靠近IC引脚放置,当布局空间紧张时,可以将CIN放置的稍远,2cm以内都可以。在空间允许的条件下,当然第一种更好了。

当布局空间紧张到不得不把CIN放置到底层时,这种布局会有什么影响呢?
在这里插入图片描述
答:当输出电流比较大时,由于过孔的电阻会使得输出电压的纹波增加。

如果将CIN和CBYPASS都放置在底层,会有什么影响?
在这里插入图片描述
答:CIN和CBYPASS过孔寄生电感会使输出电压噪声显著增加。在布局时不要这么做!

说完电容的布局,接下来说说D1的布局。下图的D1布局是很好的。
在这里插入图片描述
而下面这种布局就不太好
在这里插入图片描述
为啥呢?

D1与DC-DC的连线越长,走线的寄生电感越大,走线一定要短而粗。IC至D1,D1至地的走线都太长,寄生电感增加,输出电压的尖峰噪声会变的更大。

2、电感的放置

1、电感要靠近IC放置,但是不要太靠近输入电容CIN、CBYPASS

2、在散热和载流满足要求的条件下

不要增加电感的出线线宽
不要增加电感的出线线宽
不要增加电感的出线线宽

一定要来张图片才形象,不要像下图这样布线
不要这么做!!

3、电感下方的GND铜皮要挖空;不要像下图这样布线
在这里插入图片描述

4、避免电感下方的两块铜皮过近,寄生电容会直接将开关节点出的噪声直接引入至输出,不要像下图这样布线
在这里插入图片描述
最后,来张推荐的的布线图
在这里插入图片描述

3、输出电容的放置

输出电容CO尽量靠近电感,但是不要太靠近CIN和CBYPASS,建议CIN与CO相距1-2cm

4、反馈网络布线

最最最重要的部分!! 反馈网络布线是最需要注意的,如果这根线上加载了噪声,将会直接体现在输出电压上。

(1)电阻分压网络连接至FB的走线一定要走短线;且用parallel的方式走线,如图
在这里插入图片描述(2)从output取电压时一定要从CO后取电压
在这里插入图片描述
(3)在远离电感和二极管开关节点的地方出线。不要在电感器和二极管正下方布线。(左图布线更优)
ps 感谢m0_4646863网友提出之前文章中的错误。
在这里插入图片描述

5、总结

1、输入电容CIN和CBYPASS要和二极管D1和DC-DC在同一表面,输入电容尽量靠近DC-DC放置;

2、电感尽可能靠近IC引脚放置,在载流满足输出电流的要求下,不要加粗电感出线(与pin保持一样粗细即可);

3、输出电容靠近电感放置;

4、反馈网络取电压时,从输出电容后侧取电压,且走线远离电感和二极管。

如果大家还有什么想法,评论区见:)

欢迎转载,转载注明出处!

### OmegaConf 配置管理简介 OmegaConf 是一个强大的 Python 库,用于处理复杂的配置文件。它支持多种数据结构(如字典、列表)以及 YAML 文件的解析和操作。以下是有关如何使用 OmegaConf 的详细介绍。 #### 创建配置对象 可以通过 `OmegaConf.create` 方法创建一个新的配置对象。该方法可以接受字典、YAML 字符串或其他兼容的数据结构作为输入[^1]。 ```python import omegaconf from omegaconf import OmegaConf config_dict = {"database": {"host": "localhost", "port": 6379}} config = OmegaConf.create(config_dict) print(OmegaConf.to_yaml(config)) # 将配置转换为 YAML 格式的字符串 ``` #### 加载外部 YAML 文件 如果需要加载外部 YAML 文件,可使用 `OmegaConf.load` 方法。这使得程序能够轻松读取并应用存储在磁盘上的配置文件。 ```python yaml_file_path = "./example_config.yaml" file_conf = OmegaConf.load(yaml_file_path) # 打印加载后的配置内容 print(file_conf.database.host) # 输出 'localhost' ``` #### 合并多个配置源 当存在多个配置来源时(例如默认设置与命令行参数),可以使用 `OmegaConf.merge` 来无缝合并它们。此功能允许开发者优先级较高的配置覆盖较低级别的配置项。 ```python default_configs = OmegaConf.create({"model": {"type": "resnet50"}}) cli_args = OmegaConf.from_dotlist(["model.type=vgg16"]) merged_config = OmegaConf.merge(default_configs, cli_args) assert merged_config.model.type == "vgg16" # 命令行参数成功覆盖默认值 ``` #### 动态更新配置 除了静态定义外,还可以通过访问器动态修改现有配置中的字段。这种灵活性非常适合运行时调整某些超参数或环境变量。 ```python dynamic_update = file_conf.copy() dynamic_update.database.port = 8080 print(dynamic_update.database.port) # 输出新的端口号 8080 ``` #### 错误处理机制 为了防止非法赋值破坏整个系统的稳定性,OmegaConf 提供了严格的模式控制选项。启用严格模式后,任何未声明过的键都将引发异常提示用户修正错误。 ```python strict_mode_enabled = file_conf.copy() strict_mode_enabled.set_struct(True) # 开启只读保护状态 try: strict_mode_enabled.new_field = True # 此处会抛出 AttributeError 异常 except AttributeError as e: print(f"Catch expected error: {e}") ``` --- ### 总结 以上展示了 OmegaConf 在不同场景下的典型用法,包括但不限于初始化配置实例、加载外部资源、融合多层设定逻辑以及实施安全防护措施等方面的功能特性。希望这些例子能帮助快速掌握其核心概念和技术要点!
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值