1. 项目概述:为什么选择CD4093来制作红外发射器?
如果你玩过一些简单的电子制作,比如用NE555定时器来产生脉冲信号驱动红外LED,那你可能会觉得那已经够简单了。但当我翻看一些老派的电子杂志,比如Elektor,我发现很多读者,尤其是初学者,他们渴望的不仅仅是“能工作”,而是“能彻底理解”。一个用NE556(双定时器)搭建的调制电路,虽然经典,但对于刚接触数字电路的人来说,内部比较器、触发器的工作机制像是一个黑箱。所以,我决定回归基础,用一片在数字电路入门课上最常见的芯片——CD4093,来打造一个极简的红外信号发射器。
CD4093是一片CMOS数字集成电路,内部集成了四个独立的“与非门”(NAND Gate)。但它的妙处在于,每个与非门的输入都集成了施密特触发器(Schmitt Trigger)。这个特性至关重要:施密特触发器具有滞回电压,这意味着它对输入信号的抗噪声能力极强,输入电压在高低电平切换时不会因为微小的抖动而产生振荡输出。这让我们用最简单的RC(电阻-电容)网络就能搭建出非常稳定的振荡器,而无需担心普通逻辑门因阈值电压点单一而产生的振荡不稳定问题。换句话说,用CD4093,你可以用最直观的方式——“一个电阻、一个电容加一个逻辑门”——来理解振荡是如何产生的,这是用定时器芯片无法直接提供的学习体验。
这个项目的核心目标有两个:第一是功能性的,制作一个能产生约40kHz载波,并能被低频信号调制的红外发射器,用于模拟常见的红外遥控信号。第二是教育性的,通过一个完整的、可工作的项目,引导初学者踏入数字电路和模拟调制的大门。整个电路成本极低,所有元件都是通孔插件,非常适合在面包板上搭建实验。你会发现,理解了这片小小的4093,你就掌握了数字振荡、信号调制和缓冲驱动的基本概念,这些是通往更复杂数字系统(如单片机)的坚实基石。
2. 核心思路与CD4093芯片深度解析
2.1 从与非门到振荡器:核心原理拆解
CD4093的核心是四个二输入施密特触发与非门。在数字电路中,当我们将一个与非门的两个输入端短接在一起,它就变成了一个“非门”(反相器)。一个非门的输出总是输入的相反状态。那么,如何让一个反相器自己振荡起来呢?关键在于引入延时和反馈。
想象一下这个场景:反相器输入为低电平时,输出立刻跳变为高电平。如果我们通过一个电阻和电容组成的网络,将这个“瞬间”的高电平输出缓慢地“搬运”回输入端,会发生什么?电容开始通过电阻充电,输入端的电压会从低电平逐渐升高。当这个电压超过施密特触发器的高电平阈值(Vth+)时,反相器认为输入变成了高电平,于是它的输出立刻跳变为低电平。接着,输出端的低电平又会通过同样的RC网络,使电容放电,输入端电压从高逐渐下降。当电压低于施密特触发器的低电平阈值(Vth-)时,反相器再次翻转,输出变高……如此周而复始,一个自激振荡器就诞生了。
这就是我们用CD4093中的一个门电路(例如U1A)搭建核心载波振荡器(如40kHz)的原理。其振荡频率公式近似为f ≈ 1 / (0.8 * R * C)。这里的0.8是一个经验系数,考虑了CMOS施密特触发器的典型阈值比例。选择RC的值时,需要计算:例如,要产生约40kHz(0.000025秒周期)的载波,假设我们选择一个100pF的电容C,那么电阻R ≈ 1 / (0.8 * 40000 * 0.0000000001) ≈ 31.25kΩ。我们可以用一个33kΩ的固定电阻和一个10kΩ的可调电位器串联,这样就能精细调节频率,使其准确落在接收头最敏感的38kHz或40kHz频点附近。
注意:这个公式是近似的,实际频率会受到电源电压、芯片个体差异以及施密特触发器阈值离散性的影响。因此,电路中的可调电位器至关重要,它允许我们通过示波器或实际遥控测试来“校准”频率。
2.2 为何是CD4093,而非NE555/556?
这是一个关键的设计选择。NE555无疑是经典的定时器,但它本质上是一个模拟-数字混合电路。对于初学者,理解其内部两个比较器、一个RS触发器和放电管如何协同工作,门槛相对较高。它的定时周期计算(1.44/((R1+2*R2)*C))也略显复杂。
而CD4093的方案则截然不同:
- 直观性:振荡原理直接源于逻辑门和RC延时反馈,概念上更贴近数字电路的基础教学,易于理解和推导。
- 灵活性:一片芯片有四个独立的门,我们可以清晰地划分功能模块:一个门做高频载波振荡(U1A),一个门做低频调制信号振荡(U1B),一个门担任调制器(U1C),最后一个门作为输出缓冲(U1D)。电路图一目了然,信号流向清晰。
- 抗干扰性:内置的施密特触发器让RC振荡器起振可靠,工作稳定,不易受电源噪声或元件参数微小变化的影响。
- 教学价值:通过这个项目,初学者能亲手实践如何用基础门电路构建功能模块,这是学习更复杂可编程逻辑(如CPLD、FPGA)的绝佳前奏。
3. 电路设计与各模块详解
整个发射器电路可以分为四个功能明确的模块:载波振荡器、调制信号发生器、调制器(数字与门)以及输出驱动级。我们将逐一拆解,并给出具体的元件选型建议和参数计算。
3.1 模块一:载波振荡器(U1A)
这是产生约40kHz高频信号的核心。我们使用CD4093的第一个与非门(U1A),将其两个输入端并联作为反相器使用。
- 电路连接:U1A的输入引脚(1、2脚)连接在一起,接到RC反馈网络的节点上。输出引脚(3脚)一方面连接到后续调制器,另一方面通过一个定时电阻R1和一个定时电容C1反馈回输入端。
- 元件选型与计算:
- 电容C1:选择100pF的陶瓷电容。选择这个量级的原因是为了能够通过可调电阻将频率精确调整到40kHz附近。电容值太小(如10pF)会受寄生电容影响大,不稳定;太大(如1nF)则需要电阻值很小,功耗会增加。
- 电阻R1:由一个固定电阻(例如33kΩ)和一个可调电位器(例如10kΩ)串联组成。总电阻调节范围约为33kΩ至43kΩ。根据公式计算,中心值38kΩ时,频率f ≈ 1/(0.8 * 38000 * 1e-10) ≈ 32.9kHz。通过调节电位器,我们可以覆盖30kHz到40kHz以上的范围,确保能找到与接收头匹配的最佳频点。
- 实操要点:在面包板上搭建时,尽量使R1和C1的引线短接,特别是C1,以减少分布电容对高频振荡的影响。用示波器探头测量U1A的输出引脚(3脚),应能看到一个近似方波,频率可通过电位器平滑调节。
3.2 模块二:调制信号发生器(U1B)
这个模块产生一个低频的方波信号,用来模拟要发送的数据或编码。例如,一个几赫兹到几百赫兹的方波可以模拟红外遥控的“按键按下”和“松开”状态。我们使用第二个门U1B,配置与U1A完全相同,只是RC值大得多。
- 电路连接:与U1A完全对称。
- 元件选型与计算:
- 电阻R2:选择1MΩ的固定电阻。对于低频振荡,电阻值通常较大以减少功耗。
- 电容C2:选择100nF(0.1μF)的涤纶或陶瓷电容。
- 频率计算:f ≈ 1/(0.8 * 1e6 * 1e-7) ≈ 12.5Hz。这意味着这个低频振荡器会产生一个周期约0.08秒的方波,适合肉眼观察其调制效果(LED会明显闪烁)。如果你想模拟更复杂的编码,可以用一个微控制器(如Arduino)的I/O口直接替代这个振荡器,输出特定的编码波形(如NEC编码)。
- 功能延伸:U1B的输出(引脚4)就是我们的调制信号。在测试时,你可以用另一个LED(非红外)连接到这个输出,通过观察其闪烁来直观了解调制信号的节奏。
3.3 模块三:调制器(U1C)与数字幅度调制(ASK)
这是将数据(低频信号)“加载”到载波上的关键一步。我们使用第三个门U1C作为一个受控的门电路。CD4093是与非门,其逻辑是“当所有输入为高时,输出为低;否则输出为高”。我们可以巧妙地利用它实现“数字幅度调制”,即幅移键控(ASK)。
- 电路连接:将载波信号(来自U1A引脚3)连接到U1C的一个输入端(如引脚5)。将调制信号(来自U1B引脚4)连接到U1C的另一个输入端(引脚6)。输出为引脚7。
- 工作原理:
- 当调制信号为高电平时,U1C的两个输入端(载波和调制信号)的状态完全由载波决定。此时U1C相当于一个反相器,将40kHz的载波方波反相后输出。因此,输出端是连续的40kHz方波。
- 当调制信号为低电平时,根据与非门逻辑,只要有一个输入为低,输出就固定为高电平。此时无论载波如何变化,U1C的输出被“封锁”在恒定的高电平。
- 结果:最终从U1C引脚7输出的波形是:在调制信号为高电平期间,有40kHz的方波脉冲群输出;在调制信号为低电平期间,输出为平稳的高电平。这正是一串被低频方波“门控”了的40kHz载波脉冲,也就是最简单的ASK调制信号。红外接收头内部有一个带通滤波器,中心频率通常为38kHz,它只对这个频率范围内的脉冲有响应。因此,只有载波脉冲群能被接收头解调为低电平,而恒定的高电平(无载波)则被解调为高电平,从而还原出调制信号。
3.4 模块四:输出缓冲与驱动级(U1D及晶体管)
CMOS逻辑门(如CD4093)的输出电流能力很弱,通常只有几毫安,不足以直接驱动红外LED发出足够强度的、能被一定距离外接收的光信号。因此,我们必须增加一个电流驱动级。
- 缓冲门U1D:首先使用第四个门U1D。将其两个输入端短接,作为反相缓冲器。将调制后的信号(U1C引脚7)接入U1D的输入(引脚8、9),从引脚10输出。这个缓冲级有两个作用:一是对信号进行整形,确保边沿陡峭;二是提供一定的隔离,避免后级功率电路影响前级脆弱的振荡电路。
- 晶体管驱动电路:这是提升驱动能力的关键。我们使用一个通用的NPN小信号晶体管,如2N2222、BC547或S8050。
- 连接方法:晶体管基极通过一个限流电阻R3(例如220Ω至1kΩ)连接到U1D的输出(引脚10)。发射极接地。集电极连接红外LED的阴极,红外LED的阳极通过一个限流电阻R4连接到正电源(如5V)。
- 工作原理:当U1D输出高电平时,晶体管基极获得电流而饱和导通,相当于集电极和发射极之间短路,此时红外LED两端获得电压而点亮。当U1D输出低电平时,晶体管截止,红外LED熄灭。
- 元件参数计算:
- 基极电阻R3:用于限制流入晶体管基极的电流。假设U1D输出高电平为5V,晶体管基-射极导通电压Vbe约为0.7V,希望基极电流Ib为5mA左右(足以使通用小功率晶体管饱和),则 R3 = (5V - 0.7V) / 0.005A ≈ 860Ω,选用820Ω或1kΩ的标准值即可。
- LED限流电阻R4:这是决定红外LED发射功率的关键。红外LED的正向压降(Vf)通常在1.2V至1.6V之间。假设电源电压Vcc=5V,Vf=1.4V,希望LED工作电流If为100mA(这是一个较强的驱动电流,适合较长距离传输),则 R4 = (Vcc - Vf - Vce_sat) / If。其中Vce_sat是晶体管饱和压降,约0.2V。计算得 R4 = (5 - 1.4 - 0.2) / 0.1 = 34Ω。我们可以选择一个33Ω的电阻,此时实际电流约为103mA。务必注意:电阻的功率要足够,P = I² * R = 0.1² * 33 = 0.33W,因此应选择至少0.5W的电阻。
- 状态指示LED:为了在调试时直观看到电路是否在工作,可以在U1D的输出端(或晶体管驱动前)并联一个普通的红色LED和一个限流电阻(如330Ω)到地。当有调制脉冲群时,这个LED会快速闪烁(由于频率高,人眼可能看到的是持续亮但略有闪烁或变暗),当调制信号为低电平时,此LED常亮。这是一个非常实用的调试辅助手段。
4. 完整电路搭建、调试与实测
4.1 物料清单与准备工作
在开始焊接或在面包板上插接之前,请准备好以下元件:
| 元件符号 | 参数/型号 | 数量 | 备注 |
|---|---|---|---|
| U1 | CD4093BE (或HCF4093, MC14093) | 1 | 14引脚DIP封装,CMOS四路施密特触发与非门 |
| R1 | 33kΩ 电阻 (1/4W) | 1 | 载波振荡定时电阻 |
| RV1 | 10kΩ 可调电位器 (卧式或立式) | 1 | 用于精确调节载波频率 |
| C1 | 100pF 陶瓷电容 (NPO/C0G材质为佳) | 1 | 载波振荡定时电容,稳定性要求高 |
| R2 | 1MΩ 电阻 (1/4W) | 1 | 调制信号振荡定时电阻 |
| C2 | 100nF (0.1μF) 薄膜或陶瓷电容 | 1 | 调制信号振荡定时电容 |
| R3 | 820Ω 或 1kΩ 电阻 (1/4W) | 1 | 晶体管基极限流电阻 |
| Q1 | NPN晶体管,如2N2222A, BC547, S8050 | 1 | TO-92封装 |
| IR LED | 红外发射二极管,如TSAL6200 | 1 | 注意发射角度和波长(通常940nm) |
| D2 | 红色或绿色普通LED (3mm或5mm) | 1 | 状态指示 |
| R4 | 33Ω 电阻 (1/2W 或 1W) | 1 | 重要:根据电流选功率,见上文计算 |
| R5 | 330Ω 电阻 (1/4W) | 1 | 状态指示LED限流电阻 |
| - | 面包板或万用板 | 1 | 用于搭建电路 |
| - | 连接线 | 若干 | 杜邦线或单芯线 |
| - | 电源 | 1套 | 5V直流电源,可用USB接口或电池盒 |
实操心得:在面包板上搭建时,建议遵循“从电源开始,模块化搭建”的原则。首先连接好电源和地线总线。然后依次搭建载波振荡器(U1A、R1、RV1、C1),用示波器确认其振荡后再搭建调制信号发生器(U1B、R2、C2),最后连接调制器和驱动级。这样分步调试,问题容易定位。
4.2 分步调试流程与关键测试点
调试是项目成功的关键,遵循以下步骤可以系统化地排查问题:
电源与芯片检查:接通5V电源,先不接任何外围元件,测量CD4093的Vcc(引脚14)和GND(引脚7)之间电压是否为稳定的5V。用万用表测量芯片静态电流,应在微安级别,如果达到毫安级甚至更高,可能芯片已损坏或短路。
载波振荡器调试:
- 搭建好U1A、R1、RV1、C1的回路。
- 将示波器探头地线夹在电路地,探头接在U1A的输出端(引脚3)。
- 打开电源,示波器应显示一个近似方波的波形。调节电位器RV1,观察频率变化。目标是将频率调整到38kHz或40kHz(根据你的红外接收头标准)。如果没有示波器,可以尝试用智能手机摄像头辅助:将红外LED对准手机摄像头(大多数手机CMOS传感器能感应到近红外光),在黑暗环境中,调节电位器直到在手机屏幕上看到红外LED发出微弱的、高频闪烁的白点,这通常意味着频率在几十kHz范围。
调制信号发生器调试:
- 搭建好U1B、R2、C2的回路。
- 将示波器探头接在U1B输出端(引脚4),应能看到一个频率约十几赫兹的方波。或者,将一个普通LED和330Ω电阻串联后接在引脚4和地之间,应能看到LED以大约每秒十几次的频率清晰闪烁。
调制器功能验证:
- 连接U1C:将U1A引脚3接至U1C引脚5,U1B引脚4接至U1C引脚6。
- 将示波器探头接在U1C输出端(引脚7)。此时应能看到一个被“斩波”的40kHz信号:在U1B输出高电平期间,示波器显示密集的40kHz方波;在U1B输出低电平期间,示波器显示一条高电平直线。这证明ASK调制成功。
驱动级与最终输出:
- 连接U1D作为缓冲,然后连接晶体管驱动电路和红外LED。
- 在U1D输出(引脚10)或晶体管基极,可以同时并联状态指示LED(D2与R5)。
- 此时,状态指示LED应呈现与调制信号同步的明暗变化(由于视觉暂留,高频载波期间可能看起来是常亮但稍暗)。红外LED无法直接用肉眼观察,但可以用数码相机或手机摄像头观察其是否发出(在调制信号高电平时)微弱的白光。
- 最终测试:找一个通用的38kHz红外接收头(如VS1838B、HS0038等),将其Vcc接5V,GND接地,OUT接一个LED和电阻到5V,或者直接接示波器。将你的发射器红外LED对准接收头,距离几十厘米。当发射器工作时,接收头的输出端应该输出与你的低频调制信号(U1B产生的方波)反相的电平信号。即发射器“发信号”(载波脉冲群)时,接收头OUT输出低电平;发射器“不发信号”(载波被封锁)时,接收头OUT输出高电平。
4.3 进阶玩法:用单片机替代低频振荡器
一旦基础电路调试成功,你就可以进行更有趣的升级:用Arduino、ESP8266或其他任何单片机来替代U1B及其RC网络,实现真正的红外遥控编码发射。
- 连接方法:断开U1B与U1C的连接(即U1C的引脚6不再接U1B引脚4)。将单片机的一个GPIO引脚(如Arduino的D2)通过一个约1kΩ的电阻连接到U1C的引脚6。将单片机和发射器电路共地。
- 编程实现:在单片机中编写程序,模拟常见的红外协议,如NEC协议。以NEC协议为例,它使用38kHz载波,通过脉冲间隔编码来代表“0”和“1”。你需要做的是:
- 在需要发射载波(逻辑“0”或引导码的脉冲部分)时,将GPIO引脚设置为高电平。
- 在需要关闭载波(逻辑“1”或间隔部分)时,将GPIO引脚设置为低电平。
- 精确控制高低电平的持续时间(NEC协议中,引导码高电平9ms,低电平4.5ms;逻辑“0”的高电平560μs,低电平560μs;逻辑“1”的高电平560μs,低电平1690μs)。
- 优势:这样一来,你的这个CD4093发射器就从一个简单的演示装置,升级为了一个通用的、可由程序控制的红外信号发射器。你可以用它来控制电视、空调、风扇等任何支持红外遥控的设备,只要你知道其协议编码。
5. 常见问题、故障排查与优化技巧
在实际制作中,你可能会遇到一些问题。下面是一个快速排查指南:
| 现象 | 可能原因 | 排查步骤与解决方案 |
|---|---|---|
| 电路完全无反应,指示灯不亮 | 1. 电源未接通或接反。 2. 芯片损坏或插反。 3. 存在短路。 | 1. 检查电源电压,确认极性。 2. 断电检查芯片方向(缺口标记)。测量芯片Vcc与GND间电阻,排除短路。 3. 目视检查所有连线,特别是电源和地线。 |
| 状态指示灯常亮或不亮,但不闪烁 | 1. 调制信号发生器(U1B)未起振。 2. 载波振荡器(U1A)未起振,导致调制器输出恒定。 3. 连接错误。 | 1. 用示波器或万用表交流档检查U1B引脚4是否有电压变化。检查R2、C2值是否正确,连接是否可靠。 2. 检查U1A部分,特别是电位器接触是否良好,C1是否损坏。尝试临时将C1换为更大值(如1nF)看是否产生低频振荡以便观察。 3. 对照电路图,检查U1B输出是否连接到U1C的正确输入端。 |
| 红外信号发射距离非常近(<10cm) | 1. 红外LED驱动电流不足。 2. 载波频率偏离接收头中心频率太多。 3. 红外LED或接收头方向不对或前方有遮挡。 | 1.重点检查R4:计算并确保红外LED电流在50-100mA。R4阻值是否太大?功率是否足够导致发热阻值变化?可尝试暂时减小R4到15-22Ω(短时间测试,避免烧毁LED)。 2. 用示波器仔细调节电位器RV1,将载波频率精确对准38kHz。无示波器时,在接收头输出接一个LED,慢慢调节RV1直到控制距离最远。 3. 确保红外LED正对接收头,且中间无尘埃及强光干扰(特别是日光灯和太阳光)。 |
| 接收头输出信号混乱,不受控制 | 1. 环境光干扰强烈。 2. 载波波形畸变严重(非方波)。 3. 电源噪声大。 | 1. 在较暗环境中测试,或为红外LED和接收头加装遮光罩。 2. 检查U1A的输出波形,应为干净方波。如果边沿缓慢或波形畸变,可能是C1质量不佳或负载过重。在U1A输出后先经过U1D缓冲再送调制器。 3. 在芯片的Vcc和GND引脚之间就近并联一个100nF和一个10μF的电容,以滤除电源噪声。 |
| 调节电位器时频率变化不线性或不起振 | 1. 电位器接触不良。 2. 电容C1漏电或损坏。 3. 电源电压过低(CMOS芯片在低于3V时可能工作异常)。 | 1. 更换电位器,或直接用固定电阻替代测试。 2. 更换C1,优先选用NPO/C0G材质的陶瓷电容,其温度稳定性和精度更好。 3. 确保电源电压在4.5V-5.5V之间。 |
优化技巧与心得分享:
- 追求更远距离:除了确保足够的驱动电流,还可以尝试将红外LED串联使用。两个相同的红外LED串联后,所需电压加倍,但电流相同。你需要重新计算R4的值:R4 = (Vcc - 2Vf - Vce_sat) / If。例如Vcc=5V, Vf=1.4V2=2.8V, If=100mA,则R4 ≈ (5-2.8-0.2)/0.1 = 20Ω。同时,使用透镜或反光杯聚光,能显著增加有效发射距离。
- 提高稳定性:在面包板上搭建高频(40kHz)电路容易受分布电容和电感影响。如果发现波形不好或频率漂移,可以考虑将核心的振荡器部分(U1A、R1、RV1、C1)焊接在一块小万用板上,再用排针连接到面包板的其他部分。
- 功耗考虑:本电路在发射时(调制信号高电平期间),红外LED消耗主要电流。如果用于电池供电设备,可以考虑降低驱动电流(如调整R4使If=20-50mA),并优化调制编码,让发射脉冲尽可能短,以节省电量。
- 理解“数字AM”:我们这个电路实现的调制方式非常直观地展示了幅移键控(ASK)的概念。载波的存在与否代表了数字信号的“1”和“0”(在本例中,有载波代表调制信号高电平,无载波代表低电平)。通过用单片机生成复杂的编码序列来替代简单的方波,你就能发射任何你想要的红外指令了。
这个基于CD4093的红外发射器项目,其价值远不止于制作一个能用的遥控器。它像一把钥匙,帮你打开了理解数字振荡、逻辑门应用和基础调制技术的大门。相比于面对一个封装好的红外发射模块,亲手从门电路开始搭建一切,会让你对“信号”如何产生、如何被操控、如何被发送有了具象而深刻的认识。当你看到通过调节一个电阻就能改变频率,通过改变一个输入电平就能控制载波的输出与否时,那些教科书上的概念瞬间就变得生动起来。这正是模拟与数字电路结合的魅力所在——简单,却蕴含着坚实的基础原理。