步骤1:设计
电路
这是一个非常简单的电路,基于8针Picaxe 08M。这就是我手头上的东西,您也可以使用较新的08M2。它使用LDR和1M2电阻器在Picaxe的引脚1上形成分压器。通过1k2电阻将一个橙色LED连接到Picaxe的引脚4。这将通过LED的电流限制在约5mA。这会降低LED的亮度,但是如果您的眼睛适应了黑暗,它仍然足以提供昏暗的灯光(我在走廊上使用它,这样我可以避免在夜间绊倒,但不会通过打开主灯来唤醒家庭)下拉电阻用于未使用的Picaxe引脚上-优良作法是不要使微控制器上的I/O引脚“浮动”,而且我认为它还可以稍微降低电流消耗。我使用110k电阻作为下拉电阻,因为我手头上有很多电阻。您可以使用大约100k的任何电流。
LED是直接从Picaxe驱动的,因此将来自此引脚的总电流限制在20mA以下非常重要。
当LED熄灭时,灯的电流消耗小于1mA,大约LED亮起时为5.5mA。我使用4节AA NiMH充电电池(可提供约5V电压)运行,平均可持续使用一个月左右,然后再为它们充电。
软件
该软件用尽了大部分电量时间处于“睡眠”模式,并且仅每2.3秒唤醒一次以检查LDR的状态。在读取LDR之前,它会关闭LED,以便其光输出不会影响读数。读数发生得如此之快,以至于在非常短暂地关闭LED时几乎看不到LED闪烁。为了避免LED在黄昏附近重复打开和关闭,代码中内置了一些滞后现象。这是通过计算环境光的平均值非常粗略地完成的,因此环境光的变化需要一段时间才能在代码中传播。 ADC的原始读数也被除以10,以最大程度地降低噪声。
我所附的代码在Picaxe 08M上有效。您应该能够通过使用Picaxe软件内置的向导将其转换为在08M2上运行。
CPU:Picaxe 08M。
LDR:与Philips相似ORP12。我使用了www.jaycar.com.au
LED上的RD3480:高亮度5mm琥珀色LED。我使用了www.jaycar.com.au
PCB上的ZD0295:我在Eagle中设计并蚀刻了自己的定制板。所有设计文件都附在此Instructionable Case上:我设计了上述PCB,以安装在www.jaycar.com.au HB6005透明塑料外壳中电容器:1x 100uF 16v; 1x 100nF,50v。
电阻:1x 1M2; 2个110k; 1个22k; 1x 10k; 1个1k2。都是1/4w薄膜薄膜(但可能没关系)
其他:电源插座,电池座(电路需要5V-我用了4个1.2V AA可充电电池),编程接头,约15cm绝缘连接线
如果对此电路有很大的兴趣,我将获得一批PCB并提供一个套件。
下面是该电路的Eagle文件原理图和PCB。如果要蚀刻自己的PCB,则还有一个完整尺寸的PCB轨迹PDF。
步骤2:构造
都很简单。如果您没有PCB,则需要制作一个PCB,或者使用剥离板(veroboard)
如果您以前从未制作过自己的PCB,请在此处根据指示进行搜索,或者阅读我的说明本地hackerspace:http://www.makehackvoid.com/projects/pc-pcb-under-30-minutes-quick-n-easy-pcb-fabrication。
如果您使用的是双面板,顶层只有一个轨道。如果您使用的是单面电路板,则必须用电线链接替换此轨道。
我使用了3针接头用于Picaxe编程电缆。更改此电缆以适合您的编程电缆-有些电缆使用3.5毫米立体声插头。
在照片中,您可以看到LDR与所有其他组件都安装在PCB的另一侧。这是因为我的原始固件在测量环境光之前没有关闭LED,因此必须对LDR进行物理屏蔽。它不能很好地工作,这就是为什么我修复了固件。现在可以将LDR安装在PCB的任何一侧,这无关紧要。
PCB的尺寸适合于流行的UB5项目箱。我使用了一个透明盒子,使LED发出的光线柔和且漫射。
步骤3:下载
Picaxe程序编辑器
http://www.picaxe.com/
Cadsoft Eagle原理图和PCB套件
http://www.cadsoftusa.com/download-eagle/
开放源代码?
这可能是我最后发布的依赖于上述软件的Instructable。为了支持开源软件,我正在尝试将Arduino用于微控制器,将Kicad用于示意图和PCB设计。在过去的几年中,这两个软件包都变得非常用户友好,我强烈推荐它们。有关更多信息,请访问http://www.arduino.ccandhttp://www.kicad-pcb.org/。
固件
将以下文本复制并粘贴到Picaxe编程编辑器。对于Picaxe 08M,它应该保持原样工作。使用编程编辑器中内置的向导将代码转换为与08M2兼容的代码。
‘用于Picaxe 08M的LED夜灯。
’由Nick West 2012和2013编写。
‘在知识共享署名下发布&符号相似的许可证。
符号AVE_ADC = w0’连接到LDR的ADC的移动平均值
符号ADC_READ = b2
符号LED = 4‘LED在此引脚上
符号LED_FLAG = b3
符号TWILIGHT_THRESHHOLD = 20’更改此项以更改触发LED的光强度
main:
enableBOD 暂停20‘让唤醒后一切稳定。
如果pin4 = 1,则让LED_FLAG = 1
否则让LED_FLAG = 0 endif
low LED’短时关闭LED以读取环境光。 readadc 1,ADC_READ‘分压器,通过引脚1上的LDR和1M2电阻
如果LED_FLAG = 1如果LED在ADC读取之前就亮了,请重新打开LED,因此它不会闪烁,因此不会显着闪烁。
endif
ADC_READ = ADC_READ/10’降低ADC的分辨率以改善磁滞现象
AVE_ADC = AVE_ADC + ADC _READ‘ADC的移动平均值
AVE_ADC = AVE_ADC/2
如果AVE_ADC》 TWILIGHT_THRESHHOLD则为高电平LED’高亮LED并在引脚4
elseif上施加1k限流电阻AVE_ADC 《= TWILIGHT_THRESHHOLD然后为低LED
endif
sertxd(#AVE_ADC,CR,LF)
disableBOD‘掉电检测禁用,以最小化睡眠电流
sleep 1’最小电流消耗约2.3sec
goto main
-
LED小夜灯
+关注
关注
0文章
11浏览量
6575
发布评论请先 登录
相关推荐
评论