-
单片机触摸灯
在朋友那看到有一个触摸的台灯
,感觉挺好玩的,突发奇想,想趁今天没事做一个玩玩,正好手边有
几个
STC
的
8
脚单片机,足够做
这个了,说做就做,顺便把过程发上来和网友们分享下,电路焊接、程序
编写测试,中间
经历了一波三折,终究还是在一天完成了,好了,话就不多说了。
————
刘辉
实现功能:
单个
触摸按键
实现
3W LED
灯的
开启
、
关闭
、
PWM
无极调光
、
闪亮
LED
不亮时短按触摸键点亮
LE
D
,长按闪亮,闪亮时长按调闪亮的亮度;
LED
亮的时候短按关闭,长按调节亮度。本来还想加上连按进入呼
吸灯的,结
果可能程序有些问题,很容易引起误操作,又删掉了
硬件电路设计:
< br>单片机选用
STC
的
STC15
f104W
单片机,
该单片机有为
51
内核
1T
指令
5V
单片机,
8
脚封装,
128B RAM
4KFlash
,
1K E2PROM
,含两个可自动重装初值的
16
位定时
器(
PS
:是定时器
0
和定时器
2
,别弄错了。想
不
明白姚永平到底怎么想的,留了
T2
却把
T1
删了)有掉电和空闲模式,不含
ADC
< br>、
PWM
还有串口。
LED
灯功率为
3W
电
压
3V
,试过加到
3.3V
只要散热跟得上没什么问题,最亮时电流
1A
左右
,本来想
的用一节手机锂电池供电做来着,但是单片机
3.3V
供电无法正常工作
o(>_<)o
~
~
只好改用
5V
加个
< br>3.3V
稳
压了。
LED
亮度采用
PWM
调节,单片机产生
PWM
波驱动三极管控制
LED
< br>灯的亮灭时间,达到调节亮度的
目的,由于单片机本身无
PWM
模块,只能用软件模拟了,频率选择
100Hz
左右,
8
位。
然后是触摸按键,这是触摸按键的仿真,方波
V1
的频率本来不想选的很大,频率
10K
,电阻兆欧级
的然后用
AD
检测电压就行了,但是这个单片
机没有
ADC
,又不想加电压比较器让电路变复杂,只能提高<
/p>
频率,
100K
比较合适,不按时输出电
压
4V
,触摸时输出
0.4V
,单片机很容易检测到。但是单片机在
2M
主<
/p>
频下(为了节省功耗,下边会细说)用定时器产生
100K
的方波,再加上定时器模拟
PWM
输出,主程
序基
本上做不了什么了,还好
stc15F104W
可以输出内部
RC
时钟,只是最小只能
RC
时钟
4
分频,
也就是
1.3MHz
(单片机为内部
RC
时钟,最低可选
5.5MHz
)
,只能硬着头皮选这个频率了,经过仿真和实<
/p>
际测试,方波
1.3MHz
下
R1
、
R3
选择
51k
和
510k
输出
还算不错,从仿真上看,不按时电压将近
4V
,触摸
时电压
0.7V
,在单片机上刚好是高电平和低电
平响应时间
1.9ms
,这样单片机不会误判,
OK
就这个了。
再然后就是怎么焊接了,在洞洞板上要焊的尽量小,不跳线,就用
AD<
/p>
画了个嘿嘿,栅格用的
100mil
刚好
洞洞板的间距,额。
。
。
(
??
;)
好像大材小用了点。三极管
8550
发射极撇长点,中间走一根线没什么问
题,
呵呵。
。
。
再然后就是焊接了,洞洞板放的太时间长了,焊的不好勿怪哈
,啦啦啦。
。
。
。
。
。
。
。
。
。
。
。
。<
/p>
。
电路焊接
好后测试没什么问题,接下来就是程序咯,因为我想尽量降低触摸灯的功耗,也就是灯不亮
的时候消耗的电流更小,所以单片机的
RC
时钟选择了
5.5296MHz
(最小的了)
,
stc15f104W
加上触摸按键
在
5.5296M
主频下消耗电流大概
8mA
p>
,
而在
2.7648M
主频下电流小了
0.5mA
,
所以
系统时钟频率选择了
RC
时钟
2
分频也就是
2.7648MHz
。
为了达到更低的功耗,使用了
stc15f10
4w
的空闲模式。空闲模式下除不给
CPU
提供系统时钟,
CPU
不执行指令外,
其余部件功能全部。
也就是内部
RC
时钟还会向外提供频率输出,
这样不会影响触摸按键的
正常使
用,而退出空闲模式也很简单,任意一个外部中断都可以唤醒单片机,所以把触摸按键接到了单片
机的
INT0
也就是
P3.3
引脚。
经测试电流降到了
4.2mA<
/p>
左右,
和一个普通
LED
的耗电量差不多了
`(*
∩
_
∩
*)
′,
和
典型功耗
1.9mA
还有一定差距,估计就是电容按键的消耗了
。
感觉这个耗电还是稍微有点大了,于是想到了单片机还有一
个功耗更低的掉电模式,但是进入掉电模
式后内部
RC
时钟停振,触摸按键也就不能用了。这个还是能解决的,让单片机间歇的工作不就行了吗,继
p>
续改,选择每
500ms
唤醒单片机工作<
/p>
100ms
用来检测按键,理论上讲应该是正常工作耗电量的
p>
1/4
了吧,
但是不知道什么原因,经过测
试耗电量依然高达
4.5mA
。唉,
,
,头疼,继续加大,选择
1
秒唤醒单片
机工
作
100ms
,测试工作电流降到
了
3.3mA
,但这又引来了一个问题,由于每秒钟单片机只工
作了
100ms
,所
以短按有的时候会
检测不到,必须按
1
秒准确响应,唉,算了,为了可靠响应还是
选择空闲模式吧,等以
后有时间在慢慢改吧。回头买些
3.3V
的
stc15L104w
,再把稳压去
掉试试。
。
程序流程图:
初始化
按键按下
Y
延时
500ms<
/p>
是否松开
N
Y
N
灯是否亮
灯是否亮
N
< br>N
Y
开
PWM
< br>关节能
关
PWM
开节能
Y
占空比控制
等待按键松开
节能开启
Y
进入节能模式
N
按键按下
Y
Y
延时<
/p>
500ms
等待按键松开
N
按键是否按下
闪亮
-
-
-
-
-
-
-
-
-
上一篇:我在看着你心得体会 我在看着你观后感
下一篇:描写抒情的段落