步驟1:設(shè)計(jì)
電路
這是一個(gè)非常簡單的電路,基于8針Picaxe 08M。這就是我手頭上的東西,您也可以使用較新的08M2。它使用LDR和1M2電阻器在Picaxe的引腳1上形成分壓器。通過1k2電阻將一個(gè)橙色LED連接到Picaxe的引腳4。這將通過LED的電流限制在約5mA。這會降低LED的亮度,但是如果您的眼睛適應(yīng)了黑暗,它仍然足以提供昏暗的燈光(我在走廊上使用它,這樣我可以避免在夜間絆倒,但不會通過打開主燈來喚醒家庭)下拉電阻用于未使用的Picaxe引腳上-優(yōu)良作法是不要使微控制器上的I/O引腳“浮動(dòng)”,而且我認(rèn)為它還可以稍微降低電流消耗。我使用110k電阻作為下拉電阻,因?yàn)槲沂诸^上有很多電阻。您可以使用大約100k的任何電流。
LED是直接從Picaxe驅(qū)動(dòng)的,因此將來自此引腳的總電流限制在20mA以下非常重要。
當(dāng)LED熄滅時(shí),燈的電流消耗小于1mA,大約LED亮起時(shí)為5.5mA。我使用4節(jié)AA NiMH充電電池(可提供約5V電壓)運(yùn)行,平均可持續(xù)使用一個(gè)月左右,然后再為它們充電。
軟件
該軟件用盡了大部分電量時(shí)間處于“睡眠”模式,并且僅每2.3秒喚醒一次以檢查LDR的狀態(tài)。在讀取LDR之前,它會關(guān)閉LED,以便其光輸出不會影響讀數(shù)。讀數(shù)發(fā)生得如此之快,以至于在非常短暫地關(guān)閉LED時(shí)幾乎看不到LED閃爍。為了避免LED在黃昏附近重復(fù)打開和關(guān)閉,代碼中內(nèi)置了一些滯后現(xiàn)象。這是通過計(jì)算環(huán)境光的平均值非常粗略地完成的,因此環(huán)境光的變化需要一段時(shí)間才能在代碼中傳播。 ADC的原始讀數(shù)也被除以10,以最大程度地降低噪聲。
我所附的代碼在Picaxe 08M上有效。您應(yīng)該能夠通過使用Picaxe軟件內(nèi)置的向?qū)⑵滢D(zhuǎn)換為在08M2上運(yùn)行。
CPU:Picaxe 08M。
LDR:與Philips相似ORP12。我使用了www.jaycar.com.au
LED上的RD3480:高亮度5mm琥珀色LED。我使用了www.jaycar.com.au
PCB上的ZD0295:我在Eagle中設(shè)計(jì)并蝕刻了自己的定制板。所有設(shè)計(jì)文件都附在此Instructionable Case上:我設(shè)計(jì)了上述PCB,以安裝在www.jaycar.com.au HB6005透明塑料外殼中電容器:1x 100uF 16v; 1x 100nF,50v。
電阻:1x 1M2; 2個(gè)110k; 1個(gè)22k; 1x 10k; 1個(gè)1k2。都是1/4w薄膜薄膜(但可能沒關(guān)系)
其他:電源插座,電池座(電路需要5V-我用了4個(gè)1.2V AA可充電電池),編程接頭,約15cm絕緣連接線
如果對此電路有很大的興趣,我將獲得一批PCB并提供一個(gè)套件。
下面是該電路的Eagle文件原理圖和PCB。如果要蝕刻自己的PCB,則還有一個(gè)完整尺寸的PCB軌跡PDF。
步驟2:構(gòu)造
都很簡單。如果您沒有PCB,則需要制作一個(gè)PCB,或者使用剝離板(veroboard)
如果您以前從未制作過自己的PCB,請?jiān)诖颂幐鶕?jù)指示進(jìn)行搜索,或者閱讀我的說明本地hackerspace:http://www.makehackvoid.com/projects/pc-pcb-under-30-minutes-quick-n-easy-pcb-fabrication。
如果您使用的是雙面板,頂層只有一個(gè)軌道。如果您使用的是單面電路板,則必須用電線鏈接替換此軌道。
我使用了一個(gè)小的IC插座來安裝Picaxe芯片本身。
我使用了3針接頭用于Picaxe編程電纜。更改此電纜以適合您的編程電纜-有些電纜使用3.5毫米立體聲插頭。
在照片中,您可以看到LDR與所有其他組件都安裝在PCB的另一側(cè)。這是因?yàn)槲业脑脊碳跍y量環(huán)境光之前沒有關(guān)閉LED,因此必須對LDR進(jìn)行物理屏蔽。它不能很好地工作,這就是為什么我修復(fù)了固件。現(xiàn)在可以將LDR安裝在PCB的任何一側(cè),這無關(guān)緊要。
PCB的尺寸適合于流行的UB5項(xiàng)目箱。我使用了一個(gè)透明盒子,使LED發(fā)出的光線柔和且漫射。
步驟3:下載
Picaxe程序編輯器
http://www.picaxe.com/
Cadsoft Eagle原理圖和PCB套件
http://www.cadsoftusa.com/download-eagle/
開放源代碼?
這可能是我最后發(fā)布的依賴于上述軟件的Instructable。為了支持開源軟件,我正在嘗試將Arduino用于微控制器,將Kicad用于示意圖和PCB設(shè)計(jì)。在過去的幾年中,這兩個(gè)軟件包都變得非常用戶友好,我強(qiáng)烈推薦它們。有關(guān)更多信息,請?jiān)L問http://www.arduino.ccandhttp://www.kicad-pcb.org/。
固件
將以下文本復(fù)制并粘貼到Picaxe編程編輯器。對于Picaxe 08M,它應(yīng)該保持原樣工作。使用編程編輯器中內(nèi)置的向?qū)⒋a轉(zhuǎn)換為與08M2兼容的代碼。
‘用于Picaxe 08M的LED夜燈。
’由Nick West 2012和2013編寫。
‘在知識共享署名下發(fā)布&符號相似的許可證。
符號AVE_ADC = w0’連接到LDR的ADC的移動(dòng)平均值
符號ADC_READ = b2
符號LED = 4‘LED在此引腳上
符號LED_FLAG = b3
符號TWILIGHT_THRESHHOLD = 20’更改此項(xiàng)以更改觸發(fā)LED的光強(qiáng)度
main:
enableBOD 暫停20‘讓喚醒后一切穩(wěn)定。
如果pin4 = 1,則讓LED_FLAG = 1
否則讓LED_FLAG = 0 endif
low LED’短時(shí)關(guān)閉LED以讀取環(huán)境光。 readadc 1,ADC_READ‘分壓器,通過引腳1上的LDR和1M2電阻
如果LED_FLAG = 1如果LED在ADC讀取之前就亮了,請重新打開LED,因此它不會閃爍,因此不會顯著閃爍。
endif
ADC_READ = ADC_READ/10’降低ADC的分辨率以改善磁滯現(xiàn)象
AVE_ADC = AVE_ADC + ADC _READ‘ADC的移動(dòng)平均值
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小夜燈
+關(guān)注
關(guān)注
0文章
11瀏覽量
6584
發(fā)布評論請先 登錄
相關(guān)推薦
評論