
雪花灯
简介
触控雪花灯,创意来源包括主控方案均来自b站up主@黑果工作室 的雪花磁控灯项目。
简介:触控雪花灯,创意来源包括主控方案均来自b站up主@黑果工作室 的雪花磁控灯项目。开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
雪花灯(触控)
原开源项目雪花磁控灯,我在原有的主控方案上,改成了触控,就不需要再搭配一块磁铁使用,演示及使用教程可见B站视频。
源码:https://gitee.com/hw_ovo/snow-light_-stc8
一、芯片选型
主控:STC8G1K08A(STC8G1K08也行,区别在于带A的有PWM输出模式,但其实影响并不大,因为就三个PWM引脚根本不够用,还是得自己用定时器去实现5个引脚的PWM),这颗芯片够用且不需要晶振等外围电路,极大减少了PCB布局空间以及后续的焊接时间,性能对应该项目已经够用了。
触控芯片:TTP223,AHLB和TOG引脚同时接高电平,那么当手指未触碰IN引脚时(也就是触摸的金属区域),OUT输出高电平,但触碰IN引脚后,OUT输出低电平,利用这个特性就可以通过捕捉下降沿来判断是否手指按下。
TTP223原理图:
值得注意的是,Cs电容的大小可以调节灵敏度,因为我想精简电路且没有pf级的电容,所以直接接地了,也就是灵敏度最高。
原理图设计
电路整体比较简单,从内到外一共五路LED灯,STC8G1K08A的P31、P32、P33、P54、P55用于PWM控制LED,引脚为高电平时,LED熄灭,为低电平时,LED点亮;P30设置为下降沿中断,用于捕捉手指触摸后TTP223输出从高电平变成低电平的下降沿;
这里我没有接限流电阻,一方面是因为我在验证阶段的时候觉得接电阻有点暗,另一方面是使用电池供电时不接电阻会更亮一点,同时可以减少元件数量。
电池选择上,因为不想太厚,同时电池也不能太大,所以我选择的是CR1220,电池底座也比较小比较薄,而且还是贴片的,就是封装需要自己画一下。
PCB设计
整体的原理图并不难,在布局还有连线的时候多注意一下,同时再留出一个金属触摸区域,可以用焊盘替代。
我在PCB的右侧开了一个大的多层焊盘,目的是为了让成品可以穿过绳子,作为一个小挂件,如果不需要挂件可以去掉这个焊盘。
源码说明
使用的开发软件是keil4不是keil5,理论上keil5C51开发也差不多,开发思路都一样,可能需要修改点东西,自行百度。
STC8G1K08A只有3个PWM引脚,这肯定是不够的,所以需要用定时器自己做PWM控制。
我的PWM思路是这样:首先,将定时器设置成10khz,时钟周期也就是100us,记为t,在100个时钟周期期间(10ms,记为T)控制LED灯亮灭的小t数,就可以实现不同占空比的PWM输出。
举个例子:假设在一个T内,LED1亮了10个小t的时间,那么LED1的占空比就是10%。
当然这样做可能也有缺陷,比如功耗可能会过高等,可自行优化。
主要的运行思路是,上电初始化之后,运行标志位run_flag会置一,此时程序正常运行,当按下手指按下触发中断一定时间(500ms),会让mode值加一,mode的值决定了雪花灯的模式
mode=1:逐一渐变,LED从内到外依次点亮,然后又从外到内依次熄灭;
mode=2:全局呼吸,所有LED从亮到灭再到亮;
mode=3:爆闪,LED以极快的频率亮灭往复,我觉得太闪了晃眼睛,就把亮度调低了,可根据自己需要调高
mode=4:常亮,顾名思义所有LED常亮。
mode=5:进入省电模式,所有LED熄灭,时钟停止
为了通过中断去检测手指是否按下,需要设置P3.0为下降沿中断(该引脚中断只能下降沿触发),当正常运行时运行标志位run_flag=1,每按一次mode就会加1,当mode为5时,进入省电模式,同时运行标志位run_flag会置零,手指再次按下时,就需要长按2.5s才能重新正常运行。理论上重新启动应该用结合另一个闲置定时器1来写,但我半年多没接触这些东西了,并且对51以及寄存器这种写法不算特别熟悉,所以就用这种延时函数的方法检测。
有关模式一到模式三的代码放在了定时器0的中断函数里面,可以通过更改time_ms来改变各个模式的持续时间
还有的就是一些自定义的函数,都比较简单,可自行进行修改和封装。
烧录说明:
烧录通过串口烧录,烧录软件是stc-isp-v6.92C(其他版本也可以)。
由于我先画过验证板并验证原理图和源码都没问题之后,才画的雪花灯最终版本,所以为了成品的美观,画PCB时没有留任何烧录口。
因此就需要用导线把焊盘的引脚引出来,然后用一个SOP8烧录器进行烧录。如下图所示:
sop8烧录器(注意是买的时候选“窄体”)
(只需要用一块PCB飞线连接烧录座,再通过串口对芯片进行程序烧录,所有芯片烧录完成后,就可以焊接了)
实物图
说实话,我个人更喜欢新年红配色,可能是我最近看白色看多了审美疲劳了。
其它
源码我会上传到gitee平台以及附件里,需要的自取。
PCB怎么不显示呢?(烦恼~_~)
设计图

BOM


评论