电子产品世界 » 论坛首页 » 综合技术 » 智能硬件与可穿戴 » 将废旧硬盘打造成超酷时钟

共6条 1/1 1 跳转至

将废旧硬盘打造成超酷时钟

工程师
2015-09-01 22:13:07    评分

    

一、资料收集

    当决定动手开始制作时,我搜遍了国内的各网站,却没有一点这方面的资料。只好借助 英文翻译软件,陆续在国外网站上找到点点零星的相关资料: 这 神 奇 而 伟 大 的 创 意 最 早 出 现 在 加 拿 大 人 Alan Parekh 的 网 站 (alan-parekh.com/projects/hard-drive-clock),在他的网页里首次介绍了如何将一个废旧的硬 盘制作成时钟的:在硬盘的碟盘上开一条细缝,碟盘下安装了 2 种颜色的 LED,在单片机 的控制下,利用人类的视觉暂留原理,产生三色光条,以此分别表示时钟的时、分、秒。

    后来,这个创意被美国康奈尔大学的两位大学生 Jason Amsel 和 Konstantin Klitenik 将它 用来作了一个电子设计项目,不过,在这个项目中,除增加了一个带触摸的 LCD 屏外,其 实 质 上 并 没 有 什 么 突 破 性 的 进 展.传送门

    而 真 正 让 这 个 创 意 耳 目 一 新 的 突 破 , 是 另 一 个 美 国 人 , 他 的 网 站 见 www.ian.org/HD-Clock。他开创地用高亮度的 RGB 三色 LED 柔性灯条作光源,不但使显示 的亮度明显增加,还能产生更加炫丽多彩的动态图案。可遗憾的是他的作品并非是真正意义 上的时钟。时针太宽而且居然是逆时针方向旋转。

    另外,网上还有类似的作品:www.dm.ufscar.br/~waldeck/pic/hdd-clock,而网页似乎用 的是用西班牙文,只能通过那几张图片略知一二了。   从前面介绍的几位开创者的作品来看,作为真正的时钟,其实几乎没有多少实用性和方便性。主要原因在于,其作品要么噪声大,要么亮度低,要么就是一个演示而已。 因此, 要真正让这个奇特的创意有个完美的结果,就必须解决好噪音和亮度问题,解决好指针的显示问题。
二、弄清原理

    刚看到老外的硬盘时钟的视频时,我感到很好奇,待仔细思考弄明白原理后,我又感叹 地称奇了。 一条高速旋转的细缝为何能产生出若干光条甚至于整个多彩圆盘来呢?  首先,这得益于人类视觉的一个特性:“视觉暂留”现象。当眼睛看到一幅图像,而待图 像消失后,视觉仍能继续保留其影像 0.1~0.4 秒左右。电影电视及动画都是利用了这个原理。   其次,这还需要单片机控制 LED 的发光闪现与旋转的细缝同步协调。也就是每当开细缝 的圆盘转到特定的位置,就让 LED 闪现特定颜色的光,这样,就会让我们的眼睛感觉到那 个位置有一光条出现。由于有“视觉暂留”现象,只要我们在几处特定的位置让 LED 闪现 光,就会让我们眼睛产生有几个光条的错觉。与此继续推广,产生一个多彩的圆盘的道理也 就不难理解了。

    还要需要弄明白的是,为什么三色的 LED 能产生七色彩光?这是根据三基色原理,从 红绿蓝 3 种颜色的 LED 光的不同组合,还能产生新的4种颜色的光:

    红色+绿色=黄色

    绿色+蓝色=青色

    红色+蓝色=品红

    红色+绿色+蓝色=白色

三、整体设想

    手上有了一些资料,同时也明白了显示原理,接着就对我的作品作粗略的规划,提出 了一些原则和要求。

    1.结构上,尽量将全部部件集成在硬盘的盘体上,用电脑板卡上的档板作硬盘时钟的 后撑,使作品整体风格一致,让 DIY 的味更浓。控制主板及 LED 驱动和电机驱动需两组电 源(5V 和 12V),采用专用的电源适配器供电。因主轴电机为无刷无传感器直流电机,驱动 电路制作较麻烦,就用硬盘原有的电路板作驱动。作品完成后的全貌见图5。

    2.技术技巧上力求解决好噪声问题、发光亮度问题以及指针指示问题。将时钟表盘的 颜色从全黑改为发光的颜色,并在时钟盘面增加时钟刻度显示。

   3.电路及元件构成    

   主控芯片采用 51 单片机 AT89S52。 发光 LED 采用高亮度 RGB 柔性光条(见图 6),本身自带有背胶(见图 7),便于安装。

    LED 光条的工作电压为 12V,需要驱动电路,用 ULN2003 作驱动方便可靠。 为了方便调时和显示更多信息,同时考虑到不能影响主屏的视觉中心的要求,采用带锁存功能并能显示数字和字符的 mini 型 LED 显示屏 HPDL1414,见图 8。

    对时钟芯片的选择,一是要保证停机的状态下能正常走时,二是希望对芯片读写时不 受频繁中断的影响,故采用并口方式的时钟芯片 DS12C887。 设置 3 个按键用于调时,一个“设置”键,一个“加法”键,一个“减法”键。用一双色 LED 作为电源指示及调时状态指示。

    4.运行分 3 种状态:开机、调时和走时。

开机后,显屏分别全屏显示 7 种颜色,然后转变为动态显示彩条。当定格在 12 个条时, 逐渐减少颜色,最后转变为时钟状态。而相应的 LED 动态显示出“DIY POV LED HDD CLOCK”等字符串。

调时状态则由 LED 显示调整项目,并用一个 LED 的闪亮表示这一状态。

走时状态时,红色光条代表时针,绿色光条代表分针,蓝色光条代表秒针,用黄色作表 盘底色,并且用 12 个白色光条表示时间刻度。

四、制作加工

    1.硬盘的选用

    可以这样说,对硬盘的合理选择,是时钟制作成功的前提和关键,为了找到合适的硬盘 来做时钟,满足制作要求,我拆的硬盘已经是两位数的量了。什么样的硬盘才算合适呢? 首先摆在面前的问题就是硬盘常转的问题,大多数硬盘接上电源后运转不到一分钟就 会停下;还有一些本来是常转的,待打开盘体,拆下读写头后,却又变成转一会就不转的了。 当初,为解决这一问题,我曾采取过给硬盘的 IDE 接口的复位端反复送复位信号的办法来 解决,但这往往不能保证旋转均匀一致。后来发现实际上还是有能常转的硬盘的,只是在最 初试验过程中,将主轴电机上的碟盘完全取下来了,其实只要安上至少一张碟盘,还是有不 少硬盘是能保证常转的。

    其次是噪声问题,在选用时尽量选择噪声小的,早期的硬盘大多达不到要求,而后期 的硬盘有不少是噪声小的,但又觉得转速过快,51 单片机不好控制。于是我只好采取了折 中的办法,用较早期能让硬盘主轴电机常转的硬盘电路板驱动后期噪声小的硬盘盘体,这样 来,不仅有利于 51 单片机的编程控制,而且也进一步减小了噪声。

    最后是碟盘下面的空间的深浅问题,我选用的是较深的那种硬盘,以便于下一步有利 于 LED 的安装。 2.碟盘的开口加工:用合适的工具打开硬盘盖(见图 12),拆除硬盘内的音圈电机及 其它多余部件,并将拆下的一张碟盘进行开口加工(见图 13)。在对碟盘加工时,为保证碟 盘外观不受损伤,我采取的方法是用多层纸包着夹在虎钳上作业的,并在加工时特别注意到 眼睛的安全。

    3.为使碟盘下的 LED 发光显得更亮,需在碟盘的下方贴一张白色纸片作衬底,制作方 法及过程如下: 将一张拆下碟盘压在一张白纸上,用笔在沿着碟盘内圈画一圆(见图 14),然后用工艺 刀沿外圈走刀,刻出圆形纸片(见图 15),再用拆下的铝圈放在圆形纸片上,让其内圈正好 露出刚画的圆形,用工艺刀沿外圈走刀,刻出圆环型纸片(见图 16)。将这圆形纸片用双面 胶沾在盘体的主轴电机周边(见图 17)。



    4.LED 的安装:LED 是采用的柔性光条,背面本身自带有粘胶的,粘贴起来很方便, 只是由于碟盘下端空间的周边并非是一个完整的圆形,有一很宽的缺口,需用一铁皮将这圆 形补充完整,以保证 LED 光条在碟盘下形成均匀完整的发光圈。见图 18~21

    5.(槽形)光电传感器的安装:在硬盘盘体的左上角正好有一适合安装(槽形)光电 传感器的地方,并在此钻孔作为传感器连接线和 LED 连接线的出口。见图 22、图 23。

    6.电路板制作:因电路并不复杂,直接在万用板安装焊接元件和走线。万用板形状是 由硬盘盘体本身的结构特点决定的。见图 24、图 25。

五、电路原理

    1. 主要元件资料  ULN2003    ULN2003 是高耐压、大电流达林顿阵列,由 7 个硅 NPN 达林顿管组成。该电路的特点如下: ULN2003 的每一对达林顿都串联一个 2.7K 的基极电阻,在 5V 的工作电压下它能与 TTL 和 CMOS 电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。 ULN2003 工作电压高,工作电流大,灌电流可达 500mA,并且能够在关态时承受 50V 的电压,输出还可以在高负载电流并行运行。引脚定义见图 26

    HPDL1414

    这种 mini 型 LED 不仅能显示数字,还能显示字符,早期多用于仪器仪表上,大小只 与一枚 1 元硬币相当。 

    HPDL1414 自带 ASCII 字库,并用锁存方式显示字符。    具体资料可看原厂 PDF 文档。
    DS12C887

    时钟芯片DS12C887 与《无线电》2009 年第二期介绍的 DS12887 是完全通用的。就不 重复介绍了。

    2. 电路原理

六、程序调试

    硬盘时钟看似神奇,其实工作原理很简单,实质上就是在单片机控制下 LED 的频闪。 因此在软件的编程上并没有什么特别的地方,关键的是对一些时间值的准确的把握,和如何 解决短时高密度的中断之间的冲突问题。 对于前一问题,我采取了先简后繁,一步一步向前推进方法。比如先找到碟盘旋转一 周的时间值,再来确定旋转一周的六十分之一的时间就方便多了。(这里决对不是简单的用 60 一除了之) 对后一问题,在编程上,在时间段上,尽量将各中断分散开来,并减少中断处理函数 运行时间。

    1. 指针问题

    用有 60 个单元的数组 PT_col[]作为显示的缓冲区,时钟盘面的颜色完全由这个数组中 的各单元的取值确定。使得显示钟盘的颜色的编程简单而方便。 在调试时,出现很让人头疼的问题:在指针更新走到下一步的时候,原指针的位置颜 色如何恢复?如每次都将 PT_col[]数组全部更新,显然会占用大量时间,直接影响显示效果。 如每次只更新改变的那几个显示单元,是最节省时间的,只是在三个指针在同一位置和指针 在“十二点”位置时的情形处理较困难,因此采用折中的办法:在指针走向下一位置时,用 时钟盘面的背景色覆盖原位置,再用时盘面的刻度色刷新(只有十二个位置)。这样就完全 解决时针问题了。并且一并解决了多个指针在一起时,指针显示优先权的问题。请看下面的 程序段:

//用背景色覆盖原来的指针色

PT_col[t1]=BL_col;

PT_col[t2]=BL_col;

PT_col[t3]=BL_col;

//取指针数值

if(M3>12)

M3=M3-12;

t1=Ru(M1);

t2=Ru(M2);

t3=Ru(M3*5+M2/12);

//刷新时钟刻度色

PT_col[0+kdxz]=KD_col;

PT_col[5+kdxz]=KD_col;

PT_col[10+kdxz]=KD_col;

PT_col[15+kdxz]=KD_col;

PT_col[20+kdxz]=KD_col;

PT_col[25+kdxz]=KD_col;

PT_col[30+kdxz]=KD_col;

PT_col[35+kdxz]=KD_col;

PT_col[40+kdxz]=KD_col;

PT_col[45+kdxz]=KD_col;

PT_col[50+kdxz]=KD_col;

PT_col[55+kdxz]=KD_col;

//显示时针,如 t1,t2,t3 值出现相同的话情况下,上面的取色值被下面的取色值覆盖

PT_col[t1]=COL_MOD[CM][2];

PT_col[t2]=COL_MOD[CM][3];

PT_col[t3]=COL_MOD[CM][4];

2. 位置修正

光电传感器的位置是显示的起始点,由于没有安置在“十二点”位置,在程序编程上需 要一个转换程序,我用的是下面这一段程序完成的,传感器的位置改变的话,只要改变两个 变量 XZ 和 kdxz 的值就行了。

#define Ru(x) (x+XZ)>59? (x+XZ-60):(x+XZ)

    3.  BCD 码的转换

    因时钟芯片采取的是 BCD 码,而又由于 BCD 码在显示和调整值时不方便,因此,在 读写时钟芯片时都要进行转换。用宏定义了两个互换函数:

    #define NUM2BCD(x) ((((x)/10)<<4)|(x%10)) #define BCD2NUM(x) (((x)>>4)*10+((x)&0x0f))

    4. 调时程序

    由于有频繁的中断,应避免大的程序段,不然会影响显示效果。调时程序没有采用传统 的用一个键盘处理程序的方式。而是直接将各键值的处理分散到主程序的主循环中,并用一 个标志 TZ 记录键盘状态。

    5. LED 指示程序

当显示处于调整状态时,用了一个 LED 闪亮作为提示。具体程序为:

//LED 指示在设置状态闪亮

if(TZ!=0) Put_LED=~Put_LED; else Put_LED=1;

    七、制作后记

    经过十多天的努力,硬盘时钟终于完工,与前面介绍的几位老外的作品相比较,在几 个方面作了创新:

    1.采用便宜易找到的 AT89S52 作主控芯片。

    2.将开机画面与时钟显示有机结合,开创性地增添 mini 型 LED 作为辅助显示,保证 显示屏视觉上的主导地位。     3.时钟整个屏面一改过去的全黑局面,并增添了时间刻度,方便辨识,保证在室内正 常光线的环境下正常使用。     使硬盘时钟真正向实用性迈进,其效果远远超出我的想象。




视 频 效 果 见 :

www.youtube.com/watch?v=3zh64ndyHxg&feature=channel_page

或 :

v.youku.com/v_show/id_XNzcwMDkzNjA=.html

下一步,打算将硬盘时钟在下面几个方面作进一步改进:

    1.可给硬盘时钟加盖透明的有机板,以减少噪声和避免灰尘侵入;

    2.增加热释电红外传感器,自动控制硬盘时钟的开和关,减少电能消耗;

    3.将 9 只高亮度 LED 改成 12 只高亮度 LED 作光源,在增大亮度的同时,还可作为时 间的刻度。使表盘的表现更加简洁,醒目。

    4.为能更加方便随意控制主轴电机转速,让硬盘时钟更紧凑,为主轴电机另做驱动器。





专家
2015-09-01 22:51:35    评分
2楼
这个制作过程还不简单哪,赞一个,

院士
2015-09-02 09:59:28    评分
3楼
这个牛掰~~~

专家
2015-09-02 10:14:59    评分
4楼
太会玩了

菜鸟
2018-05-03 17:35:49    评分
5楼

您好!

    很佩服您的钻研和分享精神,我想动手做一个,能否加您VX,以后不懂的地方还请您能多赐教,也能跟您多学习,谢谢!


专家
2019-01-29 12:06:36    评分
6楼

这个牛叉了


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]