用数码管显示时间可以说非常普遍。我们也介绍过用机械装置构建并显示数字的项目,例如这款「纯机械装置模拟数字时钟」。
https://make.quwj.com/project/367
上面这款稍显复杂,趣友们也表示颇为费劲。那么有没有「效率更高」的机械装置来显示数字的呢?
下面我们介绍一款电磁驱动,由 3D 打印模块构建的「数码管」。可以通过多位级联来显示一组数字,效果如何呢?请看下面的视频。
MechDisplayTest.ino
[607 Bytes at 2021-05-27, 12 次下载]
Segment.stl
[6884 Bytes at 2021-05-27, 13 次下载]
Face1.stl
[75084 Bytes at 2021-05-27, 13 次下载]
Mechanical+Display+2v1.step
[262351 Bytes at 2021-05-27, 15 次下载]
GerberFiles.zip
[1203622 Bytes at 2021-05-27, 31 次下载]
PCB 被设计成了两个部分,其中一部分只有线圈,另一部分则用来承载线圈之外的电子元件。
将不带线圈的 PCB 通过插头由背面固定到主控 PCB 之上。看起来还是很不错的。
PCB 的生产文件 Gerber 已经传到项目文件库中,可以下载之后在嘉立创等 PCB 服务商处打样。
https://make.quwj.com/project/384
在本项目的文件库中下载 3D 打印部件的 STL 文件:
https://make.quwj.com/project/384
使用两种颜色的材料来打印它们。这中间需要终止打印过程,并更换第二种颜色的打印材料。因此需要注意打印的设置。
收到 PCB 之后,将贴片元件焊接到 PCB 上。打磨 3D 打印的数字段块,组装面板时时确保每个段块都能前后灵活移动而不会卡住。
每一段块都有一个槽位,用于安装钕磁铁。安装磁铁时,需要检查磁极。确保前面的线圈所产生的磁极与面对线圈的磁铁的磁极相同。简而言之,让线圈可以将段块排斥顶出。用强力胶将磁铁固定到位。
最后,将两个部分组装在一起。
本项目的数码管,采用了 74HC595 移位寄存器 来实现状态控制。
在 Arduino 上,有一个叫 ShiftDisplay 的库(由 Miguel Pynto 开发),可以很好的驾驭这种硬件实现。你可以在库的 GitHub 中查看具体的代码实现。
https://github.com/MiguelPynto/ShiftDisplay
#include <ShiftDisplay.h>
int latchPin = D2;
int dataPin = D1;
int clockPin = D3;
const int SectionSizes[] = {4, 0};
const int Indexes[] = {0,1,2,3,4,5,6,7};
ShiftDisplay display(latchPin, clockPin, dataPin, COMMON_CATHODE, SectionSizes, true, Indexes);
void setup() {
}
void loop() {
//int i = random(0, 9999);
display.show(1234, 200); // store number and show it for 400ms
display.update();
}
上电之前,请确保电路不存在短路。使用独立的 5V 电源供电,通电之后就可以看到在磁铁和线圈相互作用之下,数字清晰的显示在面板上,就如同常规的七段数码管一样。
每一位数字的驱动所需的电流约为 650mA,由此可以根据自己需要显示的数字位数来选择合适的电源。希望你喜欢这个项目。