触摸按键唤醒,1uA/1个键/1秒唤醒,STC触摸MCU, 唤醒【主时钟停振/省电模式】
本帖最后由 梁工 于 2024-8-5 15:26 编辑触摸按键唤醒,演示程序见附件,1uA/1个键/1秒唤醒,
===STC8H4K64TLCD触摸MCU, 唤醒【主时钟停振/省电模式】
===STC8H4K64TL触摸MCU, 唤醒【主时钟停振/省电模式】
===STC8H1K08T触摸MCU, 唤醒【主时钟停振/省电模式】
触摸按键1秒唤醒一次, 1uA/一个键 + 2.4uA/32K振荡器需要电流,16个键<20uA
====增加1个键就是增加约1个uA
1个键参与唤醒就是: 3.4uA = 2.4uA/32K振荡器需要电流 + 1uA/一个键
2个按键参与唤醒就是:【2.4uA+1uA * 2】= 4.4uA
3个按键参与唤醒就是:【2.4uA+1uA * 3】= 5.4uA
4个按键参与唤醒就是:【2.4uA+1uA * 4】= 6.4uA
5个按键参与唤醒就是:【2.4uA+1uA * 5】= 7.4uA
......
16个按键参与唤醒就是:【2.4uA+1uA*16】= 18.4uA <=20uA
====如果2秒唤醒一次,电流再减半
STC的触摸按键是比较省电的,MCU进入睡眠后,主时钟关闭,自动启动内部的32KHz时钟,按设定的时间间隔扫描按键,
扫描结果自动比较阈值,超过阈值的键就会唤醒MCU。
MCU睡眠后,32KHz时钟启动,睡眠电流典型值2.4uA。例子为一秒检测一次按键。
如果允许检测16个按键,则每隔一秒自动检测一次所有16个触摸按键,任意一个触摸按键超过阈值均能唤醒MCU,
触摸的时间最长为1秒即可唤醒。
本例程序运行于24MHz,16键唤醒,睡眠时间967ms,睡眠电流为2.4uA左右@4V(一节锂电池),
检测触摸耗时16ms(每个按键1ms),电流1.1mA,则平均电流 = 2.4+1100*16/1000=20uA。
如果只允许一个按键,则检测一个按键时间为1ms,平均电流 = 2.4+1100*1/1000=3.5uA。
所以N个键唤醒,睡眠平均电流 = 2.4 + 1.1*N,单位uA。
STC8H系列 1T 8051中文数据手册更新
www.stcai.com
辅助开发软件下载
www.stcai.com/gjrj
请问楼主,你的程序中:u16 code T_KeyPress={ 1300,2000,900, 800, 900,1000,1100,1400,1000,1200,900,1200,750,900,1300,1800}; //触摸后的变化值
是实际测量值吗?这个数据是每一个单片机都一样吗?
hhh402 发表于 2023-12-9 15:14
请问楼主,你的程序中:u16 code T_KeyPress={ 1300,2000,900, 800, 900,1000,1100,1400,1000,1200,900 ...
这个表格是我的样板的实际测量值。
这个值会根据你的产品很大的不同,但是相同的产品的差异性就相对较小。
实际做产品时,装好一些样机(比如10~100个),测量各个样机的值,分析其一致性和偏差,获得一个平均值,代表整批产品的值。 谢谢梁工,根据偏差值占5%左右计算,按键未按下时数值大概20000左右吧,加上电容放电5000周期,24M主频,时间=(20000+5000)/24M=1042us,也就是说扫描一个按键大概需要1ms,对吗? hhh402 发表于 2023-12-9 16:27
谢谢梁工,根据偏差值占5%左右计算,按键未按下时数值大概20000左右吧,加上电容放电5000周期,24M主频,时 ...
扫键时间是初始化时设置的,跟读数没有直接关系。 请问梁工按照你的程序的设置,扫描一个触摸按键需要多少时间,怎么设置可以快一点? hhh402 发表于 2023-12-9 18:05
请问梁工按照你的程序的设置,扫描一个触摸按键需要多少时间,怎么设置可以快一点? ...
我设置的是1ms,不要设置太快,1m是很合适的时间。 👍 梁工,您好,这里1秒的扫描时间在实际产品开发中可能太久了点,就我个人开发的经验,产品进入省电后,一般长按1S或1.5S或3S等时间开机唤醒,如果刚好在扫描的时候按下,计时准确,如果刚好在扫描完后按下,则计时误差较大(要等待下个扫描时间1S),如果是短按唤醒,则误差更大,客户会不接收。
如果把扫描时间改短,比如100MS,那么误差会变小,如果是短按唤醒的话扫描时间要更短。这样的话耗电会变大。
所以这里还是要看看怎么优化的,把扫描时间1MS降低(通过设置充放电时间,参考电压?)
页:
[1]
2