楽々PIC

水田除草と言うブログを書いていますが、PIC関連の記事が意外に人気で驚いています。 PICを使った電子工作に興味を持つ方が多いことを知って、一緒にPICを学ぶブログを作りたいと思いました。 「楽々PIC」は教材と言うよりも少し実用性?のある楽しい道具を作りながら学ぶブログを目指します。

焦電センサー

焦電センサー

 RRP1320-2-01 に焦電センサー(焦電型赤外線センサーユニット) SE-10 を使っています。 センサー感度 約2m、検知角度 約 120 度 で、人が動くと出力がLowになります。 ただし、感知保持タイマー回路が無く、常に人が居ても出力が散発的に High になります。

モノマルチ

人を検出して「いらっしゃいませ」と発声させたいのですが、このままでは頻繁に「いらっしゃいませ」を繰り返してしまいます。 そこでソフトウェアで感知保持タイマー機能を実現します。

上図のように時間 t のタイマー(リトリガラブル・モノマルチバイブレータの様な働き)を使って、感知保持を行います。 焦電センサー出力が Low の時にタイマーを初期値に戻し、TIMER0 で 0 になるまで DEC (-1)します。加工後の出力はタイマーが 0 以外の間 Low を保ち、0になったら High に戻します。

サンプリングの結果、焦電センサー出力が Low の時には毎回タイマーを初期値(10秒)に戻す様子を破線で示しています。 代表的なタイミングだけですが、上図のように次々と初期値に戻される為、散発的な High 出力(斜線部)が無くなります。 一方で、最後に焦電センサー出力が Low であった時刻から設定時間(10秒)後に加工後の出力が High に戻る遅延が発生しますが、人を検出して「いらっしゃいませ」と発声させる用途であれば困らないと思います。

下図は実施例(アセンブラ・ソース)です。

感知保持タイマー

加工出力 inpds<bit2> は直前に 0 クリアされています。 RB0 が 0 (アクティブ)であれば感知保持タイマーを初期化します。 感知保持タイマーが 0 になったら加工出力を 1 にセットします。

感知保持タイマーデクリメント

なお、感知保持タイマーは TIMER0 割り込みの中で、上図のように条件付きデクリメント(値0でクリップ)されます。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。




RRP1320-2-01 概要

RRP1320-2-01 は既に赤外線リモコンのボタン操作 0(10)~9 に応じて準備したフレーズを発生する機能と汎用タイマーが動作しています。 焦電センサー、リードスイッチ、測距センサーの各入力に応じる動作を追加しました。 <PICデバイス=18F1320> 音声合成LSI は、株式会社アクエスト製 AquesTalk pico  ATP3011F4-PU 赤外線リモコン受信モジュール PL-IRM2161-C438  PL-IRM1261-C438

スピーカーはシッカリした箱に収まったものの方が聞取り易い音になります。 下図はオーム電機 Audio Comm  ASP-215N-W (パッシブスピーカー)の片側を使っています。

下図はまだ焦電センサー、リードスイッチ、測距センサー接続前の写真ですが、加筆しながら進捗をお知らせします。 ( 2012/11/06 )

DSC00191

予定した3つのセンサーを接続して動作確認しました。 測距センサーは手を近づけたことを検知して「接近」、遠ざけると「離脱」と言う具合に発声させて期待通りに動作します。 ただ、測距センサーも赤外線発光しリモコンと干渉するようで、測距センサーを接続すると赤外線リモコン受信が不安定になります。 PICマイコンから見ればA/D変換入力なので別のセンサーを接続しても使えます。 音声発声中に次のリクエストを受け付けるように機能を追加し、リモコン操作によって「人気メニュー」「とんこつラーメン」「美味しいよ」「料金は9800円です」と言った具合に複数のフレーズを続けて発声させられるようにしました。 ( 2012/11/07 )

DSC00196

3つのセンサー入力の状態変化のタイミングで以下6つのサブルーチンを CALL し、各々以下のフレーズを発声させるサンプルプログラムを記述しています。

 (1)測距センサー AN0 の上昇(閾値超え) 「接近」
 (2)測距センサー AN0 の下降(閾値超え) 「離脱」
 (3)ドアセンサー RA1 の立ち上がりエッジ 「ドアオープン」
 (4)ドアセンサー RA1 の立ち下がりエッジ 「ドアクローズ」
 (5)焦電センサー RB0 の立ち上がりエッジ 「ありがとうございます」
 (6)焦電センサー RB0 の立ち下がりエッジ 「いらっしゃいませ」

この他に赤外線リモコンのボタン操作16個+登録外コード受信1個の合計17個のサブルーチンと、汎用タイマーによる3個のサブルーチンをコールし、サブルーチンの記述に従って合成音声でお知らせします。 赤外線リモコンの中間コード15番に登録したボタンを押すと、全50フレーズを順に発声します。 ( 2012/11/09 )


ドキュメントとプロジェクト一式を以下のサイトでダウンロード販売中です。

以下を含む ZIP ファイルです。
 (1)全てのアセンブラ・ソースを含むプロジェクト一式
 (2)回路図 PDF
 (3)部品表 PDF
 (4)ブレッドボード配線図 PDF
 (5)取扱説明書 PDF


楽々PIC ダウンロード・コーナー
 RRP1320-2-01-1-Z  ← こちらで販売中です。

rrpdlc


この後、RCサーボ(2台)と赤外線リモコン送信機能を順次試してみる予定です。 停止中の消費電力を抑えるためにRCサーボの電源をOFFしたいと考えています。 電源OFFでは目立った問題はないのですが、電源をOFF→ONすると一定方向に一瞬動く動作が気になる為、実験の上で改善を試みます。


以下は関連記事のインデックスです。


焦電センサー 
 焦電センサーに感知保持タイマー回路が無く、常に人が居ても出力が散発的に High になります。 そこでソフトウェアで感知保持タイマー機能を実現します。

赤外線リモコン受光モジュール 
 以前にRRP-1320-1 シリーズに使った、PL-IRM1261-C438 よりも若干ノイズに弱いようです。 受光モジュールをPL-IRM1261-C438 に変更してドキュメントを作り直します。


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。



RRP1320-0 test1 割り込み周期変更

 前回で、「RRP1320-0 ハードデバック」に紹介したLEDを点滅させるプログラム(プロジェクト)について一通りの説明を終わりましたが、今回は TIMER0 による低位割込み周期を変更してみます。 < PICデバイス=PIC18F1320 >

点滅周期2秒間(点灯1秒、消灯1秒)のLEDを見て居ると少し遅すぎる感じがします。 車のウィンカーにしても1分間に60~120回の点滅周期と定めらているようですから、点滅周期を1秒に変更しようと思います。 LEDの点滅周期を変更する方法は次の2つが考えられます。

1.TIMER0の割り込み周期を100msec→50msecに変更する
2.100msec x 10 で1秒を作っているが、100msec x 5 に変更する

勿論、上の二つの方法を組み合わせて(両方変更して)点滅周期を1秒にすることも可能です。

TIMER0 の割り込みを使ってキー入力の走査も行う予定ですが、100msecの走査周期ではキーを押した時の応答が遅いと感じられる懸念もあり、今回はTIMER0の割り込み周期を50msecに変更することにします。

変更対象ソースは intlow.asm だけです。
下図は変更部分のアセンブラ・ソースリストです。

50msec

プログラムの変更箇所は26,29行目の値だけですが、28,31,33行目のコメントも一緒に変更しました。

ビルドして動作させると、やっぱり1秒周期の方がしっくりきます。

RRP1320-0 の動作確認を済ませたので周辺回路基板製作を考えていますが、その前にいつつかのセンサーとアクチュエーターを試してみようと思います。 LED同様、RRP1320-0 のソケットにリードを挿すなどして簡単に接続できるものを幾つか試して紹介する予定です。

RRP1320-0 の材料注文の際に一緒に手に入れた温度センサー、焦電センサー、RCサーボなどが候補です。


RRP1320-0 関連記事のインデックスはこちら → RRP1320-0 回路図


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。





ダウンロードコーナー
記事検索
アンケートに御協力下さい


アーカイブ
楽々PIC 宛てBlogMail


--- ご了承下さい ---

注意して記事を書いていますが、記事及びリンク先の情報による不利益について、一切責任を負い(負え)ません。
QRコード
QRコード
アクセスカウンター

    Atsuhiro Imai

    バナーを作成


    プロフィール

    jyosou_robot

    • ライブドアブログ