51单片机驱动指针电压表DIY的一个时钟设计

玩转单片机 发表于 2018-01-12 09:17:33 收藏 已收藏
赞(8) •  评论(0

51单片机驱动指针电压表DIY的一个时钟设计

玩转单片机 发表于 2018-01-12 09:17:33

DIY过程1、原理还是很简单的,就是用单片机读取实时时钟芯片产生的时间数据,并根据时间数据调制成对应的电压,通过指针电压表显示出来就行了。但是要用时间来产生可控的电压,会用到D/A(数字-模拟转换),但家里没有D/A芯片,就一直没有动手。直到偶然发现STC手册上有用PMW(脉冲宽度调制)做D/A的说明,就简单地搭了实验电路试了一下,觉得可行就匆忙“开工”了。时钟芯片选用了单片机爱好者常用的DS1302,表头是2个5V量程的指针电压表,主控用的是STC12C2052AD,正好2路PWM对应小时和分钟。STC12C2052AD单片机是STC生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速A/D转换,20脚封装。

 

DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.0V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。使用3V的备用电池可以在主电源断电的时候继续走时。



时间的调整使用EC11旋转编码器,也就是常说的“飞梭”,可以左右旋转可按下,这么一个玩意配合程序就能实现小时、分钟的调节功能了。

2、制作PCB根据选用的元器件绘制出电路图,画出PCB来。软件是Altium Designer。

 
 热转印制板、焊接完成后的模样。受条件所限没有制作阻焊层,焊锡不太受约束焊点不好看,不如打样的板子养眼。3、重新绘制表盘

原来是5V的电压表,为了改成小时和分钟,需要重新绘制表盘。上网搜了下发现干这个活CAD最拿手,可惜一点基础也木有,为了画这个玩意看了2天的视频教程+百度,才总算勉强画好。普通打印纸打印的,为防潮在上面贴了一层塑料膜。双面胶粘到原来的表盘上,自我感觉做得还算不错。
    
4、外壳和组装手里最合适的就是以前弄的这个塑料盒了,大小还合适,就是黑不溜秋的不好看。
  
正面小电钻+挫刀开好表头的孔,好在塑料材质较软,手工制作也不算吃力,不过精度就很难保证了。装好EC11编码器和电源插座,再找合适位置放了2个LED(调节小时和分钟的指示)就行了。

5、程序和调试DS1302以前玩过,复制粘贴后简单修改一下就行。EC11的解码来自互联网。PWM相关的寄存器参照STC手册就行了。



用实验板试一下调零:单片机PWM输出0,调整电压表的调零螺丝让指针指在0的位置。调高端:表头里的色环电阻换成了3296可调电阻,PWM输出高,调节3296电阻让指针指向满刻度调线性:想要指针指在9点整的位置,输入理论值后发现会指到9点10分左右,只好逐个刻度在程序里面调整,这应该叫做“线性补偿”吧!

就在项目准备完工的时候发现了重大的BUG,每更换一个不同电源,指针指示的位置都有很大的误差,毕竟每个5V的适配器输出的电压不会完全相同,0.1V的差距都会造成指针位置的不同。只好用洞洞板做了个5V的稳压模块来补救一下,这样显示就稳定了,但输入电压就不能使用常见的手机充电器了,找了个9V的路由适配器当电源。

6、如何操作?

正常的时间显示状态下,编码器不起作用,LED全灭。按下编码器,红色LED亮起,表示为小时调节模式,左右旋转调整到正确的位置。再次按下编码器,红色LED熄灭,绿色LED点亮,进入分钟设置状态,同样左右旋转调整到当前的分钟数,每加减一分钟,就把秒归零。这样在标准时间为X时X分0秒时调一下就达到了分秒同时对好的目的。再按一下,LED全灭,回到正常显示状态。美图镇楼

后记:就是这么一个简单的时钟,磕磕碰碰的做了好久。摆在桌上看着还像那么回事。但折腾的意义大过实用价值,看个时间还得反应一会儿才能明白,有时候还会看错。但是DIY就是这样,从想象到完成,这个曲折的过程还是挺美好的。

赞(8)

收藏

相关话题
文章来源专栏
+关注

评论(0)

加载更多评论

参与评论

相关文章

分享到

QQ空间 QQ好友 微博
取消