概要
また寒い季節がやって来た。日中の殆んどをデスクトップの前の椅子に腰掛けて過ごすので足温器は必需品。去年まで使っていたもの(電子工作50)は結線がこみいっていて、しかも誤動作をよく起こし、だましだまし使っていた。そこで今回はもっと簡単で確実に動作するものを製作することにした。電子工作50の中の後半に出てくる“簡易型足温器”を製作のベースにした。
製作にあたって考えていたこと:
1) 2個の電球による熱源はそのまま使う。
2) 温度センサ(TC622EPA、電子工作39参照)は1個だけ使う。
3) 2個の12F629に使うプログラムは電子工作50のものをほぼそのまま使う(ちょっとだけ変える)。
4) 温度の設定はロータリースイッチ(設定温度は5点)で行うようにする。
回路図
下図に示す様に、今回の回路は電子工作50の“簡易型足温器”のそれとほぼ同じである。1カ所多回転半固定ボリュームVR 200Kを抵抗を組込んだロータリースイッチに替えた点が違う。そしてその5つの接点にはそれぞれ設定温度に対応した抵抗を接続してある。それによって理論上20°Cから80°Cまでの温度が設定出来るようにした。温度センサTC622EPAに接続する抵抗とON/OFF反転する設定温度の関係は次のようである。したがって設定温度は抵抗値を変えることによっていかようにも変えられる。
設定温度 |
抵抗 |
20°C |
110K |
50°C |
133K |
60°C |
143K |
70°C |
151K |
80°C |
162K |
合成抵抗の作り方:
上記にぴったりの抵抗値を持つ抵抗は110Kを除いて市販品にはない。複数個の抵抗を組合わせて合成する方法が見つかったので紹介するる。例えば143Kを作りたい時、ちょっと大きめの市販の抵抗150Kを選び、次式で並列に入れる抵抗値を計算する; (150 x 143)/(150 – 143) = 21,450/7 = 3,064K = 3 M となるので、以下のように150Kに並列に入れる。実際、テスターによるAB間の測定値は143Kとほぼ目標値と一致した。なお計算結果の抵抗値が都合の良い値になない場合は、いろんな抵抗を直列または並列に組合せて近い値にする。
150K
A-----------xxxxx-----------B
|
|
----xxxxx--xxxxx--xxxxx----
.
1M 1M. 1M
予備実験1 - 温度センサ動作確認テスト: 温度センサTC622を小さいブレッドボード(55x85cm)に載せR=150K、Vdd=5Vのもとでセンサ本体に加熱した半田ゴテを接触させたり離したりするとセンサ出力が確実に反転した。マニュアルでは反転の温度差は2°Cと出ている。
予備実験2 – 反転温度の確認テスト: 温度センサを含めた熱源部をダンボール箱(30x30x25cm)に入れ、制御部のロータリースイッチの各位置(異なる抵抗値)でのON/OFFをくり返す温度域を測定してみた。SW位置1は設定温度20°Cなのだが外気温がそれ以上だったのでデータが取れなかった。熱源の大きさ(電球2個で合計130W)やダンボール箱の外壁からの放熱などで設定温度にはいずれの位置でも達してないが、SW位置を高温方向に回して行くと温度が確実に上がって行くことが分かる。
SW位置 |
1 |
2 |
3 |
4 |
5 |
6 |
抵抗値 |
110K |
133K |
143K |
151K |
162K |
110K |
ON/OFF温度(°C) |
- |
42-43 |
51-52 |
58-59 |
67-68 |
- |
左は制御部を入れたプラスチックボックス、真ん中のノブは設定温度選択用のロータリースイッチ。真横位置(黄色LED)から時計回りの方向に回すと温度が上がる。ノブの左側にResetSWが見える。
LED(R)はSSR(秋月のキット)がONの状態で点灯、LED(Y)は過熱を検知した時に点灯し、システムが停止していることを示す。ResetSWを押すと再起動する。温度計はプラスチックボックス内部を測定。
右はその内部、DC5VアダプタがPICに電源を供給する。市販のAC-USB5Vアダプタを使おうとしたが、オシロで測ったら意に反してノイズが多くてどれも使えなかった。
ロータリースイッチに上記の表で示した合成抵抗を組込んだもの。回転して選択出来る。SW位置1と6は結線されていて110Kにつながる。
足を入れて温めるダンボール箱の中に設置する熱源(小型電球2個出力合計130W)、熱を拡散する12VDCファン、底面に設置した温度センサ(電源線2本、抵抗線、ON/OFF出力線の計4本)、さらに電球点灯用の電線には94°Cの熱フューズが安全のために組込んである。この熱源部には穴の開いたプラスチックカバーが2重に被せられるている。
結果&コメント
1) 足温器としては大体予想どうりに動作する。しかしその動作は、段々安定してきたが、ちょっと不安定。ON/OFF動作がはっきりせず、ONになっている時間が圧倒的に長い。
2)
初期の段階では制御部と発熱部の間の電線に手を近づけただけでもON/OFF動作を繰り返す不安定な状態だった。しかもフル点灯とは違う半点灯の状態がたびたび発現した。
2) プラスチック多用(制御部のボックス、発熱部の2重のカバー)で、乾燥時期と相まって静電気が不安定度に大きく関わっている可能性ある。
3) 温度センサ部をファンの風が直接当たらない様に耐熱チューブで包んだら、動作の安定度が著しく増した。
4) 今回の最大の問題点は動作が不安定なこととの戦い。今後も検討して行く。
5) 改善しようと部品の交換などしている内に¥280の半導体SSR(Sharp S108T02)を2個おシャカにしてしまった。足温器のダンボール箱はスーパーからのもらいもの。
6) 後日(‘13.11.15)、5個ほどの市販のAC-USB5Vアダプタの出力をオシロで再測定してみたらノイズ発生はあまりなく安定していた。前回測定時は外から干渉があったようだ。
7) まだ問題があるが、あまり不都合なく38−41°C位で足を温めてくれるので冬場は助かる。楽チン楽チン!
8) 追加(2013.12.2) 過熱異常でLED(Y)が点滅点灯するが、もっと分かり易いようにメカニカルブザー(20S1090LFLA 秋月)を組込んだ。定格9VDCだが、実験では3Vより鳴り、7.6mA程度を消費する。実際にPIC電圧5VDCでは点滅時ちょっと不安定である(本体を手で抑えると良く鳴ったりかすれたり)。ただ、LED(Y)が点滅点灯終了後、連続点灯に変わるのでこの時点でブザーも安定して連続的に鳴る。止めるにはResetをかけるか、電源を切る。プログラムを変えずにすんだのが良い。
プログラム
12F629を2個使っているので別々のプログラムが必要である。もともと今回の電子工作は過去の電子工作50をベースにして出来るだけ変えないようにした。したがって;
1)
12F629Aのプログラムは電子工作50のそれと全く同じ − FootHeaterSimpleA.bas
2) 12F629Bのプログラムは電子工作50とほぼ同じで2行だけ変えた。過熱の検知時間を2倍に長くした(For m=1 to 20 -> For m=1 to 40、If l>=18 then OverHeatDetecd -> If l>=36 then OverHeatDetecd) − FootHeaterSimpleBmodif.bas
したがって今まで5分間で20回チェックしSSRがONの場合が18回以上あったら過熱としたが、今回は10分間で40回チェックしSSRがONの場合が36回以上あったら過熱と再定義した。LED(Y)の点灯があまりに頻繁に起きるのを防ぐためである。
‘********************************************
'FootHeaterSimpleA.bas - 2010.12.7 works OK
'Program for 12F629A
'********Pin connections************
'Pin 1: Vdd (5V)
'Pin 8: Vss (GND)
'Pin 7: GPIO.0: input
'Pin 4: GPIO.3: input - MCLR
'Pin 5: GPIO.2: output - to LED(Y)
'Pin 2: GPIO.5: output - to +Pin of SSR
'Pin 3: GPIO.4: input - from 12F629B (GP5)
'****** Program ********
CMCON=7 'Comparator off
TRISIO=%011001
TempIN var GPIO.0
SSRSW var GPIO.5
OverHeatIN var GPIO.4
LED var GPIO.2 'LED(Y) Yellow and mechanical buzzer
m var byte
n var byte
SSRSW=0
LED=0 'essential
Loop:
If TempIN=1 then
SSRSW=0
Else
SSRSW=1
Endif
If OverHeatIN=1 then ShutOFF
Goto Loop
ShutOFF:
SSRSW=0 'SSR -> OFF
For m=0 to 2
For n=0 to 100
High LED
Pause 250 '0.25 sec
Low LED
Pause 250
Next n
Next m
High LED 'Keep LED(Y) and mechanical relay ON until reset (newly added 2013.12.2)
End
'********* End of Program ***********
'Note:
'melabs U2 Programmer's
configurations for 12F629:
'Oscillator - INTOSC; WDTE –
Eable; PWRTE - Disable
'MCLR - Reset ;
BODEN - Enable; CD - Disable; CDP – Disable
'FootHeaterSimpleBmodif.bas 2013.11.6 - overheat checking program 電子工作50のプログラムを下記の様に2ヶ所だけ変えた
'Program for 12F629B
'********Pin connections************
'Pin 1: Vdd (5V)
'Pin 8: Vss (GND)
'Pin 7: GPIO.0: input - from OUT of Temp Sensor
'Pin 4: GPIO.3: input - MCLR
'Pin 5: GPIO.2: NC
'Pin 2: GPIO.5: output - to GP5 of 12F629A
'Pin 3: GPIO.4: NC
'****** Program ********
CMCON=7 'Comparator off
TRISIO=%001001
TempIN var GPIO.0
OverHeatOUT var GPIO.5
H var byte
L var byte
m var byte
TempIN=0
HorLcheck:
OverHeatOUT=0
H=0
L=0
For m=1 to 40 'modified 13.11.6 新たに変えたところ(1)
If TempIN=1 then
H=H+1 'H - Temp Sensor's OUT is +5V (=Lamps are OFF)
Else
L=L+1 'L - Temp Sensor's OUT is 0V (=Lamps are ON)
Endif
Pause 15000 '15 sec
Next m
If l>=36 then OverHeatDetecd 'important! 36 out of 40 'modified 13.11.6 新たに変えたところ(2)
Goto HorLcheck
OverheatDetecd:
high OverHeatOUT
Pause 1000
Goto OverheatDetecd
End
'********* End of Program ***********
: