
1. 项目概述当复古CRT遇上现代微控制器几年前我在一个旧货市场淘到了一只小巧的2英寸CRT阴极射线管显示器型号是5LO38I。它来自一台老旧的便携式设备屏幕虽小但那种独特的荧光绿色和略带弧度的玻璃表面瞬间把我拉回了电子技术的“模拟黄金时代”。当时我就在想除了让它作为一个静态的收藏品还能用它做点什么有趣又有挑战性的事情答案就是制作一个示波器时钟。你可能在网络上见过一些炫酷的示波器时钟项目它们通常使用现成的商用示波器通过X-Y模式显示由微控制器生成的图形。但这些方案要么成本高昂要么电路复杂对新手极不友好。我的目标很明确用最少的元件、最简单的电路打造一个功能完整、甚至能自动联网校时的CRT时钟。这不仅仅是一个显示时间的工具更是一次对经典电子原理的致敬和亲手实践。整个项目的核心思路可以拆解为两部分“大脑”和“画板”。“大脑”是一块ESP32开发板它负责计算时间、生成精确的X轴和Y轴模拟电压信号并且能通过Wi-Fi从网络获取准确时间。“画板”则是我用那只小CRT和几个老式电子管EF80搭建的简易X-Y模式示波器电路负责将ESP32送来的电压信号转化为屏幕上可见的光点轨迹最终勾勒出时钟的表盘和指针。这个项目的魅力在于其极致的“混搭”感。ESP32代表着现代物联网和数字控制的便捷而CRT和真空管则是上世纪中叶电子技术的标志。将它们结合在一起你得到的不只是一个走时准确的时钟更是一件会发光、有温度、充满工程师美学的桌面摆件。接下来我将毫无保留地分享从电路设计、元件选型、代码调试到最终组装的全部细节与心得无论你是想复现一个还是仅仅想了解背后的原理相信都能有所收获。2. 核心原理与方案选型解析2.1 为什么是X-Y模式要理解这个时钟如何工作首先要明白普通示波器与X-Y模式示波器的区别。普通示波器Y-T模式的横轴X轴代表时间由仪器内部一个非常稳定的锯齿波扫描电路驱动光点从左到右匀速移动纵轴Y轴则输入我们想要观测的信号电压。这样信号幅度随时间的变化就被“画”了出来。而X-Y模式则关闭了内部的水平扫描锯齿波。此时示波器的X轴和Y轴都变成了外部信号输入通道。屏幕上的每一个光点的位置直接由此时刻X输入电压和Y输入电压的瞬时值共同决定X电压控制左右Y电压控制上下。如果我们让X和Y输入两个有一定频率关系的正弦波屏幕上就会显示出美丽的李萨如图形。在这个项目中我们更进一步让ESP32根据当前时间实时计算并输出两路模拟电压分别对应时钟指针在圆形表盘上的X坐标和Y坐标。当这两路电压快速、连续地变化时由于CRT的余辉效应我们就能在屏幕上看到一个稳定的圆形表盘和转动的指针。2.2 信号生成方案为什么选择ESP32生成两路精确的、能合成复杂图形的模拟电压有多个方案可选。比如使用专用的DAC数模转换芯片或者用PWM脉宽调制加滤波电路来模拟。我选择ESP32主要基于以下几点考量内置DAC硬件直出ESP32本身集成了两个8位的DAC通道GPIO25和GPIO26。这意味着它可以直接输出0-3.3V的模拟电压无需任何外部转换芯片极大地简化了电路。虽然8位分辨率256级对于高精度测量略显不足但对于驱动CRT显示一个时钟图形来说完全足够图形边缘的“阶梯感”在CRT的轻微光晕下几乎不可见。强大的处理与联网能力ESP32双核处理器的主频高达240MHz足以流畅运行时钟逻辑和图形坐标计算。更重要的是它内置Wi-Fi模块可以轻松连接网络通过NTP网络时间协议自动校准时间实现了“一次设置永久精准”这是传统电路时钟难以比拟的优势。丰富的IO与社区支持除了DAC富余的GPIO可以方便地接按钮切换显示模式如罗马数字与阿拉伯数字。其庞大的开发者社区和丰富的Arduino核心库使得编程和调试过程非常友好。注意有爱好者反馈原项目图中标注的GPIO34有误。这是非常重要的细节GPIO34、35、36、39在ESP32上是仅支持输入的管脚无法输出模拟信号。必须使用GPIO25DAC1和GPIO26DAC2作为X和Y信号的输出。这是一个经典的踩坑点接线前务必核对开发板的引脚定义图。2.3 显示驱动方案晶体管 vs. 真空管这是本项目最具争议也最有趣的部分。原设计者最初计划使用MPSA45这类高压NPN晶体管来构建 deflection amplifier偏转放大器。晶体管的优势很明显速度快、功耗低、线性度好、电路成熟。但在实验过程中因为一次意外的接线错误晶体管烧毁了且手头没有备件。于是设计者转向了手边已有的EF80真空管。这个选择带来了意想不到的“复古加成”但也引入了新的挑战真空管的工作特性真空管是电压控制器件其跨导增益和线性区与晶体管不同。直接替换往往不能正常工作。需要调整的电路原晶体管电路的偏置电阻是固定的。换成EF80后由于管子的个体差异和老化程度不同需要将阴极电阻改为可调的电电位器以便精细调整工作点使图形居中且不变形。美学与实用性的权衡真空管工作时灯丝会发出温暖的橙红色光透过机箱缝隙看去科技感十足。但从纯性能角度晶体管的方案可能更容易获得稳定、边缘锐利的图形。对于复现者如果你追求极致的稳定性和易复现性我建议优先研究并采用高压晶体管方案如MPSA45、2N5551等需注意耐压值需大于400V。如果和我一样享受这种“复古实验”的味道并愿意在调试上多花些时间那么真空管方案会给你带来独特的满足感。2.4 供电方案单路12V的简约设计为了让项目更易于实现我坚持了单电源输入的原则。整个系统仅需要一个12V/2A以上的直流电源适配器供电。那么CRT和真空管需要的高压300V和灯丝电压6.3V从何而来高压生成12V - 350V使用一块常见的DC-DC升压模块如基于XL6007或类似芯片的模块。这种模块价格低廉效率较高可以通过板载的多圈电位器精确调节输出电压。我们将12V输入升至约350V为CRT的阳极和第二阳极加速极以及真空管的屏极供电。灯丝供电12V - 6.3VEF80真空管的灯丝额定电压为6.3V。我使用了一片经典的LM317可调稳压芯片将其输出设置为6.3V为两只EF80和CRT的灯丝供电。这里有个关键点总灯丝电流可能超过1A因此LM317必须安装足够大小的散热片否则会因过热而烧毁或触发保护。MCU供电6.3V - 5VESP32需要稳定的5V电压。一个取巧又简单的方法是从LM317输出的6.3V中串联两个普通的硅二极管如1N4007。每个二极管会产生约0.6-0.7V的正向压降两个串联后电压降至约5V正好为ESP32供电。这种方法省去了一个额外的5V稳压电路体现了“极简”的设计哲学。3. 电路设计与核心元件详解3.1 高压电源与CRT基础电路这是整个项目安全风险最高的部分务必谨慎对待。即使断电后高压电容中储存的电能也可能维持很长时间有触电危险。操作时必须确保电容已完全放电。核心元件5LO38I CRT这是一只小型静电偏转式CRT。与常见的磁偏转电视显像管不同它内部有两对相互垂直的偏转板X偏转板和Y偏转板。通过在偏转板上施加电压可以控制电子束的偏转方向。其主要引脚功能如下灯丝Filament通常为引脚1和14加6.3V交流或直流电压加热阴极。阴极K发射电子的源头。通常通过一个电阻连接到负高压调节此电阻可以改变阴极相对栅极的电压从而控制亮度。栅极G1控制电子束流强度的电极。通常施加一个负电压相对于阴极越负则电子束越弱屏幕越暗。第一阳极A1/聚焦极施加正电压用于聚焦电子束使光点最小。第二阳极A2施加最高的正电压本项目约350V用于加速电子束使其有足够的能量轰击荧光粉发光。重要安全提示原项目原理图中亮度控制是通过调整栅极电压实现的。但有资深爱好者指出更常见且效果更好的方法是固定栅极电压而通过调整阴极电压使其更负来控制亮度。这是因为改变阴极电压对束流的控制线性度更好。在复现时你可以考虑将亮度电位器接在阴极回路中。无论如何在调试高压部分时必须使用绝缘良好的工具并养成“断电、放电、再操作”的习惯。升压模块连接 将12V输入接入升压模块的Vin和Vin-。输出端的Vout连接到CRT的A2高压以及真空管的屏极通过负载电阻。Vout-是整个电路的高压地HV_GND它与后续低压电路的“地”是隔离的两者之间不能直接相连信号需要通过电容耦合。3.2 真空管偏转放大电路解析这是将ESP32输出的低电压信号0-3.3V放大到足以驱动CRT偏转板需要几十到上百伏摆幅的关键环节。我们使用两只EF80分别作为X和Y通道的放大器。EF80的基本接法共阴极放大屏极Plate通过一个屏极负载电阻Ra图中约为100kΩ连接到高压350V。放大后的信号就从这里取出。栅极Grid通过一个栅漏电阻Rg通常1MΩ连接到地信号地。同时ESP32的DAC输出信号通过一个耦合电容C约0.1uF/400V送到这里。这里有一个关键修正根据爱好者反馈耦合电容应连接到电位器的滑臂中间引脚而非固定端。这样才能实现信号输入和直流偏置的混合调整。阴极Cathode通过一个阴极电阻Rk连接到地。这个电阻会产生负反馈稳定工作点。在原晶体管方案中Rk是固定电阻。但在真空管方案中我强烈建议将其替换为一个10kΩ的多圈精密电位器。这是因为每只EF80的特性都有差异通过调节这个电位器可以精确设置管子的静态工作电流从而让图形在屏幕中央。电位器两端可并联一个10uF/25V的电解电容以增强交流信号旁路。帘栅极Screen Grid通过一个电阻约100kΩ连接到高压起到加速电子的作用。信号通路 ESP32的DAC输出0-3.3V - 耦合电容 - EF80栅极 - 放大 - 从屏极通过另一个耦合电容输出 - 连接到CRT对应的X或Y偏转板。偏转板的另一端通过一个高阻值电阻如10MΩ连接到高压地HV_GND。电位器功能总结 整机共使用了6个电位器它们的作用分别是X-Pos水平位移调整X通道EF80的阴极电位改变其直流工作点从而移动图形左右位置。Y-Pos垂直位移同上调整Y通道移动图形上下位置。X-Gain水平幅度调整输入到X通道EF80栅极的信号幅度改变图形水平方向的宽度。Y-Gain垂直幅度同上调整Y通道改变图形垂直方向的高度。Focus聚焦调整CRT第一阳极A1的电压使电子束聚焦光点变细。Intensity亮度调整CRT阴极或栅极的电压控制电子束流强度改变屏幕亮度。3.3 ESP32外围电路与连接ESP32部分的电路极其简单供电从“6.3V - 二极管 - 5V”的节点取电接入ESP32开发板的5V和GND引脚。信号输出GPIO25DAC1连接至X通道放大电路的输入耦合电容。GPIO26DAC2连接至Y通道。模式按钮将一个轻触开关的一端连接至某个GPIO如GPIO27另一端接地。在代码中配置该引脚为上拉输入当按钮按下时引脚读到低电平触发显示模式切换。接地ESP32的数字地GND需要与真空管放大电路的信号地连接在一起但必须与高压地HV_GND通过电容耦合隔离确保安全。4. 软件代码剖析与烧录指南4.1 代码核心逻辑解读本项目代码基于Mauro Pintus的开源项目修改而来。其核心思想并不复杂在微控制器内部模拟一个矢量绘图仪。时间获取联网模式如果代码中配置了正确的Wi-Fi SSID和密码ESP32启动后会连接网络使用内置的NTP客户端从时间服务器获取精确的UTC时间并结合代码中设置的时区偏移如东八区计算出本地时间。离线模式如果未配置Wi-Fi则使用代码开头定义的初始时间开始运行。int h10; int m8; int s37;这三个变量就是离线时的起始时、分、秒。图形生成算法表盘绘制表盘是一个圆。圆的参数方程是x centerX radius * cos(angle),y centerY radius * sin(angle)。代码中让angle从0到2π循环不断计算每个点的坐标并将其映射到DAC的输出值0-255从而控制电子束画出圆形。刻度与数字绘制每个刻度或数字的笔画本质上是一系列连续的短线段。代码中预定义了每个数字和刻度如I, II, III...或1,2,3...的矢量坐标集。绘制时依次将笔电子束移动到起点然后画线到下一个点如此反复。指针绘制时针、分针、秒针就是三条从圆心出发指向不同角度的线段。角度由当前时间计算得出秒针角度 (seconds / 60.0) * 2π分针角度 ((minutes seconds/60.0) / 60.0) * 2π时针角度 ((hours % 12 minutes/60.0) / 12.0) * 2π 计算好角度后用sin和cos函数计算出线段终点的坐标并绘制。扫描与余辉代码以很高的频率通常几十到几百赫兹循环重绘整个画面。由于CRT荧光粉的余辉效应和人眼的视觉暂留我们看到的就是一个稳定的、持续发光的时钟画面。绘制顺序通常是先画静态的背景表盘、刻度、数字再画动态的指针以减少闪烁感。4.2 代码修改与烧录要点网络配置在代码中找到Wi-Fi设置部分填入你的网络信息。const char* ssid 你的Wi-Fi名称; const char* password 你的Wi-Fi密码;同时设置正确的时区例如上海是CST-8。configTime(8 * 3600, 0, pool.ntp.org); // 东八区引脚定义确认再次检查代码中X和Y输出引脚的定义确保是GPIO25和GPIO26。#define X_OUTPUT 25 #define Y_OUTPUT 26 #define BUTTON_PIN 27 // 模式切换按钮引脚烧录环境使用Arduino IDE进行开发。需要在“开发板管理器”中安装“ESP32 by Espressif Systems”开发板支持包。选择正确的开发板型号如ESP32 Dev Module。选择正确的端口。点击上传即可。首次烧录可能需要按住开发板上的BOOT按钮进入下载模式。模式切换功能我添加的修改是增加了一个按钮中断功能。当按钮被按下时会在“阿拉伯数字”和“罗马数字”两种表盘样式之间切换。代码中通过一个全局变量如displayMode来记录当前模式并在绘图函数中根据此变量选择不同的数字字体数组进行绘制。5. 组装、调试与问题排查实录5.1 分步组装流程电源模块先行首先在洞洞板或PCB上搭建电源部分。连接好升压模块、LM317电路和二极管降压部分。先不要连接高压输出。用万用表测量LM317输出是否为稳定的6.3V经过二极管后是否为稳定的5V左右确认无误后再将5V连接到ESP32确保MCU能正常启动可通过串口监视器查看日志。搭建真空管放大电路为两只EF80搭建独立的放大电路。特别注意耦合电容和阴极电位器的连接。可以先不接CRT只测量各点电压。给EF80上电后高压先不接测量其屏极电压正常值应在高压350V减去屏极电阻压降的范围内约一百多伏。调节阴极电位器屏极电压应有明显变化。连接CRT与高压这是最需谨慎的一步。确保所有连接牢固无短路。准备一个高压探头或高内阻万用表。首次通电时将升压模块的输出电压调节电位器逆时针旋到最小输出电压最低。在断电状态下连接高压输出到CRT的A2和真空管屏极。接通12V电源。观察CRT和EF80的灯丝应微微发亮在较暗环境下可见。测量缓慢顺时针调节升压模块的电位器同时用高压表监测输出电压将其调整至CRT规格书推荐的典型值对于5LO38I约300-350V。注意CRT阳极高压绝对不能超过其最大额定值信号连接与初步调试将ESP32的DAC输出通过导线连接到放大电路的输入端。暂时不接X和Y偏转板或者将偏转板断开。给整个系统上电。此时屏幕上应该只有一个非常亮的光点如果没有检查亮度电位器是否调得太低或高压、聚焦电压是否正常。调节Focus电位器使光点尽可能小、圆。调节Intensity电位器使光点亮度适中。连接偏转与图形调试连接X和Y偏转板。此时屏幕上的光点可能会偏移到角落。分别调节X-Pos和Y-Pos电位器将光点移动到屏幕中心。如果ESP32代码已在运行你应该能看到光点开始移动并尝试画图。但由于增益不合适图形可能被压扁或超出屏幕。此时耐心调节X-Gain和Y-Gain电位器使圆形表盘大小合适且为正圆。最后微调两个通道的Pos和Gain使图形居中、大小合适。5.2 常见问题与解决方案速查表现象可能原因排查步骤与解决方案上电后屏幕完全无光1. 高压未产生或未加到CRT。2. 灯丝未供电或损坏。3. 亮度电位器调至最低栅极负压过大。1. 断电放电后检查升压模块输入12V是否正常输出高压是否建立注意安全。2. 检查CRT灯丝引脚间是否有6.3V电压灯丝是否连通。3. 顺时针旋转亮度电位器同时测量栅极电压是否在变化。只有一个亮点无图形1. ESP32未工作或代码未运行。2. DAC输出信号未送达放大电路。3. 放大电路EF80未工作。1. 检查ESP32供电5V观察串口是否有输出日志。2. 用示波器或万用表交流档测量ESP32的GPIO25/26应有变化的电压信号。3. 检查EF80各脚电压是否正常特别是屏极是否有高压。图形严重失真、不成圆1. X和Y通道增益不平衡。2. 偏转板接线错误或接触不良。3. EF80工作点严重偏移。1. 交替调节X-Gain和Y-Gain观察图形变化。2. 交换X和Y输入线看失真方向是否改变以判断是信号问题还是放大电路问题。3. 重点调试EF80的阴极电位器改变其静态工作点。图形抖动、不稳定1. 电源纹波过大。2. 高压或灯丝电源功率不足。3. 存在高频自激振荡。1. 在LM317的输入输出端、升压模块的输入输出端并联更大的滤波电容如1000uF和0.1uF并联。2. 确保12V电源适配器能提供至少2A的电流。3. 在EF80的屏极和地之间或栅极和地之间尝试并联一个小电容如100pF以抑制振荡。图形边缘模糊、有拖尾1. 聚焦未调好。2. CRT本身老化或荧光粉特性。3. 信号带宽不足真空管高频响应差。1. 仔细调节Focus电位器找到光点最细的位置。2. 适当降低亮度有时过亮会导致光点散焦。3. 这是真空管方案的固有局限可尝试减小屏极负载电阻以提升带宽但会降低增益。联网时间无法更新1. Wi-Fi信息错误。2. 网络连接超时。3. NTP服务器无法访问。1. 检查代码中SSID和密码确保无空格或字符错误。2. 查看串口日志确认ESP32是否成功获取IP地址。3. 尝试更换NTP服务器地址如cn.pool.ntp.org或time1.cloud.tencent.com。5.3 我的实操心得与避坑指南“热稳定”需要耐心真空管和CRT都是热器件。刚开机时由于温度未稳定图形可能会漂移或大小变化。这是正常现象。最佳观赏状态通常在开机10-15分钟后。在设计机箱时要为真空管和电源模块预留合理的散热孔。屏蔽是必修课CRT对电磁干扰非常敏感尤其是50/60Hz的工频干扰会导致图形出现缓慢的S形扭曲或抖动。用薄铜箔或铝箔将CRT管壁包裹起来注意避开屏幕和高压嘴并用导线将屏蔽层连接到电路的信号地可以极大改善显示稳定性。电位器的选择用于调节位置Pos和增益Gain的电位器建议使用多圈精密电位器如3296型。因为调整需要非常精细单圈电位器很难调到理想位置。关于“消隐”问题有爱好者指出指针和数字在移动时连接线回扫线也会被显示出来影响美观。这是原代码的一个局限因为它采用了连续的矢量绘制方式。更高级的实现会在画完一段线后将DAC输出快速归零或到一个固定消隐电平让电子束在移动到下一个起点的过程中不发光。这需要修改绘图算法增加“抬笔”和“落笔”的逻辑对初学者有一定难度但可以作为后续优化的方向。晶体管方案的备选如果你被真空管的调试难度劝退回归晶体管方案是明智的。搜索“CRT deflection amplifier transistor circuit”可以找到很多成熟电路。核心是使用高压、高带宽的晶体管如MPSA45, 2N5551等构建一个共发射极放大器其设计原则与真空管放大电路类似但工作点更稳定调试更容易。你完全可以用晶体管电路替代原理图中的EF80部分其余部分电源、CRT、ESP32保持不变。6. 外壳制作与功能扩展设想6.1 机箱设计与安全考量一个得体的外壳不仅能提升颜值更是安全的保障。我使用5mm厚的PVC板切割粘合制作机箱因为它易于加工、绝缘性好且成本低。布局规划将高压部分升压模块、CRT高压区集中放置在机箱的一侧并与低压部分ESP32、按钮保持一定距离。CRT屏幕开口要精确边缘可以用黑色胶带装饰减少漏光并提升观感。散热设计在LM317稳压器和升压模块对应的机箱位置开通风孔。确保真空管周围也有气流空间。安全隔离所有高压连接点必须使用热缩管或绝缘胶带妥善包裹。机箱后盖应贴上明确的警告标签注明“内有高压危险”。信号切换开关我在机箱背面安装了一个双刀双掷开关用于切换输入信号源。一路接ESP32时钟模式另一路接一个3.5mm音频接口外部信号模式。这样我就可以用电脑的声卡输出音频信号在CRT上显示李萨如图形或其他图案让它的功能不再局限于时钟。6.2 未来可能的改进方向这个项目像一个开放的画布有很多可以玩味和升级的地方图形效果升级修改ESP32代码可以绘制更复杂的表盘比如加入日期、温度湿度显示需增加传感器甚至简单的动画效果。输入方式升级增加旋转编码器实现无需电脑的本地时间设置和亮度、对比度调节。音频可视化利用ESP32的ADC引脚接入音频信号实现简单的音乐频谱可视化或波形显示让这台复古设备与现代娱乐结合。多CRT同步理论上一个ESP32可以控制多路DAC需外接DAC芯片驱动多个CRT显示同步或关联的图形构建更复杂的艺术装置。制作这个示波器时钟的过程更像是一次与电子工程历史的对话。从计算坐标的现代微控制器到放大信号的古老真空管再到最终将信息转化为光影的CRT每一个环节都凝结着不同时代的技术智慧。当那个泛着绿光的圆形表盘在昏暗的房间里稳定浮现指针悄然划动时你所感受到的不仅仅是时间流逝还有一种亲手将概念变为实物的、纯粹的创造乐趣。希望这份详细的指南能帮助你绕过我踩过的那些坑顺利点亮属于你自己的那一抹复古荧光。