第三节 发射电路设计(一):高压脉冲发生器原理、MOSFET半桥/全桥拓扑、死区时间控制

各位同学,咱们今天聊聊发射电路里最核心的部分——高压脉冲发生器。说实话,彩超的前端模拟信号链里,发射电路是第一个关口,也是最容易出问题的地方。我刚开始做超声系统那会儿,就因为在发射电路上栽过跟头,所以今天这部分内容,我会把压箱底的经验都掏出来。

一、高压脉冲发生器原理

说白了,高压脉冲发生器就是要把直流高压电,变成一串特定频率、特定幅度的脉冲信号,去激励超声探头里的压电晶片。晶片一振动,超声波就发射出去了。

它的基本原理其实不复杂。你想想看,我们需要的是一串正负交替的高压脉冲,这样才能让晶片产生足够大的振动幅度。那怎么实现呢?

核心思路就是:用高压电源给电容充电,然后通过开关管快速放电,在负载上形成脉冲。这个开关管,通常就是MOSFET或者IGBT。我个人习惯用MOSFET,因为它的开关速度更快,适合做高频超声。

关键参数:

  • 脉冲幅度:通常±50V到±200V,取决于探头类型
  • 脉冲宽度:一般在几十纳秒到几百纳秒
  • 重复频率:1MHz到20MHz,对应不同的成像深度
  • 上升/下降时间:越短越好,典型值<10ns

我在项目中遇到过一个问题:脉冲幅度上不去,总是比设计值低20%。查了半天,发现是高压电源的储能电容选小了,放电瞬间电压跌落严重。后来把电容容量翻了一倍,问题就解决了。嗯,这里要注意,储能电容的ESR也很关键,一定要选低ESR的型号。

二、MOSFET半桥/全桥拓扑

讲完原理,咱们看看具体怎么搭电路。常用的拓扑有两种:半桥和全桥。

2.1 半桥拓扑

半桥结构,就是两个MOSFET串联,中间点接负载。一个管子上管,一个管子下管,交替导通。这样在负载上就能得到正负交替的脉冲。

它的优点是:

  • 元件少,成本低
  • 驱动电路简单
  • 适合做单极性脉冲

缺点也很明显:

  • 电压利用率只有电源电压的一半
  • 需要额外的负压电源

我建议,如果做的是便携式彩超,对成本敏感,半桥是个不错的选择。但要注意,半桥的上下管导通时间必须严格错开,否则会直通短路。这个我后面会详细讲。

2.2 全桥拓扑

全桥结构,就是四个MOSFET组成一个H桥。负载接在桥臂中间。通过控制四个管的导通组合,可以在负载上得到正、负、零三种状态。

全桥的优点:

  • 电压利用率高,可以用较低的电源电压得到同样的脉冲幅度
  • 不需要负压电源
  • 波形控制更灵活

缺点:

  • 元件多,成本高
  • 驱动电路复杂
  • 死区时间控制要求更高

我的经验:做高端彩超,我一般用全桥。虽然成本高一点,但波形质量好,而且可以方便地实现脉冲宽度调制(PWM),对提高图像质量有帮助。不过,如果你做的是低成本方案,半桥也够用,关键是要把死区时间调好。

三、死区时间控制

死区时间,这是发射电路设计里最容易踩坑的地方。什么叫死区时间?就是上下两个MOSFET同时关断的那段时间。

为什么要加死区时间?

你想想看,MOSFET的开关不是瞬间完成的。如果上管还没完全关断,下管就导通了,那就会形成直通短路。电流瞬间飙升,轻则烧管子,重则炸电容。我曾经就因为这个原因,烧掉过一块价值不菲的发射板,那叫一个心疼。

死区时间的设置原则:

  • 不能太短:太短了容易直通
  • 不能太长:太长了影响波形质量,降低效率
  • 典型值:10ns到50ns,具体要看MOSFET的开关速度

警告:死区时间不是固定不变的!它会随着温度、电压、负载变化而变化。我建议在设计中留出余量,至少比理论值大20%。另外,一定要用示波器实测,不要只看仿真结果。

怎么实现死区时间控制?

常用的方法有两种:

  1. 硬件延时:用RC延时电路或者专门的死区时间芯片。优点是简单可靠,缺点是不灵活。
  2. 软件控制:用FPGA或者MCU的PWM模块,通过编程设置死区时间。优点是灵活,可以动态调整,缺点是需要编程能力。

我个人更倾向于用FPGA做死区控制。为什么呢?因为超声系统的工作模式经常变化,比如B模式、M模式、多普勒模式,需要的脉冲参数都不一样。用FPGA可以随时调整死区时间,适应不同模式。

下面给一个简单的FPGA死区控制代码示例:

// 死区时间控制模块
module deadtime_ctrl (
    input  clk,          // 系统时钟
    input  rst_n,        // 复位
    input  pwm_in,       // PWM输入
    output reg pwm_high, // 上管驱动
    output reg pwm_low   // 下管驱动
);

parameter DEADTIME = 4; // 死区时间,单位:时钟周期

reg [3:0] delay_cnt;
reg pwm_delay;

always @(posedge clk or negedge rst_n) begin
    if (!rst_n) begin
        pwm_delay <= 0;
        delay_cnt <= 0;
    end else begin
        // 输入信号延迟
        pwm_delay <= pwm_in;
        
        // 死区计数器
        if (pwm_in != pwm_delay) begin
            delay_cnt <= DEADTIME;
        end else if (delay_cnt > 0) begin
            delay_cnt <= delay_cnt - 1;
        end
    end
end

// 输出控制
always @(*) begin
    if (delay_cnt > 0) begin
        // 死区时间内,两个管都关断
        pwm_high = 0;
        pwm_low  = 0;
    end else begin
        // 正常输出
        pwm_high = pwm_in;
        pwm_low  = ~pwm_in;
    end
end

endmodule

这段代码很简单,但很实用。它通过一个计数器实现了死区时间控制。当PWM信号变化时,计数器开始倒计时,在倒计时结束前,两个管都关断。倒计时结束后,才允许正常输出。

小技巧:实际调试时,我习惯先用一个很长的死区时间(比如100ns),确保不会直通。然后慢慢减小,同时用示波器观察电流波形。当电流波形出现尖峰时,说明死区时间太小了,再往回加一点。这样调出来的死区时间既安全又高效。

好了,今天的内容就到这里。发射电路设计是个细致活,尤其是死区时间控制,一定要反复验证。下一节我会讲MOSFET的驱动电路设计,包括栅极驱动电阻的选择、驱动芯片的选型等,到时候咱们再聊。

记住一句话:发射电路设计得好,超声图像就成功了一半。别嫌麻烦,多花点时间在这上面,绝对值得。