项目中遇到的知识点

📅 2026/8/27 8:44:19
项目中遇到的知识点
记录项目学习过程中遇到的一些电路一、NTC测温电路NTC-中文热敏电阻即负温度系数(Negative Temperature Coefficient)热敏电阻一类电阻值随温度增大而减小的一种热传感器电阻。一、工作原理NTC热敏电阻的工作原理基于材料的电阻随温度变化而变化的特性。它是以锰、钴、镍和铜等金属氧化物为主要材料采用陶瓷工艺制造而成的。这些金属氧化物材料都具有半导体性质在导电方式上完全类似锗、硅等半导体材料。温度低时这些氧化物材料的载流子电子和空穴数目少所以其电阻值较高随着温度的升高载流子数目增加所以电阻值降低。NTC热敏电阻器在室温下的变化范围在100---1000000欧姆温度系数-2%-6.5%。NTC热敏电阻器可广泛用于测温、控温、温度补偿等方面。二、主要特性简单了解灵敏度高NTC热敏电阻对温度变化非常敏感可以检测到微小的温度变化。稳定性好在适当的使用条件下NTC热敏电阻的电阻值随时间的变化非常小具有良好的长期稳定性。体积小NTC热敏电阻通常非常小可以集成在各种设备中。响应速度快由于其温度敏感性高NTC热敏电阻能够迅速反映温度的变化。可调性通过改变材料的掺杂水平和结构可以调整NTC热敏电阻的B常数和电阻-温度特性。成本效益与其他类型的传感器相比NTC热敏电阻通常成本较低且易于制造和使用。三、选型要点—需要思考在选择 NTC 热敏电阻时需要考虑以下因素电阻值范围根据应用需求选择合适的电阻值范围 10k-100k。精度根据测量或控制的精度要求选择合适的 NTC 热敏电阻。温度范围确保所选的 NTC 热敏电阻能够在所需的工作温度范围内正常工作。封装形式根据安装环境和空间要求选择合适的封装形式。综上所述NTC 热敏电阻是一种性能优异、应用广泛的温度传感器元件。在选择和使用时需要根据具体的应用需求和工作环境进行综合考虑。四、电路典型设计。常用的热敏电阻有10k,100k阻值。 所谓的10k100k是指该热敏电阻在摄氏25度的时候所对应的阻值。 还有一个重要的参数就是热敏电阻的B值这个B值网上有很多资料和解读其实可以把它理解成是该热敏电阻阻值随温度的变化率他对温度是越来越灵敏还是越迟钝。 简单的理解成B值越大对温度越灵敏可测的的温度精度更小。VCC 3.3伏有时候也用2.5伏这个就看我们这边的模拟供电电源是多少就它的输入电压范围是多少来选择即要根据MCU的ADC模拟供电、ADC允许的输入电压上限来决定。先说ADC的基本规则 MCU内部ADC模块一般有一个模拟参考电压也常直接用模拟供电电压ADC能识别的最大输入电压不能超过这个电压。 比如很多单片机模拟电源是3.3V → ADC最大可采集电压就是3.3VNTC分压就用3.3V供电模拟电源是2.5V → ADC最大可采集电压就是2.5VNTC分压就改用2.5V供电。 如果分压出来的电压超过ADC能承受的上限会损坏芯片同时采样数据直接失效。为什么不能随便选电压 NTC分压输出的A点电压最高就是供电电压Rt无穷大时最低接近0V。 这个输出电压必须落在ADC的有效输入区间内。 举例子如果MCU模拟基准只有2.5V你却给分压电路接3.3V低温时NTC阻值很大分压输出很可能超过2.5VADC读出来的值就不准甚至异常。简单总结分压电源 和ADC模拟供电/参考电压保持一致保证分压输出电压不会超出ADC的可采集范围。至于如何计算出此时电路的温度整体流程是ADC采集电压 → 算出当前NTC阻值Rt → 通过B值公式或查表换算温度1、用分压公式算出Rt 电路是固定电阻R1和NTCRt串联分压供电VCCA点电压Va 文字公式Va Vcc * Rt / (R1 Rt) 变形求出Rt 文字公式Rt R1 * Va / (Vcc - Va) Va就是MCU ADC采样换算得到的电压2、用NTC B值公式计算温度最常用 NTC的核心计算公式B值公式1/T 1/T25 (1/B) * ln(Rt/R25)参数说明T目标温度单位开尔文K摄氏温度t T - 273.15T2525℃对应的开尔文温度T2525273.15298.15KR25NTC在25℃时标称阻值比如10kΩBNTC的B常数常见3435、3950Rt刚才通过分压算出来的实时热敏电阻阻值3、第二种方案查表法工程更常用 厂商会提供NTC完整的电阻-温度对照表R-T表程序里把表格存到数组。算出Rt之后直接在表里查找匹配的阻值插值得到温度精度更高避开B值公式本身的误差。举个简单例子 条件VCC3.3VR110kNTC是10k25℃、B3950 假设ADC读到Va1.65V 算RtRt 10k * 1.65 / (3.3 - 1.65) 10kΩ 代入B公式算出T298.15K → 25℃和预期一致补充小坑 B值公式只是近似模型只在一定温度区间精度不错如果测温范围宽、要求高精度优先用R-T查表。上图为本项目的NTC温度检测电路二、电流防倒灌电路什么是电流倒灌电流倒灌正如字面意思一样就是电流从负载或者次级电路反向流入电源初级电路或者其他不应该受电的部分。很多电路都可能存在这种反向电流的情况。比如最常见的电池充电充电完成之后如果没有断开连接电池可能会向充电器反向充电。还有如果系统同时连接了主电源或者备用电池当主电源断电或者电压低于电池电压时电池的电流可能反向流入主电源电路。此外电机、电感等感性负载断电瞬间会产生反向电动势也可能产生反向电流。根据电路中的电流大小、效率、成本我们有三种常见防倒灌电路我们以移动设备为例现在移动设备支持多种电源供电如上图。第一种情况电源适配器供电时可以使用防反接二极管这是电路最简单、性价比最高的方案。电路的原理是这样的电源适配器独立 5 伏输入到 J3经过 0Ω保护电阻 R13点亮 LED 指示灯 D4然后经过 10μF 陶瓷滤波电容 C5降低电源纹波后经过防反接二极管到达 10μF 滤波电容 C6 后为后端的负载供电。当负载端产生电流以后二极管截止不导通起到防倒灌的作用。这种方案的缺点是二极管的压降大、电流大导致发热增加最后呢会导致产品的温度升高从而致使产品不稳定。第二种情况呢是使用 Type C 供电我们可以使用 MOS 管作为电子开关通过控制 MOS 管的导通状态从而实现阻断反向电流。具体的电路呢是这样的Type C 独立 5 伏输入经过 PMOS 管 AO3401A此时电源适配器没有接入所以 A 点为0V经过R2的1k电阻接到Q1的栅极为了确保Q1在0V时候稳定导通还增加了电阻R1的10k电阻拉到地这时候Q1到达10UF滤波电容后为后端负载供电。如果后级负载产生电流之后那么 Q1 截止就没有电流流过 Q1 了。这个方案的优点是压降低、内阻低、发热小近似理想二极管性价比也很高。但外围电路相较于二极管电路要复杂得多。第三种情况呢是采用电池独立供电。我们来看一下电路原理。电池电源 4.2 伏连接 U1 理想二极管 LM66100 DCK 输入引脚。由于 VOUT 输出受控于 CE 使能引脚当 CE 引脚电压高于输入电压时LM66100 内部的 PMOS 截止关闭输出。当 CE 引脚电压比较低时内部的 PMOS 导通输出。那我们来看一下CE 引脚连接 1K 电阻 R4连接到 VOUT 端的 C 点。稳压二极管 D2 保护引脚 CE不被引入高压或者静电打坏。其他两组电源适配器和 Type C 没有接入所以 C 点电位为 0 伏。这样 CE 为 0 伏LM66100 就会工作输出输出电压经过 10 微法电容 C2 二次滤波为后端的负载供电。LM66100 还具有反极性保护 RPP 的功能。该功能可以保护器件不受误接线输入的影响例如电池装反。像 LM66100 DCK 这样的理想二极管有很多比如 ADI 的 MAX40200、安森美的 NCV68061 等等。使用理想二极管的方案的优点是保护全面、压降低、内阻低、发热小就是呢价格稍微贵一点。刚刚我们分析的是三种供电单独接入时的情况那当三种供电同时接入时如何能够做到防倒灌呢这里我们设计的优先级依次是电源适配器、Type C 输入、电池输入。为什么这样设计我们来分析一下。由于二极管导通后存在压降电源适配器到防倒灌第一输出到负载后级电路这个时候 A 点的电位是 4.7 伏通过电阻 R2拉高Q1的 VGS 电压防倒灌的 PMOS 截止断开 Type C 输出电源适配器输入电压无法流进 Type C。由于输出电源适配器存在 4.7 伏的电位。那么此时 C 点的电位也是 4.7 伏。LM66100 BCK 输出受控于 CE 使能引脚CE 引脚通过电阻 R4 连接到 VOUT 端的 C 点C 点的电压高于电池的电压所以 LM66100 BCK 内部的 PMOS 是截止的不输出。那么当前电源适配器就为后级的负载供电。当 Type C 和电池接入这个时候 A 点电位 0 伏通过电阻 R2 拉低 Q1 的 VGS 电压反倒灌的 PMOS 导通Type C 输出为由于 type c 输出 5 伏电压存在所以此时 c 点电位也是 5 伏LM66100BCK 输出受控于 CE使能引脚 CE 引脚通过电阻 R4 连接到 v out 端的 c 点。CE 为 5 伏的时候内部 PMOS 截止不输出所以这个时候是由 type c 为后级的负载供电。接下来看下面这个电路先来看防倒灌。既然是倒灌那就说明 VCC_OUT 它的电压是比 VCC_IN 的大。刚开始电路正常工作的时候VCC_OUT 没有电压为 0VCC_IN 输入到达第一个节点此时 E1的电位等于 VCC_INQ16.1 MOS 管打开那么 C1 的电位也近似等于 VCC_IN而 C1 又连接了 B那么 B 的电位也近似等于 VCC_IN。VCC_IN 除了输入到 Q16.1还会通过 P MOS 管的体二极管。到达 Q16.2 的 E2那么此时 E2 的电位接近 VCC_IN 减去一个二极管的压降也是接近 VCC_IN。Q16.2 B 电位和 E2 电位接近那么 Q16.2 截止无法导通。 C2 的电位会被 R30 下拉到地那么 G 的电位就为 0G 的电位肯定小于 S那么 Q15 MOS 管导通VCC_IN 输出到 VCC_OUT。如果此时负载倒灌电流VCC_OUT 电压就大于 VCC_IN。根据前面的分析我们可以知道。既然大于那么此时 E2 就大于 B那么 Q16.2 就会导通C2 的电位就会近似等于 E2即 G 的电位与 S 的电位接近不满足 Q15 MOS 管的导通条件。那么我们接下来分析一下防反接。既然反接那 VCC_IN 的电位为 0GND 的电位变为比如说输入 12 伏那 GND 的电位就变为 12 伏。那我们可以很轻松的就知道Q16.1 MOS 管肯定是截止的因为 E1 电位最小而且我们也可以知道由于反接。此时没有电压输出那么VCC_OUT 接近 0 伏E2 接近 0 伏Q16.2 也是不满足导通条件的即 Q16.2 也截止。那么此时 G 点的电位就会被拉到 12 伏。 Q15 MOS 管不会满足 G 要小于 S即满足 VGS 小于 VGSTH 的导通条件即 Q15 截止保护了输入电源。D5电源总线 IN_VBUS 的过压防护保护后级负载应对持续或者幅度较大的过压D6尖峰保护针对微小静电、窄脉冲尖峰把高压电荷通过 R41 泄放到地三、输出泄放电路首先看 U1 这个模块它的输出引脚标注了 MCU-CTRL显然这是单片机的控制引脚输出状态只有高电平或低电平。我们先看下当 MCU-CTRL 输出高电平时电路的工作情况。当 MCU-CTRL 输出高电平时电流先顺着电阻 R1 流向三极管 Q1 的基极同时还有另一路电流经电阻 R1 流过二极管来到三极管 Q1 的发射极。很明显三极管 Q1 的发射极到基极间的电压差等于 0 伏严格说是三极管 Q1 的发射极电压小于基极电压即 Ube小于 0也会小于 Ube(on)所以此时 Q1 处于截止状态没关系电流就像流水一样这两条路不通它会自动寻找别的通路。于是电流来到电阻 R3并在 TP1 处产生一个电压。按常规单片机的输出电压来看这点不是接近 3.3 伏就是 5 伏。TP1 点也是 MOS 管 U3 的栅极。此时 MOS 管 U3 的源极接地于是可得出 MOS 管栅极到源极间的电压差 UGS 等于 3.3 伏或 5 伏。随即 MOS 管 U3 导通电流顺着电阻 R4、MOS 管 U3 到 D 形成回路。我们再来看一下当 MCU 更控制从高电平跳到低电平时的电路工作情况吧。当 MCU 更控制从高电平跳到低电平时TP1 点电压还是会等于 3.3 伏或5V。奇怪吧这是因为 MOS 管它的栅极到源极之间有一个寄生电容而且这个电容是 MOS 管的制作工艺造成的而且很难消除。它的容值从几 pF 到几 nF 都有可能。所以刚才 MCU 更控制输出高电平时其实也在对这个寄生电容 Cgs 充电。现在 MCU 更控制从高电平跳到低电平这个寄生电容 Cgs就要放电。Cgs 放电主要有四个方向分别是1. 直接对 MOS 管 U3 的栅极放电这会导致 MOS 管的关闭时间延长可能会影响设备其他元器件的工作寿命。2. 对电阻 R3 放电不过 R3 的阻值比较大所以这路放电的时间会比较长还是会造成 MOS 管的关断延缓。3. 通过二极管 U2 放电不过二极管有反向截止特性所以这条放电回路不通。4. 通过三极管 Q1 放电此时 Q1 的基极电压等于 0 伏所以此时三极管 Q1 处于导通状态于是电流流过三极管 Q1 后再经电阻 R2 对地进行放电而且通过这条路径放电的速度很快。根据欧姆定律 IU/R 可知电压不变的情况下电阻越小电流越大。可以想象假如流过电阻 R3 的电流通道是一条小溪那么流经电阻 R2 的放电通道就像一条大河。所以这个电路的主要功能便是快速放电。我们再来看下各元器件的作用。首先是电阻 R1这是一个限流电阻主要是让流过三极管 Q1 的基极电流不至于太大。二极管 U2 是防电流倒灌防止造成单片机的损坏。三极管 Q1 起到快速泄放作用。R2 是限流让流过 Q1 的电流不至于太大。R3 是下拉电阻当单片机引脚处于高阻状态时确保 MOS 管 U3 的栅极电压为低电平。MOS 管 U3 是开关作用主要控制给负载上电。R4 是限流电阻。上图为本项目的输出泄放电路,用P_EN来控制导通和关断同时P_EN还接到了MX5050防反接防倒灌芯片也就是说P_EN 这一根线同时完成切断输出和给输出电容放电两件事天然互锁——输出导通时绝不泄放输出断开时才泄放。软件里什么时候开/关源码在usr_cfg.h里定义了控制宏#define CAP_DISCHARGE_ON 1 #define CAP_DISCHARGE_OFF 0 #define CAP_DISCHARGE_CTL_PORT (GPIO_PORT_A) #define CAP_DISCHARGE_CTL_PIN (GPIO_PIN_12) #define CAP_DISCHARGE_CTL(level) \ ((level) ? GPIO_SetPins(CAP_DISCHARGE_CTL_PORT, CAP_DISCHARGE_CTL_PIN) \ : GPIO_ResetPins(CAP_DISCHARGE_CTL_PORT, CAP_DISCHARGE_CTL_PIN))CAP_DISCHARGE_ON就是拉高 PA12开启泄放CAP_DISCHARGE_OFF就是拉低 PA12关闭泄放。1. 初始化main.c:279(void)GPIO_Init(CAP_DISCHARGE_CTL_PORT, CAP_DISCHARGE_CTL_PIN, stcGpioInit);把 PA12 配置成输出默认低电平上电瞬间 Q8 截止。2. 启动时先开泄放main.c:338CAP_DISCHARGE_CTL(CAP_DISCHARGE_ON);为什么上电先开泄放 因为输出电容可能还残留着上一次关机时的电压。开机后先把 PV_OUT 放到 0V这样后续打开输出时软启动从 0V 开始避免输出过冲。3. 打开输出前必须先关泄放usr_input_handle.c:34单击中心键打开输出main_dat.ps_out PS_OUT_ENABLE; CAP_DISCHARGE_CTL(CAP_DISCHARGE_OFF);校准模式自动开启输出时也是同样的操作usr_input_handle.c:117。原因输出导通时如果泄放还开着输出电流会被 R50/R51 分流输出电压也建不起来还会白白发热。4. 关闭输出后不是立刻泄放而是等100msusr_input_handle.c:50-58单击中心键关闭输出main_dat.ps_out PS_OUT_DISABLE; main_dat.ps_delay_to_close_hrpwm 100u; HRPWM_IDLE_EnterImmediate(...); // 立刻停止四开关PWM注意这里没有直接CAP_DISCHARGE_CTL(CAP_DISCHARGE_ON)而是设了一个100ms的延时计数器。然后在main.c:438-443if (main_dat.ps_delay_to_close_hrpwm) { main_dat.ps_delay_to_close_hrpwm--; if (main_dat.ps_delay_to_close_hrpwm 0) { DDL_Printf(HRPWM-ENTRY-IDLE\n); CAP_DISCHARGE_CTL(CAP_DISCHARGE_ON); } }为什么要等100ms 因为HRPWM_IDLE_EnterImmediate只是让PWM进入IDLEH桥的四个MOS管需要一点时间才能真正关断。如果PWM还没停稳就打开泄放输出电容会通过Q8→R50/R51→地放电但此时H桥开关管可能还没完全关断可能形成回路导致电流冲击甚至损坏MOS。等100ms确保HRPWM彻底IDLE、开关管都关断后再开泄放就安全了。5. 过流保护时同样走这套流程main.c:404-413if (get_adc_value_by_rec_buf(io_adc_buf, ...) main_dat.buck_boost.ref_io) { main_dat.ps_out PS_OUT_DISABLE; main_dat.ps_delay_to_close_hrpwm 100u; HRPWM_IDLE_EnterImmediate(...); usr_uart_send_a_msg(OUTPUT_STATE_CMD, OCP-OFF); }过流触发OCP后先关输出、停PWM、延时100ms然后开启泄放把输出电容上的残余电荷放掉。二、设计要点总结设计点原因用NMOS做开关而不是直接并联电阻正常输出时Q8截止泄放电阻不耗电不影响效率P_EN同时控制MX5050L和Q8输出导通和泄放天然互锁不会同时发生上电先开泄放清空输出电容残余电压防止下一次开机过冲关输出后延迟100ms再泄放等H桥开关管彻底关断避免放电冲击双电阻并联两个1kΩ/1W并联成0.5kΩ分担功率PV_OUT20V时约40mA/0.8W两颗1W电阻有余量