第三章 电源系统设计:心脏起搏器的能量心脏

电源系统,说白了就是起搏器的能量心脏。我做了这么多年医疗电子,最深的体会就是:起搏器可以死机,但不能没电。死机了还能重启,没电了就是真没电了。所以电源设计这块,我向来是把它当成整个系统的命根子来对待的。

这一章我们聊聊四个核心问题:电池怎么选、电压怎么升、LDO怎么配、电量怎么看。嗯,咱们一个一个来。

3.1 电池选型:为什么是锂碘电池?

你可能要问:市面上电池那么多,为什么起搏器偏偏选中了锂碘电池?

我当年刚入行时也好奇,后来拆了几个老款起搏器才明白——这玩意儿简直就是为植入式设备量身定做的。

锂碘电池的核心优势:

  • 能量密度高:体积小,容量大。一个起搏器电池也就几立方厘米,却能撑8-10年。
  • 自放电率极低:每年不到1%。我见过放了5年的库存电池,拿出来测电压,基本没掉。
  • 放电曲线平坦:大部分寿命期内电压稳定在2.8V左右,直到寿命末期才快速下降。
  • 密封性好:全固态结构,没有漏液风险。这个在体内太重要了。

关键参数对比:

参数 锂碘电池 锂锰电池 锂亚电池
标称电压 2.8V 3.0V 3.6V
能量密度 ~900 Wh/L ~700 Wh/L ~1100 Wh/L
自放电率 <1%/年 ~2%/年 ~1%/年
安全性 极高 中等
适用场景 起搏器 体外设备 工业仪表

个人经验:我曾经在一个项目中尝试用锂锰电池替代锂碘电池,想着成本能降下来。结果EMC测试时发现,锂锰电池在高频干扰下电压波动比锂碘电池大得多。嗯,从那以后我再也不敢在植入式设备上乱换电池类型了。

3.2 DC-DC升压转换器设计

锂碘电池标称2.8V,但起搏器内部电路需要3.3V甚至5V。怎么办?升压。

DC-DC升压转换器,说白了就是把低电压变成高电压。但起搏器里用的升压电路,跟普通消费电子完全不是一个路数。

设计要求:

  • 效率优先:效率每提高1%,电池寿命就能延长几个月。我一般要求效率不低于85%。
  • 低静态电流:空载时电流要控制在微安级。你想想看,起搏器大部分时间都在待机。
  • 输出纹波小:纹波大了会影响起搏脉冲的精度。我通常要求纹波<10mV。

典型电路拓扑:

// 升压转换器核心参数计算
// 输入:2.8V (锂碘电池)
// 输出:3.3V
// 负载电流:10mA

// 占空比计算
D = 1 - (Vin / Vout)
D = 1 - (2.8 / 3.3) = 0.152 = 15.2%

// 电感选择
L = (Vin * D) / (fsw * ΔIL)
// 假设 fsw = 1MHz, ΔIL = 20% * Iout
L = (2.8 * 0.152) / (1e6 * 0.002) = 212.8 μH
// 实际选型:220μH

避坑指南:我曾经在选电感时贪图小体积,用了0805封装的贴片电感。结果EMC测试时发现,电感饱和导致效率骤降,电池寿命直接少了两年。后来我学乖了,起搏器里的电感至少要用绕线式,饱和电流要留50%余量。

3.3 低功耗LDO选型

DC-DC升压之后,电压还是不够干净。这时候就需要LDO(低压差线性稳压器)来帮忙了。

LDO的作用,说白了就是「洗电压」——把DC-DC输出的纹波和噪声洗掉,给敏感电路提供干净的电源。

选型要点:

  • 压差要小:Dropout Voltage < 200mV。这样即使电池电压下降,LDO还能正常工作。
  • 静态电流要低:Iq < 1μA。我见过有些LDO静态电流做到0.5μA,那才是起搏器该用的。
  • PSRR要高:电源抑制比至少60dB@1kHz。这样才能有效滤除DC-DC的开关噪声。
  • 输出噪声要低:RMS噪声 < 10μV。起搏器的感知电路对噪声极其敏感。

推荐型号参考:

型号 压差 静态电流 PSRR@1kHz 输出噪声
TPS7A02 180mV 0.5μA 65dB 8μVrms
MAX8881 160mV 0.8μA 60dB 10μVrms
ADP160 200mV 0.6μA 62dB 9μVrms

个人习惯:我一般会在LDO输出端并联两个电容——一个10μF的钽电容负责低频滤波,一个0.1μF的陶瓷电容负责高频去耦。这样组合下来,电源噪声基本能控制在5μV以内。

3.4 电池电量监测

起搏器最怕什么?突然没电。所以电池电量监测是救命的功能。

但锂碘电池有个特点:放电曲线平坦,直到寿命末期才快速下降。这就意味着,你不能简单地用电压来估算电量。

常用的监测方法:

  • 电压监测法:简单但不准。电池电压在大部分寿命期内都在2.8V左右,直到最后几个月才降到2.4V以下。
  • 库仑计法:通过积分电流来估算剩余电量。精度高,但需要高精度ADC和实时计算。
  • 阻抗跟踪法:通过测量电池内阻变化来估算寿命。锂碘电池内阻会随着放电而增大。

我推荐的做法:

// 电池电量监测算法(简化版)
// 结合电压法和库仑计法

// 1. 定期测量电池电压
uint16_t read_battery_voltage(void) {
    // 使用ADC读取电池电压
    // 注意:需要分压电阻,因为ADC输入范围通常为0-3.3V
    uint16_t adc_value = adc_read(ADC_CH_BATTERY);
    // 转换公式:Vbat = adc_value * 3.3 / 4096 * 分压比
    return (uint16_t)(adc_value * 3.3 / 4096 * 2);
}

// 2. 累计放电容量
static uint32_t total_discharge_mAh = 0;
void update_battery_capacity(uint16_t current_mA, uint16_t interval_ms) {
    // 累计放电容量 = 电流 * 时间
    total_discharge_mAh += (current_mA * interval_ms) / 3600000;
}

// 3. 综合判断电池状态
uint8_t get_battery_status(void) {
    uint16_t voltage = read_battery_voltage();
    uint32_t capacity = total_discharge_mAh;
    
    // 电池标称容量:1000mAh
    // 电压低于2.4V或累计放电超过900mAh,视为电量不足
    if (voltage < 2400 || capacity > 900) {
        return BATTERY_LOW;
    } else if (voltage < 2600 || capacity > 800) {
        return BATTERY_WARNING;
    } else {
        return BATTERY_OK;
    }
}

避坑指南:我曾经遇到过一个问题——电池电压监测值总是跳变。查了半天,发现是ADC采样时机不对。起搏器在发放起搏脉冲时,电池电压会瞬间跌落。如果在那个时刻采样,读到的电压值会偏低。后来我改成在起搏脉冲结束后10ms再采样,问题就解决了。

嗯,电源系统设计这块,说白了就是四个字:稳、准、省、久。稳是电压要稳,准是电量要准,省是功耗要省,久是寿命要久。把这四个字吃透了,起搏器的电源设计就成功了一大半。

下一章我们聊聊起搏脉冲生成电路,那可是真正「发号施令」的核心模块。