電子工作 17 – 省エネ型プログラマブル自転車用LEDライトの製作

 

概要

1個100円の超高輝度LEDを2個使い、これを100円ショップで売っている単三2本を使う筒形ランプに組み入れた。同時に、12F629とチルトスイッチ(傾斜させるとON/OFFするSW)を組入て、ある程度の振動を与え続けると、割込みが次々と発生して点灯し続け、振動を与えるのを止めるとやがて消灯する、といった動作をするものである。消灯後の電流消費は非常に小さい。振動の点から、自転車用に適す。

 

回路

   下に回路図を示す。もともと購入した筒形ランプには、クリプトン球が付いるが(単三2本で連続2時間もつという)、これをはずして代わりに、LED(OSPW5111A-YZ)を2個組込んだ。いろいろテストした結果、12F629の一本のポート(GP4)に抵抗なしでLED2個とも直接つないでちょうどよい輝度が出ることが分かった。もう一つのポート(GP1)はチルトスイッチにつなぐ。内部クロックを使っているので、結局、12F629のピン8本の内、4本だけ使用した。この回路は点滅点灯時に2-3mA、消灯時、チルトスイッチがONの状態で、70uA、OFFの状態で10uA程度電流を消費する。ただ、ランプには電源ON/OFF用のスイッチが付いているので、振動与えるのを止めても、しばらく点灯しているので、普通にスイッチを切れば、以後電池の消耗はない。忘れて、ONにしておいても、最大70uAていど消費するだけである。チルトスイッチに直列に抵抗を入れて更なる暗電流の低下を試みたが効果はなかった。

 


 


 

 


プログラム

  今回使うプログラムは、電子工作 15”12F629を使った電池駆動の超省エネプログラム式スイッチ回路”をベースにし、目的に合うように多少改変した。電源スイッチがONで、チルトスイッチの状態変化によって割込みが入り、点滅点灯ルーチンが約60秒間動作し、そして、消灯する。この時点で、振動によりチルトスイッチからの割込みが入ると、直ちに、同じルーチンを繰返す。プログラム中でFor I=1 to 500 に設定すると、割り込みが入る毎に約60秒間点灯する。この値500を大きく取ることによって、点灯時間が長くなる。Pause 50 は点滅間隔で、この値も自由に変えることが出来る。

 

****************** プログラミング備忘録 *******************

'Lmp629.bas  2007.2.21

 

'Based on IntS629a.bas  2007.1.18

'This demo program functions as follows: when the state of Tilt SW (GPIO.1) changed

‘ (to On or OFF),  an interrupt occurs, executing the Blinking routine (LED (GPIO.4))

'and then enters into the sleep mode where current consumption is below 70 uA. 

'Main themes here are how to use the interrupt and the low-power consuming

'sleep mode (@sleep), where battery operation becomes possible. Succeeded!!

 

'********Pin connection******************

'Pin 1: Vdd (5.0V)

'Pin 8: Vss (GND)

'Pin 6: GPIO.1: input - connected to Tilt SW                       

'Pin 3: GPIO.4: output - connected to Lamp’s two bright LEDs

 

'********** ここからがプログラム本体 ***************

LEDmain var GPIO.4  'LEDmain on GPIO.4

I var word            'Counter variable

TRISIO=%000010    'GPIO.1 (Interrupt) - input

CMCON=7           'Disable Comparators.

WPU=%000010       'Weak Pull-Up on GPIO.1 only

OPTION_REG.7=0    'Enable Weak Pull-Up's

IOC.1=1             'Detect input at GP1 - Essentiall !!

 

INTCON.3=1      'Enable the port input-level change interrupt

SleepLoop:

LEDmain=0

INTCON.0=0      'Clear GPIF

@Sleep             'Have good sleep! - This is a key command

INTCON.0=0      'Clear GPIF

 

'*** Blinking routine ***

I=0

For I=1 to 500      ‘500 equivalent to about 60 sec

I=I+1

High LEDmain       'Start of Main routine

Pause   50           'Wait .05 seconds

Low ledmain

Pause   50

High ledmain

Pause   50

Low ledmain

Pause   50

High ledmain

Pause   50

Low ledmain

Next I

 

Goto SleepLoop

 

'********** ここまでがプログラム ***************

'Note:

   'AKI Programmer's configurations:

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

   'MCLR - Internal ; BODEN - Diable; CD - Disable; CDP - Disable.

 

余談

夜間に自転車に乗る時使うので、点滅させることにした。多少、電流消費量が低下すると思われる。LED2本ではやはり輝度が不足する感じである。したがって、LEDを追加するか、電池を3本(4.5V)にして、10mA位流せば、相当改善すると思われる。ただ、LED独特の暖か味のない光りはあまり好きにはなれない。

 

 

Menu Pageへ戻る    

Topへ戻る