单结晶体管这个器件,现在很多年轻工程师可能都没怎么摸过了。大家一提到振荡电路,第一反应都是运放搭文氏电桥、或者用555定时器,再不然就是单片机DAC输出。但如果你翻一翻上世纪七八十年代的经典电路图册,会发现大量张弛振荡器、锯齿波发生器、可控硅触发电路里,都有一个三个引脚、长得像三极管但脾气完全不同的家伙——单结晶体管(UJT)。它结构简单、成本极低、触发阈值稳定,在调光、调速、定时这些场景里曾经是绝对主力。我最近因为一个老设备维修项目重新把它捡起来,搭了一个最基础的张弛振荡电路,从选管、算参数到抓波形,踩了几个不大不小的坑。这篇文章就把整个过程拆开讲清楚,包括电路图怎么画、电阻电容怎么算、示波器上该看到什么、以及为什么你的电路可能不起振。适合刚接触模拟电路的学生、需要做可控硅触发或简易定时方案的工程师,以及单纯想搞明白“张弛振荡”到底怎么回事的爱好者。
1. 先搞清楚单结晶体管到底是个什么器件
1.1 三个引脚,但不是一个三极管
单结晶体管(Unijunction Transistor,简称UJT)最常见的型号是2N2646、2N2647、BT33、BT35这一类。它外面看是TO-92或者TO-18封装,三个引脚分别是发射极E、基极B1、基极B2。名字里带“晶体管”,但它跟NPN或PNP三极管的工作机制完全不是一回事。
三极管是电流控制电流,基极电流决定集电极电流。UJT不是。它的核心结构是一根高阻值的N型硅棒,两端分别引出B1和B2,中间偏B2一侧做一个PN结,引出E极。注意,这个PN结的阳极是E,阴极是硅棒中段。正常工作时,B2接正电压,B1接地,硅棒上形成一个电位梯度。E极所在的点,在没有外部注入电流时,电位大约是η×V_B2B1,这个η叫分压比,典型值在0.5到0.8之间。
关键就在这个η。它由器件内部结构决定,出厂就固定了,而且温度稳定性相当好。2N2646的η典型值是0.56到0.75,BT33F大概在0.65左右。这意味着,只要B2B1之间的电压稳定,E极的触发阈值就是一个非常确定的值。这一点比用三极管搭的触发电路要省心得多,不需要复杂的偏置网络。
1.2 负阻特性才是它的灵魂
UJT最迷人的地方是它的输入特性曲线里有一段负阻区。什么叫负阻?就是电压增加的时候电流反而减小,或者说电流增加的时候电压反而降低。这在普通电阻、二极管、三极管里都是看不到的。
具体过程是这样的:当E极电压低于峰值电压V_P(约等于η×V_B2B1+V_D,V_D是PN结正向压降,约0.7V)时,E结反偏或者零偏,只有很小的漏电流,UJT处于截止状态。当E极电压被外部电路充到V_P时,PN结正向导通,空穴从E注入到硅棒中段。这些空穴会降低硅棒中段区域的电阻率,导致E到B1之间的等效电阻突然变小。电阻变小,在同样的外加电压下电流就会增大,而E极电压反而被拉低——这就是负阻。
这个负阻过程一旦触发,就是雪崩式的,速度非常快,通常在微秒级别。E极电压会迅速从V_P跌到谷底电压V_V,典型值只有1到2V。然后随着外部电容放电,电流逐渐减小,当电流降到谷点电流I_V以下时,器件重新回到截止状态,E极电压又开始被充电。如此循环,就形成了张弛振荡。
理解这一点非常重要,因为后面所有参数计算都围绕两个关键量:峰值电压V_P和谷点电压V_V。V_P决定电容充到多高才触发,V_V决定放电放到多低才截止。这两个值都跟B2B1之间的电压直接相关。
1.3 为什么不用三极管或555替代
有人会问,既然三极管也能搭振荡电路,555更简单,为什么还要用UJT?这个问题我在实际选型时认真想过。
用三极管搭张弛振荡器,需要至少两个三极管构成类似可控硅的结构,或者用单结管等效电路。分立元件多,阈值电压受温度影响大,调试麻烦。555定时器确实方便,但它的输出是方波,要得到锯齿波还需要额外积分电路,而且555的阈值是固定比例,不像UJT可以通过调节B2B1电压来线性改变触发点。
UJT的优势在于:第一,触发阈值由η决定,温度系数很小,实测在-40到+100度范围内漂移不到百分之几;第二,输出脉冲电流大,可以直接触发小功率可控硅,不需要中间放大;第三,电路极简,一个UJT、一个电容、两个电阻就能起振。在老式调光台灯、电风扇调速器、简易定时器里,这个方案的成本和可靠性都是最优解。
当然,现在如果你要做精确的定时或频率合成,肯定选单片机或者专用振荡芯片。但如果是维修老设备、做教学演示、或者需要一个极简的触发源,UJT仍然值得掌握。
2. 张弛振荡电路的完整搭建过程
2.1 电路拓扑与元件清单
先上电路结构。整个振荡器就五个元件:一个UJT(我用的是2N2646)、一个定时电容C、一个充电电阻R_E、两个基极电阻R_B1和R_B2。电源V_BB一般取12V到20V,我用的是15V。
连接方式如下:V_BB正端接R_B2到UJT的B2,同时接R_E到UJT的E。UJT的B1通过R_B1接地。定时电容C接在E和地之间。输出信号从B1对地取,或者从E极取锯齿波。
这里R_B2的作用是温度补偿。因为UJT的峰值电压V_P会随温度略微变化,而R_B2上的压降会随温度反向变化,两者相互抵消。典型取值在100Ω到1kΩ之间,我用了470Ω。R_B1是输出负载电阻,同时决定脉冲宽度,取值在20Ω到100Ω,我用的是47Ω。R_E是充电电阻,决定充电时间常数,取值在10kΩ到1MΩ之间,我用了100kΩ。C取0.1μF到10μF,我用的是1μF。
电源电压V_BB的选择有讲究。太低,比如5V,V_P可能只有3V左右,接近V_V,振荡幅度小,容易受干扰。太高,比如30V,功耗大,而且R_E上的压降大,充电电流小,频率稳定性下降。15V是个比较舒服的中间值。
2.2 关键参数的计算逻辑
现在来算频率。张弛振荡器的周期主要由充电时间决定,放电时间很短,可以忽略。充电过程是电容通过R_E从V_V充到V_P,遵循RC充电公式:
V_C(t) = V_BB - (V_BB - V_V) × exp(-t/(R_E×C))
当V_C达到V_P时触发,所以:
V_P = V_BB - (V_BB - V_V) × exp(-T/(R_E×C))
解出T:
T = R_E × C × ln[(V_BB - V_V)/(V_BB - V_P)]
对于2N2646,η取0.6,V_D取0.7V,V_BB=15V: V_P = 0.6×15 + 0.7 = 9.7V V_V大约1.5V
代入: T = 100k × 1μF × ln[(15-1.5)/(15-9.7)] = 0.1 × ln(13.5/5.3) = 0.1 × ln(2.547) = 0.1 × 0.935 = 0.0935秒
频率约10.7Hz。这个频率适合做可视化的LED闪烁或者低速触发。如果你要音频范围的振荡,比如1kHz,需要把R_E降到1kΩ左右,或者C降到0.01μF。
这里有个经验公式可以快速估算:f ≈ 1/(R_E×C×ln(1/(1-η)))。当η=0.6时,ln(1/0.4)=0.916,所以f≈1/(0.916×R_E×C)。跟精确计算差不太多,日常估算够用。
2.3 实际焊接与布局注意事项
面包板搭这个电路完全可以起振,但有几个细节不注意就会翻车。
第一,R_B1和R_B2的功率。虽然电阻值不大,但B1在放电瞬间会有较大脉冲电流。我一开始用1/4W的电阻,摸上去有点温,后来换成1/2W就没事了。计算一下:放电时E到B1之间的等效电阻可能只有几十欧,15V加在R_B1(47Ω)和等效电阻上,峰值电流可能达到100mA以上。脉冲宽度虽然窄,但平均功率还是要留余量。
第二,定时电容的漏电流。这个坑我踩得最狠。一开始随手拿了一个电解电容,结果电路要么不起振,要么频率乱跳。后来换成CBB薄膜电容,立刻稳定。原因是电解电容漏电流大,等效并联电阻可能只有几百kΩ,跟R_E(100kΩ)可比,导致电容充不到V_P就被漏电流拖住了。所以C必须选薄膜电容、涤纶电容或者NP0/C0G陶瓷电容,千万别用普通电解。
第三,布线。E极的充电节点是高阻抗节点,容易拾取干扰。连线尽量短,远离电源线和输出线。如果频率较低,可以在E和地之间并联一个高阻值电阻(比如1MΩ),帮助稳定直流工作点,但会略微降低频率。
第四,电源去耦。V_BB到地之间并一个100μF电解加一个0.1μF陶瓷,位置尽量靠近UJT的B2。否则电源纹波会直接调制振荡频率,示波器上能看到明显的抖动。
3. 示波器上到底该看到什么波形
3.1 E极的锯齿波:从充电到触发的完整周期
把探头接到E极,地夹接电路地,示波器设成DC耦合,时基调到10ms/div左右,你应该能看到一个非常典型的锯齿波。
波形是这样走的:电压从V_V(约1.5V)开始,沿着指数曲线向上爬升,爬升速度越来越慢,这是RC充电的标准形状。当电压到达V_P(约9.7V)时,波形突然垂直下跌,几乎是一条竖线,回到V_V。然后又开始下一轮爬升。
这个“垂直下跌”就是负阻触发的瞬间。下跌时间通常在1微秒以内,所以在10ms/div的时基下看起来就是一条竖线。如果你把时基展开到1μs/div,能看到下跌沿其实有一点点倾斜,那是载流子渡越时间造成的,但工程上完全可以当成理想跳变。
锯齿波的线性度取决于V_P和V_BB的比值。V_P越接近V_BB,充电曲线越弯曲,锯齿波线性越差。所以如果你需要线性度好的锯齿波,要么提高V_BB,要么选η小一点的UJT。2N2646的η范围宽,可以挑一个η偏低的个体。
3.2 B1输出的窄脉冲:幅度和宽度的实测值
把探头移到B1对地,你会看到完全不同的波形。平时B1电压接近0V,只有在E极触发的瞬间,B1会跳出一个正向窄脉冲。
实测2N2646在V_BB=15V、R_B1=47Ω时,脉冲幅度大约4V到5V,宽度大约2μs到5μs。这个脉冲的上升沿很陡,下降沿稍缓,形状接近半个正弦波。脉冲幅度跟R_B1有关,R_B1越大,幅度越高,但宽度也越宽。如果R_B1太大,比如超过1kΩ,脉冲会变得很宽,甚至影响下一次充电,导致频率下降。
这个脉冲就是用来触发可控硅的。可控硅的触发电流通常需要几毫安到几十毫安,UJT的B1脉冲在47Ω负载上能提供大约100mA的峰值电流,驱动小功率可控硅绰绰有余。如果你要触发大功率可控硅,可以在B1后面加一级三极管放大,或者用脉冲变压器隔离。
3.3 波形异常时的排查思路
不起振是最常见的问题。排查顺序我总结成这样:
先看E极有没有充电迹象。如果E极电压一直停在0V或者V_BB,说明充电回路断了。检查R_E有没有焊错、电容有没有短路、UJT有没有装反。UJT的E极和B1、B2不能搞混,2N2646的引脚排列是面对平面,从左到右E、B1、B2,但不同厂家可能不一样,一定要查数据手册。
如果E极有充电但充不到V_P就平了,说明漏电流太大。重点查电容,换薄膜电容试试。也可能是UJT的E结坏了,用万用表二极管档测E到B1应该是一个PN结特性,正向压降0.6V左右,反向无穷大。
如果波形有但频率不对,先算一下理论值,再检查R_E和C的实际值。电阻的误差一般不大,但电容的标称值和实际值可能差20%以上,尤其是陶瓷电容的直流偏压特性。用LCR表量一下实际容量再算。
如果波形抖动厉害,看电源纹波。示波器AC耦合看V_BB,纹波应该在10mV以下。如果超过100mV,加强去耦。
4. 从基础电路延伸出去的几个实用变体
4.1 用UJT触发可控硅的调光电路
这是UJT最经典的应用。把B1输出的脉冲接到小功率可控硅的门极,可控硅串在负载回路里,就构成了一个相位控制调光器。
具体做法:交流电源经过负载接到可控硅阳极,可控硅阴极接地。UJT振荡器的同步电压从交流电源经过桥式整流后取得,但不滤波,这样每个半周过零时UJT的V_BB也跟着归零,振荡器重新同步。调节R_E的阻值就能改变充电时间常数,从而改变可控硅的导通角,实现调光。
这里的关键是同步。如果V_BB是平滑直流,振荡器自由运行,触发相位跟交流电没关系,可控硅会乱触发。必须用未滤波的全波整流电压给UJT供电,让每个半周开始时电容从零开始充电。这样触发角就跟R_E一一对应,调光才线性。
R_E通常用一个电位器串联一个固定电阻,固定电阻限制最小触发角,防止电位器调到零时可控硅全导通烧负载。电位器取值500kΩ到1MΩ,固定电阻10kΩ左右。
4.2 长延时定时器:把C换成大容量
如果把定时电容C换成100μF甚至1000μF的薄膜电容(注意还是不能用电解),R_E取1MΩ,周期可以拉长到几十秒甚至几分钟。这种长延时电路可以用来做定时关断、间歇工作控制。
但这里有个问题:电容越大,漏电流要求越苛刻。100μF的薄膜电容体积大、价格高。实际工程里更常见的做法是用小电容配高阻值R_E,但R_E太大时,UJT的峰值电流可能不足以触发,因为充电电流太小了。2N2646的峰值电流I_P典型值是5μA左右,所以R_E最大不能超过(V_BB-V_P)/I_P。15V供电时,(15-9.7)/5μA=1.06MΩ。超过这个值,电容充到V_P时提供的电流不够维持负阻触发,电路就不起振了。
所以长延时的正确姿势是:R_E取到接近但不超过1MΩ,C取10μF到47μF的薄膜电容,周期能做到几秒到十几秒。再长就得用计数器或者单片机了。
4.3 压控振荡:改变B2B1电压来调频
UJT的V_P跟V_B2B1成正比,所以如果你用一个可变电压源给B2供电,同时保持B1接地,就能通过改变V_B2B1来调节触发阈值,进而改变频率。这就是压控振荡器的雏形。
具体接法:V_BB固定,通过一个电位器分压后接到B2,B2到地之间接一个滤波电容。E极的充电电阻R_E仍然接V_BB。这样V_B2B1变化时,V_P跟着变,充电到触发的时间就变了。
实测2N2646在V_B2B1从5V变到15V时,频率变化范围大约3倍。线性度一般,因为V_P跟V_B2B1是线性关系,但周期跟ln函数有关。如果要求线性压控,需要加线性化电路,或者干脆用专用VCO芯片。
这个变体适合做简易的频率调制或者扫频信号源,但精度别指望太高,玩玩可以,做产品还是算了。
5. 几个容易翻车的细节和我的实测数据
5.1 分压比η的离散性比你想的大
2N2646的数据手册写η范围是0.56到0.75,这不是开玩笑。我手头十个2N2646,实测η从0.58到0.72都有。这意味着同样的电路,换一个管子频率可能差百分之二三十。
如果你要做批量生产,要么买η分档的型号(比如2N2646按η分A、B、C档),要么在电路里加一个微调电位器。我自己的做法是R_E用固定电阻加多圈电位器,调试时用频率计监测,调到目标频率后锁死。
测η的方法很简单:给B2B1加一个固定电压比如10V,慢慢升高E极电压,记录E极电流突然增大时的E极电压,减去0.7V再除以10V就是η。没有可调电源的话,用电路本身也能估:V_P约等于η×V_BB+0.7,从示波器上读出V_P,反推η。
5.2 温度对频率的影响实测
我把电路放进恒温箱,从25度升到60度,频率从10.7Hz变到10.2Hz,变化约5%。这个漂移主要来自V_V和V_P的温度系数,以及电容的温度系数。如果电容用的是CBB,温度系数很小,那主要就是UJT本身的漂移。
R_B2的温度补偿确实有用。我试过把R_B2短路,同样温度范围内频率变化超过10%。加上470Ω的R_B2后降到5%左右。如果要进一步补偿,可以在R_B2上并联一个负温度系数的热敏电阻,但那就复杂了,一般应用没必要。
5.3 输出脉冲驱动可控硅时的实际电流
我用示波器电流探头测了B1脉冲的峰值电流。在R_B1=47Ω时,峰值约85mA,脉冲宽度3μs。这个电流触发BT151这类小功率可控硅没问题,但触发BTA41这种大功率可控硅就有点勉强,需要加一级射极跟随器缓冲。
加缓冲的方法:B1脉冲经过一个1kΩ电阻接到NPN三极管的基极,三极管集电极接V_BB,发射极接可控硅门极和下拉电阻。这样UJT只需要提供很小的基极电流,三极管提供大的门极电流。注意三极管的响应速度要快,用2N2222或者BC547就行。
5.4 电源电压低于10V时的表现
我试过把V_BB降到9V,电路仍然起振,但V_P只有6.1V左右,V_V约1.2V,振荡幅度不到5V。示波器上看锯齿波明显变矮,而且频率对电源电压变得敏感,V_BB变化0.5V频率就变10%。所以如果电源不稳,要么提高V_BB,要么加稳压。
V_BB的下限大概是V_P必须明显大于V_V,一般要求V_BB至少8V。再低的话,V_P和V_V太接近,负阻区太窄,容易受噪声干扰误触发。
6. 从UJT到现代方案的选型思考
6.1 什么场景下UJT仍然是最优解
虽然现在可选的振荡方案很多,但UJT在几个特定场景下仍然有优势。
一是维修老设备。很多七八十年代的调光器、调速器、定时器用的就是UJT,电路图上的型号可能是BT33、BT35或者2N2646。如果你要修复这些设备,用现代芯片替代反而麻烦,直接找同型号UJT换上最省事。
二是教学演示。UJT的负阻特性非常直观,一个示波器就能看到从充电到触发的完整过程,比讲三极管放大或者运放振荡更容易让学生理解“阈值”和“正反馈”的概念。
三是极简触发电路。如果你只需要一个几赫兹到几千赫兹的脉冲源去触发可控硅,而且对频率精度要求不高,UJT方案只需要五个元件,成本不到一块钱,可靠性还高。
6.2 替代方案对比:555、运放、单片机
如果抛开维修和教学场景,纯做新设计,UJT的替代方案确实更多。
555定时器做张弛振荡器,频率范围更宽,从0.1Hz到500kHz都很稳,而且输出是方波,驱动能力强。缺点是阈值固定为2/3 VCC,要调频率只能改RC,不能像UJT那样通过改变B2电压来压控。
运放搭文氏电桥振荡器,输出正弦波,失真度可以做到很低,适合音频测试。但需要双电源,电路复杂,频率调节需要同轴电位器。
单片机方案最灵活,一个引脚输出PWM,频率和占空比随便调,还能数码显示。但需要编程,而且在高噪声环境下可能受干扰。
我的建议是:如果频率精度要求高于1%,选单片机或者555。如果只需要一个粗略的脉冲源,而且希望电路极简、成本极低、抗干扰好,UJT仍然值得考虑。
6.3 从UJT电路里能学到的通用设计思路
最后说点虚的,但我觉得比具体电路更重要。
UJT张弛振荡器本质上是一个“阈值检测+正反馈”系统。电容充电是积分过程,UJT触发是比较器,负阻是正反馈。这个结构在开关电源的PWM控制器、可控硅触发、甚至神经网络的脉冲神经元模型里都能看到影子。
理解了V_P和V_V这两个阈值,你就理解了所有张弛振荡器的核心。换成555,阈值变成2/3 VCC和1/3 VCC;换成施密特触发器,阈值变成VT+和VT-。形式变了,逻辑没变。
另外,R_B2的温度补偿思路也很典型。用一个正温度系数的电阻去抵消器件的负温度系数,这种“以毒攻毒”的补偿方法在模拟电路里到处都是。热敏电阻、补偿电容、稳压二极管的温度系数匹配,都是同一个道理。
我在实际搭电路的时候,一开始总想着用最理想的元件,后来发现真正让电路稳定的往往不是高精度元件,而是合理的补偿和冗余设计。UJT这个老器件教会我的,就是接受器件的不完美,然后用电路技巧去弥补它。