做多接收机共享一条卫星馈线的改造时,最常见也最隐蔽的坑出现在直流控制信号上。很多人以为把两台接收机用三通并到一根同轴线上就完事,结果要么一个频道卡死,要么LNB极性反复横跳,严重的还会烧掉接收机前端。D8012这个项目就是冲着这个场景去的:一块双通道音调与极性切换LNB多路复用控制器,把两路接收机的13V/18V供电判断、22kHz音调检测与切换仲裁全部收拢到一块板上,让两根输入电缆互不干扰地服务同一个LNB。
这个项目适合两类人看:一是自己搭多星接收或楼道分配系统的电子爱好者,二是做卫星前端设备维护、想搞明白LNB控制链路原理的从业者。下面我把设计思路、硬件拆分、固件仲裁逻辑和调试踩坑记录完整写一遍,内容以实际可复现为准,遇到容易翻车的地方会额外多说几句。
1. LNB控制链路上的“双通道”到底意味着什么
1.1 一条同轴线里并存的三种信号
LNB的工作状态不是靠独立控制线实现的,所有指令都叠加在同轴电缆上。拆开看,同一根线里至少同时存在三类信号:卫星射频信号、LNB供电直流电、控制用22kHz音调。
- 射频信号:通常工作在950MHz到2150MHz之间,从LNB往接收机方向传。
- 直流供电:接收机通过同轴中心导体给LNB供电,电压分两档,13V对应垂直极化,18V对应水平极化。
- 22kHz音调:在直流电平上叠加一个幅度大约0.3Vpp到0.65Vpp的方波或正弦波。音调存在与不存在,对应LNB的低本振/高本振切换,部分设备也用这个物理层承载扩展协议。
逻辑关系基本可以归纳成下面这张表:
| 直流电压 | 22kHz音调 | LNB侧典型状态 |
|---|---|---|
| 13V | 无 | 垂直极化/低频段 |
| 13V | 有 | 垂直极化/高频段 |
| 18V | 无 | 水平极化/低频段 |
| 18V | 有 | 水平极化/高频段 |
这里不想把本振关系说得太死,因为不同厂家LNB对音调和本振的定义略有差别,但物理层就是“电压档位+音调有无”这两个维度。D8012要做的事情,本质上就是帮两路接收机把这两组控制信号干净地送到同一个LNB上。
1.2 两台接收机并接LNB的三种冲突
直接从输出端并联两台接收机,表面看都是13V/18V加22kHz,但实际会撞出三种典型问题。
第一是电压抢占。一台接收机输出18V,另一台输出13V,并联后线缆电压会被高的那一台抬到接近18V。13V那一台即使正在切换垂直极化,LNB看到的也是水平极化的电压。多数情况下低频段还能忍,高频段和极化就全错了。
第二是音调短路。22kHz音调有一个源内阻,如果另一台接收机在“无音调”状态下并接,它的输出级会变成一个低阻旁路,把音调幅度拉到LNB无法识别的阈值以下。表现就是高频段的台怎么搜都搜不到,偶尔能搜到也是信号质量满屏红。
第三是待机通道的逆灌。有些接收机待机时依然输出低电压,或者干脆变成高阻,但内部防反接二极管并不可靠。一旦18V通道倒灌进13V通道,轻则保护电路误动作,重则接收机端口元件过热。
D8012的做法不是简单把两路并起来,而是先把每路的真实状态检测出来,再通过受控开关把唯一有效的那路控制信号送往输出端。未选中的通道不承担LNB电流,也不参与音调驱动,隔离是物理级的。
2. 硬件架构:RF无源共享与直流/音调受控切换
2.1 顶层框图和信号分工
看到“多路复用控制器”这个名字,很多人的第一反应是拿一个开关把同轴电缆直接切换过去。但实际工程里更合理的做法是“射频无源并联、直流受控切换”。
原因很简单:LNB的射频输出并不关心哪台接收机在供电,它只负责把信号送到线缆上。两台接收机只要都有射频通路,就能同时监听同一个LNB。真正需要选举的,只是“谁来提供直流电压和22kHz音调”。
所以D8012把链路拆成两条独立路径:
- RF路径:两个输入端各通过一只隔直电容并联到输出端,卫星射频信号天然共享。
- 控制路径:两路接收机的直流和音调经过检测、仲裁、切换电路后,合并成一路控制信号注入输出端。
这个分层让切换开关承受的工作压力小很多。开关不需要处理1GHz信号,只要可靠切换直流和22kHz就行,器件选型难度大幅降低。
2.2 隔直电容与直流注入网络的分工
RF路径里最关键的是那只隔直电容。它要让950MHz到2150MHz的信号低损耗通过,同时把直流彻底挡住。实际选型时我用的是高频贴片电容,介质类型选C0G或者NP0,容值取100pF到1nF之间。
这里有个常见误区是随手拿一只电解电容或者X7R大容值电容当耦合用。电解电容高频特性差,X7R在直流偏压下容值会塌陷,插入损耗很容易多出零点几个dB。对于卫星链路来说,单个0.5dB的损耗已经能感觉到,串联两只就更明显了。
直流注入点要放在RF耦合之后,用一个射频扼流结构把直流和音调送进信号线,同时避免射频泄漏到控制电路里。不追求极致指标的话,可以简单用一只几十到几百纳亨的电感做隔离。实测下来,普通贴片电感在这个频段的表现足够满足室内馈线场景。
2.3 为什么不能直接用二极管OR电路
整流二极管或者理想二极管控制器能不能把两路电源合并?理论上可以,实际上不行。
二极管OR只能解决“谁电压高谁供电”的问题,无法表达“谁的控制意图有效”。举例来说,通道A输出13V且无音调,通道B输出18V且有音调,二极管OR必然选中B,于是LNB永远工作在水平极化/高频段,通道A无论怎么切换都无效。
更麻烦的是22kHz音调是叠加在直流上的交流信号。二极管OR电路对交流而言等于把两个音调源并联,产生相位差和占空比冲突。即使LNB还能识别部分音调,误判概率也会明显上升。
所以D8012必须要做有源仲裁,而不是无脑合并。
3. 输入状态检测:13V/18V分档与22kHz音调识别
3.1 电压分档电路与迟滞
每路输入都需要判断当前电压是13V档还是18V档。这里不能指望接收机每次都给出精准的13.00V或18.00V,实际线缆压降和接收机稳压精度会让电压有波动。我在D8012里用电阻分压加比较器做窗口判断,判据留出足够的回差。
以其中一个通道为例,分压比约1/5,13V变成约2.6V,18V变成约3.6V。比较器阈值设在3.0V附近,低于阈值为13V档,高于阈值为18V档。为了防抖,比较器加了约0.3V的迟滞,避免电压在临界点附近来回跳变。
需要注意,接收机处于待机状态时,输出端可能有一个很低的维持电压,比如6V到8V。这个区间要单独识别为“无有效控制信号”,而不是误判成13V档。D8012在固件里加了低于11V一律视为无输入的逻辑,硬件上则让分压后的信号低于比较器最低阈值时直接落空。
3.2 音调检测:整流积分加周期确认
22kHz音调检测有两个层次的要求:一是知道有没有,二是知道是不是真的22kHz而不是开关电源纹波。
我最终采用的是“整流积分+MCU周期确认”的两级方案。硬件上先把输入信号通过高通耦合电容取出交流分量,再用二极管检波和RC积分,把22kHz的有无变成一个平缓的电平。这个电平进入MCU的ADC后,只作为粗判条件。
真正判决交给MCU的输入捕获功能。MCU测量方波的半周期,22kHz信号的理论半周期约22.7微秒,我把有效范围放宽到15微秒到40微秒。落在范围内才算检测到一次有效音调,连续三次有效才更新通道状态。
实测下来,这个方案对非对称方波和突发干扰的容忍度明显比单纯幅度检测要好。之前第一版只用比较器加电平判断,结果一开开关电源,误报率立刻上来。
3.3 双通道检测电路的一致性
双通道控制器最怕的是两个通道检测灵敏度不一致。通道A认为有音调,通道B认为没有,但实际两路信号完全一样。这种问题通常不是器件标称误差,而是PCB布局造成的。
D8012在布局上让两路的检波二极管、积分电容、采样电阻尽量靠近、同向摆放,走线长度也拉齐。被动元件的批次差异可以通过软件校准修正一部分,但更靠谱的做法是物理对称。如果其中一个通道换了不同容值的耦合电容,音频阈值就会偏,必须在出厂前做逐台校准。
4. 切换执行机构:继电器、MOSFET与混合策略
4.1 三种开关方案的参数取舍
直流/音调切换位置可以选机械继电器、P型MOSFET或者两者混合。不同方案各有取舍,我把它们放在一张表里对比:
| 对比项 | 机械继电器 | P型MOSFET | 继电器+MOS混合 |
|---|---|---|---|
| 导通压降 | 毫欧级触点 | 由Rds(on)决定 | 由主路径决定 |
| 静态功耗 | 线圈需持续供电 | 几乎为零 | 有线圈功耗 |
| 切换速度 | 约5到10ms | 微秒级 | 约5到10ms |
| 反向隔离 | 物理断开,隔离彻底 | 体二极管会漏电 | 最佳 |
| 寿命 | 机械次数有限 | 无机械磨损 | 受继电器限制 |
| 电路复杂度 | 低 | 中 | 高 |
卫星接收场景的切换频率并不高,机械继电器寿命完全够用。但继电器线圈电流通常在30到70mA,双通道同时工作后整板发热不可忽视,而且线圈断电瞬间会产生反向电动势,必须在线圈两端并续流二极管。
我最终采用的是“MOSFET做主通路、继电器做隔离”的混合思路:主路径用低压差P型MOSFET控制13V/18V通断,反向隔离问题交给继电器在未选中通道处断开。这样既能快速响应音调切换,又不会让两个通道在过了开关之后形成电流倒灌。
4.2 切断反向电流的几个必坑点
MOSFET用在直流切换上有个经典坑:体二极管。单只P型MOSFET关断后,源极到漏极方向依然可以通过体二极管导通。如果输出端LNB电容电压高于输入通道电压,电流就会顺着体二极管倒灌回接收机。
解决思路有两条。最简单的是在MOSFET后面再串联一只方向相反的MOSFET,形成背靠背结构,彻底阻断两个方向。或者改用机械继电器直接物理断开,这也是我在混合方案里保留继电器的主要原因。
另外,切换瞬间如果出现“先断后合”,LNB供电会短暂掉电。掉电时间超过几十毫秒,接收机就会尝试重新初始化,画面出现卡顿。为了避免这个问题,D8012在切换时序里做了保持窗口:新通道导通前,旧通道的MOSFET不立即关断,而是等新通道稳定后延迟2到3毫秒再断开旧通道。这个时序对继电器为主的系统尤其重要。
4.3 切换瞬间防闪断的时序设计
实际切换动作分成三步:
- 目标通道确认:MCU完成电压和音调判决,确认新通道状态有效。
- 新通道预导通:先让新通道的MOSFET进入线性区,限制浪涌电流。
- 旧通道延迟关断:新通道完全导通后,再关断旧通道开关。
这样LNB供电电容不会完全放电,接收机不会察觉电源被切断。当然,双通道在同一时刻只能有一个真正处于导通状态,否则两个接收机的电源还是会撞车,这里的“预导通”只持续非常短的时间,靠的是固件严格的时间戳控制。
5. 仲裁逻辑与固件状态机
5.1 状态定义与切换规则
软件层面的核心是一个状态机。每个通道被抽象成五种状态之一:无输入、13V无音调、13V有音调、18V无音调、18V有音调。仲裁规则按优先级排列:
- 两路都无输入时,输出端不注入任何控制信号,只保留RF并联通路。
- 只有一路有输入时,直接选择该路。
- 两路都有输入且状态不同,优先选择最近产生过22kHz音调活动的那一路。
- 两路同时发起请求且无法区分先后,固定让通道A胜出,避免反复抖动。
第3条在实现上依赖一个时间戳变量。每当检测到有效音调边沿,就把对应通道的标志位和系统时钟记录更新。仲裁时先比较时间戳,谁新谁上。
5.2 防抖、超时与掉电快速放电
状态机不能见一次跳变就立刻切换,那样高频抖动会把LNB折腾出幻觉。我把状态确认做成“连续三次采样一致才生效”,电压采样周期设成10毫秒,音调周期确认走输入捕获中断。
超时逻辑方面,如果某个通道曾经有音调活动,但在500毫秒内没有任何新的音调边沿,就把它的优先级降下来。这样做是为了防止两台接收机一个在发指令、一个在待机时状态机僵住。
输出端还要注意掉电放电。当两路都进入无输入状态后,MCU立即关闭所有主通路MOSFET,但LNB和线缆电容里的电荷不会自己消失,可能维持好几秒的错误状态。D8012在输出端对地接了一个由MOSFET控制的放电电阻,检测到掉电后自动把输出端残余电压拉低,避免下一台设备接通时LNB还保持着上一次的极性。
5.3 一段可参考的伪代码
固件部分用简单的状态机就可以实现,伪代码流程大致如下:
typedef enum { ST_NONE, ST_13_NO_TONE, ST_13_TONE, ST_18_NO_TONE, ST_18_TONE, } ch_state; ch_state channelA = ST_NONE; ch_state channelB = ST_NONE; uint32_t last_activity_A = 0; uint32_t last_activity_B = 0; void update_channel(ch_id ch, ch_state new_state) { if (new_state != current_state[ch]) { debounce_count[ch]++; if (debounce_count[ch] >= 3) { current_state[ch] = new_state; debounce_count[ch] = 0; } } else { debounce_count[ch] = 0; } } void arbitrate_and_switch(void) { ch_state a = current_state[A]; ch_state b = current_state[B]; ch_id selected; if (a == ST_NONE && b == ST_NONE) { set_output(ST_NONE); return; } if (a != ST_NONE && b == ST_NONE) { selected = A; } else if (b != ST_NONE && a == ST_NONE) { selected = B; } else { if (last_activity_A > last_activity_B) selected = A; else if (last_activity_B > last_activity_A) selected = B; else selected = A; // 固定优先级 } set_output(current_state[selected]); }这套逻辑并不复杂,但它把“检测、防抖、仲裁、执行”四件事全部收敛到可控的时序里。实际跑下来,两台接收机互相抢频道时画面稳定,LNB状态没有出现任何闪跳。
6. 与RF和平共处:PCB布局和电源完整性
6.1 50欧姆走线与器件摆放
控制器再怎么说也是接在同轴馈线中间的设备,射频性能不能拖后腿。PCB上RF路径必须按50欧姆阻抗设计,走的不是理想传输线。对于1.6mm厚度的FR4基板,表层微带线的线宽大约在0.3到0.5毫米之间,具体数值要按板材介电常数算。
高频耦合电容的位置越靠近输入接口越好,而且两只输入端的RF并联点要尽量集中,避免引线过长形成阻抗不连续。我自己做过对比测试:同样电路,RF连接线短3毫米,高端频点的插损就能便宜0.2dB。这个数字看起来不大,但在卫星信号边缘场强地区,可能就是锁定与不锁定的区别。
控制电路,特别是继电器、电源走线和检波二极管,要尽量远离RF线。继电器线圈动作时的火花频谱很宽,如果耦合进RF路径,会在LNB输出端造成短暂的高噪声底。
6.2 22kHz噪声控制与地回路
直流/音调切换电路的工作频率只有22kHz,但切换瞬态里包含丰富的高次谐波。这些谐波能量会通过地线耦合进RF路径。我的处理办法是采用单点接地原则:模拟检测地、MCU数字地、RF参考地分开铺设,在电源输入处用磁珠汇接。
每个通道的22kHz检测电路要在输入端口附近就近放置滤波电容,否则音调信号还没进入检测器就被线缆感应噪声淹没。另外一个容易忽略的点是LNB供电电流比较大,地回路上的压降会把比较器参考电压抬高。D8012专门用了一根独立的地线把两个通道的地参考点引回MCU ADC地,避免测量误差。
7. 实测调试记录:症状、原因、解法
7.1 假负载测试过程
接通真实卫星接收机之前,一定要先用假负载把控制链路跑通。我推荐一个75欧姆左右的功率电阻并联一个小电解电容模拟LNB负载,然后用示波器同时测输出端的直流电压和22kHz音调。
测试顺序分三步走:
- 只接通道A,确认13V/18V切换和音调有无都正确。
- 只接通道B,重复同样的验证。
- 双通道同时接入,手动改变两路的极化设置,观察仲裁结果是否符合预期。
这一步能筛掉绝大多数问题。示波器上如果看到音调包络出现毛刺,大概率是切换时序没做好或续流二极管缺失。如果输出电压在切换瞬间出现明显凹陷,多半是新通道预导通时间不够。
7.2 故障排查速查表
为了方便阅读,我把D8012调试期间最常遇到的问题整理成表格。
| 现象 | 可能原因 | 处理方法 |
|---|---|---|
| 双路都有输入,输出无电压 | 主通路MOSFET未开启 | 测量控制引脚电平,确认使能逻辑 |
| 音调幅度偏小 | 耦合电容选错或检波积分时间太长 | 换成NP0/C0G高频电容,减小积分容值 |
| 切换时画面卡顿 | 输出端电容过大或旧通道关断太慢 | 减小输出电容,调整延迟时序 |
| 待机通道发热 | 体二极管反向导通 | 加背靠背MOS或改用继电器隔离 |
| 高频段误判为低频段 | 音调检测阈值漂移 | 校准双通道阈值,检查积分电路一致性 |
| 射频衰减偏大 | RF路径走线过长或电容阻抗偏高 | 缩短高频走线,选用低ESR高频电容 |
7.3 接入真实LNB后的验证点
假负载通过后,再接真实LNB。建议把接收机设置到四个代表性状态交叉测试:垂直低本振、垂直高本振、水平低本振、水平高本振。每切一个状态,看一眼接收机信号质量是否稳定,同时用万用表确认输出端电压档位确实跟随切换。
最后一个提醒:带电插拔同轴头是调试大忌。切换瞬间产生的电弧很容易损坏接收机高频头端口。D8012上电后,所有同轴连接都应该在断电状态下完成,确认无误后再加电。调得越急,烧得越快,这是我在这个项目上花过最贵学费换来的经验。
这个控制器做到第三版,才把继电器、MOSFET、仲裁逻辑三者的配合调整到满意状态。如果你也在做类似的多通道LNB切换,建议先吃透13V/18V和22kHz音调的交互关系,再动手画板。原理搞清楚之后,剩下的就只是耐心调试了。