<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>硬件小小林</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://www.han.tax/</id>
  <link href="https://www.han.tax/" rel="alternate"/>
  <link href="https://www.han.tax/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, 硬件小小林</rights>
  <subtitle>嵌入式硬件学习与工程实践</subtitle>
  <title>小小林的个人博客</title>
  <updated>2026-09-24T16:00:00.000Z</updated>
  <entry>
    <author>
      <name>硬件小小林</name>
    </author>
    <category term="硬件设计" scheme="https://www.han.tax/categories/%E7%A1%AC%E4%BB%B6%E8%AE%BE%E8%AE%A1/"/>
    <category term="PCB" scheme="https://www.han.tax/tags/PCB/"/>
    <category term="STM32" scheme="https://www.han.tax/tags/STM32/"/>
    <category term="机器人" scheme="https://www.han.tax/tags/%E6%9C%BA%E5%99%A8%E4%BA%BA/"/>
    <category term="机械臂" scheme="https://www.han.tax/tags/%E6%9C%BA%E6%A2%B0%E8%87%82/"/>
    <content>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>我认为，学习嵌入式成长最快的方式就是做项目。单独学习 GPIO、定时器、ADC 和串口时，每个知识点都有对应的例程，但真正把它们放进同一个系统里，才会开始考虑引脚怎么分配、电源怎么供、模块之间怎么通信，以及一个动作应该在什么条件下执行。</p><p>因此，我决定制作自己的第一个综合项目：<strong>基于 STM32 与 K230 的麦轮视觉拾取机器人</strong>。希望通过这次项目，把之前学过的单片机外设、PCB 设计、电源设计和舵机控制串起来，再逐步加入无线遥控与视觉识别。</p><p>这个项目的应用背景来自物流搬运。物品从一个位置送到另一个位置，中间既有移动，也有寻找、对准和拾取。对重复的小件搬运任务来说，人工操作需要不断调整位置、判断目标、完成抓取；如果只用固定位置的机械臂，工作范围又会受到安装位置限制。</p><p>于是，我想把能够灵活移动的麦克纳姆轮底盘与机械臂结合起来：由人遥控小车接近目标，再让视觉系统提供目标位置，由机械臂完成拾取。先围绕一个明确的小场景，把“移动到附近—识别目标—执行抓取”这条流程建立起来。</p><blockquote><p><strong>项目状态：未完成版，更新于 2026 年 9 月 25 日。</strong> 目前已完成遥控器和机械臂控制板的原理图、PCB 设计，并进行了单舵机按键控制的基础实测；小车控制板尚未绘制。本文记录当前的系统方案、硬件设计与控制基础。</p></blockquote><h2 id="从应用场景确定设计目标"><a href="#从应用场景确定设计目标" class="headerlink" title="从应用场景确定设计目标"></a>从应用场景确定设计目标</h2><h3 id="移动、定位和拾取分别解决什么问题"><a href="#移动、定位和拾取分别解决什么问题" class="headerlink" title="移动、定位和拾取分别解决什么问题"></a>移动、定位和拾取分别解决什么问题</h3><p>物流场景给这个项目的启发，主要落在三个方面。</p><p>首先是<strong>工作位置会变化</strong>。物品未必总在同一个位置，移动底盘可以把机械臂带到不同的工作区域。</p><p>其次是<strong>靠近目标后还需要对准</strong>。普通前进、后退和转向会让近距离调整变得反复。麦克纳姆轮底盘能够通过四个车轮的配合实现前后移动、横向平移和旋转，适合用来调整机械臂与目标之间的位置关系。</p><p>最后是<strong>拾取动作需要知道物体在哪里</strong>。仅靠手动逐个调节关节，操作步骤比较多。加入视觉后，可以把目标定位交给相机，把动作执行交给机械臂控制器，让操作者主要负责移动和发起任务。</p><h3 id="本项目的操作流程"><a href="#本项目的操作流程" class="headerlink" title="本项目的操作流程"></a>本项目的操作流程</h3><p>项目围绕红、绿、蓝色小方块开展，先在桌面完成机械臂与视觉系统的配合，再把机械臂和相机安装到小车上，拾取地面上的目标。</p><p>预期的操作流程为：</p><ol><li>使用遥控器驾驶小车，接近目标方块。</li><li>视觉系统识别目标，判断其是否进入有效拾取区域。</li><li>目标满足拾取条件后，通过蜂鸣器提示。</li><li>操作者按下自动拾取按键，小车保持停止。</li><li>重新确认目标位置，机械臂执行接近、夹取和抬起动作。</li><li>动作结束后返回状态，等待下一次操作。</li></ol><p>这里的自动化重点是<strong>停车后的视觉定位与机械臂拾取</strong>。底盘的移动由操作者遥控，便于先把识别、抓取和运动控制之间的关系理清楚。</p><h3 id="第一阶段把自动化做到哪一步"><a href="#第一阶段把自动化做到哪一步" class="headerlink" title="第一阶段把自动化做到哪一步"></a>第一阶段把自动化做到哪一步</h3><p>确定方案时，一个重要的决定是把第一阶段的目标放在“手动接近、按键触发、停车抓取”。如果同时加入自主接近目标，视觉就要参与底盘行驶控制，系统还要处理车身姿态变化、移动中的目标定位，以及底盘与机械臂何时交接控制权。</p><p>因此，我先由操作者完成大范围移动，把自动化集中到一个静止工作区域内。这个取舍保留了视觉拾取的核心问题，同时让每一次动作的起点更容易确定。蜂鸣提示表示系统认为目标具备拾取条件，按键则表示操作者确认开始，二者在流程中承担不同职责。</p><h2 id="系统方案与模块分工"><a href="#系统方案与模块分工" class="headerlink" title="系统方案与模块分工"></a>系统方案与模块分工</h2><p>整套系统划分为遥控器、小车、机械臂三个 STM32 控制端，另外使用庐山派 K230 承担视觉处理。</p><table><thead><tr><th>模块</th><th>主要职责</th><th>与其他模块的连接</th></tr></thead><tbody><tr><td>遥控器</td><td>采集摇杆和按键，选择控制对象，发送指令并显示状态</td><td>通过 nRF24L01 分别联系小车和机械臂</td></tr><tr><td>小车控制端</td><td>接收移动指令，控制四轮麦克纳姆底盘</td><td>与遥控器进行无线通信</td></tr><tr><td>机械臂控制端</td><td>接收操作指令和视觉结果，控制五路舵机，管理动作流程</td><td>无线连接遥控器，串口连接 K230</td></tr><tr><td>庐山派 K230</td><td>采集图像，识别颜色目标，输出定位信息</td><td>通过串口与机械臂 STM32 交换数据</td></tr></tbody></table><p>通信关系可以概括为：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">                    ┌─ 无线 ─ 小车 STM32 ─ 四轮底盘</span><br><span class="line">遥控器 STM32 ─ nRF24L01</span><br><span class="line">                    └─ 无线 ─ 机械臂 STM32 ─ 五路舵机</span><br><span class="line">                                    │</span><br><span class="line">                                   串口</span><br><span class="line">                                    │</span><br><span class="line">                                庐山派 K230</span><br></pre></td></tr></table></figure><h3 id="三块主控的划分依据"><a href="#三块主控的划分依据" class="headerlink" title="三块主控的划分依据"></a>三块主控的划分依据</h3><p>小车和机械臂分别与遥控器通信，协调指令由遥控器发起。底盘控制围绕四轮运动展开，机械臂控制围绕关节和抓取动作展开，遥控器则围绕人的操作展开。按这些任务划分，机械臂可以脱离底盘先做桌面调试，小车也可以单独验证遥控行驶。</p><p>这种划分增加了主控数量，也需要维护两条无线通信链路。相应地，每块板的任务、接线和调试入口比较明确，修改机械臂动作时可以集中在机械臂端。对于这个逐步搭建的项目，我更看重各部分能够独立推进。</p><p>机械臂和小车之间没有直接通信，因此停车确认、抓取请求和动作状态需要经过遥控器协调。这也决定了后续协议需要传递双向状态：除了“发出指令”，还要知道指令是否被接收、当前是否允许执行下一步。</p><h3 id="视觉处理与运动控制分开"><a href="#视觉处理与运动控制分开" class="headerlink" title="视觉处理与运动控制分开"></a>视觉处理与运动控制分开</h3><p>图像识别和舵机控制需要的资源不同。相机侧需要采集、处理图像，运动侧则需要持续管理 PWM、关节目标与动作顺序。本版让 K230 处理图像，通过串口发送目标结果；STM32 接收结果并管理执行过程。</p><p>这样划分后，板间传递的内容可以集中在目标位置、有效性和任务状态上。联调时也可以先向 STM32 输入一个已知位置，检查机械动作，再接入视觉定位结果，便于判断偏差来自识别、坐标换算还是执行过程。</p><p>机械臂端沿用已有的 STM32F103C8T6 最小系统板。它提供定时器、ADC、SPI 和 USART 等外设，能够分别对应舵机 PWM、电池检测、无线通信和视觉串口。<a href="https://www.st.com/en/microcontrollers-microprocessors/stm32f103c8.html">STM32F103C8 官方资料</a>列出了这些外设资源，设计扩展板时再根据实际引脚复用关系进行分配。</p><h2 id="遥控器原理图设计"><a href="#遥控器原理图设计" class="headerlink" title="遥控器原理图设计"></a>遥控器原理图设计</h2><p>遥控器是整套系统的人机交互入口。这一版采用双摇杆、十二个独立按键、OLED 显示和三路指示灯，并将电池供电与无线通信一起集成到手柄形状的 PCB 上。</p><p><img src="/images/stm32-mecanum-vision-arm/remote-schematic.png" alt="遥控器外围原理图，包含电源、摇杆、按键、无线通信与显示接口"></p><h3 id="电池供电与电压检测"><a href="#电池供电与电压检测" class="headerlink" title="电池供电与电压检测"></a>电池供电与电压检测</h3><p>遥控器按单节锂电池供电设计，电池经过电源开关，再由 XC6206P332MR-G 稳压至 3.3 V，提供给控制与外围电路。</p><p>电池检测使用电阻分压后接入 PA0。上臂电阻为 10 kΩ，下臂电阻为 22 kΩ，采样节点并联 100 nF 电容。</p><div class="han-equation" tabindex="0" role="group" aria-label="数学公式"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msub><mi>V</mi><mrow><mi mathvariant="normal">A</mi><mi mathvariant="normal">D</mi><mi mathvariant="normal">C</mi></mrow></msub><mo>=</mo><msub><mi>V</mi><mrow><mi mathvariant="normal">B</mi><mi mathvariant="normal">A</mi><mi mathvariant="normal">T</mi></mrow></msub><mo>×</mo><mfrac><mn>22</mn><mrow><mn>10</mn><mo>+</mo><mn>22</mn></mrow></mfrac></mrow><annotation encoding="application/x-tex">V_{\mathrm{ADC}}=V_{\mathrm{BAT}}\times\frac{22}{10+22}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.8333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">ADC</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:0.8333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">BAT</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:2.0908em;vertical-align:-0.7693em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">10</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord">22</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">22</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.7693em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></div><p>按常规单节锂电池满电 4.2 V 代入，采样电压约为 2.89 V。软件可以根据 ADC 采样值换算电池电压，再用于屏幕显示和低电量提示。</p><h3 id="双摇杆与独立按键"><a href="#双摇杆与独立按键" class="headerlink" title="双摇杆与独立按键"></a>双摇杆与独立按键</h3><p>两个摇杆分别提供 X、Y 两个模拟量以及按压开关。四个模拟量接入 PA1～PA4，两个摇杆按压信号接入 PB0 和 PB1。</p><p>摇杆适合表达连续的方向和速度变化；独立按键适合发出模式切换、动作触发等离散指令。本版保留十二个独立按键，其中 U10 用作模式键，用来切换小车与机械臂的操作模式；顶部的 SW1 则负责电源通断。</p><p>按键通过上拉电阻保持默认高电平，按下时拉低。每个按键独立接入 GPIO，程序可以直接读取按键状态，再进行消抖和事件处理。</p><p>双摇杆的考虑来自麦轮的操作需求：前后移动、横向移动和旋转需要三个连续控制量，两个双轴摇杆提供四个模拟输入，便于安排驾驶操作，也为机械臂模式保留输入空间。</p><p>按键部分最终采用十二路独立 GPIO。与矩阵扫描相比，这种接法占用更多引脚，但各键的电平和布线可以直接对应，单键检查、消抖以及组合操作的处理也更直观。这一版优先采用这种便于逐个调试的连接方式，并在分配时一起核对 JTAG、串口等复用功能。</p><h3 id="无线、显示与状态提示"><a href="#无线、显示与状态提示" class="headerlink" title="无线、显示与状态提示"></a>无线、显示与状态提示</h3><p>nRF24L01 接入 STM32 的 SPI2：PB13、PB14、PB15 分别承担时钟、接收和发送信号，PB12 为片选，PB10 控制 CE，PB11 接 IRQ。无线模块的供电处设置了 100 nF 与 10 μF 电容。</p><p>OLED 使用 PB8、PB9 两根信号线，三路 LED 分别用于低电量、小车通信和机械臂通信状态提示。这样在操作时，既可以通过屏幕读取详细信息，也能通过指示灯快速判断连接状态。</p><table><thead><tr><th>遥控器功能</th><th>接口或引脚</th></tr></thead><tbody><tr><td>电池电压检测</td><td>PA0</td></tr><tr><td>左摇杆 X &#x2F; Y、按压</td><td>PA1 &#x2F; PA2、PB0</td></tr><tr><td>右摇杆 X &#x2F; Y、按压</td><td>PA3 &#x2F; PA4、PB1</td></tr><tr><td>OLED</td><td>PB8 &#x2F; PB9</td></tr><tr><td>nRF24L01</td><td>SPI2，以及 CE、CSN、IRQ 控制信号</td></tr><tr><td>低电量、小车通信、机械臂通信指示</td><td>PB5、PA8、PA11</td></tr></tbody></table><p>部分独立按键使用了 PA15、PB3、PB4。对应固件需要关闭 JTAG、保留 SWD，释放这几个引脚作为普通 GPIO 使用。</p><h2 id="机械臂控制板原理图设计"><a href="#机械臂控制板原理图设计" class="headerlink" title="机械臂控制板原理图设计"></a>机械臂控制板原理图设计</h2><p>机械臂控制板将五路舵机、视觉接口、无线模块、OLED、电池检测和本地操作接口集中起来。STM32 最小系统板通过排针接入扩展板，外围接线则统一从板边引出。</p><p><img src="/images/stm32-mecanum-vision-arm/arm-schematic.png" alt="机械臂控制板外围原理图，包含五路舵机、K230、无线与分路供电"></p><h3 id="逻辑电源与舵机电源分路"><a href="#逻辑电源与舵机电源分路" class="headerlink" title="逻辑电源与舵机电源分路"></a>逻辑电源与舵机电源分路</h3><p>这一版以 12 V 电源输入为基础，电源经过开关后分成逻辑和舵机两条支路。</p><ul><li><strong>逻辑支路：</strong> 通过 MP1584EN 降压模块得到 5 V，供最小系统板及 K230 等逻辑侧设备使用；3.3 V 外设由相应的 3.3 V 电源网络供电。</li><li><strong>舵机支路：</strong> 通过接线端子引出电源，连接外置舵机降压模块，再将稳压后的 5 V 接回 <code>+5V_SERVO</code>，分配到五个舵机接口。</li></ul><p>两条支路共地，但 <code>+5V</code> 与 <code>+5V_SERVO</code> 分开布置。舵机启动和关节负载变化时，电流也会随之变化；将其供电路径单独安排，可以让大电流走专用配电路径，避免经过最小系统板的供电排针。</p><p>这里的关键考虑是<strong>五只舵机在真实动作中的供电需求</strong>。机械臂伸出、抬升和夹持时，各关节的负载并不相同，同时动作时电源还要承担叠加的电流变化。因此，单只舵机能转动，只能作为单路控制的基础；整臂电源需要结合关节负载与并发动作安排。</p><p>本版将逻辑降压留在板上，把舵机降压做成外置模块接口。这样在确定实际供电能力时，可以调整舵机电源模块，同时保留已经安排好的主控和信号接口。代价是增加一组外部模块与接线，收益则是电源选择更加灵活。</p><p>分路供电仍然共享信号参考地。布线时需要让舵机电流沿电源入口与舵机接口之间的路径流动，并减少与主控、无线模块共用的回流路径，才能让这项电源划分在 PCB 上发挥作用。</p><p>这也是之前制作<a href="https://www.han.tax/posts/lm2596-ams1117-design/">两级降压电源板</a>之后，在实际项目中进一步考虑的问题：除了输出电压，还要根据负载特性安排电源支路与连接方式。</p><h3 id="五路舵机-PWM"><a href="#五路舵机-PWM" class="headerlink" title="五路舵机 PWM"></a>五路舵机 PWM</h3><p>机械臂共使用五只舵机，包含夹爪。扩展板为每一路提供 PWM、5 V 舵机电源和 GND 三根连接。</p><table><thead><tr><th>接口</th><th>STM32 引脚</th><th>定时器通道</th></tr></thead><tbody><tr><td>H1</td><td>PA1</td><td>TIM2_CH2</td></tr><tr><td>H2</td><td>PA6</td><td>TIM3_CH1</td></tr><tr><td>H3</td><td>PA7</td><td>TIM3_CH2</td></tr><tr><td>H4</td><td>PB0</td><td>TIM3_CH3</td></tr><tr><td>H5</td><td>PB1</td><td>TIM3_CH4</td></tr></tbody></table><p>这样可以使用硬件定时器产生五路 PWM。程序更新各通道的比较值，就能分别设置舵机的目标位置。接口编号用于组织接线，实际关节与通道的对应关系再按装配位置统一管理。</p><h3 id="K230-视觉接口与调试串口"><a href="#K230-视觉接口与调试串口" class="headerlink" title="K230 视觉接口与调试串口"></a>K230 视觉接口与调试串口</h3><p>视觉端选用庐山派 K230，机械臂板上的 H6 引出 5 V、PA9、PA10 和 GND。PA9、PA10 分别作为 USART1 的发送与接收信号，与 K230 的接收、发送信号交叉连接。</p><p>本项目把图像采集与识别安排在 K230 上，STM32 侧接收目标信息并执行动作。两块板之间的串口连接与配置，可结合庐山派官方的<a href="https://wiki.lckfb.com/zh-hans/lushan-pi-k230/basic/uart.html">UART 开发文档</a>进行实现。</p><p>板上另外引出了 PA2、PA3 对应的 USART2 调试口。视觉通信与调试输出各用一组串口，便于联调时同时查看识别数据和机械臂状态。</p><h3 id="电池采样与本地操作"><a href="#电池采样与本地操作" class="headerlink" title="电池采样与本地操作"></a>电池采样与本地操作</h3><p>机械臂板同样使用 PA0 检测输入电压，分压电阻采用上臂 10 kΩ、下臂 3 kΩ，并在采样节点并联 100 nF 电容。</p><div class="han-equation" tabindex="0" role="group" aria-label="数学公式"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msub><mi>V</mi><mrow><mi mathvariant="normal">A</mi><mi mathvariant="normal">D</mi><mi mathvariant="normal">C</mi></mrow></msub><mo>=</mo><msub><mi>V</mi><mrow><mi mathvariant="normal">B</mi><mi mathvariant="normal">A</mi><mi mathvariant="normal">T</mi></mrow></msub><mo>×</mo><mfrac><mn>3</mn><mrow><mn>10</mn><mo>+</mo><mn>3</mn></mrow></mfrac></mrow><annotation encoding="application/x-tex">V_{\mathrm{ADC}}=V_{\mathrm{BAT}}\times\frac{3}{10+3}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.8333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">ADC</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:0.8333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">BAT</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:2.0908em;vertical-align:-0.7693em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">10</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord">3</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">3</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.7693em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></div><p>12 V 输入时，采样电压约为 2.77 V；按 12.6 V 计算时，约为 2.91 V。软件读取 ADC 后，可以用对应的分压比例还原输入电压。</p><p>此外，板上还设置了 OLED 接口、四个本地按键、指示灯和蜂鸣器接口。本地按键用于单板操作，OLED 用于查看运行信息，蜂鸣器则承担目标进入拾取区域等事件提示。</p><h2 id="PCB-布局与接口安排"><a href="#PCB-布局与接口安排" class="headerlink" title="PCB 布局与接口安排"></a>PCB 布局与接口安排</h2><h3 id="遥控器：按握持方式安排器件"><a href="#遥控器：按握持方式安排器件" class="headerlink" title="遥控器：按握持方式安排器件"></a>遥控器：按握持方式安排器件</h3><p>遥控器采用手柄轮廓，上方布置两个摇杆，左右握持区域及中间位置布置独立按键，电源开关位于顶部。这样的布局围绕双手操作展开，让连续控制和动作按键各有位置。</p><p><img src="/images/stm32-mecanum-vision-arm/remote-pcb.png" alt="遥控器 PCB 布局布线"></p><p>无线模块接口朝向板外，显示与主控连接区域布置在中部。设计中同时预留了四个安装孔，便于后续安装支撑件或外壳。</p><p><img src="/images/stm32-mecanum-vision-arm/remote-3d.png" alt="遥控器 PCB 三维预览，展示手柄外形与按键位置"></p><h3 id="机械臂板：按接线方向划分区域"><a href="#机械臂板：按接线方向划分区域" class="headerlink" title="机械臂板：按接线方向划分区域"></a>机械臂板：按接线方向划分区域</h3><p>机械臂控制板约为 100 mm × 78 mm。电源输入和开关位于左上方，五路舵机接口沿左侧排列，K230 和 OLED 接口位于左下区域，nRF24L01 接口位于右上方，STM32 最小系统板插座位于右侧。</p><p><img src="/images/stm32-mecanum-vision-arm/arm-pcb.png" alt="机械臂控制板 PCB 布局布线"></p><p>布局时重点考虑了三件事：</p><ul><li><strong>舵机电源就近分配。</strong> 舵机接线端子与五路接口放在相邻区域，使用较宽的电源走线连接。</li><li><strong>信号按功能集中。</strong> 视觉、显示、无线与调试接口分别安排，降低接线时相互穿插的程度。</li><li><strong>保留插拔与安装空间。</strong> 最小系统板的 USB 一侧朝向板边，安装孔分布在四角。</li></ul><p>本版将舵机电源主干按 60 mil、逻辑 5 V 主干按 30 mil、一般信号线按 10 mil 进行布线，并使用顶底层地铜连接地网络。宽线用于降低配电路径的电阻，实际承载能力仍与铜厚、长度、连接器和温升共同相关。</p><p><img src="/images/stm32-mecanum-vision-arm/arm-3d.png" alt="机械臂控制板 PCB 三维预览，展示舵机接口、主控插座与外围连接位置"></p><p>以上图片为本版 PCB 布线与三维预览，便于对照原理图查看各模块在板上的位置。</p><h2 id="从单舵机控制建立软件基础"><a href="#从单舵机控制建立软件基础" class="headerlink" title="从单舵机控制建立软件基础"></a>从单舵机控制建立软件基础</h2><p>机械臂的动作最终要落实到各路舵机控制，因此我先使用 STM32F103C8T6 做了单舵机按键控制实验。通过按键改变舵机指令，已经完成基础转动测试。</p><p>现有测试工程将 PWM、舵机角度换算、按键和 OLED 显示分别封装。主程序读取按键事件，更新目标角度，再调用舵机接口输出，并在 OLED 上显示当前指令值。</p><h3 id="定时器怎样产生舵机信号"><a href="#定时器怎样产生舵机信号" class="headerlink" title="定时器怎样产生舵机信号"></a>定时器怎样产生舵机信号</h3><p>测试程序使用 PA1 对应的 TIM2_CH2，定时器时钟按 72 MHz 配置，预分频器设置为 71，自动重装值设置为 19999：</p><div class="han-equation" tabindex="0" role="group" aria-label="数学公式"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msub><mi>f</mi><mrow><mi mathvariant="normal">P</mi><mi mathvariant="normal">W</mi><mi mathvariant="normal">M</mi></mrow></msub><mo>=</mo><mfrac><mrow><mn>72</mn><mtext> </mtext><mn>000</mn><mtext> </mtext><mn>000</mn></mrow><mrow><mo stretchy="false">(</mo><mn>71</mn><mo>+</mo><mn>1</mn><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mn>19999</mn><mo>+</mo><mn>1</mn><mo stretchy="false">)</mo></mrow></mfrac><mo>=</mo><mn>50</mn><mtext> </mtext><mrow><mi mathvariant="normal">H</mi><mi mathvariant="normal">z</mi></mrow></mrow><annotation encoding="application/x-tex">f_{\mathrm{PWM}}=\frac{72\,000\,000}{(71+1)(19999+1)}=50\ \mathrm{Hz}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.1076em;">f</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.1076em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">PWM</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:2.2574em;vertical-align:-0.936em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mopen">(</span><span class="mord">71</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord">1</span><span class="mclose">)</span><span class="mopen">(</span><span class="mord">19999</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord">1</span><span class="mclose">)</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">72</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">000</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord">000</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.936em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:0.6833em;"></span><span class="mord">50</span><span class="mspace"> </span><span class="mord"><span class="mord mathrm">Hz</span></span></span></span></span></span></div><p>这样每次计数对应 1 μs，一个 PWM 周期为 20 ms。改变比较寄存器的值，就能改变每个周期内的高电平时间。</p><p>测试工程采用 500～2500 μs 对应 0～180° 的换算设置，角度到脉宽的关系为：</p><div class="han-equation" tabindex="0" role="group" aria-label="数学公式"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msub><mi>t</mi><mrow><mi mathvariant="normal">p</mi><mi mathvariant="normal">u</mi><mi mathvariant="normal">l</mi><mi mathvariant="normal">s</mi><mi mathvariant="normal">e</mi></mrow></msub><mo>=</mo><mn>500</mn><mo>+</mo><mfrac><mi>θ</mi><mn>180</mn></mfrac><mo>×</mo><mn>2000</mn><mspace width="1em"/><mo stretchy="false">(</mo><mi>μ</mi><mi mathvariant="normal">s</mi><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">t_{\mathrm{pulse}}=500+\frac{\theta}{180}\times 2000\quad(\mu\mathrm{s})</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.9012em;vertical-align:-0.2861em;"></span><span class="mord"><span class="mord mathnormal">t</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">pulse</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2861em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:0.7278em;vertical-align:-0.0833em;"></span><span class="mord">500</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:2.0574em;vertical-align:-0.686em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3714em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">180</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0278em;">θ</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">2000</span><span class="mspace" style="margin-right:1em;"></span><span class="mopen">(</span><span class="mord mathnormal">μ</span><span class="mord mathrm">s</span><span class="mclose">)</span></span></span></span></span></div><p>这组数值是当前测试工程的设置。整臂使用多种舵机，软件中会分别管理各关节的脉宽范围、转动方向和机械限位。</p><h3 id="从一个通道扩展到动作流程"><a href="#从一个通道扩展到动作流程" class="headerlink" title="从一个通道扩展到动作流程"></a>从一个通道扩展到动作流程</h3><p>单舵机程序解决的是“给定角度，输出对应 PWM”。五路机械臂还需要在这个基础上组织多个关节的动作顺序。</p><p>因此，后续程序按三层展开：底层产生各路 PWM，中间层管理关节目标与限位，上层管理观察、接近、夹取和抬起等动作。这样调整某个关节的参数时，不必同时改写整套抓取流程。</p><p>OLED 上显示的是发送给舵机的目标角度。当前普通 PWM 接口提供位置指令，关节实际运动情况则结合机械结构和调试观察来确认。</p><h2 id="视觉定位与自动拾取方案"><a href="#视觉定位与自动拾取方案" class="headerlink" title="视觉定位与自动拾取方案"></a>视觉定位与自动拾取方案</h2><h3 id="相机装在车体上，还是跟着夹爪运动"><a href="#相机装在车体上，还是跟着夹爪运动" class="headerlink" title="相机装在车体上，还是跟着夹爪运动"></a>相机装在车体上，还是跟着夹爪运动</h3><p>相机安装位置是这个项目中影响较大的一个选择。考虑过的两种方向，一种是固定在车体或机械臂底座附近，另一种是安装在夹爪后方，随腕部一起运动。</p><table><thead><tr><th>安装方向</th><th>有利之处</th><th>需要处理的问题</th></tr></thead><tbody><tr><td>相对车体固定</td><td>相机与机械臂底座之间的安装关系保持固定，便于组织坐标换算</td><td>需要安排可用视野，处理机械臂遮挡和支架避碰</td></tr><tr><td>随腕部运动</td><td>可以随夹爪接近目标，便于观察局部区域</td><td>相机相对底座的位置随关节变化，还会增加腕部负载与活动线缆</td></tr></tbody></table><p>对当前方案而言，优先考虑<strong>车体固定、斜向下观察</strong>。普通 PWM 舵机接口没有向 STM32 返回实际关节角度，如果让相机跟随腕部运动，再根据指令角度推算它的位置，关节间隙和负载引起的偏差也会进入定位过程。固定相机可以减少这部分随动作变化的关系。</p><p>从几何上看，腕部相机需要结合相机与夹爪的安装关系，以及当前机械臂姿态，才能把观测转换到底座坐标；固定相机则可以建立相机到底座的固定转换关系。<a href="https://docs.opencv.org/4.13.0/d9/d0c/group__calib3d.html">OpenCV 的手眼标定说明</a>介绍了这两类安装关系。本文据此优先采用较适合当前控制基础的固定相机方案。</p><h3 id="支架从一开始就考虑装车"><a href="#支架从一开始就考虑装车" class="headerlink" title="支架从一开始就考虑装车"></a>支架从一开始就考虑装车</h3><p>桌面调试时，高架俯拍很容易获得较完整的画面，但最终机械臂和相机都要安装到小车上，支架高度、底盘空间以及运动时的晃动都要一起考虑。因此，目前优先评估紧凑的固定支架，让相机斜向下观察车前区域。</p><p>相机只需覆盖计划使用的拾取区，安装位置则要避开机械臂伸展和回转时扫过的空间。这里的“固定”是相对车体和机械臂底座固定；车体姿态、相机安装关系或工作面高度变化时，仍要重新核对标定关系。</p><h3 id="先建立一个明确的拾取区域"><a href="#先建立一个明确的拾取区域" class="headerlink" title="先建立一个明确的拾取区域"></a>先建立一个明确的拾取区域</h3><p>本项目先面向静止的彩色方块。相机方案优先考虑相对底盘和机械臂底座固定，斜向下观察车前区域；小车把目标送入视野与机械臂都能覆盖的范围，再停车拾取。</p><p>有效拾取区域需要同时满足：目标能被相机看清、机械臂能够到达、运动路径有足够空间。这样“发现目标”与“可以开始抓取”就有了明确的判断条件。</p><h3 id="从图像位置到机械臂目标位置"><a href="#从图像位置到机械臂目标位置" class="headerlink" title="从图像位置到机械臂目标位置"></a>从图像位置到机械臂目标位置</h3><p>视觉部分按以下流程组织：</p><ol><li>K230 获取图像，识别目标颜色和位置。</li><li>根据标定关系，将图像中的位置换算到机械臂使用的坐标系。</li><li>判断目标是否处于设定的有效拾取区域。</li><li>将目标信息发送给机械臂 STM32。</li><li>操作者触发任务后，更新目标位置，再执行抓取动作。</li></ol><p>相机得到的是图像坐标，机械臂需要的是相对自身底座的位置。两者之间通过标定建立联系；由于相机采用斜视方案，标定时还需要考虑透视关系与目标所在平面。</p><p>这里还有一个容易被忽略的考虑：<strong>识别参考点所在的高度要与标定一致。</strong> 如果检测的是方块顶面中心，它与地面之间有一个方块高度。斜视条件下，将顶面上的点直接套用地面映射，会引入位置偏差。因此，标定方案要先说明定位的是哪个面、哪个点，再把它转换成夹爪需要到达的位置。</p><h3 id="用状态组织一次拾取"><a href="#用状态组织一次拾取" class="headerlink" title="用状态组织一次拾取"></a>用状态组织一次拾取</h3><p>一次自动拾取可以按“等待指令 → 确认目标 → 接近 → 夹取 → 抬起 → 结束”划分状态。每个状态负责一段动作，并规定进入下一状态的条件。</p><p>遥控器在发起抓取时协调底盘停止与机械臂动作，抓取期间保持停车；机械臂端返回执行状态，遥控器据此显示任务进度。这个分工让移动操作和拾取操作能够衔接起来。</p><p>动作配合的重点是明确“什么时候允许开始”。软件设计中将停车确认放在伸臂之前，并在停车后使用新的视觉观测复核目标位置，避免直接沿用行驶过程中取得的位置。</p><p>无线指令也需要区分持续控制和单次任务：摇杆可以持续更新速度请求，拾取按键则对应一次任务。为此，计划给动作请求分配序号，重复收到同一个请求时返回状态，避免因长按或无线重发重复启动抓取。通信恢复后也要等待新的操作请求，保持任务起点明确。</p><h2 id="当前进度与小车控制板规划"><a href="#当前进度与小车控制板规划" class="headerlink" title="当前进度与小车控制板规划"></a>当前进度与小车控制板规划</h2><p>截至本次记录，项目已形成以下基础：</p><table><thead><tr><th>项目部分</th><th>当前进度</th></tr></thead><tbody><tr><td>系统总体方案</td><td>确定三个 STM32 控制端、无线通信关系与 K230 视觉分工</td></tr><tr><td>遥控器</td><td>原理图与 PCB 设计完成，包含双摇杆、十二个独立按键、显示及无线接口</td></tr><tr><td>机械臂控制板</td><td>原理图与 PCB 设计完成，包含五路舵机、分路供电与 K230 接口</td></tr><tr><td>舵机控制基础</td><td>已进行单舵机按键控制实测，建立 PWM、按键与显示测试工程</td></tr><tr><td>视觉自动拾取</td><td>已确定流程与接口方案，后续进行识别、标定和动作联调</td></tr><tr><td>小车控制板</td><td><strong>尚未绘制</strong>，按四轮麦克纳姆底盘规划</td></tr></tbody></table><p>小车板将承担四路电机驱动、无线接收和底盘运动控制，并结合超声波测距、灯光等功能安排接口。绘制时需要同时考虑电机供电路径、驱动电流和 STM32 外设资源，使它能够与遥控器、机械臂端配合。</p><p>项目推进顺序是先把桌面上的机械臂与视觉流程建立起来，再完成小车板和底盘控制，最后进行装车与整机联调。相机与机械臂的安装关系从桌面阶段就一并考虑，方便后续迁移到移动底盘。</p><h3 id="为什么先做桌面验证"><a href="#为什么先做桌面验证" class="headerlink" title="为什么先做桌面验证"></a>为什么先做桌面验证</h3><p>抓取位置出现偏差时，原因可能在图像定位、坐标换算、关节参数，也可能来自底盘移动。如果把所有部分一次装到车上，这些影响会叠在一起。桌面阶段固定底座，可以先围绕视觉与机械臂检查问题，把底盘运动的影响放到后续阶段处理。</p><p>桌面验证按“单关节动作 → 给定位置的机械动作 → 视觉提供位置 → 整车配合”的顺序推进。前一步建立可用基础后，再接入下一部分，更容易解释每次测试的结果。</p><p>同时，相机与机械臂尽量安装在同一套可迁移的底板上，提前考虑车上安装面与地面之间的高度关系。这样桌面阶段得到的机械结构和接线安排可以继续使用，装车时再围绕实际视野、工作面和底盘姿态核对标定。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>从之前的降压电源板，到这次遥控器和机械臂控制板，设计中需要同时考虑的事情明显增加了：引脚既要满足连接数量，也要对应合适的外设；供电既要提供正确电压，也要照顾执行器的电流变化；各个模块还要围绕同一次操作配合起来。</p><p>这个项目让我开始把“会用某个外设”进一步落实到“用这些外设完成一件事”。目前完成的两块 PCB，将摇杆、无线、视觉接口和五路舵机控制放进了明确的系统分工中。接下来继续沿着这套结构，把小车控制板和视觉拾取流程逐步实现，让设计真正落实到机器人动作上。</p><h2 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h2><ul><li><a href="https://www.st.com/en/microcontrollers-microprocessors/stm32f103c8.html">STM32F103C8 官方产品资料</a>：主控外设资源与配套文档。</li><li><a href="https://wiki.lckfb.com/zh-hans/lushan-pi-k230/basic/uart.html">庐山派 K230 串口通信文档</a>：串口配置、收发与接线说明。</li><li><a href="https://www.han.tax/posts/lm2596-ams1117-design/">LM2596＋AMS1117 两级降压电源设计</a>：此前的电源设计与实测记录。</li></ul>]]>
    </content>
    <id>https://www.han.tax/posts/stm32-mecanum-vision-arm/</id>
    <link href="https://www.han.tax/posts/stm32-mecanum-vision-arm/"/>
    <published>2026-09-25T12:00:00.000Z</published>
    <summary>从物流搬运与拾取场景出发，设计由 STM32 遥控器、麦克纳姆轮底盘、五舵机机械臂和庐山派 K230 组成的机器人。记录系统分工、遥控器与机械臂控制板的原理图、PCB 设计及舵机控制基础，本文为项目未完成版。</summary>
    <title>基于 STM32 与 K230 的麦轮视觉拾取机器人：系统方案与硬件设计  （未完成版）</title>
    <updated>2026-09-24T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>硬件小小林</name>
    </author>
    <category term="硬件设计" scheme="https://www.han.tax/categories/%E7%A1%AC%E4%BB%B6%E8%AE%BE%E8%AE%A1/"/>
    <category term="电源设计" scheme="https://www.han.tax/tags/%E7%94%B5%E6%BA%90%E8%AE%BE%E8%AE%A1/"/>
    <category term="PCB" scheme="https://www.han.tax/tags/PCB/"/>
    <category term="LM2596" scheme="https://www.han.tax/tags/LM2596/"/>
    <category term="AMS1117" scheme="https://www.han.tax/tags/AMS1117/"/>
    <content>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>做单片机实验时，供电往往是接线前就要解决的问题。手边的电源可能是 12 V、24 V，而单片机和外设需要的是 3.3 V、5 V。同一套电路里，不同器件的工作电压也未必相同，不能把输入电源直接接到所有器件上。</p><p>因此，我想做一块能同时提供 5 V 和 3.3 V 的电源板，方便之后搭建实验电路。除了得到两路输出，也借这个过程弄清楚：降压芯片为什么还需要电感、二极管和电容，这些元件的参数怎样确定，以及它们在 PCB 上应该怎样连接。</p><p>这块板目前已经完成制作与实测。在约 12 V、24 V、32 V 三个输入电压点，两路空载输出均处于预期电压附近；接入电子负载后，5 V 和 3.3 V 两路分别完成了约 0.8 A 的带载测试。下面从电路设计讲起，再把实物与测量结果放在一起看。</p><h2 id="确定供电方案"><a href="#确定供电方案" class="headerlink" title="确定供电方案"></a>确定供电方案</h2><h3 id="为什么分成两级"><a href="#为什么分成两级" class="headerlink" title="为什么分成两级"></a>为什么分成两级</h3><p>获得较低的直流电压，可以使用线性稳压器，也可以使用开关降压电路。两者处理输入、输出压差的方式不同。</p><p>线性稳压器通过内部调整管维持输出电压，输入与输出的电压差落在调整管上。流过它的电流越大，产生的热量就越多。忽略芯片自身消耗，功率损耗可以估算为：</p><div class="han-equation" tabindex="0" role="group" aria-label="数学公式"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi>P</mi><mo>≈</mo><mo stretchy="false">(</mo><msub><mi>V</mi><mrow><mi mathvariant="normal">i</mi><mi mathvariant="normal">n</mi></mrow></msub><mo>−</mo><msub><mi>V</mi><mrow><mi mathvariant="normal">o</mi><mi mathvariant="normal">u</mi><mi mathvariant="normal">t</mi></mrow></msub><mo stretchy="false">)</mo><mtext> </mtext><msub><mi>I</mi><mrow><mi mathvariant="normal">o</mi><mi mathvariant="normal">u</mi><mi mathvariant="normal">t</mi></mrow></msub></mrow><annotation encoding="application/x-tex">P \approx (V_{\mathrm{in}} - V_{\mathrm{out}})\,I_{\mathrm{out}}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.6833em;"></span><span class="mord mathnormal" style="margin-right:0.1389em;">P</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3175em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">in</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2806em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">out</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2806em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">out</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span></span></div><p>例如，12 V 输入、3.3 V 输出，稳压器输出电流为 100 mA，压差损耗约为 0.87 W。如果把它的输入先降到 5 V，同样电流下，这部分损耗就降到约 0.17 W。</p><p>所以，本版采用“开关降压＋线性稳压”：LM2596 先得到约 5 V，AMS1117 再从这一路得到约 3.3 V。前一级承担大部分电压转换，后一级处理较小的压差。同时将一级输出引出，供需要 5 V 的外设使用。</p><p>直流输入 → 防反接与输入旁路 → LM2596 → 约 5 V，再分为两路：</p><ul><li>直接接到 5 V 输出接口。</li><li>经 AMS1117 稳压后，接到约 3.3 V 输出接口。</li></ul><h3 id="本版的设计范围"><a href="#本版的设计范围" class="headerlink" title="本版的设计范围"></a>本版的设计范围</h3><p>输入主要面向 12 V、24 V 直流电源，最高正常输入按 32 V 设计；初始参数计算以一级总输出 0.5 A 为工作点。后面的实测进一步记录了两路分别带约 0.8 A 负载时的表现。这里的 32 V 是设计输入范围，不是过压保护的动作点。</p><p>5 V 与 3.3 V 两路共地。由于 AMS1117 由一级供电，一级电流需要同时包含外部 5 V 负载和二级输入电流：</p><div class="han-equation" tabindex="0" role="group" aria-label="数学公式"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><msub><mi>I</mi><mtext>一级</mtext></msub></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>≈</mo><msub><mi>I</mi><mtext>外部 5V</mtext></msub><mo>+</mo><msub><mi>I</mi><mtext>二级输入</mtext></msub></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mspace width="1em"/><mo>+</mo><msub><mi>I</mi><mtext>一级分压及指示灯</mtext></msub></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><msub><mi>I</mi><mtext>二级输入</mtext></msub></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>≈</mo><msub><mi>I</mi><mtext>外部 3.3V</mtext></msub></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mspace width="1em"/><mo>+</mo><msub><mi>I</mi><mtext>二级分压及芯片自身消耗</mtext></msub></mrow></mstyle></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{aligned}I_{\text{一级}} &amp;\approx I_{\text{外部 5V}} + I_{\text{二级输入}} \\&amp;\quad + I_{\text{一级分压及指示灯}} \\[0.8em]I_{\text{二级输入}} &amp;\approx I_{\text{外部 3.3V}} \\&amp;\quad + I_{\text{二级分压及芯片自身消耗}}\end{aligned}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:6.5em;vertical-align:-3em;"></span><span class="mord"><span class="mtable"><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:3.5em;"><span style="top:-5.66em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord text mtight"><span class="mord cjk_fallback mtight">一级</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-4.16em;"><span class="pstrut" style="height:3em;"></span><span class="mord"></span></span><span style="top:-1.86em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord text mtight"><span class="mord cjk_fallback mtight">二级输入</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-0.36em;"><span class="pstrut" style="height:3em;"></span><span class="mord"></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:3em;"><span></span></span></span></span></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:3.5em;"><span style="top:-5.66em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord text mtight"><span class="mord cjk_fallback mtight">外部</span><span class="mord mtight"> 5V</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord text mtight"><span class="mord cjk_fallback mtight">二级输入</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-4.16em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:1em;"></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord text mtight"><span class="mord cjk_fallback mtight">一级分压及指示灯</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-1.86em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord text mtight"><span class="mord cjk_fallback mtight">外部</span><span class="mord mtight"> 3.3V</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-0.36em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:1em;"></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord text mtight"><span class="mord cjk_fallback mtight">二级分压及芯片自身消耗</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:3em;"><span></span></span></span></span></span></span></span></span></span></span></span></div><p>因此，参数计算中的 0.5 A 指一级合计输出电流。两路同时接入单片机、显示屏或其他模块时，需要按这个分路关系合计电流。</p><p>下面是本版原理图。上半部分为 LM2596 降压电路，下半部分为 AMS1117 稳压电路；后面的元件编号都与这张图对应。</p><p><img src="/images/posts/lm2596-ams1117-design/schematic.png" alt="LM2596 与 AMS1117 两级降压电源原理图，上方为一级降压，下方为二级稳压"></p><h2 id="一级降压电路"><a href="#一级降压电路" class="headerlink" title="一级降压电路"></a>一级降压电路</h2><h3 id="电压是怎样降下来的"><a href="#电压是怎样降下来的" class="headerlink" title="电压是怎样降下来的"></a>电压是怎样降下来的</h3><p>先看 U1、D2、L1 和 C3 组成的部分。</p><p>LM2596 内部有一个高速开关。它导通时，输入电源经开关和 L1 向输出送电；关断时，输入到电感的通路被切断。但电感中的电流不能瞬间降为零，D2 就为它提供了另一条通路，使电流继续经过 L1 流向输出。</p><p>以电感电流连续的情况来看，一个周期内有两种状态：</p><ul><li>开关导通：输入 → U1 内部开关 → L1 → 输出 → GND。</li><li>开关关断：GND → D2 → L1 → 输出 → GND。</li></ul><p>导通期间，电感电流上升；关断期间，电感电流下降。D2 因此称为“续流二极管”，它的阴极接 U1 的 OUT，阳极接 GND。</p><p>U1 的 OUT 脚输出的是开关脉冲，这个位置也叫 SW 节点。脉冲经过 L1 和输出电容后，才在右侧形成较平稳的直流电压。LM2596 再通过反馈，调整每个周期内开关导通的时间，使输出维持在设定值附近。其典型应用和引脚说明见 <a href="https://www.ti.com/lit/ds/symlink/lm2596.pdf">LM2596 数据手册</a>。</p><h3 id="用反馈电阻设定输出"><a href="#用反馈电阻设定输出" class="headerlink" title="用反馈电阻设定输出"></a>用反馈电阻设定输出</h3><p>芯片需要知道实际输出是多少，因此从电感后方取样，通过 R2、R1 分压后送到 FB 脚。</p><p>输出升高时，FB 电压也升高，控制电路减少向输出传递的能量；输出降低时则相反。稳态时，FB 电压维持在内部参考值附近。按 1.23 V 的标称参考电压计算：</p><div class="han-equation" tabindex="0" role="group" aria-label="数学公式"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><msub><mi>V</mi><mrow><mi mathvariant="normal">F</mi><mi mathvariant="normal">B</mi></mrow></msub></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><msub><mi>V</mi><mrow><mi mathvariant="normal">o</mi><mi mathvariant="normal">u</mi><mi mathvariant="normal">t</mi></mrow></msub><mtext> </mtext><mfrac><msub><mi>R</mi><mn>1</mn></msub><mrow><msub><mi>R</mi><mn>1</mn></msub><mo>+</mo><msub><mi>R</mi><mn>2</mn></msub></mrow></mfrac></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><msub><mi>V</mi><mrow><mi mathvariant="normal">o</mi><mi mathvariant="normal">u</mi><mi mathvariant="normal">t</mi></mrow></msub></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>≈</mo><mn>1.23</mn><mrow><mo fence="true">(</mo><mn>1</mn><mo>+</mo><mfrac><msub><mi>R</mi><mn>2</mn></msub><msub><mi>R</mi><mn>1</mn></msub></mfrac><mo fence="true">)</mo></mrow></mrow></mstyle></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{aligned}V_{\mathrm{FB}} &amp;= V_{\mathrm{out}}\,\frac{R_1}{R_1 + R_2} \\[0.6em]V_{\mathrm{out}} &amp;\approx 1.23\left(1 + \frac{R_2}{R_1}\right)\end{aligned}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:5.0204em;vertical-align:-2.2602em;"></span><span class="mord"><span class="mtable"><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.7602em;"><span style="top:-4.8498em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">FB</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.1399em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2806em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">out</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:2.2602em;"><span></span></span></span></span></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.7602em;"><span style="top:-4.8498em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2806em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">out</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3603em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.0077em;">R</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0077em;">R</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.0077em;">R</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.836em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-2.1399em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">1.23</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">(</span></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3603em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.0077em;">R</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">1</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.0077em;">R</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.836em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">)</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:2.2602em;"><span></span></span></span></span></span></span></span></span></span></span></span></div><p>本版使用 R1＝1 kΩ、R2＝3 kΩ：</p><div class="han-equation" tabindex="0" role="group" aria-label="数学公式"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><msub><mi>V</mi><mrow><mi mathvariant="normal">o</mi><mi mathvariant="normal">u</mi><mi mathvariant="normal">t</mi></mrow></msub></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>≈</mo><mn>1.23</mn><mrow><mo fence="true">(</mo><mn>1</mn><mo>+</mo><mfrac><mn>3000</mn><mn>1000</mn></mfrac><mo fence="true">)</mo></mrow></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>≈</mo><mn>4.92</mn><mtext> </mtext><mi mathvariant="normal">V</mi></mrow></mstyle></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{aligned}V_{\mathrm{out}} &amp;\approx 1.23\left(1 + \frac{3000}{1000}\right) \\&amp;\approx 4.92\,\mathrm{V}\end{aligned}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:3.9em;vertical-align:-1.7em;"></span><span class="mord"><span class="mtable"><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.2em;"><span style="top:-4.2em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2806em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">out</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.11em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.7em;"><span></span></span></span></span></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.2em;"><span style="top:-4.2em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">1.23</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">(</span></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1000</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">3000</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">)</span></span></span></span></span><span style="top:-2.11em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">4.92</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathrm" style="margin-right:0.0139em;">V</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.7em;"><span></span></span></span></span></span></span></span></span></span></span></span></div><p>这组阻值使用 0603、1% 电阻，方便采购和焊接。接口标为 5 V，按标称参考电压计算为 4.92 V；实物的空载测量结果为 4.96～4.98 V。</p><h3 id="由电流变化确定电感参数"><a href="#由电流变化确定电感参数" class="headerlink" title="由电流变化确定电感参数"></a>由电流变化确定电感参数</h3><p>电感限制的是电流变化速度。在相同电压作用下，电感量越大，电流上升、下降得越慢，一个开关周期内的电流起伏也越小。</p><p>导通时，忽略开关压降，电感两端电压约为 Vin − Vout。由电感关系式可得：</p><div class="han-equation" tabindex="0" role="group" aria-label="数学公式"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mfrac><mrow><mi mathvariant="normal">d</mi><mi>i</mi></mrow><mrow><mi mathvariant="normal">d</mi><mi>t</mi></mrow></mfrac></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mfrac><msub><mi>V</mi><mi>L</mi></msub><mi>L</mi></mfrac></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mi mathvariant="normal">Δ</mi><msub><mi>I</mi><mi>L</mi></msub></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>≈</mo><mfrac><mrow><mo stretchy="false">(</mo><msub><mi>V</mi><mrow><mi mathvariant="normal">i</mi><mi mathvariant="normal">n</mi></mrow></msub><mo>−</mo><msub><mi>V</mi><mrow><mi mathvariant="normal">o</mi><mi mathvariant="normal">u</mi><mi mathvariant="normal">t</mi></mrow></msub><mo stretchy="false">)</mo><mtext> </mtext><msub><mi>t</mi><mrow><mi mathvariant="normal">o</mi><mi mathvariant="normal">n</mi></mrow></msub></mrow><mi>L</mi></mfrac></mrow></mstyle></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{aligned}\frac{\mathrm{d}i}{\mathrm{d}t} &amp;= \frac{V_L}{L} \\[0.6em]\Delta I_L &amp;\approx \frac{(V_{\mathrm{in}} - V_{\mathrm{out}})\,t_{\mathrm{on}}}{L}\end{aligned}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:4.7444em;vertical-align:-2.1222em;"></span><span class="mord"><span class="mtable"><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.6222em;"><span style="top:-4.6778em;"><span class="pstrut" style="height:3.427em;"></span><span class="mord"><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3714em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathrm">d</span><span class="mord mathnormal">t</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathrm">d</span><span class="mord mathnormal">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-1.9908em;"><span class="pstrut" style="height:3.427em;"></span><span class="mord"><span class="mord">Δ</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">L</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:2.1222em;"><span></span></span></span></span></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.6222em;"><span style="top:-4.6778em;"><span class="pstrut" style="height:3.427em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3603em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">L</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">L</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-1.9908em;"><span class="pstrut" style="height:3.427em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.427em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">L</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mopen">(</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3175em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">in</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2806em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">out</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal">t</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">on</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:2.1222em;"><span></span></span></span></span></span></span></span></span></span></span></span></div><p>再用导通时间 ton＝D&#x2F;f，以及理想连续导通 Buck 的占空比 D≈Vout&#x2F;Vin，就得到：</p><div class="han-equation" tabindex="0" role="group" aria-label="数学公式"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><mi mathvariant="normal">Δ</mi><msub><mi>I</mi><mi>L</mi></msub><mo>≈</mo><mfrac><mrow><msub><mi>V</mi><mrow><mi mathvariant="normal">o</mi><mi mathvariant="normal">u</mi><mi mathvariant="normal">t</mi></mrow></msub><mrow><mo fence="true">(</mo><mn>1</mn><mo>−</mo><msub><mi>V</mi><mrow><mi mathvariant="normal">o</mi><mi mathvariant="normal">u</mi><mi mathvariant="normal">t</mi></mrow></msub><mi mathvariant="normal">/</mi><msub><mi>V</mi><mrow><mi mathvariant="normal">i</mi><mi mathvariant="normal">n</mi></mrow></msub><mo fence="true">)</mo></mrow></mrow><mrow><mi>L</mi><mtext> </mtext><mi>f</mi></mrow></mfrac></mrow><annotation encoding="application/x-tex">\Delta I_L \approx \frac{V_{\mathrm{out}}\left(1 - V_{\mathrm{out}}/V_{\mathrm{in}}\right)}{L\,f}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.8333em;vertical-align:-0.15em;"></span><span class="mord">Δ</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">L</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:2.3074em;vertical-align:-0.8804em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.427em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord mathnormal">L</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal" style="margin-right:0.1076em;">f</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2806em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">out</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;">(</span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2806em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">out</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord">/</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3175em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">in</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose delimcenter" style="top:0em;">)</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.8804em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span></span></div><p>这里 ΔIL 是电流纹波的峰峰值。为了便于估算，取输出 5 V、输入 32 V、开关频率 150 kHz，代入本版使用的 68 μH：</p><div class="han-equation" tabindex="0" role="group" aria-label="数学公式"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mi mathvariant="normal">Δ</mi><msub><mi>I</mi><mi>L</mi></msub></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>≈</mo><mfrac><mrow><mn>5</mn><mtext> </mtext><mi mathvariant="normal">V</mi><mo>×</mo><mo stretchy="false">(</mo><mn>1</mn><mo>−</mo><mn>5</mn><mi mathvariant="normal">/</mi><mn>32</mn><mo stretchy="false">)</mo></mrow><mrow><mn>68</mn><mtext> </mtext><mi>μ</mi><mi mathvariant="normal">H</mi><mo>×</mo><mn>150</mn><mtext> </mtext><mrow><mi mathvariant="normal">k</mi><mi mathvariant="normal">H</mi><mi mathvariant="normal">z</mi></mrow></mrow></mfrac></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>≈</mo><mn>0.414</mn><mtext> </mtext><mi mathvariant="normal">A</mi></mrow></mstyle></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{aligned}\Delta I_L &amp;\approx \frac{5\,\mathrm{V}\times(1 - 5/32)}{68\,\mu\mathrm{H}\times150\,\mathrm{kHz}} \\&amp;\approx 0.414\,\mathrm{A}\end{aligned}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:3.8074em;vertical-align:-1.6537em;"></span><span class="mord"><span class="mtable"><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.1537em;"><span style="top:-4.1537em;"><span class="pstrut" style="height:3.427em;"></span><span class="mord"><span class="mord">Δ</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">L</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.1333em;"><span class="pstrut" style="height:3.427em;"></span><span class="mord"></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.6537em;"><span></span></span></span></span></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.1537em;"><span style="top:-4.1537em;"><span class="pstrut" style="height:3.427em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.427em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">68</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal">μ</span><span class="mord mathrm">H</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord">150</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathrm">kHz</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">5</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathrm" style="margin-right:0.0139em;">V</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">×</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mopen">(</span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord">5/32</span><span class="mclose">)</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.8804em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-2.1333em;"><span class="pstrut" style="height:3.427em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">0.414</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathrm">A</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.6537em;"><span></span></span></span></span></span></span></span></span></span></span></span></div><p>当一级平均输出为 0.5 A 时，电感电流围绕这个平均值上下变化：</p><div class="han-equation" tabindex="0" role="group" aria-label="数学公式"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><msub><mi>I</mi><mtext>峰值</mtext></msub></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>≈</mo><mn>0.5</mn><mo>+</mo><mfrac><mn>0.414</mn><mn>2</mn></mfrac></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mn>0.707</mn><mtext> </mtext><mi mathvariant="normal">A</mi></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><msub><mi>I</mi><mtext>谷值</mtext></msub></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>≈</mo><mn>0.5</mn><mo>−</mo><mfrac><mn>0.414</mn><mn>2</mn></mfrac></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mn>0.293</mn><mtext> </mtext><mi mathvariant="normal">A</mi></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><msub><mi>I</mi><mtext>有效值</mtext></msub></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>≈</mo><msqrt><mrow><msup><mn>0.5</mn><mn>2</mn></msup><mo>+</mo><mfrac><msup><mn>0.414</mn><mn>2</mn></msup><mn>12</mn></mfrac></mrow></msqrt></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>=</mo><mn>0.514</mn><mtext> </mtext><mi mathvariant="normal">A</mi></mrow></mstyle></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{aligned}I_{\text{峰值}} &amp;\approx 0.5 + \frac{0.414}{2} \\&amp;= 0.707\,\mathrm{A} \\[0.6em]I_{\text{谷值}} &amp;\approx 0.5 - \frac{0.414}{2} \\&amp;= 0.293\,\mathrm{A} \\[0.6em]I_{\text{有效值}} &amp;\approx \sqrt{0.5^2 + \frac{0.414^2}{12}} \\&amp;= 0.514\,\mathrm{A}\end{aligned}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:12.7549em;vertical-align:-6.1274em;"></span><span class="mord"><span class="mtable"><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:6.6274em;"><span style="top:-9.0054em;"><span class="pstrut" style="height:3.6994em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord text mtight"><span class="mord cjk_fallback mtight">峰值</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-7.1794em;"><span class="pstrut" style="height:3.6994em;"></span><span class="mord"></span></span><span style="top:-4.598em;"><span class="pstrut" style="height:3.6994em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord text mtight"><span class="mord cjk_fallback mtight">谷值</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.772em;"><span class="pstrut" style="height:3.6994em;"></span><span class="mord"></span></span><span style="top:0.1874em;"><span class="pstrut" style="height:3.6994em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord text mtight"><span class="mord cjk_fallback mtight">有效值</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:2.068em;"><span class="pstrut" style="height:3.6994em;"></span><span class="mord"></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:6.1274em;"><span></span></span></span></span></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:6.6274em;"><span style="top:-9.0054em;"><span class="pstrut" style="height:3.6994em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">0.5</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">0.414</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-7.1794em;"><span class="pstrut" style="height:3.6994em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">0.707</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathrm">A</span></span></span><span style="top:-4.598em;"><span class="pstrut" style="height:3.6994em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">0.5</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">2</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">0.414</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-2.772em;"><span class="pstrut" style="height:3.6994em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">0.293</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathrm">A</span></span></span><span style="top:0.1874em;"><span class="pstrut" style="height:3.6994em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord sqrt"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.6994em;"><span class="svg-align" style="top:-4.4em;"><span class="pstrut" style="height:4.4em;"></span><span class="mord" style="padding-left:1em;"><span class="mord">0.</span><span class="mord"><span class="mord">5</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7401em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.4171em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">12</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">0.41</span><span class="mord"><span class="mord">4</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.7401em;"><span style="top:-2.989em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span><span style="top:-3.6594em;"><span class="pstrut" style="height:4.4em;"></span><span class="hide-tail" style="min-width:1.02em;height:2.48em;"><svg xmlns="http://www.w3.org/2000/svg" width="400em" height="2.48em" viewBox="0 0 400000 2592" preserveAspectRatio="xMinYMin slice"><path d="M424,2478c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081l0 -0c4,-6.7,10,-10,18,-10 H400000v40H1014.6s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185c-2,6,-10,9,-24,9c-8,0,-12,-0.7,-12,-2z M1001 80h400000v40h-400000z"/></svg></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.7406em;"><span></span></span></span></span></span></span></span><span style="top:2.068em;"><span class="pstrut" style="height:3.6994em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">0.514</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathrm">A</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:6.1274em;"><span></span></span></span></span></span></span></span></span></span></span></span></div><p>因此，检查电感是否会饱和，要看约 0.707 A 的峰值；评估绕组发热，则要结合约 0.514 A 的有效值和直流电阻。这也解释了为什么输出电流为 0.5 A，不能只找一颗标着“0.5 A”的电感。</p><p>本版采用 68 μH 电感。在上述计算条件下，电流纹波峰峰值约为平均电流的 83%。增大电感量可以降低这个比例，选型时还要一起比较器件体积、直流电阻、饱和电流和温升电流。</p><p>这里计算的是电感电流纹波。它与输出端的电压纹波属于不同的量：电感、电容和电容的 ESR 共同影响最终的输出电压波动，后文通过示波器记录实物的输出纹波。</p><h3 id="输入端为什么还要放电容"><a href="#输入端为什么还要放电容" class="headerlink" title="输入端为什么还要放电容"></a>输入端为什么还要放电容</h3><p>开关导通时，输入端需要向电路提供电流；关断时，这一路电流随之改变。如果只靠较长的供电线送电，导线的寄生电感和阻抗会使芯片输入端出现电压波动。</p><p>C1、C2 放在 U1 附近，就是为了让快速变化的电流能就近取得。C1 使用 100 μF／63 V 贴片电解，C2 使用 1 μF／50 V 陶瓷：前者提供较大的储能容量，后者承担较高频率下的旁路作用。</p><p>它们前面的 D1 同样选用 SS56，但这里是串联防反接。D1 阴极朝向电路内部，正常接线时导通，反接时阻断输入。它与续流用的 D2 型号相同，连接位置和工作过程不同。</p><h3 id="输出电容怎样配合电感"><a href="#输出电容怎样配合电感" class="headerlink" title="输出电容怎样配合电感"></a>输出电容怎样配合电感</h3><p>电感电流在一个周期内起伏，负载却需要相对稳定的供电。电感送来的电流多于负载需求时，多出的部分给输出电容充电；少于负载需求时，电容补上差额。</p><p>因此，输出电容承受的是两者之间的电流差：</p><div class="han-equation" tabindex="0" role="group" aria-label="数学公式"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msub><mi>i</mi><mi>C</mi></msub><mo>=</mo><msub><mi>i</mi><mi>L</mi></msub><mo>−</mo><msub><mi>i</mi><mtext>负载</mtext></msub></mrow><annotation encoding="application/x-tex">i_C = i_L - i_{\text{负载}}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.8095em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">i</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.0715em;">C</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:0.8095em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">i</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">L</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:0.8095em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">i</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord text mtight"><span class="mord cjk_fallback mtight">负载</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span></span></div><p>同样的充放电电流作用下，容量越大，电压变化越慢。但实际电容还存在等效串联电阻 ESR，纹波电流经过它，也会形成电压纹波。</p><p>本版 C3 使用 330 μF／35 V 贴片电解，旁边并联 C4＝100 nF 陶瓷。输出电容选型需要同时考虑容量、ESR 和额定纹波电流。对 LM2596，这些参数也关系到反馈环路稳定性，具体选择可对照<a href="https://www.ti.com/lit/ds/symlink/lm2596.pdf">手册的输出电容要求</a>。</p><p>输入端的 100 μF 与输出端的 330 μF，分别应对不同位置的电流变化，所以无需按电路前后顺序逐级减小容量。</p><h2 id="二级稳压电路"><a href="#二级稳压电路" class="headerlink" title="二级稳压电路"></a>二级稳压电路</h2><h3 id="从约-5-V-得到约-3-3-V"><a href="#从约-5-V-得到约-3-3-V" class="headerlink" title="从约 5 V 得到约 3.3 V"></a>从约 5 V 得到约 3.3 V</h3><p>一级输出同时接到 5 V 接口和 U2 的输入。U2 使用 AMS1117-ADJ，输入旁放置 C5＝10 μF、C6＝100 nF。</p><p>AMS1117 的反馈关系与前一级有所不同：它维持的是 OUT 与 ADJ 之间约 1.25 V 的电压差。因此，R3 接 OUT 与 ADJ，R4 接 ADJ 与 GND。</p><div class="han-equation" tabindex="0" role="group" aria-label="数学公式"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><msub><mi>V</mi><mrow><mi mathvariant="normal">o</mi><mi mathvariant="normal">u</mi><mi mathvariant="normal">t</mi></mrow></msub></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>≈</mo><mn>1.25</mn><mrow><mo fence="true">(</mo><mn>1</mn><mo>+</mo><mfrac><msub><mi>R</mi><mn>4</mn></msub><msub><mi>R</mi><mn>3</mn></msub></mfrac><mo fence="true">)</mo></mrow></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mspace width="1em"/><mo>+</mo><msub><mi>I</mi><mrow><mi mathvariant="normal">a</mi><mi mathvariant="normal">d</mi><mi mathvariant="normal">j</mi></mrow></msub><mtext> </mtext><msub><mi>R</mi><mn>4</mn></msub></mrow></mstyle></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{aligned}V_{\mathrm{out}} &amp;\approx 1.25\left(1 + \frac{R_4}{R_3}\right) \\&amp;\quad + I_{\mathrm{adj}}\,R_4\end{aligned}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:3.9em;vertical-align:-1.7em;"></span><span class="mord"><span class="mtable"><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.2em;"><span style="top:-4.2em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2806em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">out</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.11em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.7em;"><span></span></span></span></span></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.2em;"><span style="top:-4.2em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">1.25</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">(</span></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3603em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.0077em;">R</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">3</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.0077em;">R</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">4</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.836em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">)</span></span></span></span></span><span style="top:-2.11em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:1em;"></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3361em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">adj</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2861em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0077em;">R</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0077em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">4</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.7em;"><span></span></span></span></span></span></span></span></span></span></span></span></div><p>本版 R3＝120 Ω、R4＝200 Ω。忽略调节脚电流时：</p><div class="han-equation" tabindex="0" role="group" aria-label="数学公式"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mtable rowspacing="0.25em" columnalign="right left" columnspacing="0em"><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><msub><mi>V</mi><mrow><mi mathvariant="normal">o</mi><mi mathvariant="normal">u</mi><mi mathvariant="normal">t</mi></mrow></msub></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>≈</mo><mn>1.25</mn><mrow><mo fence="true">(</mo><mn>1</mn><mo>+</mo><mfrac><mn>200</mn><mn>120</mn></mfrac><mo fence="true">)</mo></mrow></mrow></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow></mrow></mstyle></mtd><mtd><mstyle scriptlevel="0" displaystyle="true"><mrow><mrow></mrow><mo>≈</mo><mn>3.33</mn><mtext> </mtext><mi mathvariant="normal">V</mi></mrow></mstyle></mtd></mtr></mtable><annotation encoding="application/x-tex">\begin{aligned}V_{\mathrm{out}} &amp;\approx 1.25\left(1 + \frac{200}{120}\right) \\&amp;\approx 3.33\,\mathrm{V}\end{aligned}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:3.9em;vertical-align:-1.7em;"></span><span class="mord"><span class="mtable"><span class="col-align-r"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.2em;"><span style="top:-4.2em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"><span class="mord"><span class="mord mathnormal" style="margin-right:0.2222em;">V</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.2806em;"><span style="top:-2.55em;margin-left:-0.2222em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathrm mtight">out</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span><span style="top:-2.11em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.7em;"><span></span></span></span></span></span><span class="col-align-l"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:2.2em;"><span style="top:-4.2em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">1.25</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="minner"><span class="mopen delimcenter" style="top:0em;"><span class="delimsizing size3">(</span></span><span class="mord">1</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">120</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">200</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mclose delimcenter" style="top:0em;"><span class="delimsizing size3">)</span></span></span></span></span><span style="top:-2.11em;"><span class="pstrut" style="height:3.45em;"></span><span class="mord"><span class="mord"></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">3.33</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathrm" style="margin-right:0.0139em;">V</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:1.7em;"><span></span></span></span></span></span></span></span></span></span></span></span></div><p>计入数十微安的典型调节脚电流后，约为 3.34 V。</p><p>这里选择 120 Ω，还有一个与稳压有关的作用。它两端约有 1.25 V，因此分压支路的电流约为：</p><div class="han-equation" tabindex="0" role="group" aria-label="数学公式"><span class="katex-display"><span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><semantics><mrow><msub><mi>I</mi><mtext>分压</mtext></msub><mo>≈</mo><mfrac><mn>1.25</mn><mn>120</mn></mfrac><mo>≈</mo><mn>10.4</mn><mtext> </mtext><mrow><mi mathvariant="normal">m</mi><mi mathvariant="normal">A</mi></mrow></mrow><annotation encoding="application/x-tex">I_{\text{分压}} \approx \frac{1.25}{120} \approx 10.4\,\mathrm{mA}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.8333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0785em;">I</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.0785em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord text mtight"><span class="mord cjk_fallback mtight">分压</span></span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:2.0074em;vertical-align:-0.686em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.3214em;"><span style="top:-2.314em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">120</span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.677em;"><span class="pstrut" style="height:3em;"></span><span class="mord"><span class="mord">1.25</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.686em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">≈</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:0.6833em;"></span><span class="mord">10.4</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathrm">mA</span></span></span></span></span></span></div><p>这条支路在外部空载时仍然存在，为可调稳压器提供基本负载。参考的 <a href="https://www.alldatasheet.com/html-pdf/49118/ADMOS/AMS1117/519/4/AMS1117.html">AMS1117 原厂应用说明</a>采用约 10 mA 的分压支路电流，并给出了输出电压的计算关系。采购时仍需对应所用厂家的具体版本。</p><h3 id="压差、散热与输出电容"><a href="#压差、散热与输出电容" class="headerlink" title="压差、散热与输出电容"></a>压差、散热与输出电容</h3><p>按前面的标称值，U2 输入约为 4.92 V，输出约为 3.34 V，压差约为 1.58 V。这个压差为稳压器调整输出提供了空间，也会在负载电流通过时转化为热量。</p><p>例如，二级总输出电流为 100 mA，忽略芯片自身消耗，压差损耗约为 0.158 W；电流增加到 300 mA，约为 0.474 W。于是，二级能带多大负载不仅取决于芯片电流规格，也取决于这部分热量能否散出去。</p><p>输出端采用 C7＝22 μF／10 V 贴片钽和 C8＝100 nF 陶瓷。C7 的选择参考了原厂应用说明中的输出稳定性方案。它既在负载变化时提供缓冲，也参与稳压器的稳定工作。</p><p>还有一个直接影响 PCB 的连接：AMS1117 的大焊片属于 OUT，与 2 脚同属输出网络。它应接到 3.3 V 铜区；LM2596 的大焊盘则属于 GND，两颗芯片不能按同一种散热接法处理。</p><h2 id="PCB-设计"><a href="#PCB-设计" class="headerlink" title="PCB 设计"></a>PCB 设计</h2><p><img src="/images/posts/lm2596-ams1117-design/pcb-layout.png" alt="两级降压电源 PCB 布局，左侧输入、中间 LM2596 功率级、右上方 AMS1117 稳压级"></p><h3 id="从电流路径看布局"><a href="#从电流路径看布局" class="headerlink" title="从电流路径看布局"></a>从电流路径看布局</h3><p>图中左侧是输入排针、D1 和 C1；中间由 U1、D2、L1、C3 构成一级功率电路；右上方是 U2 及其外围元件。这样分区后，输入、5 V 和 3.3 V 的路径比较容易辨认。</p><p>其中需要优先关注的是 U1 下方、C1 右侧的区域。前面已经分析过：开关导通时，电流经过 U1；关断时，电流转由 D2 承接。C1、U1、D2 之间的高频回路如果绕得很大，走线寄生电感带来的电压尖峰和干扰也会更明显。</p><p>所以，这一组元件的靠近，不只是为了让正极连线短，也要让 C1 负端、D2 阳极和 U1 的地之间有紧凑的回流连接。图中 D2 放在 U1 的开关引脚附近，L1 接在它的右侧；检查这块区域时，应把正向路径和回流路径一起看。</p><h3 id="输出取样与铺铜"><a href="#输出取样与铺铜" class="headerlink" title="输出取样与铺铜"></a>输出取样与铺铜</h3><p>R1、R2 位于 U1 的右侧。它们从 L1 后的输出节点取样，将分压送回 FB。反馈线传递的是用于调节输出的电压信息，因此需要与开关节点区分开，尽量避免沿 SW 铜区或电感附近长距离走线。</p><p>功率连接和反馈连接承担的任务不同：前者需要较低阻抗，后者更在意取样位置和干扰。本版以 40～60 mil 或局部铜区作为主电源通路的布线起点，反馈线按 10 mil 处理。具体载流能力还与铜厚、线长和温升有关。</p><p>同样，铺铜也要按网络用途处理。U1 的 GND 大焊盘可以连接地铜辅助散热，U2 的输出焊片可以扩展到 3.3 V 铜区；U1 的 OUT 到 D2、L1 这一段则是快速变化的 SW 节点，应保持紧凑。</p><h3 id="封装与接口"><a href="#封装与接口" class="headerlink" title="封装与接口"></a>封装与接口</h3><p>主要元件采用贴片，电阻使用 0603，输入和两路输出均用排针引出，并加上电压与极性丝印。</p><p>本版采购的两颗贴片电解分别为 100 μF／63 V 和 330 μF／35 V，商品标注外形均为 10×10.5 mm；22 μF 钽电容选择 A 型。封装选择同时考虑外形、焊盘尺寸和极性，方便元件定位与焊接。</p><p>下面是制作前的 3D 预览。PCB 设计完成时，软件 DRC 结果为 0。</p><p><img src="/images/posts/lm2596-ams1117-design/pcb-3d.png" alt="LM2596 与 AMS1117 两级降压板 3D 预览，标有输入、5 V 和 3.3 V 接口"></p><h2 id="实物与实际测试"><a href="#实物与实际测试" class="headerlink" title="实物与实际测试"></a>实物与实际测试</h2><p>PCB 制作完成后，按照原理图焊接元件，并引出输入、5 V 和 3.3 V 接口。两路输出分别配有指示灯，方便上电时观察供电状态。</p><p><img src="/images/posts/lm2596-ams1117-design/assembled-board.jpg" alt="焊接完成的双路电源板，左侧为输入，右侧分别引出 5 V 和 3.3 V 输出"></p><p>测试使用 SIGLENT SPD3303C 可调直流电源供电，VICTOR VC890D 万用表测量空载输出，ET5408A+ 电子负载进行恒流带载测试，SIGLENT SDS1102X-E 示波器测量输出纹波。</p><p>测试分为不同输入电压下的空载输出、两路输出分别带载，以及持续运行和纹波观察。空载电压采用万用表读数；带载电压、电流和功率采用电子负载显示值，测量位置在负载端，包含连接导线与接触点的压降。</p><h2 id="空载输出测试"><a href="#空载输出测试" class="headerlink" title="空载输出测试"></a>空载输出测试</h2><p>不接外部负载，分别将输入电压调整到约 12 V、24 V 和 32 V，使用万用表依次测量两路输出。输入电压记录为直流电源显示值。</p><table><thead><tr><th align="right">输入电压</th><th align="right">5 V 输出电压</th><th align="right">3.3 V 输出电压</th></tr></thead><tbody><tr><td align="right">11.99 V</td><td align="right">4.96 V</td><td align="right">3.32 V</td></tr><tr><td align="right">23.99 V</td><td align="right">4.98 V</td><td align="right">3.33 V</td></tr><tr><td align="right">31.98 V</td><td align="right">4.98 V</td><td align="right">3.32 V</td></tr></tbody></table><p>在这三个输入电压测试点，5 V 输出的读数为 <strong>4.96～4.98 V</strong>，3.3 V 输出的读数为 <strong>3.32～3.33 V</strong>。输入电压变化时，两路输出均保持在预期电压附近，验证了上述输入条件下的基本稳压功能。</p><p>这组结果也能与前面的反馈电阻计算对应起来：一级计算值约为 4.92 V，二级约为 3.33 V，实物读数与设计目标接近。</p><h2 id="电子负载测试"><a href="#电子负载测试" class="headerlink" title="电子负载测试"></a>电子负载测试</h2><p>带载测试将输入保持在约 12 V，电子负载选择 <strong>CC 恒流模式</strong>，按设定电流从被测输出取电。5 V 与 3.3 V 两路分别测试。</p><h3 id="3-3-V-输出：0-2-A、0-5-A-与-0-8-A"><a href="#3-3-V-输出：0-2-A、0-5-A-与-0-8-A" class="headerlink" title="3.3 V 输出：0.2 A、0.5 A 与 0.8 A"></a>3.3 V 输出：0.2 A、0.5 A 与 0.8 A</h3><p>首先连接 3.3 V 输出，依次设定 0.2 A、0.5 A 和 0.8 A 三个负载点。</p><table><thead><tr><th align="right">输入电压</th><th align="right">设定负载电流</th><th align="right">实测负载电流</th><th align="right">负载端电压</th><th align="right">显示输出功率</th></tr></thead><tbody><tr><td align="right">11.99 V</td><td align="right">0.200 A</td><td align="right">0.199 A</td><td align="right">3.317 V</td><td align="right">0.66 W</td></tr><tr><td align="right">11.99 V</td><td align="right">0.500 A</td><td align="right">0.498 A</td><td align="right">3.288 V</td><td align="right">1.63 W</td></tr><tr><td align="right">11.99 V</td><td align="right">0.800 A</td><td align="right">0.799 A</td><td align="right">3.253 V</td><td align="right">2.59 W</td></tr></tbody></table><p><img src="/images/posts/lm2596-ams1117-design/3v3-load-800ma.jpg" alt="3.3 V 输出带约 0.8 A 负载，电子负载显示 3.253 V、0.799 A 和 2.59 W"></p><p><em>3.3 V 输出的实际带载现场：输入电源显示 11.99 V、0.45 A，电子负载显示 3.253 V、0.799 A 和 2.59 W。</em></p><p>三个测试点的实际电流均接近设定值。负载从约 0.2 A 增加到约 0.5 A 时，负载端电压下降 29 mV；继续增加到约 0.8 A 时，再下降 35 mV。三个记录点呈现平缓的电压变化。</p><p>在本次最高测试电流 <strong>0.799 A</strong> 下，负载端电压为 <strong>3.253 V</strong>，相对标称 3.3 V 的偏差约为 <strong>−1.42%</strong>，电子负载显示输出功率为 <strong>2.59 W</strong>。</p><h3 id="5-V-输出：0-8-A-带载"><a href="#5-V-输出：0-8-A-带载" class="headerlink" title="5 V 输出：0.8 A 带载"></a>5 V 输出：0.8 A 带载</h3><p>随后将电子负载接到 5 V 输出端，设定电流为 0.8 A，记录如下。</p><table><thead><tr><th>测试项目</th><th align="right">实测读数</th></tr></thead><tbody><tr><td>输入电压</td><td align="right">11.99 V</td></tr><tr><td>输入电流</td><td align="right">0.45 A</td></tr><tr><td>设定负载电流</td><td align="right">0.800 A</td></tr><tr><td>实测负载电流</td><td align="right">0.799 A</td></tr><tr><td>负载端电压</td><td align="right">4.916 V</td></tr><tr><td>电子负载显示功率</td><td align="right">3.92 W</td></tr></tbody></table><p><img src="/images/posts/lm2596-ams1117-design/5v-load-800ma.jpg" alt="5 V 输出带约 0.8 A 负载，电子负载显示 4.916 V、0.799 A 和 3.92 W"></p><p>在约 <strong>0.8 A</strong> 负载下，5 V 输出的负载端电压为 <strong>4.916 V</strong>，相对标称 5 V 的偏差约为 <strong>−1.68%</strong>。两路分别带约 0.8 A 负载时，测得的负载端电压相对各自标称值的偏差均在 <strong>2% 以内</strong>。</p><h3 id="0-5-A-持续运行"><a href="#0-5-A-持续运行" class="headerlink" title="0.5 A 持续运行"></a>0.5 A 持续运行</h3><p>在约 12 V 输入、3.3 V 输出负载设定为 0.5 A 的条件下，进行了 <strong>5 分钟持续带载测试</strong>。该负载点记录的实际电流为 0.498 A，负载端电压为 3.288 V。持续运行 5 分钟后，未感觉到明显发热。</p><h2 id="输出纹波测试"><a href="#输出纹波测试" class="headerlink" title="输出纹波测试"></a>输出纹波测试</h2><p>使用示波器在 3.3 V 输出电容两端测量，实测输出纹波峰峰值约为 <strong>12 mVpp</strong>，约占标称输出电压的 <strong>0.36%</strong>。</p><p>峰峰值表示同一段波形中最高值与最低值之间的差。它描述固定工作状态下输出随时间的波动，与前面改变负载后记录的直流电压变化分别对应不同的供电特性。</p><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>从输入到两路输出，这块板的工作过程可以连起来看：LM2596 通过开关传递能量，电感和电容平滑电流、电压，反馈电阻确定输出目标；AMS1117 再利用较小的压差得到约 3.3 V。PCB 则需要把这些连接落实成合适的功率路径、回流路径和取样路径。</p><p>本次从原理图、参数计算、PCB 制作走到了实物测量，得到以下结果：</p><ul><li>在约 <strong>12 V、24 V、32 V</strong> 三个输入电压点，5 V 空载输出为 <strong>4.96～4.98 V</strong>，3.3 V 空载输出为 <strong>3.32～3.33 V</strong>。</li><li>3.3 V 输出完成了约 <strong>0.2 A、0.5 A、0.8 A</strong> 三个负载点的测试；约 0.8 A 时，负载端电压为 <strong>3.253 V</strong>。</li><li>5 V 输出在约 <strong>0.8 A</strong> 负载下，负载端电压为 <strong>4.916 V</strong>，显示输出功率为 <strong>3.92 W</strong>。</li><li>在 <strong>0.5 A</strong> 负载下持续运行 <strong>5 分钟</strong>，未感觉到明显发热。</li><li>3.3 V 输出实测纹波峰峰值约为 <strong>12 mVpp</strong>。</li></ul><p>对我来说，这块板的价值在于把电源电路的工作原理、元件参数和实际输出联系了起来。后续设计主控扩展板时，这次的电路结构、布局思路和测量记录，都可以作为电源模块设计的参考。</p><h2 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h2><ul><li><a href="https://www.ti.com/lit/ds/symlink/lm2596.pdf">TI：LM2596 数据手册</a></li><li><a href="https://www.ti.com/lit/ug/snvu536/snvu536.pdf">TI：LM2596S-ADJ 评估板说明</a></li><li><a href="https://www.alldatasheet.com/html-pdf/49118/ADMOS/AMS1117/519/4/AMS1117.html">AMS1117 原厂数据手册镜像：应用说明</a></li></ul>]]>
    </content>
    <id>https://www.han.tax/posts/lm2596-ams1117-design/</id>
    <link href="https://www.han.tax/posts/lm2596-ams1117-design/"/>
    <published>2026-09-15T10:16:00.000Z</published>
    <summary>从实验电路的供电需求出发，完成 LM2596＋AMS1117 双路电源板的电路设计、参数计算与 PCB 制作，记录约 12 V、24 V、32 V 输入下的空载输出、两路分别约 0.8 A 带载、0.5 A 持续运行 5 分钟及 12 mVpp 纹波实测。</summary>
    <title>LM2596＋AMS1117 两级降压电源设计</title>
    <updated>2026-09-19T16:00:00.000Z</updated>
  </entry>
  <entry>
    <author>
      <name>硬件小小林</name>
    </author>
    <content>
      <![CDATA[<p>大家好，欢迎来到我的个人技术博客。</p><p>本站依托 OpenAI Agent + Codex 技术辅助从零搭建完成，是我个人专属的技术沉淀、项目复盘、成长记录与经验输出阵地。搭建这个博客的初衷很简单：把零散的学习过程系统化，把踩过的坑记录下来，把积累的技术沉淀输出出去。</p><p>未来本站将长期聚焦嵌入式硬件开发核心赛道，持续输出高质量、可落地、真实项目向的技术内容。</p><h2 id="本站主要内容方向"><a href="#本站主要内容方向" class="headerlink" title="本站主要内容方向"></a>本站主要内容方向</h2><h3 id="1-嵌入式硬件开发实战"><a href="#1-嵌入式硬件开发实战" class="headerlink" title="1. 嵌入式硬件开发实战"></a>1. 嵌入式硬件开发实战</h3><p>STM32、外设驱动、RTOS 实时系统、多任务架构、控制算法、底层逻辑调试等嵌入式核心技术复盘，全部基于真实项目与工程场景。</p><h3 id="2-PCB设计、硬件调试与排坑经验"><a href="#2-PCB设计、硬件调试与排坑经验" class="headerlink" title="2. PCB设计、硬件调试与排坑经验"></a>2. PCB设计、硬件调试与排坑经验</h3><p>原理图绘制、Layout布线规范、阻抗匹配、电源设计、硬件故障排查、焊接调试、量产思维，记录硬件工程师最真实的踩坑与复盘。</p><h3 id="3-学科竞赛完整复盘"><a href="#3-学科竞赛完整复盘" class="headerlink" title="3. 学科竞赛完整复盘"></a>3. 学科竞赛完整复盘</h3><p>电赛、智能车、嵌赛、西门子杯等工科主流竞赛的备赛思路、架构设计、代码逻辑、控参优化、避坑指南、获奖经验总结。</p><h3 id="4-项目实战与技术积累"><a href="#4-项目实战与技术积累" class="headerlink" title="4. 项目实战与技术积累"></a>4. 项目实战与技术积累</h3><p>从零基础入门到进阶工程思维，记录完整的学习路径、项目迭代过程、技术难点拆解、底层逻辑理解，拒绝碎片化水文，只输出可复用、可借鉴的干货内容。</p><h3 id="5-工科学习、成长与就业思考"><a href="#5-工科学习、成长与就业思考" class="headerlink" title="5. 工科学习、成长与就业思考"></a>5. 工科学习、成长与就业思考</h3><p>记录自己在工科学习、技术深耕、竞赛内卷、求职认知、行业趋势中的真实感悟，沉淀属于自己的工程思维与职业认知体系。</p><h2 id="建站初衷与未来展望"><a href="#建站初衷与未来展望" class="headerlink" title="建站初衷与未来展望"></a>建站初衷与未来展望</h2><p>技术的成长，从来不是靠看过多少视频、刷过多少知识点，而是复盘、沉淀、输出、迭代。</p><p>过去的学习大多停留在“输入”，知识零散、容易遗忘、不成体系。搭建这个博客，就是为了倒逼自己：每一次学习、每一次调板、每一次竞赛备赛、每一次踩坑，都要有沉淀、有记录、有输出。</p><p>未来我会保持长期更新，坚持真实、落地、硬核、原创的内容风格。<br>不堆砌理论，不写空话套话，所有内容全部来源于真实项目、真实调试、真实竞赛经历。</p><p>希望通过持续输出，构建属于自己的技术知识库与成长体系，让每一步学习都有痕迹，每一次努力都能复利。<br>慢慢积累、稳步向上，为未来的技术深耕、项目进阶、学业提升、就业发展铺好每一级台阶。</p><p>也希望我的分享，能够帮到正在嵌入式路上努力的同行者，互相成长、共同进步。</p>]]>
    </content>
    <id>https://www.han.tax/posts/welcome-and-roadmap/</id>
    <link href="https://www.han.tax/posts/welcome-and-roadmap/"/>
    <published>2026-09-09T14:34:38.000Z</published>
    <summary>介绍硬件小小林建立个人技术博客的初衷、主要内容方向与未来更新规划，内容涵盖嵌入式硬件、PCB 设计、竞赛复盘、项目实践与工科成长。</summary>
    <title>开篇寄语｜本站介绍与未来内容规划</title>
    <updated>2026-09-09T14:34:38.000Z</updated>
  </entry>
</feed>
