電子工作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 5mmand +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:

            ' FOSC - INTOSC (GP4:I/O); WDTE - Enable; PWRTE - Enable

            '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)