纯机械的七段数字显示器

MAKER: indoorgeek/译:趣无尽(转载请注明出处)

用数码管显示时间可以说非常普遍。我们也介绍过用机械装置构建并显示数字的项目,例如这款「纯机械装置模拟数字时钟」。

https://make.quwj.com/project/367

上面这款稍显复杂,趣友们也表示颇为费劲。那么有没有「效率更高」的机械装置来显示数字的呢?


下面我们介绍一款电磁驱动,由 3D 打印模块构建的「数码管」。可以通过多位级联来显示一组数字,效果如何呢?请看下面的视频。

组件清单

  • Arduino 开发板 × 1
  • DRV8837 H-桥驱动 IC × 7
  • 74HC04 IC × 2
  • 74HC595 IC × 1
  • 6mm x 1.5mm 钕磁铁 × 7
  • 7-pin 公头 × 1
  • 7-pin 母头 × 1
  • 5-pin 直角公头 × 1
  • 5-pin 直角母头 × 1
  • M3 螺丝 × 4

PCB 设计

PCB 被设计成了两个部分,其中一部分只有线圈,另一部分则用来承载线圈之外的电子元件。

将不带线圈的 PCB 通过插头由背面固定到主控 PCB 之上。看起来还是很不错的。

PCB 的生产文件 Gerber 已经传到项目文件库中,可以下载之后在嘉立创等 PCB 服务商处打样。
https://make.quwj.com/project/384

3D 打印部件

在本项目的文件库中下载 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,由此可以根据自己需要显示的数字位数来选择合适的电源。希望你喜欢这个项目。

项目所用的代码在本项目文件库中可以下载:
https://make.quwj.com/project/384

via

坐沙发

发表评论

你的邮件地址不会公开


*