PicaxeLED小夜灯的制作

电子说

1.3w人已加入

描述

步骤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。

如果您使用的是双面板,顶层只有一个轨道。如果您使用的是单面电路板,则必须用电线链接替换此轨道。

我使用了一个小的IC插座来安装Picaxe芯片本身。

我使用了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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分