| ホーム | 私の電子工作作品集 |
[ 初公開日:2019年11月11日 ] |
私にとっての "136. 3分間ラーメン・タイマー(私のオリジナルではない)"、"182. ラーメン・タイマー II 2題" に続いて、
第3段のラーメン・タイマーの製作です。 10 年ほど以前に製作をした、プログラミングを伴わないでハードウエアだけで構成をした "136. 3分間ラーメン・タイマー" を、自分のホームページ上に公開をしたのをきっかけとして「ラーメン・タイマー」に興味を持ち、 私もPICを使用して私独自のものを製作してみようと思い立ったのが始まりで、先に "182. ラーメン・タイマー II 2題" を製作しました。 そして、それだけでは飽き足らず、ここに紹介をする "183. ラーメン・タイマー III" まで製作をしてしまいました。 本機での大きな特徴は、大幅な消費電流の削減で電源スイッチを無くし、前作の "182. ラーメン・タイマー II 2題" の2号機に比べて、約 1/2 のサイズにしたことです。 機能的には、前作を踏襲しつつ多少の機能拡張を試みました。
前作の "182. ラーメン・タイマー II" では、私の手持ちのPICの関係で PIC12F635 + 74HC138 の構成でしたが、今回の "183. ラーメン・タイマー III" では使用するPICを吟味して、 私にとっては初めての使用になりますが PIC16F684 を新たに購入をし、PIC12F635 より多い 14 ピンのPICだけで製作をしました。 (詳細は PICの選択 の項を参照) <余談> 私が今までに使用してきたPICには、8 ピン、18 ピン、28 ピン、40 ピンのものがありますが、以前から他に 14 ピン、20 ピンのものの存在は知っていて、機会があればそれらもぜひ使用してみたいと思っていました。 そこで、この機会に 14 ピンの PIC16F684 と 20 ピンの PIC16F690 を複数個ずつ購入をしました。 後者の 20 ピンPICについても近い将来、何かの製作時に使用をしたいと思っています。 アップカウンタ機能を追加 ( 2020/12/7 更新 ) 本機では、元々、タイマー時間の設定範囲が最低1分から最大8分までで、ラーメン・タイマーとしては十分であったものを、パスタなどの茹で時間の管理にも使用ができるようにと、最大値を 15 分までに拡張をしてきました。 しかし、実際に1年以上も本機を使用してきた私の経験では、稀にもっと長時間のカウントができるといいのに、と思うことが数回ありました。 そこで、ラーメン・タイマーとしての範疇からは逸脱をするのですが、料理の友として長時間のカウントも可能なように、アップカウンタ機能を追加してみました。 タイマーのダウンカウンタとは異なって、基本的には上限は無制限なのですが、 現実的にはそんなわけにもいかないので、とりあえず、最大2時間を超えたときには、カウントを強制終了するようにしてあります。 アップカウンタ機能についての詳細は、機能概要 の項の アップカウンタ機能を追加、および プログラム の項の最新バージョンの ソースファイル (RamenTimerIII.asm) をご覧ください。 これは蛇足ですが、本機を使用し始めてから 13 か月が過ぎましたが、当初にセットをした CR2032 のリチウム電池が、現在もなお連続で稼働をしています。 元々、新品の電池ではなく何かで少しばかり使用をしていたものです。 本機の使用頻度としては、1日当たり1〜2回程度でほとんど毎日のように使用をしてきたのですが、ずいぶん長持ちをしてくれています。 |
本機のサイズを小さくするために、前作では使用していた電源スイッチを無くし、電源には複数本の単3、または単4乾電池を使用していたのを止めて、本機では CR2032 のリチウム電池を使用することにしました。
そのため、低電圧でも使用ができるPICを選択することが必須で、また、I/O ポートも本機に見合うだけの数が必要です。 そして、電源スイッチが無く CR2032 のリチウム電池を使用 ―― という条件のため、本機としての消費電流を極力控え目にしなければなりません。 タイマー動作中の消費電流を少なくすることはもちろんですが、 待機中にはゼロであることが望ましい(タイマーとしての使用時間よりも待機中(使用していない)の時間の方が圧倒的に多い)わけです。
ところが、当初、上の回路図で RA3 に繋がっているプルアップ抵抗 R を 22KΩ にし、ジャンパースイッチ(JP SW)は ON にして、PICをスリープモードにしたときの電源電流を測定したところ、 待機中の電流ゼロにはほど遠く約 138 μA も消費していることが分かり、がっくりと来てしまいました。 これでは電源スイッチを無くすことはできません。 しかし、PIC16F684 のデータシートでスリープモードのときの電流を調べてみると、Typ = 0.15μA、Max = 1.5μA(VDD = 3.0 V)と記されています。 この大差は何なのか? どこで余計な電流を消費しているのか? 初めはまったく分かりませんでした。 上の回路図と睨めっこをしながらデータシート内のあちらこちらを調べること数時間。 気が付いてしまえば何のことはありません。 ジャンパースイッチ(JP SW)を OFF にして同電流を測定し直すと、私が所有するデジタルマルチメータでは、何と 00.0 μA と表示されるではありませんか。 このマルチメータをどこまで信頼していいか分かりませんが、少なくてもデータシートの値に殆んどイコールになったことには違いない筈です。 この値の電流値であれば電源スイッチは不要と考えても問題はありません。 しかし、ジャンパースイッチ(JP SW)が ON の場合には依然として大きな問題が残っています。 もうお気付きだとは思いますが、 ジャンパースイッチ(JP SW)が ON の場合には、抵抗 R がそのまま電源に対しての負荷となって無駄な電流を消費しているわけです。 そこで、抵抗 R を私が現在所有している最も大きな抵抗値 10MΩ に変更をして同電流を測定すると、00.3 μA と表示されて計算値(I = E / R = 3 / 10 = 0.3 μA)通りになりました。 説明が遅くなりましたがこのジャンパースイッチ ALARM は、タイムアウトになったときのアラーム音を切り替えるもので、OFF のときにはチャルメラ音を、また、ON のときには "ピポッピポッ" 音をブザー出力するものです。 この機能は "182. ラーメン・タイマー II" には無かった(チャルメラ音だけだった)のを本機で拡張をしたもので、RA3 ポートが余っていたので ALARM スイッチに割り当てたのですが、これが災いの元になってしまいました。 このジャンパースイッチというものは、操作後に ON / OFF 状態がどちらかにずっと固定されてしまうためにこのような問題が起こるわけで、タクトスイッチのように押している間だけ ON になり、 離せば OFF に戻るようなスイッチではこのような問題はないのですが、ただタクトスイッチにすると、アラーム音の切り替えが現在どちらに設定されているかを、目で確認をすることができません。 したがって、現在は 10MΩ を使用して 0.3 μA に抑えてはありますが、ジャンパースイッチ(JP SW)を ON にした場合には、本機を使用していないときにもこの電流が常時流れるわけで、それが、 CR2032 リチウム電池にとってどれ程のダメージになるのか、あるいはまったく問題のないレベルなのかは正直私には分かりません。 しかし、できれば長時間 ON にすることは避けて OFF 状態にしておいた方が無難だと思います。 ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ― ちなみに、本機ではスリープモードから目覚めている状態で、2つあるタクトスイッチの操作待ち状態のときには、8個のLEDの内のどれか1個が常に点灯されますが、この状態のときが消費電流としては最大になるときで、 その値は実測 約 1.510 mA * 程度(電源が 3V のとき)です。 この電流値はLEDの電流制限抵抗の値によって決まり、本機では上回路図のように現在は 1KΩ を使用しています。*(その後、タイマーデータ(分)の設定範囲の拡張 で述べている、機能拡張をプログラムで行った結果、LEDが2個点灯するときが最大で実測 1.578 mA の消費になりました。) このような小さな電流でLEDを点灯させるためには、VF が小さくて高輝度なものを使用することが必須で、本機の場合には 15、6 年も以前に "秋月電子" で購入をしたものですが、 "SLP-881A-37S2(三洋)" という型番、メーカーのものを使用しています。 本機の電源電圧を 1.9V 程度に落としても、その光具合は弱いながらもまだ十分な視認性があるので、制限抵抗をもう少し大きな値にしてもよさそうです。 そうすれば最大時の消費電流をもう少し小さく抑えることも可能です。 |
| 回路図 (RamenTimerIII.CE3) | ページトップ |
冒頭でも述べたように、前作の "182. ラーメン・タイマー II" では PIC12F635 + 74HC138 の構成で、8 ピンPICの I/O ポート数(6)が少ないのを 74HC138 で補う形で製作をしましたが、
本機の "183. ラーメン・タイマー III" では、もっと多ピンのものを使用してPICだけで製作をすることにしました。 しかし、私の手持ちの中にはふさわしいものが見つからないため、新たに購入をすることにしたのですが、数ある種類の中からどれにしたら良いのか迷います。 そこで、次のように私なりの選定基準を決めて選ぶことにしました。
*注. 参考価格は 2019/11 現在における "秋月電子通商" でのもの。 |
| ページトップ |
|
| ページトップ |
|
<参考> "ラーメン・タイマー II" との機能の相違 先に作製をした "182. ラーメン・タイマー II" と比べて、その機能を踏襲しつつも改良のために、本機 "ラーメン・タイマー III" で異なっている点を次表にまとめてみました。 これらは機能の拡張を試みた部分もありますが、その他は本機の省電力化(小型化)を実現するために改良変更を行いました。
*1. 次の "タイマーデータ(分)の設定範囲の拡張" を参照のこと。 *2. ラーメン・タイマー II - 1号機では電源が 5.3(6 - 0.7)V のため、もう少し増加する。 *3. ジャンパースイッチ ALARM が OFF のときで、私が所有するデジタルマルチメータでは 00.0 μA と表示がされるため、正確な電流値は不明。 *4. その後、プログラムの機能拡張を行った結果、スリープモード以外のスイッチ操作待ちのときでLEDが2個点灯するときが最大となり、実測 1.578 mA の消費。 |
タイマーデータ(分)の設定範囲の拡張 本機では、最低1分から最大8分までの設定範囲を有するため、ラーメン・タイマーとしては十分だとは思いますが、パスタなどの茹で時間の管理にも使用できるように、最大値をもう少し拡張をしてみました。 次表で薄黄色に塗った部分がそれで、最大 15 分までの拡張をしました。 LED は8個しかないため、9分以降は LED (8) との2個の組み合わせで表現をしています。
注.○ 印はそれぞれのタイマーデータ(分)に対して、点灯する LED (x) を表す。 これに対して、長押し(約 0.25 秒以上 0.5 秒未満)をした場合には、その都度 −1されて 15 → 14 → 13 → 12 → 11 → 10 → 9 → 8 → 7 → 6 → 5 → 4 → 3 → 2 → 1 → 15 ・・・ の順に変更がされて行きます。 そして、連続で押していると約 0.5 秒間隔で −1ずつ変更がされて行きます。 これらの時間設定の操作はかなり微妙ですが、何回か試してみて感覚をつかんでみると良いかと思います。 従来はインクリメント(増加)だけの一方向でしたが、拡張後はデクリメント(減少)も合わせた両方向に対応しているので、 たとえ自分の意志とは異なった操作結果となっても、すぐに修正操作をすることが可能です。 アップカウンタ機能を追加 ( 2020/12/7 更新 ) |
|
| ページトップ |
基準時間の発生と調整 本機では、タイマーカウントをするための基準時間の発生には、PIC の TMR0: タイマー0割り込みを使用して、基準となる1秒を作り出しています。 PIC のクロックパルス = 内部発振 4MHz、プリスケーラは使用しない、TMR0 は8ビットカウンタで カウント値 = 200、 とすることで、これらの条件から (4 / 発振周波数) x ハードタイマーカウント値 = (4 / 4MHz) x 200 = 200μSとなり、この 200μS 周期でハード的にタイマー0割り込みを起こさせ、それをソフトタイマーカウント値 = 5000 をカウントすることにより 割り込み周期 x ソフトタイマーカウント値 = 200μS x 5000 = 1,000,000μS = 1 Secが得られます。 しかしこれは計算上の話で、実際に時間を測定してみると、次の表のように(補正値 = 0 の場合)1秒からはかなりかけ離れている(8分に対して 36 〜 37 秒ほど多い)ことが分かります。 これは実際にはクロックパルスが正確に 4MHz で発振をしていない、すなわち、基準となる正確な 200μS が得られないのが主な要因と考えられます。 この正確ではない 200μS を1秒あたり 5000 をカウントしていると、8分間で 36 〜 37 秒ほど多くなってしまうということは、5000 が多すぎるということなのでその多い分だけ実際のカウント数を減らしてやれば良い訳です。 その減らす量が次に示す補正値 xx です。 tm0_h_val equ 256 - 200 ;ハードタイマー0カウント値 (4 / 4MHz * 200 = 200μS) xx equ -353 ;補正値 tm0_s_val equ 5000 + xx ;ソフトタイマー0のカウント値本機のタイマー時間を最大値である8分に固定をしておいて、補正値 xx だけをいろいろと変更したときの実際のタイマー時間を、私のホームページ中の他のページで紹介をしている "長時間ストップウオッチ/タイマー" で、実際に測定をしてみたものを次表にまとめました。 私の今までの経験上、同一の補正値 xx であっても PIC による個体差が大きく、他のハードウエアの違い(電源電圧の違いも含めて)による影響はあまり大きくはないようです。 実際には表中の薄黄色に塗った補正値 xx = -353 を採用して実時間に近くなるようにしました。
本機では、ポートをすべて使用していて空きポートが1つもないため、この基準時間の調整中だけ RA0: ブザー音出力を、時間測定用端子(T.ADJ)として切り替えて使用をしました。 具体的には、プログラム中の "変数、定数の定義とレジスタ割付け" 部分の先頭行 ;#define xx_debug ;TMR0 基準時間の調整中の先頭の ;(セミコロン)を取り除いてアセンブルし直すことによって、"TMR0 基準時間の調整支援" プログラムに切り替わります。 (詳細は ソースファイル (RamenTimerIII.asm) を参照のこと。 xx_debug で検索してください。) ただし、このときのタイマー時間はプログラムで8分に固定で変更することはできません。 また、カウントダウン中はLEDの瞬間点灯だけでブザー音を出力することはできません。 プログラムを起動すると、LED(1) が点灯して START スイッチの押下待ちになるので、スイッチを押すと点灯LEDがLED(8) の瞬間点灯に切り替わってカウントダウンが始まります。 そして、8分が経過してタイムアウトになると、再びLED(1) の点灯に切り替わって START スイッチの押下待ちに戻ります。 このとき時間測定用端子(T.ADJ)からは、待機中は "H" が出力され、カウントダウン中は "L" が出力されるので、 この信号を前述の "長時間ストップウオッチ/タイマー" で測定をすれば、正確な時間測定が可能となります。
|
| ページトップ |
使用したプリント基板は "秋月電子" の "片面ガラス・ユニバーサル基板 Cタイプ(72×47.5mm)めっき仕上げ(通販コード P-00517)" ですが、ケース加工図 に示したケース内に収まるように
プリント基板にも少々の加工が必要です。 下のパターン図においてグレー色枠で示したものが元の基板サイズですが、そのままでは図に示すように一回り大きいので、緑色枠で示したようにサイズ加工を行います。 また、使用したタクトスイッチは、前作の "182. ラーメン・タイマー II" の2号機と同じもので、トップの高さ(長さ)が通常のものより少々長く実測 9.5mm のものを使用していて、以前に Yahoo! オークションで入手したものですが、 メーカー、型番までは分かりません。 (相当以前にはなりますが "共立エレショップ" で購入をした、台湾製の "PT6601G" という型番のものと同等のようです。) <抵抗 R1, R2 について> 回路図の項で述べたように、RA3(4 ピン)に繋がっているプルアップ抵抗で、当初、R1 の位置で 22KΩ 1/6W を使用したが、スリープモード時の消費電流が大きかったため、その後、10MΩ に変更をした。 ただ、1/4W のものしか手持ちになく R1 の位置には実装ができないために、R2 の位置に引っ越しをした。(R1 の位置の 22KΩ は撤去) |
| プリント基板パターン図 (部品面) (RamenTimerIIIPC.CE3) | ページトップ |
| プリント基板パターン図 (ハンダ面) (RamenTimerIIIPC1.CE3) | ページトップ |
使用したケースは、100均(ダイソー)で購入した "ミニケース6個組" ポリプロピレンケース* です。 以前に "093. LED使用 検電器" で使用したものと同じものです。
( * 私が購入した当時は6個組でしたが、現在では5個に減量がされているようです。) 実際にケース加工を行う場合には、上面図に示す2個のΦ3.5 タクトスイッチ用の穴位置は、ケースが透明で中が透けて見えるので、現物合わせで行った方が確実です。 その方法は、まず、底面図に示す3個の穴をあけて(これも現物合わせ) プリント基板を仮に取り付けておいて、上蓋を閉めると2個のキートップの位置が透けて見えるので、実際の穴位置が明確になります。 |
| ケース加工図 (RamenTimerIIICS.CE3) | ページトップ |
下図は本機のケースの右側面側から見た図で、プリント基板の取り付けの様子がよく分かるように、右側面を切り取った断面図を表しています。 このケースへのプリント基板の取り付けに当たって、最も重要なのはその上下(高さ)位置で、プリント基板に取り付けたタクトスイッチのトップが、ケース上面から適度な長さ(X)を飛び出すようにします。 プリント基板パターン図 (部品面) でも述べたように、タクトスイッチには通常のものより少々長い 9.5mm のものを使用していて、その高さ調整にはプリント基板下のスペーサ長で行いますが、 本機の場合にはナットの厚さをスペーサの代わりに使用をしました。 このマグネットシートを貼り付けるときの注意として、ケースの裏面側の各四隅にはそれぞれL型の足( 0.5 mm ほどの凸型)が付いているため、そのままで貼り付けるとマグネットシートが浮き上がってしまいます。 この足はカッターナイフの先で簡単に削り取ることができるので、一手間をかけて平面にした後で貼り付けると良いと思います。 |
| ページトップ |
(主要部品: IC, トランジスタ等) | (データシート) | ||
PICマイコン | .................... | PIC16F684 |
| 部品表 | Excel ファイル (RamenTimerIII_parts.xls) | ページトップ |
ラーメン・タイマー II 2題 | ..... | http://xyama.sakura.ne.jp/hp/RamenTimerII.html |
3分間ラーメン・タイマー | ..... | http://xyama.sakura.ne.jp/hp/RamenTimer.html |
キッチン(カウントダウン)・タイマー | ..... | http://xyama.sakura.ne.jp/hp/KitchenTimer.html |