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

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

2011年7月9日土曜日

A/D コンバータの使い方

PIC マイコンの種類に依って A/D コンバータの設定方法が異なりますが、基本的な部分については共通なので
設定方法を理解すると、他の PIC マイコンの使い方をマスターする事が出来きます。
ここでは、PIC 12F675 について説明をします。

説明文の中で、例題として数値を表示しています。


例題は、バッテリー等の電圧監視をする為のプログラムを前提にしていますが、
今回プログラムは、公開しません。

下記の図を見てください。
PIC 12F675 の A/D コンバータを操作する為の項目です。割り込み制御は使用しないので、
その部分の説明を省略します。


【 例 題  設定手順 】
  1. CONFIG ワード を設定する。
  2. PIC マイコンの動作周波数を 4Mhz にする。
  3. CMCON で コンパレータを OFF にする。
  4. TRISIO の入出力を設定する。
  5. ANSEL を設定する。
      ■ 変換クロック を設定する。
      ■ I/O ポート を設定する。
        ● AN0 をアナログ・チャンネルに設定する。
         ● GP3 をデジタル入力にする。
         ● GP1、GP2、GP4、GP5 をデジタル出力にする。
  6. ADCON0 の設定。
       ■ ADFM の設定。データを左詰めで8bit データを使う。
       ■ VCFG 基準電圧の設定。
       ■ アナログ・チャンネルの設定。設定したチャンネルの内の一つを選択する。
       ■ ADON A/D コンバータ・モジュールを使用する。
  7. ADRESH をA/D 変換のデータとして扱う。
_______________________________________________

1.__CONFIG ( INTIO & WDTDIS & PWRTEN & MCLRDIS ) ; 

2.#define _XTAL_FREQ 4000000 ; 

delay タイムを使う場合、delay を使用する定義をする。動作周波数 4Mhz。

4.TRISIO = 0b00001001; //  I/O ポート設定値 

GPIO0 = 1; AN0 アナログ・チャンネル "0" A/D 変換入力
GPIO1 = 0; デジタル出力
GPIO2 = 0; デジタル出力
GPIO3 = 1; デジタル入力
GPIO4 = 0; デジタル出力
GPIO5 = 0; デジタル出力


【 5.ANSEL の設定 】



 [ アナログ・チャンネル・セレクト・ビット ] 
  
   ANS0 = 1;   // Analog  ( Pin 7 : GP0/AN0 )
   ANS1 = 0;   // Digital   ( Pin 6 : GP1/AN1 )
       ANS2 = 0;   // Digital    ( Pin 5 : GP2/AN2 ) 
   ANS3 = 0;   // Digital    ( Pin 3 : GP3/AN3 )

 [ A/D 変換クロック周波数選択 ]    動作クロック周波数 : 4Mhz 

 8 Tosc を使用する。

        ADCS0: 1
        ADCS1: 0
        ADCS2: 0 

下記の図を参考にして、デバイスの周波数に依って A/D 変換の動作クロックを設定します。
赤く塗りつぶした部分の中から選びます。ここでは、2.0μs の 8 Tosc を選択します。


  5.ANSEL = 0b00010001;   // ANSEL = 0x11 設定値 


【 ADCON0 の設定 】


   ADFM = 0;  // データを左詰めで使う。8bit データとして扱う。
    VCFG = 0;  // 基準電圧を VDD にする。
    CHS0 = 0;  // アナログ・チャンネル "0" を使う。
    CHS1 = 0;  // アナログ・チャンネル "0" を使う。
 GO/DONE = 1;  // 変換開始指令、変換終了ステータス。
    ADON = 1;  // A/D コンバータ・モジュールを使用する。

 6.ADCON0 = 0b00000001;   // ADCON0 = 0x01 設定値 

この記事の続きを読む・・・ A/D コンバータの使い方


楽釣工房・ホームへ戻る ] [ ホーム・ページ  楽釣119 へ移動 ]

2011年6月28日火曜日

ワイパー・モーターのPWM制御 / PIC 16F88

以前投稿した記事の ワイパー・モーターの電圧制御 / 定電圧インバータ制御 では、モータに掛かる電圧をコントロールする事に依って、モーターのスピードをコントロールしていましたが( 一般的なしゃくり機のスピード・コントロール )、これは、アナログ的な制御方法です。


一方、デジタル的にコントロールする方法に、PWM コントロールと言う方式が有ります。これは、モータに掛かる電圧 12V は、そのままにして、モータに流れる電流を ON/OFF する事に依ってスピードをコントロールします。この、ON/OFF を制御するのが、 PIC 16F88 マイコンです。

この方式を、しゃくり機 V.6 / マイコン制御 に採用してきましたが、少々、問題が発生した為、改良する事にしました。
しゃくり機 V.6 / マイコン制御 に使っていたスピードをコントロールする Hブリッジ・ドライバーIC のドライブ能力が不足している為、破損する事が有りました。

そこで、ドライブ能力を上げる為に、以前から パワー・MOS・FET を使って Hブリッジ・ドライバー を作る予定でいたのですが、実験をする機会がなくて・・・のびのびになっていました。やっと、部品を購入出来たので、試作機を製作しました。

電気回路的には標準的な物ですが、部品の値段と性能が満足出来るものを選定するのに時間がかかりました。

 一応、モーターの正回転・逆回転・ブレーキ動作を使うので、Hブリッジ・ドライバー回路を採用しています。

 一方向にモーターを回すのであれば、パワー・MOS・FET 1個で間に合います。 


モーターの制御は、PIC 16F88 に VR を接続して VR の電圧を A/D変換 し、そのデーターをPWM の CCPR1L与えてデューティサイクルを連続可変する物です。

Hブリッジ を駆動する為に普通はECCP モジュールを使うのですが、PIC 16F88 には、ECCP モジュールが無いので、CCP モジュールにゲートIC 74HC08 のAND 回路を組み合わせ、ECCP と同等の機能を持たせています。

試作した回路図です。



















Hブリッジ・ドライバー 基板です。


PIC 16F88 によるコントロール基板です。


逆回転・ブレーキ動作は、今回使用していません。

連続正回転だけです。スムーズにスピードが可変します。

PWM 波に依ってモーターの動作を高速でスィッチイングする為、モーターコイルに流れる電流によって励磁音がします。約1kHz の音がします。
少々うるさいかもしれません・・・・

パワー・MOS・FET は、内部抵抗が小さく、大電流を流す事が出来ます。ここで使っている素子は 20A Maxです。ゆえに、それ程発熱しないので、放熱器を必要としないです。

但し、静電気にとても弱いので取り扱い注意です!。

2011年6月16日木曜日

FRISK リモコン送信機

 手持ちの部品でなるべく小型の赤外線リモコン送信機を作る事を考えたところ、
電池とそれを収めるケースが必要となりますが、適当な物が有りません。
アクリル板等を加工してケースを作るのも面倒なので、時々、「FREISK」 菓子を食しているので、
そのケースを利用する事にしました。

部品を納めるのに高さが 8.5mm 程しかないので、少々考えて部品配置をしなければなりません。


又、電池ケースが大きい為、収まらないので、無い知恵を使ってステンレスのピアノ線を使って
電池クリップなる物を作って見ました。


電池を装着します。ピアノ線のスプリング効果でしっかり基板に電池を押え付けています。
下の写真を見ると、写真の上下に電池がずれない様にピアノ線が押さえています。
奥側を押さえる物が無いので、銅線くずでストッパーを作っています。
理想は、ピアノ線だけで電池の位置がぶれることなく固定出来る事です。
形状をもう少し考えた方が良いかも知れませんが・・・とにかく、確実に固定出来ました。


この記事の続きを読む・・・FRISK リモコン送信機

2011年6月9日木曜日

Full color LED PWM control

 米粒マイコン PIC 10F222 を購入したので、使ってみる事にしました。
予想していた以上に小さいので、取り扱いには注意が必要です。


とりあえず、動作を確認する為に、WEB上で公開されているプログラムを探して見ました。

air variable さんのホーム・ページより、「Full color LED PWM control  for PIC10F222」
プログラムを利用させていただきました。感謝!


書き込みには、 ICSP 方式で行う方が良いのですが、動作実験をする為だけなので、
半田付けをしない状態で使用します。
 そこで、秋月の PIC Programmer v4 で書き込みが出来るように、専用のプリント基板を
作り PIC 10F222 をワニグチ・クリップにちょっと手を加えた物で、固定して書き込みをしてみました。

【注意】 この様な使い方に自信のない方は、お止め下さい。当方は、一切の責任を持ちません。
ご自身の責任に於いて行って下さい。

 

10F222 を乗せてみます。


100均で売られているワニ口クリップに、釣具店で売られているシリコンゴムのチューブを被せています。


クリップで固定します。


秋月の PIC Programmer v4 で書き込みします。


この記事の続きを読む・・・Full color LED PWM control

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 ] です。