控制/MCU
目前,时钟的种类是越来越多样,功能是越来越丰富了,但大多时钟还是传统上的时钟,即固定的表盘与指针,其形式与功能都比较单一,故难以吸引人。而一款旋转时钟不仅在创意上摆脱了传统时钟的设计而且也能迎合人们猎奇的心理,并且功能也可以多样化,不仅可以显示时间、日期,甚至连文字都能够显示。文章基于单片机设计了一款跟传统机械时钟一样具有秒针、分针、时针和表盘刻度的旋转时钟,并且具有准确显示即时时间和校准时间功能,且均可由红外遥控器方便完成。
文章拟采用16个发光二极管的亮灭来模拟时钟表盘,其旋转用一个直流电机转动来实现;时钟的1s源信号用DS1302时钟芯片产生;为了保证时钟盘面显示的稳定采用红外对管来实现;为了对旋转起来的电路板供电方便,采用无线供电;为了能够方便地调节旋转时钟的时间,拟采用红外遥控。故该系统的硬件模块主要由以下几部分组成:显示模块、无线供电模块、单片机最小系统模块、红外遥控模块、时钟模块、校准模块、电机驱动模块。其系统原理框图如图2.1所示。其中无线供电模块利用线圈耦合将能量传输给单片机系统,单片机系统就能正常工作了。电机带动单片机系统快速旋转;然后单片机再快速读取时钟模块的时间,并将这些时间信息送给显示模块;显示模块就能根据这些时间信息控制相应的发光二极管亮灭,再配合电机的旋转就能实现时钟的显示了。由于整个时钟是高速旋转的,所以对时间、位置等参数的设置采用红外遥控模块来实现比较方便。时钟模块就是为整个系统提供准确的时间,而校准模块是用来对时钟显示的起点进行检测。
单片机最小系统模块是由单片机芯片(STC12C5A60S2)、时钟晶振电路和复位电路组成。其中复位电路能够实现按键复位和上电即复位的两个功能。时钟晶振电路使用12MHz的晶振,给单片机提供时钟信号。STC12C5A60S2芯片的31脚(/EA端)接高电平,使其从内部的程序存储器读取指令,为了防止31脚意外输出低电平而将单片机烧坏,需要在31脚外接一个10K的电阻。
无线供电模块由发送模块和接收模块组成。其中无线发送模块主要由三极管B772和9013以及初级线圈等组成。其中B772工作时发热会很厉害,所以要外加散热片。电路主要工作原理是根据法拉第电磁感应定律,先将直流电变成交流电,然后通过初级线圈将能量发送出去,次级线圈最终感应得电,在经过相应的电路从而完成对单片机供电。其中,直流电转交流电部分采用的是一个自激震荡电路。
无线接收模块原理主要如下:首先次级线圈用来接收发送模块的初级线圈发送出来的能量,因为发送模块采用的是直流变交流将能量传送出去,所以次级线圈最总感应到的是交流电,而单片机的供电要求是直流电,所以必须经过整流才能变成直流电,最后再经7805稳压芯片,用来输出稳定的5V电源,用来给单片机供电。
电机驱动模块使用的电机是RF370电机,当其工作电压选在5V时它的转速在2500~3100转/分,电流也只需20mA,非常省电,并且转速能满足设计要求,旋转时噪音也小,所以很适合用来完成设计。电机是通过一个2脚插针连接到无线供电发送模块中的,此时5V电源给电机供电。由于电机工作的时候会储存能量,当停止工作的时候就会释放掉,为了避免电机释放的电流可能会烧坏其它电路,故需在电机两端并联一个限流二极管1N4148起保护电路作用。
时钟模块就由时钟芯片DS1302与其外围硬件电路组成。DS1302芯片在2脚和3脚之间接一个32.768KHz的晶振,DS1302芯片内部经过分频就能得到1Hz的标准信号,为时钟提供精准的时间信号。8脚的Vcc1外接3V纽扣电池,当模块断电后,它能让DS1302继续工作来保存时间数据;1脚的VCC2也是要外接电源5V,当双电源时VCC2作为主电源给模块供电;5脚(/RST)是复位/片选端,用来控制DS1302与外通信,接单片机P3.5引脚;7脚(SCLK)是串行时钟输入端,为数据传输提供时钟,该脚与单片机的P3.7脚连接;6脚(I/O)是串行数据输入/输出端(双向),为通信时数据传输引脚,与单片机的P3.6脚连接。
由于旋转时钟要让LED旋转起来要有圆形的效果,那么就要借助传感器或红外对管来帮助判断出起点位置,也能让时钟的盘面显示固定。本设计采用的是红外对管,其中红外发射管是焊接在无线供电发送模块中的,红外接收管与单片机的P3.3引脚相连,当接收管收到发射管信号时,电阻值会变得很小,此时P3.3处输出低电平;当没接收到信号时,接收管的阻值就变的很大,此时P3.3处就输出高电平,即产生了一个下降沿。P3.3脚是单片机外部中断1的输入引脚,如果将该中断设置为下降沿触发,则来了下降沿就立马触发中断,让单片机转去执行起点检测程序,以实现时钟能够正常准确显示。
显示模块就利用一排LED灯来实现显示时钟效果。在该设计中,借助16个LED灯与单片机的P1、P0引脚相连来完成,其中D1~D4是绿色LED灯,D5~D16是红色LED灯。D1用来显示时钟圆盘边框,D2~D4用来显示表盘刻度,如果时间是12点、3点、6点、9点时就亮3个灯,如果是其他时刻时就亮两个灯。D5~D16是用来实现表盘指针的显示,让显示效果跟实际的时钟指针一样。由于时钟中,秒针最长,所以显示秒针时D5~D16要全部点亮;分针的长度居中,所以显示时就D8~D16要全部点亮;时针的长度最短,所以显示时就只点亮D11~D16。
红外遥控模块由遥控器和接收模块组成,使用的遥控器采用的是NEC协议,许多家电的红外遥控就是采用这种协议。接收模块用到了红外一体化接收头VS1838B,其中它的3引脚接电源5V,2脚接地,1脚把接收头解调后的信号传送到单片机的外部中断0引脚(即P3.2),利用中断未让单片机实现红外解码。
程序设计的主要思想是:先用一个定时器产生固定的时间中断,中断执行的主要任务是让一个变量(就取名为Count)自加1。这个变量Count很重要的,因为就是根据它的值来决定显示的。比如电机每旋转一圈,Count就从0加到180,一个表盘有60个刻度(即因秒和分都是60),那Count每加15,单片机就要驱动LED显示相应的时刻点,一直加到180,那12个时刻度点就显示出来了。所以Count的最大值最好与60成倍数关系。
解决时钟指针的显示就只要读取DS1302的时间然后分别判断Count是否到达秒、分、时相应的Count值,如果到达了就分别显示出秒针、分针、时针。比如读取DS1302的秒值等于20,由于旋转一圈Count最大180,而一圈共60秒,因180/60=3,那么当Count从0加到180的过程中,当加到20*3=60时,此时单片机就要将秒针对应的LED点亮。分针显示原理与此类似,因为一个表盘上分也是有60个刻度。而时针的算法就有区别了,因为一个表盘上,时才有12个刻度。时的算法是这样的,(Hour*15)+(Minu/4)。因为表盘一圈,Count加到180,而表盘上时只有12个点,所以180/12=15,再加上分的移动会影响时针的走动,之间的换算关系是:(Minu*3)/12,Minu*3是此时分对应的Count值,而分走360度时只走30度,所以360/30=12。综合显示时所对应的Count值就是(Hour*15)+(Minu/4)。这样做的要求就是定时器的中断时间要密切配合电机旋转周期,并且电机的转速要稳定。
实物焊接电路如图5.1和5.2所示。图5.1是电路板正面,这上面能看到的模块分别有单片机最小系统模块、显示模块、时钟模块、红外遥控接收模块和无线供电接收模块。图5.2是电路板反面,这上面有红外对管接收模块,无线供电接收线圈。2个螺丝是用来配重的。
功能测试效果如图5.3、5.4、5.5和5.6所示。其中图5.3是系统上电后显示的即时时间10:43:12;图5.4表示时钟正常走动9秒后的时间10:43:21;图5.5是调整时针效果图,由刚才的10点调整到了1点;图5.6是调整分针效果图,由刚才的39分调整到50分。由测试结果可以看出,电子旋转时钟运行正常,时间显示准确、表盘显示稳定、调整时间功能亦能实现,所以设计功能达到了预期要求。
测试结果表明,文中设计的旋转时钟相比于市场上其他的方案,具有以下优点:①表盘(包括刻度和指针)显示稳定,不会出现颤动现象;②时间走动能够一直准确正常,不会出现运行一段时间后跑时错误,指针乱指等现象;③显示的亮度一致,不会出现显示亮度不匀称现象。当然,该设计也存在功能需要进一步提升的地方,比如可以加入显示日期和文字等,使表盘显示的内容增多,并且通过按键来切换显示模式等。
全部0条评论
快来发表一下你的评论吧 !