3. 探测器驱动电路设计:偏置电压生成、TEC温控电路、读出电路(ROIC)接口时序

探测器驱动电路,说白了就是热成像相机的「心脏起搏器」。没有它,探测器就是一坨死硅。我这些年调试过的探测器不下十种,每次拿到新片子,第一件事就是看驱动电路——偏压稳不稳、温控跟不跟得上、时序对不对。这三样但凡有一个出问题,图像直接报废。

咱们这一节,就把这三块掰开揉碎了讲。我会结合自己踩过的坑,给你一套能落地的设计思路。

3.1 偏置电压生成:探测器的「生命线」

非制冷焦平面探测器(比如氧化钒或非晶硅),内部有成千上万个微桥像素。每个像素本质上是一个热敏电阻。要让这些电阻正常工作,必须施加精确的偏置电压。

偏置电压的核心要求:

  • 极低噪声:探测器输出信号本身就在微伏级别,偏压上的纹波会直接耦合进图像。我见过一个项目,图像上全是横条纹,查了三天,最后发现是偏压的100Hz工频纹波在作怪。
  • 高精度:通常要求误差在±1mV以内。不同探测器的偏压值不同,常见的有VOS(像元偏置)、VREF(参考电压)、VDET(探测器电源)等。
  • 低温漂:探测器工作时温度会变化,偏压不能跟着飘。温漂系数最好控制在10ppm/℃以内。

我常用的偏压生成方案:

  1. 基准源 + 低噪声LDO:先用高精度基准(比如ADR4550,0.02%精度,1ppm温漂)产生一个稳定电压,再用超低噪声LDO(比如LT3045,噪声低至0.8μVrms)做二次稳压。这个组合最稳妥,我90%的项目都用它。
  2. 基准源 + 精密运放缓冲:如果需要的偏压不是标准值,可以用基准源加运放搭建一个可调电路。运放必须选低噪声、低失调的,比如OPA2277或ADA4077。
  3. DAC + 运放:需要数字可调偏压时,用精密DAC(比如DAC8562,16位)配合运放输出。注意DAC的参考源也要用高精度基准。

避坑指南:

我曾经在一个项目中,为了省成本,用普通LDO直接给探测器供电。结果图像底噪比正常值大了3倍。后来换成LT3045,噪声立刻降下来。记住:偏压的噪声,就是图像的底噪。这个钱不能省。

偏压滤波设计:

光有低噪声芯片还不够,外围滤波同样重要。我习惯在偏压输出端加两级滤波:

  • 第一级:RC低通滤波,截止频率设在1Hz左右,用大电容(100μF钽电容)配合小电阻(10Ω)。
  • 第二级:LC滤波,用铁氧体磁珠加10μF陶瓷电容,专门滤除高频噪声。

嗯,这里要注意:电容的ESR不能太大,否则会影响瞬态响应。我一般用钽电容加陶瓷电容并联,取长补短。

3.2 TEC温控电路:让探测器「恒温」工作

非制冷探测器虽然叫「非制冷」,但它对温度极其敏感。氧化钒探测器的温度系数大约是-2%/℃。什么意思?温度变化1℃,输出信号变化2%。你想想看,环境温度从20℃变到40℃,图像早就漂到不知道哪里去了。

TEC温控的核心目标:将探测器温度稳定在某个设定点(通常是室温附近,比如30℃),精度要求±0.01℃甚至更高。

TEC驱动电路设计要点:

  1. H桥驱动:TEC需要双向电流控制(制冷或加热),H桥是标准方案。我常用DRV8837或TPS63020这类专用TEC驱动芯片,集成度高,外围简单。
  2. PID控制器:纯硬件PID或者MCU实现数字PID。我个人习惯用数字PID,灵活性高。比例系数(Kp)决定了响应速度,积分系数(Ki)消除稳态误差,微分系数(Kd)抑制过冲。
  3. 温度传感器:探测器内部通常集成有测温二极管或热敏电阻。我用的是NTC热敏电阻,精度高,成本低。注意NTC需要做线性化校准,否则控温不准。

我的经验:

PID参数整定有个笨办法:先把Ki和Kd设为0,只调Kp,让温度在设定点附近振荡。然后慢慢增加Ki,消除振荡。最后加一点点Kd,让响应更快。这个过程我一般要调半天,但一旦调好,后面就一劳永逸了。

TEC温控的常见问题:

  • 振荡:PID参数没调好,温度来回跳。解决办法是减小Kp或增加Kd。
  • 过冲:启动时温度冲过头。可以在软件里加缓启动,让目标温度逐步逼近。
  • 功耗过大:TEC效率不高,驱动电流大了会发热。我一般限制最大电流不超过TEC额定值的80%。

警告:

TEC的冷热面不能搞反!我曾经有个同事,把TEC装反了,结果开机后探测器温度不降反升,直接烧坏了。TEC的极性一定要仔细核对数据手册。

3.3 读出电路(ROIC)接口时序:与探测器「对话」

ROIC是探测器的「大脑」,它负责把每个像素的电阻变化转换成电压信号,然后逐行读出。咱们的FPGA或MCU要做的就是:按照ROIC要求的时序,给它送控制信号,然后接收它吐出来的数据。

ROIC接口信号:

信号名 方向 说明
MC(主时钟) 输入 系统主时钟,通常10-20MHz
INT(积分信号) 输入 控制积分时间,高电平有效
SYNC(同步信号) 输入 帧同步,每帧开始前拉高
DATA(数据输出) 输出 串行或并行像素数据
CLK(读出时钟) 输入 数据读出时钟,与MC同频或分频

典型的ROIC工作时序:

  1. 复位阶段:SYNC拉高,同时INT拉低,复位所有像素。
  2. 积分阶段:INT拉高,开始积分。积分时间由探测器型号决定,一般在几十微秒到几毫秒之间。
  3. 读出阶段:INT拉低,开始逐行读出。每行数据在CLK的上升沿输出,FPGA在下降沿采样。
  4. 帧结束:所有行读出完毕,SYNC拉低,等待下一帧。

时序设计的关键点:

  • 建立时间和保持时间:FPGA输出的控制信号必须满足ROIC的时序要求。我一般会在FPGA内部加ODDR原语,确保信号边沿对齐。
  • 时钟抖动:MC时钟的抖动不能太大,否则会影响积分精度。我用的是有源晶振,抖动小于1ps。
  • 信号完整性:高速信号需要做阻抗匹配。ROIC接口通常走线长度控制在5cm以内,串接33Ω电阻抑制反射。

避坑指南:

我曾经在一个项目中,ROIC的DATA信号总是偶尔出现毛刺。用示波器一抓,发现是CLK和DATA之间的走线太长,产生了串扰。后来把两根线分开走,中间加地线隔离,问题解决。记住:高速信号线之间要保持3W原则(线间距是线宽的3倍)。

FPGA代码示例(Verilog):

// ROIC接口控制模块
module roic_ctrl (
    input  wire        clk,        // 系统时钟 50MHz
    input  wire        rst_n,      // 复位
    output reg         mc,         // 主时钟 12.5MHz
    output reg         int_sig,    // 积分信号
    output reg         sync,       // 帧同步
    input  wire [13:0] data_in,    // 像素数据输入
    output reg         rd_clk      // 读出时钟
);

// 参数定义
parameter INT_TIME = 100;  // 积分时间,单位:MC周期
parameter ROW_NUM  = 480;  // 行数
parameter COL_NUM  = 640;  // 列数

// 状态机
reg [2:0] state;
localparam IDLE    = 3'd0;
localparam RESET   = 3'd1;
localparam INTEG   = 3'd2;
localparam READOUT = 3'd3;

// 分频产生MC时钟
reg [1:0] clk_div;
always @(posedge clk or negedge rst_n) begin
    if (!rst_n) begin
        clk_div <= 2'd0;
        mc <= 1'b0;
    end else begin
        clk_div <= clk_div + 1'd1;
        if (clk_div == 2'd1) mc <= ~mc;
    end
end

// 状态机控制
always @(posedge mc or negedge rst_n) begin
    if (!rst_n) begin
        state <= IDLE;
        int_sig <= 1'b0;
        sync <= 1'b0;
        rd_clk <= 1'b0;
    end else begin
        case (state)
            IDLE: begin
                sync <= 1'b1;  // 帧同步拉高
                state <= RESET;
            end
            RESET: begin
                // 复位阶段,保持一个MC周期
                sync <= 1'b0;
                state <= INTEG;
            end
            INTEG: begin
                int_sig <= 1'b1;  // 开始积分
                // 等待积分时间
                if (int_cnt >= INT_TIME) begin
                    int_sig <= 1'b0;
                    state <= READOUT;
                end
            end
            READOUT: begin
                // 逐行读出
                rd_clk <= ~rd_clk;  // 产生读出时钟
                // 数据采样逻辑...
                if (row_done) begin
                    state <= IDLE;  // 帧结束
                end
            end
            default: state <= IDLE;
        endcase
    end
end

endmodule

这段代码只是一个框架,实际项目中还需要加入FIFO缓存、数据拼接、坏点校正等逻辑。但核心的时序控制思路就是这样:状态机 + 计数器,精确控制每个阶段的时间。

3.4 本章知识体系

下面这张图,把探测器驱动电路的三大块串起来了。你可以看到,偏压是基础,温控是保障,时序是灵魂。三者缺一不可。

探测器驱动电路知识体系 探测器驱动电路 偏置电压生成 TEC温控电路 ROIC接口时序 低噪声LDO 精密运放 DAC方案 H桥驱动 PID控制 温度传感器 控制信号 数据采样 时序约束 三者协同工作,才能获得高质量热成像图像 偏压是基础 · 温控是保障 · 时序是灵魂

好了,这一章的内容就到这里。偏压、温控、时序,这三块是探测器驱动的核心。你只要把这三样吃透了,后面设计热成像电路就会顺手很多。记住:细节决定成败,每一个mV、每一个ns,都可能影响最终图像质量。


公众号:蓝海资料掘金营,微信deep3321