電子工作113 – 暗くなると赤、黄、緑LEDがゆっくり発光・減光を繰り返す防犯ライト
Electronics Project 113 – Warning Light
Using Slowly Brightening & Fade-out Red, Yellow and Green LEDs
概要
Introduction
今回製作したものは、15年も前に電子工作2で製作したものの改良版である。より小さい電流消費のLEDを使い、プログラムの一部を改良したことで装置全体の電流消費量を半減できた。計算では、アルカリ単三電池2本で前回の2倍の4カ月持つことになる。
The
Electronics Project 2, which was developed 15 years ago and shown above, was
modified for this new project so that the new device can work with consuming
less power by using three smaller LEDs (diameter 3mm) and partly modifying the
program (use of Sleep command of PicBasic Pro). That is, two alkaline AA
batteries (2000mAh) can drive the device for nearly 4 months in theory,
compared with about two months of the previous device.
回路図 Circuit Diagram
下図のように回路は電子工作2のそれとほぼ同じである。変更点は、3個の色違いのLEDを直径5mmのものから直径3mmの小さいものに換え、それらを4.7Kの抵抗を介して接続したことである。この組み合わせで明るさは十分認知できる。ちなみに、電源DC3Vで抵抗4.7Kを介して、この直径3mmのLEDに流れる電流は0.29mA、一方通常の直径5mmのLEDの場合、1.5Kを介して1mA程度流さないとはっきり光らないことが分かった。つまり、小さいLEDの使用が省エネに大変貢献することが分かる。下のプログラムの項で示すように、PicBasic
Proのコマンド Sleep (昼間の明るい時に、システムを一時的に眠らせて電流消費を抑えるコマンド)を新たに導入することによって、装置全体の電流消費は夜間の暗い時LED点灯のため平均で0.8mA位、昼間の明るい時は0.5mA位に収めることができた。それにもう一つの変更点は、GP3に10K抵抗を介して+VddにつなぎMCLRに設定したことである。これがないとLEDが点灯しなかったり、連続点灯が途中で切れたりする。
The
following circuit diagram is almost same as the one in Electronics Project 2, except that the smaller LEDs were used
together with 4.7K instead of the larger LEDs (diameter 5mm)and +Vdd was
connected to GP3 via 10K.
ブレッドボードでの実験
Experiment
of the device on breadboard
完成した装置
Completed
device
プログラム Program
プログラムの中でPicBasic
Proのコマンド “Sleep” を使って消費電流を下げることに成功した。このときConfig.のWDT (Watch Dog
Timer)をEnableに設定する必要がある、Disableだと装置が起動しない。プログラムの流れ: If GPIO.2=0 then
ALoopでGP2より入ってくる明るさ情報読み込み0(L、暗い)ならAloopに飛んで、赤、黄、緑のLEDを次々とゆっくり発光、減光させるルーチンを行う。終了したらIf
GPIO.2=0 then ALoopで、GP2の入力が0なら、またAloopに戻って同じ、3個のLEDのルーチンを行う。最初(CdSin)に戻って、If
GPIO.2=0 then AloopでGP2への入力が1(H,明るい)なら、SleepRout:に飛んで、Sleep 13を実行する。これはシステムを30秒間眠らせるコマンドで、消費電流を下げ電池を長持ちさせることが出来る。30秒たったらCdSin
に戻って再びGP2の入力状態をチェックする。周りが暗い場合、Aloop内を回り続けるが、反対に明るい場合、Sleep 13を実行している時間が長く続く、つまり、省エネに貢献する。Sleep コマンドを有効にするためには、Configuration設定で WDT
(Watch Dog Timer)を Enableに する必要がある。このSleepコマンドが使われているので、突然CdSセンサーを覆って暗くすると、理論上最大で30秒送れて赤色LEDの発光が始まる。
In
the program, it is important to set the WDT of Configuration setting to Enable;
otherwise (when set to Disable), the device does not start up. As perhaps
understood from the flow of the program shown below, when the surroundings are
dark, the Aloop routine is repeated, turning on and off three different LEDs
one after another. Meanwhile, when the surroundings are bright, the Sleep 13 (it means that the system is
kept in sleep state for 30 seconds) routine is repeated, lowering the power
consumption.
'*********************Programming Info**************************
'PWMF629e20304.pbp 2020.3.4 (the original one developed on 2004.1.22
was updated), worked OK
'Focusing on the use of PWM
'Three LEDs (GPIO.0-red,
GPIO.1-yellow, GPIO.4-green) smoothly change their brightness (dim-bright-dim)
‘one after another (not at the
same time) when the input from CdS (GPIO.2) is "0" (when changed to
dark).
'Using PicBasic Pro 3.1 and 12F629
'********************Program************************************
TRISIO=%000100 'GPIO.2 only -
input
CMCON=7
'Disable Comparators.
WPU=%00000100 'Weak Pull-Up on GPIO.2 only
OPTION_REG.7=0 'Enable Weak Pull-Up's
LR var GPIO.0 'LED red on GPIO.0
LY var GPIO.1 'LED yellow on GPIO.1
LG var GPIO.4 'LED green on GPIO.4
level var Byte 'level=variable
GPIO.0=0
'Turn off LED at GPIO.0.
GPIO.1=0
'Turn off LED at GPIO.1.
GPIO.4=0
'Turn off LED at GPIO.4.
CdSin:
If GPIO.2=0 then ALoop
Goto SleepRout
ALoop:
For
level=0 to 255 'Brightening
routine
PWM LR, level, 5
'0 -> 255
Next level
'5 cycles for each level
For level=255 to 0 step -1
'Fade-our routine
PWM
LR, level, 5
'255 -> 0
NEXT level
For level=0 to 255
PWM LY, level, 5
Next level
For level=255 to 0 step -1
PWM LY, level, 5
NEXT level
For level=0 to 255
PWM LG, level, 5
Next level
For level=255 to 0 step -1
PWM LG, level, 5
NEXT level
If GPIO.2=0 then ALoop
Goto SleepRout
SleepRout:
Sleep 13 'about 30 sec (13
x 2.3 sec)
Goto
CdSin
'********************End of
Program************************************
'Note:
'melabs
U2 Programmer used
'Programmer's configuration must be set as follows:
'MCLR - MCLR GP3 connected to +Vdd via 10K resistor
'BODEN - Enable; CD - Disable; CDP - Disable.
'********************************************************'**************
Menu Pageへ戻る (Return to Menu Page)
Top of Pageへ戻る (Return to Top of Page)