3、数字量接口设计:离散量输入/输出、电平匹配、光耦隔离、上拉/下拉电阻
好,咱们接着聊。前面讲了模拟量和电源,这一节轮到数字量接口了。说白了,飞控计算机(FCC)跟作动器之间,除了那些模拟信号,还有大量的开关量、状态量、离散指令在跑来跑去。这些信号看着简单,就是0和1,但处理不好,照样能把你的系统搞崩。
我个人习惯把数字量接口叫做「系统的神经末梢」。你想想看,起落架收放、舵面限位、阀门开关、故障告警……这些关键信息,全得靠离散量来传递。我见过不少项目,模拟通道设计得漂漂亮亮,结果离散量接口上栽了跟头——要么电平不匹配烧了芯片,要么隔离没做好导致地环路干扰,要么上拉电阻选错导致信号抖动。嗯,咱们今天就把这些坑一个一个填上。
3.1 离散量输入接口设计
离散量输入,就是FCC去读取外部设备的状态。比如作动器内部的微动开关、液压阀的位置传感器、或者驾驶舱里投下来的开关指令。
核心问题有三个:电平匹配、噪声抑制、隔离保护。
先说电平匹配。飞机上的设备,电压等级五花八门。有的用28V直流,有的用5V逻辑,还有的用12V或15V。FCC内部的处理器通常是3.3V或5V的IO电平。你不能直接把28V怼到CPU引脚上——那会冒烟的。我记得有一次在实验室调试,一个新同事没注意电平转换,直接把28V信号接到了FPGA的IO上,结果那个引脚当场就烧了,芯片表面鼓了个包。从那以后,我要求所有离散量输入必须经过电平转换或分压处理。
常用的做法是电阻分压加施密特触发器。比如28V转3.3V,可以用一个分压网络,把28V降到3.3V左右,然后经过施密特触发器整形。施密特触发器有滞回特性,能有效抑制信号边沿的抖动。我一般选带施密特输入的缓冲器,比如SN74LVC14A这类芯片,省事又可靠。
电平匹配设计要点:
- 分压电阻的阻值要兼顾功耗和输入阻抗。我习惯用10kΩ和1.5kΩ的组合,分压比约1:7.7,28V输入时分压约3.6V,留有余量。
- 分压后必须加施密特触发器,不能直接进CPU。否则信号边沿的毛刺会导致多次触发。
- 如果信号源是开漏输出,必须加上拉电阻。
再说噪声抑制。飞机上的电磁环境很恶劣,电缆又长,离散量信号很容易耦合进噪声。我的做法是在输入端加RC低通滤波。时间常数选多少?这取决于信号的频率。对于开关量,通常信号变化频率很低(几赫兹到几十赫兹),我一般选10kΩ电阻加0.1μF电容,时间常数1ms,能有效滤除高频噪声。
我的小技巧: 滤波电容尽量靠近FCC的接口连接器放置,而不是靠近CPU。这样噪声在进入电路板之前就被滤掉了,效果更好。
3.2 离散量输出接口设计
离散量输出,就是FCC去控制外部设备。比如给作动器发一个「上电」指令,或者给电磁阀一个「打开」信号。
输出接口的设计难点在于驱动能力。FCC的CPU引脚通常只能输出几毫安的电流,而作动器里的继电器线圈、电磁阀、指示灯,动不动就需要几百毫安甚至几安培。你不能指望CPU直接驱动这些东西。
我常用的方案是:CPU输出 → 光耦隔离 → 功率驱动芯片(如ULN2003、MOSFET)→ 负载。ULN2003是达林顿管阵列,每路能驱动500mA,内部还集成了续流二极管,驱动继电器线圈时非常方便。
这里有个容易忽略的点:输出接口的浪涌保护。作动器里的感性负载(继电器、电磁阀)在断电时会产生反向感应电动势,电压可能高达几十伏甚至上百伏。如果不加保护,这个高压会沿着导线窜回FCC,击穿驱动芯片。我建议在输出端并联续流二极管,或者使用带内部保护的驱动芯片。
警告: 千万不要用CPU引脚直接驱动继电器或电磁阀!我曾经见过一个设计,为了省成本,用单片机的IO口直接驱动一个小继电器,结果继电器动作时产生的反电动势把单片机整个IO端口都打坏了,整块板子报废。省了几毛钱,赔了几千块。
3.3 光耦隔离:为什么必不可少?
光耦隔离,说白了就是在FCC和作动器之间加一道「防火墙」。两边没有电气连接,信号通过光来传递。这样做的好处有两个:一是隔离地环路,二是防止高压窜入。
飞机上,FCC的地和作动器的地往往是分开的。如果直接用电线连接,两个地之间会有电位差,形成地环路电流,引入噪声。光耦把两边的地完全隔开,地环路自然就断了。
另外,作动器那边可能因为雷击、电源浪涌等原因出现高压。如果FCC和作动器之间没有隔离,这个高压会直接进入FCC,烧毁整个飞控计算机。光耦的隔离耐压通常在2500V以上,能有效保护FCC。
选光耦时,我主要看三个参数:
| 参数 | 我的推荐值 | 说明 |
|---|---|---|
| 隔离耐压 | ≥2500Vrms | 满足航空电子设备的基本绝缘要求 |
| 电流传输比(CTR) | 50%~200% | CTR太低,驱动能力不足;太高,容易饱和 |
| 开关速度 | ≥1MHz | 离散量信号频率低,1MHz足够 |
我常用的光耦型号是TLP185或6N137。TLP185是通用型,便宜可靠;6N137是高速型,适合需要快速响应的场合。
经验之谈: 光耦的输入侧(LED侧)要串联限流电阻。我一般根据输入电压和LED的正向压降(约1.2V~1.5V)来计算,让LED电流在5mA~10mA之间。电流太小,光耦可能不导通;电流太大,LED寿命会缩短。
3.4 上拉电阻与下拉电阻
上拉和下拉电阻,看着简单,但选错了照样出问题。我见过有人把上拉电阻选到100kΩ,结果信号上升沿慢得像蜗牛爬;也有人选1kΩ,结果功耗大得烫手。
上拉电阻的作用: 当信号源处于高阻态(比如开漏输出)时,把信号线拉到高电平。下拉电阻则相反,拉到低电平。
阻值怎么选? 这取决于几个因素:
- 信号频率: 频率越高,上拉电阻要越小,否则RC时间常数太大,信号边沿变缓。对于几kHz的离散量,10kΩ通常没问题。
- 功耗: 电阻越小,电流越大,功耗越高。比如5V上拉,用1kΩ电阻,静态电流5mA,功耗25mW。如果几十路信号,总功耗就不可忽视了。
- 驱动能力: 如果信号源是弱驱动(比如微控制器引脚),上拉电阻太小会导致信号源拉低时电流过大。
我个人的经验值:对于3.3V系统,上拉电阻选4.7kΩ~10kΩ;对于5V系统,选4.7kΩ~10kΩ;对于28V系统,选10kΩ~47kΩ。这个范围兼顾了速度、功耗和驱动能力。
避坑指南: 我曾经在一个项目中,把上拉电阻选成了100Ω,结果信号源拉低时,电流高达50mA,直接把那个引脚烧了。从那以后,我每次选上拉电阻都会算一下最大电流,确保不超过信号源的驱动能力。
下拉电阻的选型原则类似,但有一个特殊情况:如果信号线在悬空时容易被干扰,下拉电阻可以选小一点,比如1kΩ~4.7kΩ,让信号线更「硬」,不容易被噪声拉高。
3.5 设计检查清单
好了,讲了这么多,我给大家整理一个检查清单。每次设计离散量接口时,对着这个清单过一遍,能避免大部分问题。
- 电平匹配: 输入信号的电平是否与FCC的IO电平兼容?如果不兼容,是否加了分压或电平转换?
- 隔离: 所有来自作动器的离散量信号,是否都经过了光耦隔离?隔离耐压是否满足要求?
- 滤波: 输入端是否加了RC滤波?时间常数是否合适?
- 驱动能力: 输出端能否驱动负载?驱动芯片的电流裕量是否足够?
- 保护: 感性负载是否加了续流二极管?输出端是否有过流保护?
- 上拉/下拉: 开漏输出是否加了上拉电阻?阻值是否合适?悬空引脚是否做了下拉处理?
- 地线处理: 隔离两侧的地是否完全分开?有没有形成地环路?
嗯,离散量接口设计,说难不难,说简单也不简单。关键是把每个细节都做到位。你想想看,一个起落架收放指令,如果因为离散量接口设计不当而误触发,后果是什么?所以,别嫌我啰嗦,这些细节真的值得花时间。
下一节,咱们聊聊模拟量接口设计中的抗混叠滤波和采样率选择。到时候见。