楽釣工房では、小魚用しゃくり機、わかさぎ用しゃくり機、Picマイコン制御による自動しゃくり機(しゃくりパターン制御)、赤外線リモコンの応用回路(電気機器のON/OFF、温度制御、リモコンに依る数値設定など)、電子回路について書いて行きます。

 ブログの投稿記事に画像データを多く使用している為、他の投稿記事を読む事に不便をかけると思われます。
従って、投稿記事の前文をブログで公開し、全体の記事は ホーム・ページ [ 楽釣119 ] で公開する事にしました。
ホーム・ページ [ 楽釣119 ] では、今までの記事の内容を整理し、内容の不具合を修正し、又、記事の追加をして、ホーム・ページで公開しています。
  
___________________________________________________________________________________________________________________

2011年5月10日火曜日

MPLAB IDE エディターの分割

 下記画像で、赤丸部分にボタンが在るのをご存知ですか?・・・

これは、MPLAB IDE のエディター画面を分割するボタンです。

テキスト・プログラムが長い場合、デバッグ・編集する時、変数の値等を参照する為に、
プログラム・テキストの前後・左右を行ったり、来たりする事が多々あります。
これは、とても不便な事です。

そこで、MPLAB IDE のエディターに備わっているエディター分割ボタンの登場です。

使い方は、このボタンを左クリックしながらドラッグするだけです。これでエディター・ウインドウが分割表示されます。
後は、それぞれに表示させたいテキスト部分を選択するだけです。

分割して表示されているだけなので、どちら(前後・左右)を変更しても、テキストの変更が
反映されるのは、元のテキスト・プログラムだけです。


表示させたいプログラム・テキスト① ボタンで上下に分割。


② ボタンで左右に分割。これを使う機会は、少ないと思います。

2011年5月7日土曜日

MPLAB IDE でシュミレートする ②

 前回のMPLAB IDE でシュミレートする ① は、非同期(手動)でシュミレートする方法を紹介しましたが、
今回は、入力信号を予め設定して、同期して自動的にシュミレートする方法を紹介します。 

赤外線リモコン送信機プログラムの下記の部分 [Ⅰ]、 [Ⅱ] について検証します。


まず、Stimulus (スティミュラス)ウインドウを開き、Pin / Register Actions (Synchronous stimulus : 同期 
タブを選択します。


 は、タイム・ユニット(時間単位)を設定します。


 は、タイム・シーケンス(予定時間) を設定します。タイム・ユニットで設定された時間単位で動作します。
  PIC マイコンが動作を開始し、入力コマンドを開始する予定時間を設定します。

 は、この部分をクリックすると、入力コマンドに使用する信号を選択します。下記のウインドウが開きます。
(このプログラムで使用する信号です。)


検証 [Ⅰ]


 は、これらのシュミレート条件を設定した後、”Apply” (適用する)ボタンを押してシュミレート条件を
確定します。一部を変更した時も必ず ”Apply” (適用する)ボタンを押して確定します。

は、設定した条件をクリアーするボタンです
設定した項目の行にカーソルを合わせクリックします。次に、”Delete Row” ボタンを押すと行がクリアーされます。

 は、設定した条件をファイルに保存します。


上図の信号で条件設定しました。

タイム・ライン

■ [   0] : PIC マイコン、動作開始

■ [500] : カスタム・チャンネル[1 : RB4 ] を入力 ”1”

■ [800] : リモコン・チャンネル [1 : RA0 ] を入力 ”1” 、カスタム・チャンネル[1 : RB4 ] を入力 ”0”にする

■ [900] :  リモコン・チャンネル [1 : RA0 ] を入力 ”0” 

シュミレータ・ツール・ボタンの "RUN" を押します。


この様にして、赤外線リモコン信号が出力されました。

2011年5月4日水曜日

MPLAB IDE でシュミレートする ①

前回投稿した記事の続きです。
作製した赤外線リモコン送信機をシュミレートして検証します。


プログラム名  「TX-4.c」

MPLAB IDE を起動して、コンパイルを完了しておきます。

手順
   1.シュミレータ・ツールバーを表示させる。
   2・PIC の動作周波数を設定する。
   3.ブレーク・ポイントを設定する。
   4.Simulus ( スティミュラス ) で入力条件を設定する。
   5.ロジック・アナライザーを起動する。
   6.シュミレートする。

では、ブレーク・ポイントを設定します。


ブレーク・ポイントの設定の仕方に依って、シュミレートしにくい場合が有ります。
その時は、ダミー命令を入れて作業がしやすい様にします。勿論、プログラムのタイミングに影響が無い処、
影響の無い命令を挿入します。

注 ) 括弧の部分にブレーク・ポイントを設定出来ません!。

Stimulus ( スティミュラス ) の入力条件を設定します。

[ 16F648A ] I/O マップ

   RA0  : リモコン・チャンネル "1" : 押しボタン入力
   RA1  : リモコン・チャンネル "2" : 押しボタン入力
   RA2  : リモコン・チャンネル "3" : 押しボタン入力
   RA3  : リモコン・チャンネル "4" : 押しボタン入力
   RA4  : リモコン・チャンネル "5" : 押しボタン入力
   RA5  : リモコン・チャンネル "6" : 押しボタン入力
   RA6  : リモコン・チャンネル "7" : 押しボタン入力
   RA7  : リモコン・チャンネル "8" : 押しボタン入力
 
   RB4  : カスタム・チャンネル  "1" : Bit0 : ショート・ピン入力
   RB5  : カスタム・チャンネル  "2" : Bit1 : ショート・ピン入力 
   RB6  : カスタム・チャンネル  "4" : Bit2 : ショート・ピン入力 
   RB7  : カスタム・チャンネル  "8" : Bit3 : ショート・ピン入力


   RB3  : CCP ( RB3 ) PWM 出力端子 : 赤外線LED出力


リモコン・チャンネル "1" ( RA0 ) を入力に設定。その他のリモコン・チャンネルは省略。
RB4 ~ RB7 は、ショート・ピンなので、ここではON/OFF スイッチのように扱います。
"Set High" をファイヤーすれば、スイッチON
"Set Low" をファイヤーすれば、スイッチOFF です。
シュミレート条件を設定した後、”Apply” (適用する)ボタンを押してシュミレート条件を確定します。

それでは、シュミレータを "RUN" します。リモコン信号は3回出力されますので、
3回 "RUN" ボタンを押す事になります。

  RB4 : Set High を ファイヤー ( Fire ボタンを押す ) します。

  次に、RA0 をファイヤー ( Fire ボタンを押す ) します。

PWM 出力波形が表示されました。


ここで、PWM 波形を拡大して見ます。


赤枠の部分を拡大します。


PWM 波の周期が (26 Cyc)、( 26 μs) です。設計値どおりです。

表示された数値が波形と重なって見えにくくなる場合は、この数値にマウスのフォーカスを合わせ、
左クリックしながらドラックすると移動できます。

赤外線リモコン送信機

 赤外線リモコンのデータ構造は、メーカー各社に依って異なりますが、基本的な構造は、数種類しかありません。
その数種類のリモコンを見分けるのは、リモコンのチャンネル・コードとリモコン特有のカスタム・コードです。

そこで、自分で作製した電子機器等をコントロールする為に、赤外線リモコンを利用する事を考えて見ます。
テレビ等のリモコンとバッティングしない為に、カスタム・コードを自分独自のコードに設定すれば、問題無しです。

独自のリモコンを製作して、テレビ・リモコンと共有して電子機器を操作したい場合、テレビ・リモコンのクローンを製作し、スイッチ等で切り替えて ( カスタム・コードを切り替える )、チャンネル・ボタンを押せば、何台もの機器を一つのリモコンで操作する事が出来ます。

さらに、拡張して考えれば、リモコンからデータを送信する事も出来ます。

これらを、1個の PICマイコンで処理します。


上図の図形は、ELPA 製 RC-17 、RC-29D リモコンの信号です。( SONY タイプ )

この、信号はとてもシンプルな信号形態をしています。( リモコンの押しボタン ”1” です。 )
リモコンのボタンを押すと、

   リモコン信号+スペース( 25ms )+リモコン信号+スペース( 25ms )+リモコン信号

リモコン信号が 3 回送出されます。

それでは、プログラムについて考えて見ます。

上図のリモコン信号は、機器の受信信号です。このままPIC マイコンでデータを送信しても機器は反応しません!。
何故?・・・そもそも、信号の送信の仕方が違うからです。

赤外線に依る信号をを送信する時、外界の赤外線や、日光の赤外線等などが、雑音として受信して正しく信号を判別できないからです。
そこで、外部からの雑音に左右されない為に、 38kHz と言う信号でスイチッング( 変調 )して信号を送信します。
受光素子は、受信した信号にフィルター( 38kHz )を掛けて信号を復元( 復調と言う )します。
この様にする事で、雑音に左右されない信号を受信する事が出来るのです。

これを、プログラムで実行する為に、PIC 16F648A のCCP( PWM ) を利用して信号データを変調します。


原理が理解できれば、後は、プログラムを作成するだけです。

下の写真は、試作したリモコン送信機です。

カスタム・コードに依る機器を制御するので、これを、「 カスタム・チャンネル 」と勝手に呼ぶ事にします。

黄色の押し釦は、テレビの” 電源 ” ボタン

緑色の押し釦は、テレビのチャンネルボタン
左から ” 1 ” 、” 2 ” 、” 3 ” 、” 4 ” です。

赤色の押し釦は、テレビのチャンネルボタン
左から ” 5 ” 、” 6 ” 、” 7 ” 、” 8 ” です。

黒色の押し釦は、カスタム・チャンネル” 1 ”
白色の押し釦は、カスタム・チャンネル” 2 ”
橙色の押し釦は、カスタム・チャンネル” 4 ”
青色の押し釦は、カスタム・チャンネル” 8 ”

テレビ・チャンネル・ボタンは、トグル操作です。


使い方は、カスタム・チャンネル・ボタンを押しながら、チャンネル・ボタンを押します。カスタム・チャンネル・ボタンを押さなければ、カスタム・チャンネル” 0 ” です。カスタム・チャンネルは、[ 0 ] ~ [ 15 ] です。

カスタム・チャンネルは、 ” OR ” 型なので、

  カスタム・チャンネル” 1 ” + カスタム・チャンネル” 2 ” = カスタム・チャンネル” 3 ”

と、言う具合にカスタム・チャンネル・データを含んだ信号を送信します。

このリモコン送信機では、16台の機器、( 16 × 8 = 128 )の項目を操作出来ます。

この送信機に対応した受信機を試作しました。

 [ PIC 16F84A ]


ショート・ピンに依って、カスタム・チャンネルを設定します。この基板では、カスタム・チャンネル[ 0 ]~ [ 7 ] です。

2011年5月2日月曜日

Stimulus ( スティミュラス ) / Asynch 非同期

 PICマイコンに接続された スイッチ等(非同期で動作)によってプログラムを動作させる場合、普通、ブレッド・ボード等で実験回路を組み立てて動作を確認しますが、わざわざ、この様な事をしなくても MPLAB IDE シュミレータで動作を確認する事が出来ます。
それは、擬似信号を作ってプログラムに入力して動作を シュミレートする事です。
この擬似信号を定義するのが、Stimulus ( スティミュラス ) です。ここでは、Asynch ( 非同期 ) について説明します。

簡単なプログラムを例題にして説明をします。プロジェクトは作成済みとします。                                       
ブレーク・ポイントを設定して、一時、停止させないとロジック・アナライザーに観測波形が表示されません。
ブレーク・ポイントを設定するためだけに、ライン31,32 にディレー・タイムを入れています。                     

 [ PWM-T0.c ] PWM を利用したパルス発生器です。            
 このプログラムは、ポートRA0 に信号が入った時に、パルス幅100μs、
 デューティ 50% 、時間 1ms のパルスを発生させます。          

 プログラム・ダウンロード      PWM-T0.c 

 
  ● プロジェクトを開きます。
  ● シュミレーターのツールバーを表示させます。




























ロジック・アナライザー・ウインドウを表示させ、赤枠の3つの信号を選択します。

CCP1(RB3) はPWM 出力端子名です

























 Debugger ⇒ Stimulus ⇒ New Workbook

Stimulus ( スティミュラス )ウインドウを表示させます。
Asynch タブを選択します。



入力ピンを選択します。




















動作方法を選択します。

    Set High     : ファイヤー・ボタンを押すと、RA0 =”1”
    Set Low      : ファイヤー・ボタンを押すと、RA0 =”0”
    Toggle        : ファイヤー・ボタンを押すたびに、RA0 =”1”、RA0 =”0” と反転します。
    Pulse High  : ファイヤー・ボタンを押すと、指定された時間のパルス(H)を RA0 に入力します。
    Pulse Low   : ファイヤー・ボタンを押すと、指定された時間のパルス(L)を RA0 に入力します。


ファイヤー・ボタンを押して出力されるパルスの時間単位を設定します。


パルスの時間を設定します。
設定が終了すると、ファイヤー・ボタンに ” > ” マークが表示されます。
”Save” ボタンを押して、今設定した項目を ファイルとして保存 します。
後で”Save”しても構いません。" Apply ( 適用 ) " ボタンを押して有効にします。


シュミレータの ”RUN" ボタンを押して実行します。
すかさず、赤枠の ”Fire" ボタンを押します。
すると、ロジック・アナライザーに波形が表示されます。
”Fire" ボタンを何度も押さないと波形が表示されない場合もあります。