发作品签到
专业版

雪花灯

工程标签

2.0k
0
0
3

简介

触控雪花灯,创意来源包括主控方案均来自b站up主@黑果工作室 的雪花磁控灯项目。

简介:触控雪花灯,创意来源包括主控方案均来自b站up主@黑果工作室 的雪花磁控灯项目。

开源协议

GPL 3.0

(未经作者授权,禁止转载)
创建时间:2024-02-01 22:25:58更新时间:2024-02-22 09:42:46

描述

雪花灯(触控)

原开源项目雪花磁控灯,我在原有的主控方案上,改成了触控,就不需要再搭配一块磁铁使用,演示及使用教程可见B站视频。

演示视频:https://www.bilibili.com/video/BV1xt421H7NA/?share_source=copy_web&vd_source=97b5c47ade0bdf9975035b71336bdd0a

源码: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

暂无BOM

附件

序号文件名称下载次数
1
touch_snowlight.zip
60
2
VID_20240201_143927.mp4
27
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航