维多利亚式时钟显示器:350 个 LED 和一块控制所有这些 LED 的控制板

在之前题为“再现维多利亚式 21 段显示器”的博客中,我讨论了我和我的 DIY 伙伴、杰出的创客 Steve Manley 是如何对 21 段维多利亚式显示器进行现代演绎的。与使用照亮原始显示器的小型白炽灯泡相反,我们使用了三色 WS2812B LED,例如 Adafruit Industries LLC4684 器件。

同样,我们没有使用在过去来说是最先进的复杂机电开关技术来控制一切,而是使用了现代的微控制器单元 (MCU),这对维多利亚时代的工程师和发明家来说是令人费解的。

Steve 和我都在构建 10 个字符的显示器。为便于了解,图 1 所示为 Steve 构建的早期显示器,这款显示器使用了经过黄铜色漆处理的 3D 打印前面板。在本例中,Steve 正在运行一个简单的测试模式,用于检查所有的 LED 是否工作正常。

图 1:早期的 10 字符实现了对维多利亚式 21 段显示器的现代诠释。(图片来源:Steve Manley)

你会发现,Steve 的伪铜面板分为两部分,因为他的 3D 打印机无法处理整个 20 in.(英寸)的显示器跨度。另外,Steve 在前面板上围绕着字符外边缘选择了 10 个大“孔”。相比之下,我的前面板是用激光切割出来的一块亚克力,表面为黄铜色(图 2)。

图 2:10 字符显示器的主要元件。前面是激光切割亚克力伪黄铜面板。面板后侧是 10 个 3D 打印的外壳,均为高 64 mm、宽 50 mm、厚 10 mm。顶部是 10 块 LED 板,从后面看是 5 个两块板构成的子组件。(图片来源:Max Maxfield)

每块电路板均为宽 50 mm,高 64 mm。这些电路板分为五个子组件,每个子组件又包含两块电路板。还有 10 个 3D 打印外壳,大小与电路板相同,厚 10 mm。以我的激光切割伪铜面板为例,激光器能够切割出形成每个字符的 21 段,且在各段之间留下 0.7 mm 条状间隙。

我和 Steve 过去也做过类似项目,通常是以友好竞争的方式,比如我们几年前制作的精巧的计时器(参见 用 Arduino 构建一个精巧的计时器)。问题是,尽管我们以前就基本规则达成了一致,比如 LED 的数量和相对位置,但在诸如 MCU、实时时钟 (RTC) 等方面,我们通常都是各自发挥。这样做的问题是我们几乎不可能分享和交换代码。

而且每次我们开始一个新项目的工作时,我们都会做些无用功,浪费时间、精力。因此在这种情况下,我们决定构建一块单独的控制板,用来驱动我们各自的显示器。此外,我们决定构建一个具有所有必要“附属配件”的控制板,以增强我们未来的项目。

了解我们的维多利亚式显示器控制板

在经过大量的头脑风暴、探讨和折中后,我们想出了一个能满足我们所有需求的设计。最好的分享方法也许是直接展示我们的电路板(图 3),然后再简单地介绍各个部分。

位于左侧中间位置的器件是主处理器,我们采用了 SparkFun Electronics 提供的具有 DEV-14058 形式的 Teensy 3.6。该器件采用 32 位 Arm Cortex-M4F 处理器,运行速度为 180 MHz(可以超频到 240 MHz),具有 1 MB 闪存,256 KB SRAM 和 4KB EEPROM。

图 3:这是我们的第一版控制板,从左侧基于 Arm Cortex-M4F 内核的 DEV-14058 Teensy 3.6 处理器板开始介绍。(图片来源:Steve Manley)

位于电路板远端且在 Teensy 后部的两个电位器用来控制我们想要的任何东西,如显示器亮度或对声音的灵敏度。Teensy 右侧是针座,用于访问 MCU 的非专用输入/输出 (I/O) 引脚。

Teensy 的前面是一颗 CR2032 纽扣电池,用于当系统电源切断时维持 RTC 工作。在 CR2032 右侧是针座,可以将更多基于 I2C 的传感器和致动器接入电路板连接。CR2032 左侧是 8 个三针针座组,每个针座包括一个 0 V 引脚、一个 5 V 引脚和一个数据引脚。每个引脚都可驱动一串 WS2812 LED。另外,Teensy 有一个相关的 Octo LED 库,可以同时驱动八串 LED。

在我们的 21 段显示器中,七个较短的显示段各有一个 LED,而 14 个较长的显示段各有两个 LED,因此每个字符有 35 个 LED,10 个字符的显示器总共有 350 个 LED。每个 LED 需要 24 字节的数据,用于加载 LED 的时钟运行频率为 800 kHz。这意味着,如果我们从一个单片机引脚驱动所有 LED,将需要 ((35 x 10) x 24)/800,000 = 10.5 (ms) 来加载该 LED 链。

相比之下,使用 Teensy Octo 库并将我们的 10 个字符划分为 5 个双字符对,就可以将这个时间减少到只有 ((35 x 2) x 24)/800,000 = 2.1 ms。更好的是,Octo 库可以使用 Teensy 的直接内存访问 (DMA) 引擎在后台执行该上传操作,从而减轻主处理器负荷,使其更多地执行其他任务,比如计算我们巧妙惊人的灯光效果。

板子中间的五个瞬动按钮开关用于访问菜单,选择模式、效果以及输入数值(如日期和时间)。也可以使用安装在板子边缘的绿色螺纹端子块,将五个机柜安装式开关并联连接。我们还决定添加红外 (IR) 控制功能,可用于执行与按钮相同的任务。红外检测器位于中间按钮的下方。该按钮上方是一个光敏电阻器 (LDR),可用于根据环境光控制显示器的亮度。在 LDR 上面有一个驻极体麦克风,我们可以用这种麦克风使显示器对声音的反应。所有这些器件都可以从电路板上拆下来安装在机柜上,并通过绿色的螺纹端子块与电路板连接。

在电路板的右侧,我们可以看到 Seeed Technology102010328 Seeeduino XIAO。虽然该器件只有邮票大小,但 XIAO 采用了 32 位 Arm Cortex-M0+处理器内核 ATSAMD21G18,该内核处理器的运行频率为 48MHz,含 256KB 闪存和 64KB SRAM。XIAO 可用于处理任何红外控制信号并馈送给 Teensy。尽管这可能被认为是矫枉过正(因为我们几乎肯定可以使用 Teensy 直接处理红外信号),但我们认为,从长远来看“分而治之”的方法将使我们的生活变得更容易。

所有表面贴装器件 (SMD) 都位于电路板下面。这些器件包括 DS3231SN# RTC(Maxim Integrated 提供)、SGTL5000XNAA3R2 低功耗立体声音频编解码器(NXP 提供) 、LS119-S 开关去抖芯片(LogiSwitch 提供)以及用作电压电平转换器的74HCT245 八进制总线收发器(Toshiba Electronic Devices and Storage Corp 提供)。

图 4 所示红色控制板安装在我的显示器背面。图中还显示了一块绿色配电板,板上包括一个强大的 3.3 V 稳压器,可在需要时用来驱动任何额外的 3.3 V 传感器。

图 4:组装一个 10 字符显示器。红色控制板如图右侧显示。左侧的绿色电路板用于给控制板和显示器分配电源。(图片来源:Max Maxfield)

显示器右侧是一块蓝色原型板,此处未显示。所有这些意味着我们有红、绿、蓝 (RGB) 板,这会“激发我的幽默感”。理想情况下,配电板应该是红色,而控制板是绿色,但由于未知原因,如果在红色基板上使用配电所需的更厚的铜材,电路板厂会要求我们大幅提高成本,所以为了节约成本我们做了我们必须做的事情。

控制板的编程

下一步才是真正有趣的地方,因为我们要开始编写显示器的驱动代码了。我们的方法是,计划使用含有背景色、前景色和掩码的概念。当掩码位被设置为 0 时,相应的段显示背景色;当同一掩码位被设置为 1 时,该段显示前景色。这里有趣的是,前景色和背景色都可以是静态颜色,如黑色、白色或其他颜色。或者,前景色和背景色都可以是动态的,例如,在显示器上荡漾的彩虹条纹。

总结

我们还打算用这些新造的维多利亚式时钟显示器进行许多其他实验。例如,使用麦克风和音频编解码芯片,我们可以实现音频反应模式(另见 Arduino 声控工艺品 第 1 部分第 2 部分)。我想尝试的另一件事是,通过向左或向右倾斜显示器,使滚动的文本在显示器上有“滑动”能力(参见在业余项目中增加运动和方向检测功能)。

最后,我一直在想 George Lafayette Mason,他在 1898 年为最初的 21 段显示器申请了专利,距我写下这些文字已有 123 年了。我想知道,如果 George 能够看到我们利用今天的技术对他的想法所做的一切,他会怎么想呢。

关于此作者

Image of Max Maxfield

Clive "Max" Maxfield 于 1980 年在英国谢菲尔德哈兰大学获得控制工程理学学士学位,并开始了他的大型计算机中央处理器 (CPU) 设计职业生涯。多年来,Max 从事过从硅芯片到电路板,从脑电波放大器到蒸汽朋克幻想引擎(不要问)等各种产品的设计。同时,他还在电子设计自动化 (EDA) 的前沿领域浸淫 30 余载。

Max 是多本书籍的作者和/或合作者,包括《Designus Maximus Unleashed》(在阿拉巴马州被禁止)、《Bebop to the Boolean Boogie》(非常规电子指南)、《EDA: Where Electronics Begins》、《FPGAs: Instant Access》和《How Computers Do Math》。浏览他的“Max’s Cool Beans” 博客

More posts by Clive "Max" Maxfield
 TechForum

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.

Visit TechForum