SSブログ

タイマーの試作 [メカトロメイト・タイマー製作記]

みなさんお正月を満喫されていると思いますが、年末ギリギリのタイミングでメカトロメイトにタイマーを仕込んだ作品が完成していますので、製作記に残したいと思います。
メカトロメイトは、既に1体完成しておりますが、先日の千葉しぼり展示会で、なんと小林さんのお隣りに展示させて頂きました^^
その時、メイトファンの方も交えて、これならラーメンタイマーも作れるんじゃね?と盛り上がりまして、今回製作したものです。
メカトロメイトの目の部分は、デジタル表示の目(7セグメントLEDと言います)になっているので、ここに時間を表示すればタイマーになるよね!?という発想です。
目がデジタル.jpg
前回は、ニコニコとネムネム、まばたきの3種類の表現で済んだので、LEDは片目に3個仕込むだけで済みましたが、数字を表示するとなると、全てのセグメントにLEDを仕込まなくてはならないので、工作の難易度はググッと上がります^^
また、ラーメンのフタの上に乗せたいので、電池だけで単独に動く設計にしなくてはなりません。
タイムアップは音で知らせたいし、時間をセットしたり、キャンセルしたりと、プログラムも複雑になるでしょう。
軽く引き受けてしまったものの、難題が山積みで本当に実現できるのか、不安なスタートとなりました^^

さて、まずはタイマー部分の製作です。
操作の方法も含めた、タイマーとしての機能がしっかり出来ていないと、スイッチが何個必要で、どんなパーツが必要になるのか決まりませんからね^^
それに今回は、LEDをダイナミック点灯という方法で制御したいと思います。
1つの目で7個LEDがあるので、両目で14個のLEDを制御しなくてはなりませんが、少ない配線と簡単な制御で済ませるための制御方法がダイナミック点灯です。
どんな方法か説明しますが、それにはまず、7セグメントLEDがどんな構造をしているのか知っておく必要があります。
カソードコモン 7SEG.jpg
今回使用するのは、カソード・コモンという、マイナスが1本にまとまっているタイプです。
ちなみに、プラスが1本にまとまっているアノード・コモンというタイプもあります。
このマイナスが1本にまとめられているところが重要で、ここをマイナスに繋ぐか繋がないかで全体の表示をON/OFF出来る事になります。
ダイナミック点灯では、それを利用して高速にスイッチングすることで、多様な表示を可能にします。

例えば、2個の7セグメントLEDを使って、「13」と表示させたい場合、
ダイナミック点灯の仕組み.jpg
両方のLEDを並列に繋いでおいて、両方に「1」を表示させますが、10の位のLEDだけマイナスに繋げて発光させます。
1の位は点灯させません。
次に、両方に「3」を表示させ、今度は1の位だけマイナスに接続して「3」を発光させます。
これを高速に行うと、人間の目には綺麗に「13」と表示されている様に見えます。
これがダイナミック点灯の原理で、少ない配線でたくさんのLEDへ別々の数値を表示させることができるため、7セグメントLEDを使う時の常套手段となっています。
たまにテレビで、デジタル数字がチラチラして映っているのを見た事があると思いますが、ダイナミック点灯で高速にON/OFFされているために波打って見えているのです。

使用するPICですが、足の数が7本以上必要で、極小のSOPパッケージということで、「電飾しましょっ!2 PIC編」でご紹介した、PIC16F648を使用します。
PIC16F1827は、SSOPという足のピッチが非常に狭いタイプしか無いので、書籍でもSOPパッケージがあるPIC16F648をお勧めしています。
かなり古いPICですけど、電飾するのがメインならこれで十分です^^
モデラーにとっては、高機能であるより、足の数が多いほうがありがたいのです。
回路図です。
ダイナミック点灯.jpg
RBポートでLEDに表示する数字を出力して、RA0とRA1でどちらのLEDを点灯させるか制御します(赤線)。
RA6とRA7は、P73で説明しているスイッチ入力回路そのまんまです。
時間の設定やキャンセル、スタートスイッチとして使います。
RA2にBZと書かれたマークがありますが、これは圧電ブザーというもので、薄い金属板を振動させてブザー音を出すものです。
スピーカーの様に綺麗な音を再生するものではありません。
圧電ブザー.jpg
普通は一定のパルスを送って、「ブー」というブザー音として使うのですが、PICを使えばパルスの幅を自在にセットする事が可能ですので、音階を作る事が出来ます^^
音の長さと周波数を受け取って、高速にON/OFFさせる関数を作ります。
//RA2の圧電ブザーを周波数tで鳴らす
void MERODY( unsigned short L,unsigned short t){  
    unsigned short j,i;
    for(j=0;j < L;j++){
        RA2=1;
        for(i=0;i < t;i++){ __delay_us(1); }
        RA2=0;
        for(i=0;i < t;i++){ __delay_us(1); }
        
        }
    }

あとは、メインのプログラムから、長さと音程を引数にセットして呼び出せば、メロディーが鳴ってくれます。
                //チャルメラの演奏
                MERODY(60,98);  //G2
                MERODY(60,110);  //A2
                MERODY(240,123); //B2
                MERODY(60,110);  //A2
                MERODY(60,98);  //G2
                __delay_ms(200);//R
                MERODY(60,98);  //G2
                MERODY(60,110);  //A2
                MERODY(60,123);  //B2
                MERODY(60,110);  //A2
                MERODY(60,98);  //G2
                MERODY(320,110); //A2
                __delay_ms(500);
 

あんまり綺麗な音色ではありませんけど、安価でそれなりの音量で鳴ってくれるので、手軽です^^
ボタンの操作音にも使ってみました。

とりあえず、ブレッドボードに試作したラーメンタイマーの動作している様子です。
Youtubeに動画としてアップロードしました。


実用的なタイマーとして使える様に、ちゃんとプログラミングしました。
マニュアルレスでも使える様にデザインするのも、プログラマーのお仕事です^^

次回はベースの加工をご紹介したいと思います。

現在、2つのブログランキングへ参加しています。
1日1回、応援のワンクリックをぜひお願いしますm(__)m
人気ブログランキングへ にほんブログ村 その他趣味ブログ 模型へ


コメント(10) 

コメント 10

吉田

はじめまして。車のダイキャストモデルにLEDで電飾しようとしています。最近、「電飾しましょっ」を2冊購入して勉強しています。
質問があります。
1・ラーメンタイマーについてですが、電源は9V乾電池でしょうか?
2・・PICを使用した回路でCR2032を直列にした6Vで稼働させることは大丈夫でしょうか?
3・ラーメンタイマー回路図によると常にPICに電源電圧がかかっているようですが、電気は消費してしまうのでしょうか?
もし消費がある場合、自動(ある時間後に)で電源を遮断する方法はありますか?
4・PICでの回路で作動確認までできたとして、さらにスイッチでなくTV用の汎用赤外線リモコンで操作しようとするのは難しいでしょうか?

もし可能であれば回答をお願いしたいと思います。

現在555タイマーICで点滅させる(ハザードランプ)回路は完成していますが、PICを使用することに挑戦したいと思っています。
by 吉田 (2019-01-03 15:58) 

週末ラ族

初めまして!
”キャプテンソロの造船日記”の頃からROMさせて頂いております自称スターウォーズオタクの出戻りモデラー&旧電子工作好きオヤジ@北海道です...(私も1964生まれです。)
スターウォーズ展とサンダーバード展で作品を直に拝見して《世の中にはホントにすごい方がいらっしゃるんだぁ〜」と感銘いたしました。超絶モデリングあってこその超絶電飾!眼福でした!!!
昨年初頭からデアゴのR2-D2と手付かずだったファルコン製作を開始し『電飾しましょっ2』発刊と共に『1』も購入させて頂き無謀にも《PIC》と《Arduino》の両刀使いを始めてみました。ArduinoはMEGAとUNOを入手済み、PICkit4とチップ等は数日後に到着予定です。PICで躓いた時にはご質問させて頂いてもよろしいでしょうか?(ずうずうしいですよね...)
PICkit未接続だと#include <xc.h>が書籍通りに設定されないようで到着待ちです。
今回の作品は別の趣味(HNからお察しつくと思いますが)からも刺さる作品で今後の展開楽しみにしております。(30秒単位で設定できるとラヲタにはうれしい仕様ですが…)
今後ともよろしくお願い申し上げます。

以下通信文です。
小生ブログは開設しておらず模型ネタはインスタのみなので”URL"欄にはとりあえずmail adress貼っておきました。
公開される仕様であれば削除いただければ幸いです。インスタアカウントはopenなので貼ることは可能です。(”senonipa"です。らーめんメインで模型ネタ内容はしょぼいです…)
あと貴書2の誤植と思われる箇所をいくつか見つけましたので既に把握されているかも知れませんが失礼ながらご参考までに記載させて頂きます。
p34 論理演算子の表1列3行目 |→||
p35 a=1+5*2;→a=10+5*2 もしくは ”aは11になります”
p50 "5"欄 ハイライト部が"PICkit3"ではなく"Simulator"になっています。
p79 1行目 if(ontime>zentime){ が抜けていませんでしょうか?(他サイトで指摘されていました)
コンピュータとしてはArduinoの簡単な印象ですがプラモに組み込むにはPICのサイズがぶっちぎり優位だと思いますので本作のようにソース公開して頂くと大変勉強になります。
拡大鏡使えば小生にも1608のchip LEDは問題なくハンダ付けできましたので電飾作品製作enjoyしようと思います。
ご多忙とは思いますがブログ更新楽しみにしております。
長文誠に失礼いたしました。
by 週末ラ族 (2019-01-03 23:45) 

どろぼうひげ

吉田 さん、こんにちは^^
電飾しましょっ!をお求め頂き、ありがとうございます!
ご質問にお答えさせて頂きます
1. 電源は単四2本です。
  製作記はこれで終わりではありません。
  引き続きお楽しみ下さい^^
2. PICは動作電圧が5.5Vまでで、最近のものは3.6V
  までというタイプもございます。
  当然、6Vでは使用できません。
  まずはスペックをご確認下さい。
3. 回路図に電源スイッチが書かれていないのは普通です。
  常に電源が通電されているわけではございません。
  PICにはスリープモードもあり、電力をほとんど消費しない
  モードにすることも可能ですが、今回は使用していません。
4. TV用のリモコンを使うには、送信されているパターンを
  解析しなくてはなりません。
  それは簡単な事ではなく、多くの時間と労力を使います。
  しかも、今度はそれを受信したと判断するプログラムを組む
  必要があり、これも大変でしょう。
  一般に売られているリモコンのキットを使って、その信号
  だけPICで検知した方が、現実的だと思います。

PICを使用すれば、タイマーICで製作するより、格段に速く、簡単に作る事ができると思います。
何でも出来るわけではありませんが、出来る事は確実に増えます。
楽しんで下さいね!
by どろぼうひげ (2019-01-04 11:06) 

どろぼうひげ

週末ラ族 さん、こんにちは^^
「キャプテンソロの造船日記」は、ボクではございません(^_^;)
いつもありがとうございます!
よろしくお願い致します。
「電飾しましょっ!2PIC編」の間違い部分のご指摘、ありがとうございます!
実はご指摘のところ以外にもご報告頂いておりまして、ご迷惑をお掛けしてしまい申し訳なく思っております。
また何かございましたら、お知らせ頂ければ幸いです。


by どろぼうひげ (2019-01-04 11:24) 

週末ラ族

あっ、遮断呆人でしたっけ?
大変失礼いたしました。
ファインモールドファルコン記事をむさぼっている時でしたので記憶があやふやでした。
また色々教えて下さいませ。!
by 週末ラ族 (2019-01-04 13:27) 

吉田

こんにちは。
回答有難うございます。

本ブログたのしみに拝見しております。

「電飾しましょっ!2」で質問があります。

p26の16F1827の小型版の説明分で
16F648と16F628が混在していると思います。
さらに、P8の写真は628で
p26の初期設定プログラムの1行目コメントは648です
どちらが16F1827の小型版として合っていますでしょうか?

回答よろしくお願いいたします。




by 吉田 (2019-01-04 15:47) 

どろぼうひげ

週末ラ族 さん、こんにちは
はい、懐かしいお名前を久しぶりに拝見しました^^
懐かしかったです
by どろぼうひげ (2019-01-04 17:13) 

どろぼうひげ

吉田 さん、こんにちは
引き続き、製作記をお楽しみ下さい^^

電飾しましょっ!2 の間違い部分をお知らせ頂き、ありがとうございます
実は、入稿直前になって、PIC16F628から、PIC16F648Aへ、急遽変更致しました。
PIC16F648Aの方が、プログラム領域が大きくて理想的だったのですが、上手く動かない場合があったので、PIC16F628で執筆を進めていたのです。
そのまま検証を続けていたのですが、入稿直前になって原因が判明し、PIC16F648Aへ急遽変更して頂きました。
どこかでミスプリントが出る事が予想されましたが、読者にとってPIC16F648Aを使った方が、断然有利であると判断して、ボクが無理矢理変更をお願いしたものです。
混乱を招いてしまったようで、大変申し訳ございません。
表記や写真は、全てPIC16F648Aとしてご理解頂けますよう、お願い致します。
恥ずかしながら、他にも訂正部分が出てきておりますので、ある程度まとまったら記事にしたいと思っています。
引き続き、ミスがありましたらお知らせ頂ければ幸いです。

by どろぼうひげ (2019-01-04 17:29) 

吉田

どろぼうひげ 様
ご回答有難うございました。
PIC16F648Aとのこと了解いたしました。
また、よろしくお願いいたします
by 吉田 (2019-01-04 23:58) 

どろぼうひげ

吉田 さん、こんにちは
こちらこそ!
よろしくお願い致します。
by どろぼうひげ (2019-01-06 10:39) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。