| ホーム | 私の電子工作作品集 |
[ 初公開日:2019年10月13日 ] |
プログラミングを伴わないでハードウエアだけで構成をした "136. 3分間ラーメン・タイマー(私のオリジナルではない)" を、先に、私のホームページ上に公開をしたところですが、
その後、「ラーメン・タイマー」をキーワードとしてネットで検索をしてみると、随分といろいろな作品がヒットされてくるのを知りました。 そして、それらを見ているうちに私も独自のものを製作してみたい ―― という気持ちが新たに湧いてきました。 そこで、PICを使用して製作をしてみることにしました。
私の過去に製作をした作品の中には、同類のものとして "153. キッチン(カウントダウン)・タイマー" がありますが、それは最大 "99分59秒" までの設定が可能で、"分分.秒秒" の4桁の7セグLEDで表示をするものでした。 それに対して今回ここで紹介するものは、もっと短時間に特化したもので最大7分までの1分刻みの設定が可能ですが、点表示のみで7セグLEDの表示はありません。 【 お知らせ 】 ( 2019/11/12 ) このページで紹介をしている "ラーメン・タイマー II" の1号機、2号機に続いて、"183. ラーメン・タイマー III" の製作、公開をしました。 "ラーメン・タイマー III" の大きな特徴は、大幅な消費電流の削減で電源スイッチを無くし、"ラーメン・タイマー II" の2号機に比べて、約 1/2 のサイズにしたことです。 機能的には、"ラーメン・タイマー II" を踏襲しつつ多少の機能拡張を試みました。 |
本機で使用するケースには ケース加工図 でも述べているように、 "157. アラーム音通知型経過時計" の製作で使用したものと同じ "MINI BOX" を使用しようと、
本機製作の構想を抱いた当初から漠然と考えていました。 このケースは本機の回路部品を収納するには十分なスペースがあるために、プリント基板もゆったりとしたレイアウトにしてあり、電源にも単3乾電池4本を使用しています。 |
本機の回路は、"157. アラーム音通知型経過時計" の(プロトタイプ)のものとほとんど同じものになりましたが、実は、使用した PIC12F635、74HC138 が共に以前 Yahoo! オークションで入手したもので、
どちらも多数を所有しているために少しでも消化をしようとこの構成になりました。 また、上図の左端に位置するダイオードは、誤って乾電池を逆接続したときに回路を守るためのもので、電源電圧に余裕があるために挿入をしておきました。 |
| 回路図 (RamenTimerII.CE3) | ページトップ |
|
| ページトップ |
|
| ページトップ |
基準時間の発生と調整 本機では、タイマーカウントをするための基準時間の発生には、PIC の TMR0: タイマー0割り込みを使用して、基準となる1秒を作り出しています。 PIC のクロックパルス = 内部発振 8MHz、プリスケーラは使用しない、TMR0 は8ビットカウンタで カウント値 = 200、 とすることで、これらの条件から (4 / 発振周波数) x ハードタイマーカウント値 = (4 / 8MHz) x 200 = 100μSとなり、この 100μS 周期でハード的にタイマー0割り込みを起こさせ、それをソフトタイマーカウント値 = 10000 をカウントすることにより 割り込み周期 x ソフトタイマーカウント値 = 100μS x 10000 = 1,000,000μS = 1 Secが得られます。 しかしこれは計算上の話で、実際に時間を測定してみると、次の表のように(補正値 = 0 の場合)1秒からはかなりかけ離れている(7 分に対して 33 〜 34 秒ほど多い)ことが分かります。 これは実際にはクロックパルスが正確に 8MHz で発振をしていない、すなわち、基準となる正確な 100μS が得られないのが主な要因と考えられます。 この正確ではない 100μS を1秒あたり 10000 をカウントしていると、7 分間で 33 〜 34 秒ほど多くなってしまうということは、10000 が多すぎるということなのでその多い分だけ実際のカウント数を減らしてやれば良い訳です。 その減らす量が次に示す補正値 xx です。 tm0_h_val equ 256 - 200 ;ハードタイマー0カウント値 (4 / 8MHz * 200 = 100μS) xx equ -730 ;補正値 tm0_s_val equ 10000 + xx ;ソフトタイマー0のカウント値本機のタイマー時間を最大値である7分に固定をしておいて、補正値 xx だけをいろいろと変更したときの同一のプログラムを、2個の PIC に書き込みながら、また2個のハードウエアを使用して実際のタイマー時間を、 私のホームページ中の他のページで紹介をしている "長時間ストップウオッチ/タイマー" で、実際に測定をしてみたものを次表にまとめました。 2個の PIC を使用した次表から分かるように、同一の補正値 xx であっても PIC による個体差が大きく、1号機/2号機によるハードウエアの違い(電源電圧の違いも含めて)による影響はあまり大きくはないようです。 実際には表中の薄黄色に塗った補正値( PIC-1 には xx = -749、PIC-2 には xx = -720 )を採用して実時間に近くなるようにしました。
;#define xx_debug ;TMR0 基準時間の調整中の先頭の ;(セミコロン)を取り除いてアセンブルし直すことによって、"TMR0 基準時間の調整支援" プログラムに切り替わります。 (詳細は ソースファイル (RamenTimerII.asm) を参照のこと。 xx_debug で検索してください。) ただし、このときのタイマー時間はプログラムで7分に固定で変更することはできません。 また、カウントダウン中はLEDの瞬間点灯だけでブザー音を出力することはできません。 プログラムを起動すると、LED(1) が点灯して START スイッチの押下待ちになるので、スイッチを押すと点灯LEDがLED(7) の瞬間点灯に切り替わってカウントダウンが始まります。 そして、7分が経過してタイムアウトになると、再びLED(1) の点灯に切り替わって START スイッチの押下待ちに戻ります。 このとき時間測定用端子(GP5)からは、待機中は "H" が出力され、カウントダウン中は "L" が出力されるので、 この信号を前述の "長時間ストップウオッチ/タイマー" で測定をすれば、正確な時間測定が可能となります。 トラブルとの遭遇 本機をデバック中に厄介なことを新たに発見してしまいました。 それは、電源スイッチをOFFにしてから、十分な時間(数秒程度)を経過してから再びONにした場合には何の問題もないのですが、 その経過時間が短かくて不十分だった場合に再びONにするとプログラムが暴走をする、というものです。 どんなトラブルのときでもそうなんですが、自分が初めて遭遇をしたようなトラブルの場合には、一瞬 ―― ン? なんだこれは? ―― という気分にさせられます。 当然、初めはその原因が何なのか分からないのですが、 そのうちにフッと閃くものがあって、もしや ・・・ 本機では(に限らず)、電池から電源スイッチを経た後には電解コンデンサを挿入してありますが、これがワルをしているのでは ― と思い、本来はこの電解コンデンサをプリント基板から外したいのですが そんなことは簡単にはできません。 そこで、タクトスイッチをONにしながら電源スイッチのOFF/ONを何度も繰り返してみたのです。 的中しました。 何の問題もなく(暴走をすることなく)プログラムの起動ができるようになりました。 タクトスイッチをONにしたのは、電源スイッチをOFFにした直後に電解コンデンサに残っている電荷を放電させていたのです。 本機の場合には 47μF の電解コンデンサを使用していますが、その容量の大きさに対しての電源OFF直後の負荷電流が小さいために、電解コンデンサの残留電荷の放電が緩慢になってゼロにならない内に再び電源がONになり、 PIC内の各レジスタ等のデータ状態が不安定なままで起動し直すため、と思われます。 したがって、本機では電解コンデンサを慣例的に入れてあるだけなので、47μF の容量をもっと小さなものに変更をするか、または本機の場合には無くてもあまり問題にはならないと思います。 (むしろ、本機では電解コンデンサを入れたために トラブルとなった。) そこで、本機での対策としては、ハードウエア(プリント基板)の手直しは(次項 プリント基板(1)パターン図 (部品面) で述べているように失敗もあり得るため)極力したくないので、ソフトウエアで対処をしました。 具体的には次のリストに示すように、 ; __config _CPD_OFF & _CP_OFF & _BOD_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT __config _CPD_OFF & _CP_OFF & _BOD_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUTとして、コンフィギュレーションの設定でブラウンアウトリセット(BOR)の機能をONにし、電源OFF直後に確実にPICがリセットされるようにしました。 これによって上述のようなトラブルは全く起こらなくなりました。 (ただし、電池が消耗して電圧が低下(約2X)してくると、リセットがかかるようになるので注意。 2019/10/19 追記) 私の場合、ブラウンアウトリセット(BOR)の機能については、これまた慣例的にOFFにしたままの設定で使用することが多く、今回のようなトラブルを経験することになりました。
上記 基準時間の発生と調整 で述べたように、PIC には個体差があるので基準時間の調整は、実際に使用をする個々の PIC に対して行うべきで、ここに収録の HEX ファイルをそのままご利用になっても、 多少の誤差が生じると思います。 しかし、その誤差は上記の例でも分かりますが7分に対して 1 〜 2 秒程度で、ラーメン・タイマーとしては何の問題も起こらない範囲ではないかと思います。 もし、より正確さを求めるのであれば、 ソースファイル内の補正値 xx を使用をする PIC に合わせて適宜変更をし、再アセンブルをする必要があります。 |
| ページトップ |
| プリント基板(1)パターン図 (部品面) (RamenTimerIIPC.CE3) | ページトップ |
電源、ブザー、およびプリント基板(2) との接続用のコネクタピンは、通常は基板の部品面側に出るように取り付けるのですが、この基板ではケースへの取り付けの関係上、下写真に示すように
基板の裏面(ハンダ面)側に出してあります。 ところが、最初、誤って通常の部品面側に出るように取り付けてしまったため、その後、手直しをしたのですが、2P のブザー用コネクタについては失敗をしてしまいました。 ハンダ面のランドを剥がしてしまい、その同位置には 新たな取り付けができなくなって仕方なく、写真のように1列ずらした隣りの位置に取り付けを行いました。 |
| プリント基板(1)パターン図 (ハンダ面) (RamenTimerIIPC1.CE3) | ページトップ |
ケーブルを 取り付け前の様子 , 取り付け後の様子 |
| プリント基板(2)パターン図 (部品面) (RamenTimerII2PC.CE3) | ページトップ |
ケーブルを 取り付け前の様子 , 取り付け後の様子 |
| プリント基板(2)パターン図 (ハンダ面) (RamenTimerII2PC1.CE3) | ページトップ |
使用したケースは、100均のダイソーで購入した "MINI BOX" というラベルが貼られているポリプロピレンケースで、ケース底には、型番 223、株式会社シャルムと刻印がされています。 このケースは
"157. アラーム音通知型経過時計" の製作で使用したものと同じもので、そのときに2個購入した内の残っていたものを使用しましたが、購入したのが3年前のことなので同商品が今でも販売されているかは不明です。 "157. アラーム音通知型経過時計" とは、使用するタクトスイッチの数が異なるだけで、ケースに取り付ける他の部品の構成が同じであるため、本機でのケースレイアウトも同様にして加工を行いました。 |
| ケース加工図 (RamenTimerIICS.CE3) | ページトップ |
(主要部品: IC, トランジスタ等) | (データシート) | ||
PICマイコン | .................... | PIC12F635 | |
HC-MOS IC (3-8 デコーダー) | .................... | TC74HC138AP |
| 部品表 | Excel ファイル (RamenTimerII_parts.xls) | ページトップ |
1号機で使用したケースの "MINI BOX" が、ケース外観と内部の様子 や ケース加工図 に示すように、特殊な形状をしているためにケースが入手できなかった場合には、
1号機としての再現性も難しくなってきます。 また、完成をした1号機を改めて眺めてみると、使用したケース "MINI BOX" の名に反して私には全体が少々大きく感じられ、ラーメン・タイマーとしてあまりコンパクトとは言えません。 要するに、作者の私としては1号機の出来栄えにどうもしっくり来ないのです。 そこで、ケースをもっとシンプルでコンパクトなものにして、ラーメン・タイマー II の2号機を作製することにしたのです。 しかし、回路的には1号機と大きな変更はありませんし、プログラムも(補正値 xx 以外は)全く同じものです。 |
本2号機では、上に示した1号機の 回路図 に比べて、小型化を図るために乾電池を単3から単4に変更をし、かつ、本数も4本から3本(4.5V)に減らしました。 そのため逆接続の防止用のダイオードは省いてあります。
また、圧電ブザーも1号機よりも小型のものに変更をしました。(そのため、ブザーの音量が1号機に比べて小さくなってしまいました。) なお、1号機の プログラム の項で述べたトラブルとなった 47μF の電解コンデンサの件ですが、そのトラブルに遭ったころには既に2号機のプリント基板(3) が完成をしていたので、 上回路図 (2) にもそのまま入れてあります。 1号機と同様に同じプログラムのソフトウエアで対処をしています。 |
| 回路図 (RamenTimerII-2.CE3) | ページトップ |
|
| ページトップ |
機能概要 / プログラムについては、共に1号機の 機能概要 / プログラム と何ら(補正値 xx 以外は)変わるところはありません。 |
上に示した1号機の パターン図 から本2号機のパターン図に変更をするのに、約1日ほどを費やしてしまいました。 まず、小型化のためにプリント基板が本2号機のケースに収まるサイズに変更をし、
2個のタクトスイッチ、ボリューム、圧電ブザーを基板上に搭載することにしました。 そのために全体のレイアウトは1号機に比べて大幅な変更を行っています。 ここで使用した圧電ブザー(PKM17EWH4000 村田製作所)は、赤黒の2本のリード線が出ているだけのタイプなので、そのままではブザー本体を固定できません。 そこで ブザーの裏面に両面テープを張り付けてプリント基板に固定をしています。 また、タクトスイッチについては、トップの高さ(長さ)が、通常のものより少々長く実測 9.5mm のものを使用していて、以前に Yahoo! オークションで入手したものですが、メーカー、型番までは分かりません。 (相当以前にはなりますが "共立エレショップ" で購入をした、台湾製の "PT6601G" という型番のものと同等のようです。) |
| プリント基板(3)パターン図 (部品面) (RamenTimerII-2PC.CE3) | ページトップ |
| プリント基板(3)パターン図 (ハンダ面) (RamenTimerII-2PC1.CE3) | ページトップ |
使用したケースは、100均のセリアで購入した "CARD CASE (品番 3139)「和泉化成」" というポリプロピレンケースで、名刺サイズに対応したケースです。 実際にケース加工を行う場合には、上面図に示す2個のΦ4 タクトスイッチ用の穴位置は、ケースが半透明で中が透けて見えるので、現物合わせで行った方が確実です。 その方法は、まず、下面図に示す4個の穴をあけてプリント基板を仮に取り付けておいて、 上蓋を閉めると2個のキートップの位置が透けて見えるので、実際の穴位置が明確になります。 |
| ケース加工図 (RamenTimerII-2CS.CE3) | ページトップ |
下図は2号機のケースの右側面側から見た図で、右半分はプリント基板の取り付けの様子がよく分かるように、右側面を切り取った断面図を表しています。 このケースへのプリント基板の取り付けに当たって、最も重要なのはその上下(高さ)位置で、プリント基板に取り付けたタクトスイッチのトップが、ケース上面から適度な長さ(X)を飛び出すようにします。 プリント基板(3)パターン図 (部品面) でも述べたように、2号機のタクトスイッチには通常のものより少々長い 9.5mm のものを使用しています。 上図から赤色で示した X を計算してみると、 X = ケース高さ(21 mm)−( ケース底厚(1 mm)+ スペーサ長(5 mm)+ ワッシャー厚(0.8 mm)+ プリント基板厚(1.6 mm)+ タクトスイッチ長(5 mm + 9.5mm)) = 21 −( 1 + 5 + 0.8 + 1.6 +( 5 + 9.5 ))= 21 − 22.9 = − 1.9 となります。 実際には 2 〜 3 mm 程度にした場合が操作性も良くなると思いますが、この値はスペーサ長で調整をすることができます。 私が使用したケースとタクトスイッチの場合には 6 mm 長のスペーサが丁度良いと思いますが、 手持ちには 5 mm 長のものしかなかったためワッシャー厚(0.8 mm)をプラスして使用しました。 なお、スペーサ長が長過ぎた場合には、プリント基板の上面とケースの天板との距離が短くなって X 値は大きくなりますが、プリント基板上の背の高い部品とケースの天板が干渉し合って、ケースの蓋が閉まらなくなってしまいます。 実際のところ本機においても、プリント基板の上面とケースの天板との距離は計算上 11.6 mm 程度しかないため、私が通常行っているコネクタ(ピンヘッダ(オス)の黒色樹脂部分長(2.5mm)と、ピンソケット(メス)の全長(11.5mm)の組み合わせ)が 14 mm となるため、左から3番目の写真のようにピンソケット(メス)を使用することができません。 そこで、メス側には以前に "秋月電子通商" で購入をした "TJC8ピンターミナル(メス)" を使用してみました。 このコネクタはハウジングはなくコンタクト部分だけですが、全長約 10.5 mm ほどあるのでそのままの形状で使用したのでは、ピンヘッダ(オス)の黒色樹脂部分長(2.5mm)を足すと、やはり 11.6 mm をオーバーしてしまうので、 右端の写真のように途中で折り曲げて使用をしました。 なお、コードを圧着接続した後に補強と絶縁を兼ねて熱収縮チューブを被せてあります。 (上の写真の内、ピンヘッダ、ピンソケット、TJC8ピンターミナルについては、"秋月電子通商" のホームページから無断で借用をして使用をしました。) [ 参考 ] タクトスイッチにトップの高さ(長さ)が、通常の低いものを使用する場合の1つの例を、次にご紹介しておきます。 私の他のページの "ワンダーコア用 カウンター" の "プリント基板(1)パターン図 (部品面)" で示した写真をご覧になって下さい。 まず、タクトスイッチ専用のサブプリント基板を作製し、そのサブ基板をスペーサを介してメイン基板に取り付けます。 この場合には、メイン基板の上面とケースの天板との一定間隔(メイン基板下のスペーサ長で決まる)を確保したままで、 メイン基板とサブ基板間のスペーサ長の調節で、自由にタクトスイッチのトップ位置を変更することが可能になります。 ただし、この方法にはサブ基板直下のメイン基板上に、サブ基板サイズに見合った十分な平面的スペースが必要になります。 本機においては現状の プリント基板(3)パターン図 (部品面) では、 十分なスペース確保ができないので無理で、改めて初めからパターン設計をやり直す必要があります。 |
| ページトップ |
(主要部品: IC, トランジスタ等) | (データシート) | ||
PICマイコン | .................... | PIC12F635 | |
HC-MOS IC (3-8 デコーダー) | .................... | TC74HC138AP |
| 部品表 | Excel ファイル (RamenTimerII_parts.xls) | ページトップ |
3分間ラーメン・タイマー | ..... | http://xyama.sakura.ne.jp/hp/RamenTimer.html |
キッチン(カウントダウン)・タイマー | ..... | http://xyama.sakura.ne.jp/hp/KitchenTimer.html |