タイマー1号機

AC100VをON/OFFできるタイマーを作ります。このタイマーは連作になります。1号機はシンプルなタイプです。2号機はうんと多機能にする予定です。納得がいく物が出来たらキット製品化します。


2008-08-31

感光基板の露光時間が終了したら紫外線ライトを自動的に切るタイマーを作ろうと思って回路を書き始めましたが、AC100VのON/OFFが出来るのに自分自身の電源をAC-DCアダプターから供給するのは、何だかちょっと格好悪いので途中で回路図を書くのを止めていました。トランスレス電源の実験がうまくいったので、組み合わせてタイマーを作ることにします。

PICT7704.jpg

愛用のキッチンタイマー

PICT7705.jpg

回路を書きかけたが...

2008-09-01

とりあえずこんなんでいいんじゃないかなバージョンの回路図
 ・トランスレス電源
 ・AC100VをON/OFFするトライアック
 ・スタート、ゼロリセットプッシュスイッチ
 ・時間設定のロータリースイッチ
 ・ブザー
 ・ONタイマー(時間が来たらAC100VをONする)/OFFタイマー(その逆)の切り替えスイッチ

RB0はあまり用途を考えていない、多機能版では実現予定だが、例えば周囲が明るいときは設定時刻になっても反応しないようにするCdsセンサー入力や気温が低いときには反応しないようにする温度センサー入力など。入力が不安定にならないように、とりあえず100kΩでプルアップしてある。出力にしてオープンコレクタのトランジスターを付けておくのもいいかもしれない。タイマー自身は50mAあれば十分なので70mA程度の負荷ならドライブできる。フォトカプラーを付けておくのもいいかも。

timer1beta.GIF

2008-09-04

これはOLIMEXに発注かけないとダメだな。とても感光基板で造る気になれない。160×100から3枚は取れないので、AC100V回路を取り外してAC-DCアダプターバージョンも作ってみよう。ソフトは全く同じでいいのでEAGLEでレイアウトし直しをすればいいだけだ。

PICT7783.jpg

サイズは100×60程度

2008-09-05

AC100V無しバージョンも作った。AC100Vだと高電圧がかかっている配線の近くに、信号線が接近しないように気を使わないといけないが、こっちは全く気にしなくていいのでとても楽。基板の上に飛び出しているのはスイッチとして機能するトランジスター。オープンコレクタにしてある。

PICT7801.jpg

サイズは100×42

2008-09-18

OLIMEXに基板を作ってもらうので、多機能版もハードだけは完成させてしまうことにする。多機能版はUSBで時刻などを設定する方式にするのでハードを作るのは簡単だがソフトの開発に時間がかかる。

PICT7926.jpg

サイズは100×100

PICT7931.jpg

液晶を使用する。秋月電子で¥1700。データシート上のバックライト電流は360mAとあるが、100mA流せば十分な明るさになる。このときの電源電圧は5Vで直列抵抗は10Ω。

照度センサーも内蔵させよう。Cdsが環境に悪いらしく、これがその代替品らしい。フォトトランジスタというもの。実際にはベースに相当するリードが無く代わりに光を当てる。光が強いと電流がコレクタ->エミッタにたくさん流れる、光が弱ければちょっとだけ流れる。2SCタイプのトランジスターと同じ動作だ。2個¥100と価格も安いしCdsより小さくて良い。部屋の明かりが付いているか否かを検知させるには直列に1MΩ程度の抵抗を入れて電圧降下をA/Dコンバータで計測すればよい。光の強さと流れる電流の比はCdsのほうが肉眼に近い感じで使いやすい気がする。

PICT7935.jpg

フォトトランジスタ。NJL7502L

PICT7934.jpg

直列抵抗1MΩ。部屋真っ暗。ストロボを発光させているので明るく写っているが実際は暗い。ストロボの光に反応するほどテスターは高速動作できない。

PICT7933.jpg

直列抵抗1MΩ。部屋の蛍光灯を点灯させたとき。この部屋の蛍光灯は若干暗め。

2008-09-19

秋月電子で仕入れたFETドライバ。FET+保護回路を一つのパッケージにした物のようだ。高速なON/OFFは出来そうにないがスイッチとしては便利そう。10個で¥200と安い。ON抵抗は0.2Ω程度なので5V-1A程度のON/OFFなら殆ど発熱を気にしないで済む。

PICT7938.jpg

FETドライバ。TND012NM 普通のトランジスター「TO-92」パッケージより幅は広いが薄っぺらい。

PICT7940.jpg

何だか色々保護回路が入っている

PICT7939.jpg

約200mA流してON/OFFの実験。今回はLCDのバックライトのON/OFFに使う。もちろんPWMで輝度調整などはやらない。

2008-09-23

タイマーの製作で一番頭を使うのは1秒をどうやって作り出すかという所です。発振子に水晶を使用しているのですから、タイマーの精度は水晶の精度と等しくあるべきです。

timer1sec.gif

PICのタイマーは4クロックで1カウント進むが、クロックはMHzの単位なのでこれをそのまま扱うことはせずプリスケーラで分周してから使う。プリスケーラに設定できる分周比はタイマーによって異なるが16ビットタイマーのTIMER1では
 1:1 <-分周なし
 1:2
 1:4
 1:8
の4種が使用できる。ほしいのは1秒なので出来るだけ分周比の大きな1:8を採用する。
結果は上のEXCELの画面イメージの通りクロックが20MHzなら625000となる。
タイマーが0からカウントし始めて625000カウントしたらちょうど1秒になるということだ。

でもタイマー1は16ビットしかない。65536以上はカウントできないのだ。
そこで625000を16ビットで割る。端数が出て9.537...となる。
結果の9.537より大きく、9.537に近く、そして625000をその値で割ったときに端数が出ない数字を探す。10が最も適当な数値になる。
625000を10で割って「62500」を得る。

低機能のPICには無いがミドルレンジのPICにはCCPというのがある。とても多機能だがその中に
 ・タイマーの値がCCPで設定した値になると、タイマーをゼロリセットする
 ・そのとき同時に割り込みをかける
というものがある。
CCPに「62500」を設定しておくと、タイマーが62500になるたびに割り込みがかかるので
割り込みルーチンの中で、割り込み回数を数え10になったときに1秒経過したと判断すればよい。
ストップウォッチを作りたければCCPに設定する値を「6250」とする。そうすれば1/100秒ごとに割り込みがかかる。

CCP機能が無いPICの場合は、タイマーのオーバーフローを使う必要があるので水晶の選択に注意を要する。10MHzや20MHzは2の累乗で割ると端数が出やすい。11.776MHzとかいう半端な周波数の物が2の累乗で割ったときに都合が良くできている。試しに計算してみる...

11.776Mhz = 11776000Hz

11776000Hz / 4CLK = 2944000カウント

2944000 / 8ビット(タイマー0)  = 11500

11500 / 2(プリスケーラ1:2) = 5750
11500 / 4(プリスケーラ1:4) = 2875   <-端数が出ないのでプリスケーラ1:4を採用
11500 / 8(プリスケーラ1:8) = 1437.5 <-端数が出るので不可

結果は...
 ・8ビットのタイマー0を使う
 ・プリスケーラに1:4を設定する
 ・タイマーが2875回オーバーフローしたときが1秒である

CCPを使用する方式に比べ300倍もよけいに割り込みがかかるので割り込み処理内で何かをじっくり計算することは出来ないが、割り込み処理内で実行すべきは
 ・変数のカウントアップ(2875回をカウントするもの)
 ・LEDの点灯制御
程度なので、ソフトにあまり無理はない。

2008-09-24

レイアウトの最終確認は印刷が必要です。やはり実寸でないと部品の接近具合とか、細すぎるパターンなどが解らないのです。

PICT7989.jpg

2008-09-25

自作の実用回路というのはシンプルで何だかとてもつまらない物になります。自分の要求だけ満たせばいいので多機能化しないのです。万人の要求を満足させようとすると携帯電話のように多機能になりすぎて使いにくくなっていきます。

PICT7992.jpg

LEDを追加したり、リレーを追加してみたりでちょっとレイアウト変更。

PICT7991.jpg

桁数増やしてみたが奇妙なのでこれはボツ

2008-09-27

スペースの空いている部分に3mmのLEDをたくさん詰め込んだ。テスト回路なのでLEDの用途は決まっていない。サイズは100×58。多機能版の基板サイズが100×100なので2つの回路を面付けするとOLIMEXの基板サイズ160×100より2mm小さい。2mmは切断砥石の幅だ。OLIMEXのホームページにギロチンカッター以外にも砥石での切断も可能になったというのを見つけたためだ。

PICT7993.jpg

OLIMEX発注用のパターン完成

2008-10-01

多機能版のタイマー2号機は別ページにしました。

2008-11-10

この回路は電源を切ってしまうと全てを忘れてしまうので「繰り返しタイマー」としては使用できない。繰り返しタイマーには時刻の記憶機能が必要になるのでリアルタイムクロックを追加する必要がある。追加しようか悩んだが結局止めた。

PICT8249.jpg

基板パターン微修正

2008-11-11

またまたデータシートを良く読んでいないことが発覚。T1OSI,T1OSOに時計用の32.768kHz水晶を付けるとスリープモードにしても時間を忘れずに済むようだ。時計用の水晶はうまく発振してくれないとか聞いたことがあるのでうまくいくか不明。とりあえず実験あるのみ。

PICT8251.jpg

時計用水晶でTIMER1を動作させる。PICには発振子が2つ付いた状態になる。

2008-11-18

OLIMEXに発注をかけた試作基板
ファイル ファイルタイプ 添付ファイルの解説
timer1_proto.zip EAGLE 試作基板の回路図&基板パターン EAGLE Ver4.15用

2008-12-12

この回路は絶縁されていないAC100Vを使用しているので電源から組み立てて動作確認していきます。電源のテストが完了したら、PICを動作させるために必要な最低限の部品を取り付け、テストプログラムを書き込んで動作確認します。

PICT8368.jpg

電源部のみ組立

PICT8372.jpg

書き込みテスト

PICT8375.jpg

ブザーが欠品。それ以外は半田付け終了。

2008-12-16

ポートB5に値を書き込むと何故かポートB2も同時に変化する。おかしいのでシンプルな回路をブレッドボードで組み立てて確認。やはり同じ動作になる。データシートを見るとADコンバータがポートBにもある。最新(秋月で売っていたので、もう既に旧式か?)のPICはADコンバータの初期設定をしないとポートBがデジタルI/Oにならないようだ。ANSELHレジスタにゼロを書き込んで問題解決。2日を無駄にする。

PICT8386.jpg

ブレッドボードで確認

PICT8388.jpg

PIC16F886はADコンバータのチャネルが13もある

2008-12-18

1秒の生成にはタイマー2を使用します。
 ・8ビットのタイマー2をフリーラン
 ・プリスケーラ1:16
 ・ポストスケーラ1:12
 ・CLOCK19.6608MHz
この設定でタイマー2が100回オーバーフローしたら1秒です。

PICT8390.jpg

1秒を生成するのに都合がよいので20MHz->19.6608MHzの水晶に交換

PICT8394.jpg

電源側に逆流しない回路になっているのでデバッグ中はPICKit2から電源供給する。ICSPケーブルは繋いだまま ソース修正->書き込み->実行 を繰り返す。

部品表を作った。シンプルな構成のつもりだったが、基板を除いて約¥2000。特に高い部品は使用していないが、数が集まって高くなっている。部品表にはケースが含まれていないのであと数百円高くなる。AC100Vがむき出しになっているのでケース無しというわけにはいかない。

パーツリスト
部品番号 型式 購入場所 数量 単価 価格
プリント基板 OLIMEX OLIMEX 1 2000 2000
PIC PIC16F886 秋月電子 1 230 230
ICソケット 28ピン 秋月電子 1 80 80
AC100V電線 千石電商 1 100 100
B1 DIPタイプ 千石電商 1 50 50
C1 電解コンデンサ47μF 50V 千石電商 1 21 21
C2 電解コンデンサ10μF 400V 千石電商 1 42 42
C3 積層セラミックコンデンサ 0.047μF50V 千石電商 1 32 32
C6 電解コンデンサ1000μF 16V 千石電商 1 32 32
C4,C5,C12 積層セラミックコンデンサ 0.1μF 千石電商 3 5 15
C7 電解コンデンサ470μF 10V 千石電商 1 21 21
C13 電解コンデンサ10μF 10V 千石電商 1 11 11
D3,D1 UF2010 秋月電子 2 40 80
D4,D5,D6 1N4148 秋月電子 3 5 15
トランスレス電源IC FSD210B 秋月電子 1 50 50
R2 680kΩ 1/6W 秋月電子 1 1 1
R1,R3 110Ω 1/6W 秋月電子 2 1 2
R4 750Ω 1/6W 秋月電子 1 1 1
R5 8.2kΩ 1/6W 秋月電子 1 1 1
T1 2SC1815Y 千石電商 1 10 10
D2 ツェナーダイオード 10V 千石電商 1 21 21
L1 1mHコイル 千石電商 1 53 53
5Vシリーズレギュレター 7805 秋月電子 1 50 50
ZNR1 バリスタ CNR07D151K 秋月電子 1 40 40
TRAC1 トライアック BTA24-600CW 秋月電子 1 150 150
IC3 フォトトライアック MOC-3043M 秋月電子 1 50 50
LED1,2,5~10 3mm 秋月電子 8 4 32
R8 100Ω 1/6W 秋月電子 1 1 1
R6 470Ω 1/6W 秋月電子 1 1 1
R7,R16 1kΩ 1/6W 秋月電子 1 1 1
R12,R13,R15,R17 4.7kΩ 1/6W 秋月電子 4 1 4
R9,R10,R11 10kΩ 1/6W 秋月電子 3 1 3
R14 100kΩ 1/6W 秋月電子 1 1 1
C8,C9 セラミックコンデンサ 22pF 秋月電子 2 5 10
C10,C11 セラミックコンデンサ 15pF 秋月電子 2 5 10
T2~T8 2SA1015Y 千石電商 7 10 70
タクトスイッチ 千石電商 2 10 20
ロータリーエンコーダー EC16B 秋月電子 1 200 200
エンコーダツマミ B15 千石電商 1 105 105
スライドスイッチ SLB1208 千石電商 1 53 53
電源監視IC MCP100 MicrochipDirect 1 30 30
リレー Y14H-1C-5DS 秋月電子 1 80 80
ブザー HDB06LFPN 秋月電子 1 100 100
Q2 水晶 19.6608MHz 秋月電子 1 50 50
Q1 水晶 32.768kHz 千石電商 1 105 105
RN1,RN2 集合抵抗 330Ω 千石電商 2 21 42
RN3 集合抵抗 4.7kΩ 千石電商 1 21 21
LED3,LED4 7セグメント アノードコモン HDSP-K211 秋月電子 2 25 50
合計 4147

そもそも基板のパターンが大電流を流せないパターンになっていますが、強引にハロゲンヒーターをON/OFFしてみました。さすがにトライアックが直ぐに熱くなって危険な状態になります。このハロゲンヒーターの弱モードは400Wなのでトライアックの発熱量は1.3[V]×4[A]=5.2[W]となり、放熱器が必要です。放熱器無しでは100[W]程度が限界です。

PICT8397.jpg

ハロゲンヒーターをON/OFFする。トライアックが熱くなる。

電源を切ると「24時間プログラムタイマーモード」では全てのLED,リレー,トライアック、ブザーを止めてスリープモードに入ります。PICへの電力は470μFの電解コンデンサーから供給されます。電圧と停電時間の計測結果は....
  5分00秒 -> 2.53V
  7分40秒 -> 2.00V
 10分00秒 -> 1.50V
となりました。PICは1.5Vでも動作可能なので10分の停電に耐えることが出来ます。プログラムの仕様上、停電すると数秒時刻が遅れます。PICを取り外したときの回路の抵抗値は4MΩ程度です。

PICT8399.jpg

停電時間の計測

2008-12-19

秋葉原へ買い出しに行った。いつもの秋月電子。2号機用にフォトトライアックを買おうとしたが、似たような型番の物がある。MOC-3043MとMOC-3041M。データシートを見ないと違いがわからない。違いは消費電力だけのようなのだが、消費電力が少ない方が無条件で良いのでは?

PICT8400.jpg

白いのがフォトトライアック

PICT8401.jpg

MOC3043とMOC3041はONさせるのに必要な電流の違いだけのようだ

全体像。ケースに入れるのは面倒なので、裏面にガムテープ貼って誤魔化そうか・・・

PICT8402.jpg

ICSPコネクタを除いて部品は全て表に配置。部品間隔を詰めすぎたとことがあって、若干干渉している。ソケットとブザー、エンコーダと抵抗、ダイオードと400Vのコンデンサ。

PICT8404.jpg

2008-12-20

仕様をまとめておこう。単機能のはずなのだがスイッチとロータリーエンコーダーが有ると色々設定が出来て操作方法も複雑になる。

===============================================================================
■スイッチの名称
===============================================================================

 ロータリーエンコーダーの右にあるスイッチ
  上:スタートボタン
  下:リセットボタン

===============================================================================
■基本機能
===============================================================================

 ・「24時間プログラムタイマーモード」と「キッチンタイマーモード」がある。
  モードはスライドスイッチで切り替えられる
 ・「キッチンタイマーモード」で使用中でも「24時間プログラムタイマーモード」の時計は狂わない
 ・「キッチンタイマーモード」で電源を切ると、時計の時刻は12:00にリセットされてしまう

===============================================================================
■注意事項
===============================================================================

 ・プログラムを書き込むときはAC100Vを必ず抜くこと
 ・プログラムを書き込むときはスライドスイッチを「キッチンタイマーモード」にすること

===============================================================================
■「キッチンタイマーモード」
===============================================================================

 ・最大設定可能な時間は99分99秒
 ・スタートボタンを押すとAC100V,とリレーがONする、その後
  カウントダウンして0秒になるとAC100V,とリレーがOFFする。
 ・リセットボタンを押すと表示が0秒になり、AC100V,とリレーがOFFする。

 ロータリーエンコーダーの動作
  ・右回転で設定値増加、左回転で値減少
  ・早回しすると10秒ずつ値が変化する
  ・カウントダウン中は回しても反応しない

 左上に6個並んでいるLEDの意味
  最左:キッチンタイマーモードでは未使用
  2番:消灯->「24時間プログラムタイマーモード」 点灯->「キッチンタイマーモード」
  3番:カウントダウン中
  4番:キッチンタイマーモードでは未使用
  5番:キッチンタイマーモードでは未使用
  最右:キッチンタイマーモードでは未使用

===============================================================================
■「24時間プログラムタイマーモード」
===============================================================================

 ・現在時刻の設定は「スタートボタン」と「リセットボタン」を同時に押す
  現在時刻設定モードから抜けるにはスタートボタンを押す
 ・現在時刻は12時間表示、それ以外は24時間表示
 ・1日に3回ON/OFF出来る。
 ・スタートボタンを押すたびに表示が
   現在時刻
     ▽
   1番ON時刻設定
    ▽
   1番OFF時刻設定
    ▽
   2番ON時刻設定
    ▽
   2番OFF時刻設定
    ▽
   3番ON時刻設定
    ▽
   3番OFF時刻設定
    ▽
   現在時刻
  と切り替わる。出力はAC100、リレー同時に動作するため番号にはあまり意味がない。
  ON時刻の設定中はAC100VとリレーもONする。

 ・左上に6個並んでいるLEDの意味
  最左:点灯->現在時刻設定中 消灯->通常動作中
  2番:点灯->「24時間プログラムタイマーモード」 消灯->「キッチンタイマーモード」
  3番:点灯->現在時刻表示中
  4番:1番のON/OFF時刻設定
  5番:2番のON/OFF時刻設定
  最右:3番のON/OFF時刻設定

 ・7セグLEDの表示が「----」となっているときは、ON/OFF時刻が設定されていないことを意味する

 ・ロータリーエンコーダーの動作
   ・現在時刻表示中はロータリーエンコーダーを動かしても反応しない。
   ・ON/OFF時刻設定中にエンコーダーを右回転させると「分」の設定、左回転させると「時」の設定が可能
   ・ロータリーエンコーダーで設定した時刻はスタートボタンを押すとEEPROMに記憶される

 ・スイッチの動作
   ・スタートボタンを押すと設定したON/OFF時刻を確認できる
   ・ON/OFF時刻の設定中にリセットボタンを押すと入力をキャンセルできる

===============================================================================
■試作1号の問題点   「24時間プログラムタイマーモード」の問題点
===============================================================================

 1.秒表示があったほうがよい。1分単位のON/OFFでは長すぎることがある。
 2.時、分の設定専用のボタンがあると良い。
   右回しで「分」の設定、左回りで「時」というのは感覚的に変だ。
 3.「24時間プログラムタイマーモード」では時刻が表示されているので「時」と「分」の間に「:」が欲しい。

2008-12-21

動いているところと、あまりきれいではないプログラム
ファイル ファイルタイプ 添付ファイルの解説
TIMER1_mbasic.zip OTHER プログラム一式 mikroBasic V7.2
timermov1.wmv MOVIE 動いているところ

OLIMEXが余計に作ってしまった基板一枚は売店で売ってます。MCP100(入手難なので)付属で基板面積按分実費で¥1900。

・干渉している部品は裏面に半田付けすると干渉しません。
・ロータリーエンコーダーの取り付け穴が僅かに小さく強く押し込まないと入りません。
 軸に負担がかからないようにソケットレンチのソケットを被せて押し込むと入ります。

2008-12-22

何だか時刻が大分狂う。1時間に0.5秒程度進んでしまう。19.6608MHzの水晶の精度が低いようだ。そこで一定周期毎に1/100秒だけ増減させて時刻を正確に合わせる機能を追加した。この校正機能によって1秒が1.01秒だったり、0.99秒だったりすることになる。KTXO-18Sの様な高精度の水晶発振モジュールを使用すれば精度を確保できるが、消費電力が大きいので停電したときに対応できない。停電対応のためには水晶発振モジュールを追加して、停電時には水晶発振モジュールの電源を切ってしまう必要がある。この場合、PICのクロック用に精度は必要ないのでセラロックでも十分だ。
校正値は頻繁に変更する物ではないので、EEPROMにPICライターで直接書き込む方式にした。30日間に進む秒数を4バイトのlongintで書き込んでおく。進む場合は正の値、遅れる場合は負の値を書き込んでおく。

PICT8409.jpg

校正機能の実験

PICT8410.jpg

EEPROMに直接構成値を書き込む

校正機能を追加したプログラム
ファイル ファイルタイプ 添付ファイルの解説
TIMER1_mb2.zip OTHER プログラム一式 mikroBasic V7.2

2008-12-26

試作一号機はAC100VをON/OFF出来るキッチンタイマーとして使用するなら特に問題点はないが、常時通電したままの24時間プログラムタイマーとして使用するときには、精度、機能、操作性に問題がある。問題点は上に書いたとおりだが、忘れないうちにそれを修正した回路を作っておく。別の回路を作るついでにOLIMEXに注文しよう。

PICT8412.jpg

修正版の基板。7セグメントLED、タクトスイッチ、3mmLED、水晶発振モジュールが増えたが、裏面やソケットの中に部品を配置したりして縦に1cmだけ大きくなるだけで済んだ。

2009-02-20

使用しているところ。往復式の感光ライトなので、折り返し点で止まって欲しいのだが、タイマーは指定した時間で停止する。ライトを改造して「XX往復したら停止」というほうが良かったような...

PICT8898.jpg

感光基板の露光