12.01.2015 Views

-----「コントロールマイコン PIC を使ったアクチュエータ制御入門」

-----「コントロールマイコン PIC を使ったアクチュエータ制御入門」

-----「コントロールマイコン PIC を使ったアクチュエータ制御入門」

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

支 援 センター 主 催 平 成 19 年 度 教 育 研 究 支 援 センター 技 術 研 修 会 報 告<br />

-----<strong>「コントロールマイコン</strong> <strong>PIC</strong> を 使 ったアクチュエータ 制 御 入 門 」-----<br />

教 育 研 究 支 援 センター 中 尾 三 徳<br />

概 要<br />

支 援 センターで 開 催 した 技 術 研 修 会 も 以 下 の 様 に、 今 回 で8 回 目 を 迎 えました。<br />

--------------------------------------------------------------------<br />

教 育 研 究 支 援 センター 技 術 研 修 会 開 催 一 覧<br />

1 回 「 初 めてのホームページ 作 成 講 座 」 中 尾 三 徳 2002.3.18~3.22<br />

2 回 「マシニングセンター 使 用 方 法 」 神 田 尚 弘 2002.7.22~7.26<br />

3 回 「 走 査 型 電 子 顕 微 鏡 ・X 線 マイクロアナライザの 操 作 方 法 」 西 彰 矩<br />

2003.9.2~9.2<br />

4 回 「4サイクルエンジンの 理 論 と 分 解 組 み 立 て」 仲 井 正 明 2004.8.5~8.<br />

5 回 「ネットワーク 環 境 におけるセキュリティーのあり 方 」 日 下 孝 二 2004.12.<br />

6 回 「マイクロコントローラ<strong>PIC</strong>の 活 用 」 徳 方 孝 行 2005.8.3~8.5<br />

7 回 「ワイヤー 放 電 加 工 機 による 物 作 り 教 育 への 利 用 と 応 用 」 川 村 純 司<br />

2006. 3.8~3.1<br />

8 回 今 <strong>「コントロールマイコン</strong><strong>PIC</strong>を 使 ったアクチュエータ 制 御 入 門 」 中 尾 三 徳<br />

2007.11.27~11.2<br />

--------------------------------------------------------------------<br />

第 6 回 技 術 研 修 で 行 った<strong>PIC</strong>の 制 御 はアセンブラ 言 語 で 行 いました。 今 回 は、FREEWARE<br />

の HITEC-C 言 語 を 使 った 実 験 を 行 います。アセンブラ 言 語 からC 言 語 に 替 わったことで、<br />

皆 様 もより<strong>PIC</strong>の 制 御 が 分 かりやすくなったのではないかと 思 います。また、それぞれ<br />

の 周 辺 電 子 素 子 も 規 格 表 やマニュアル 等 をそのままで 添 付 しましたので、この 実 験 が 終 わ<br />

れば、 各 人 で 自 力 で<strong>PIC</strong>を 使 った 電 子 回 路 を 構 築 できると 思 います。 自 由 な 発 想 でブレ<br />

ッドボード 上 に 回 路 を 構 築 していただければ 幸 いです。


コントロールマイコン<strong>PIC</strong>を 使 ったアクチュエータ 制 御 入 門<br />

開 発 環 境 の 全 体 像 は、 以 下 のような 感 じになります。<br />

1. まえがき<br />

教 育 研 究 支 援 センター 第 1 班 中 尾 三 徳<br />

3つのサーバ 開 発 用 パソコンのシリアルポートと<strong>PIC</strong>ライタ 基 板 を 接 続 して、<strong>PIC</strong>ライタソフト<br />

で <strong>PIC</strong> にプログラムをダウンロードします。プログラムを 書 き 込 んだ<strong>PIC</strong>はライタ 基 板 から 取 り 外 し<br />

て、ターゲットとなる 基 板 に 付 け 替 えて 使 用 します。<br />

この 技 術 研 修 会 も 以 下 の 様 に、 今 回 で8 回 目 を 迎 えました。(^^ゞ<br />

--------------------------------------------------------------------<br />

教 育 研 究 支 援 センター 技 術 研 修 会 開 催 一 覧<br />

1 回 「 初 めてのホームページ 作 成 講 座 」 中 尾 三 徳 2002.3.18~3.22<br />

2 回 「マシニングセンター 使 用 方 法 」 神 田 尚 弘 2002.7.22~7.26<br />

3 回 「 走 査 型 電 子 顕 微 鏡 ・X 線 マイクロアナライザの 操 作 方 法 」 西 彰 矩 2003.9.24~9.2<br />

4 回 「4サイクルエンジンの 理 論 と 分 解 組 み 立 て」 仲 井 正 明 2004.8.5~8.<br />

5 回 「ネットワーク 環 境 におけるセキュリティーのあり 方 」 日 下 孝 二 2004.12.<br />

6 回 「マイクロコントローラ<strong>PIC</strong>の 活 用 」 徳 方 孝 行 2005.8.3~8.5<br />

7 回 「ワイヤー 放 電 加 工 機 による 物 作 り 教 育 への 利 用 と 応 用 」 川 村 純 司 2006.3.8~3.1<br />

8 回 今 <strong>「コントロールマイコン</strong><strong>PIC</strong>を 使 ったアクチュエータ 制 御 入 門 」 中 尾 三 徳 2007.11.27~<br />

11.2<br />

--------------------------------------------------------------------<br />

第 6 回 技 術 研 修 で 行 った<strong>PIC</strong>の 制 御 はアセンブラ 言 語 で 行 いました。 今 回 は、FREEWARE の HITEC-C<br />

言 語 を 使 った 実 験 を 行 います。アセンブラ 言 語 からC 言 語 に 替 わったことで、 皆 様 もより<strong>PIC</strong>の 制 御<br />

が 分 かりやすくなったのではないかと 思 います。また、それぞれの 周 辺 電 子 素 子 も 規 格 表 やマニュアル<br />

等 をそのままで 添 付 していますので、この 実 験 が 終 われば、 各 人 で 自 力 で<strong>PIC</strong>を 使 った 電 子 回 路 を 構<br />

築 できると 思 います。 自 由 な 発 想 でブレッドボード 上 に 回 路 を 構 築 していただければ 幸 いです。<br />

細 かい 操 作 については 質 問 していただければとおもいます。<br />

3. ブレッドボード<br />

資 料 は P-06 の「AKI-<strong>PIC</strong> ライタ」を 参 照 ください<br />

少 し 大 きめの4 列 のものを 使 用 します。ブレッドボードの 裏 の 配 線 の 様 子 は<br />

以 下 の 図 のようになっています。 赤 と 青 の 線 の 様 につながっています。<br />

<strong>PIC</strong>のプログラムのコンパイル、 焼 き 付 け 用 に3 台 のPCサーバを 用 意 しておりますのでサーバの<br />

マイクロソフトファイル 共 有 フォルダーにCで 作 ったプログラムをコピーしていただければ、 各 サーバ<br />

で 処 理 が 行 えます。<br />

サーバ 名 は<br />

1HPC09<br />

2HPC15<br />

3HPC21<br />

で、それぞれに 共 有 フォルダをフォルダー 名<br />

「 技 術 研 修 」<br />

という 名 前 で 作 成 しています。<br />

マイネットからコンピュータの 検 索 でサーバー 名 を 指 定 していただけたらフォルダーが 出 てくると<br />

思 います。 読 み 書 自 由 にしていますので、コピーして、コピーしたサーバのところに 出 向 きコンパイル、<br />

<strong>PIC</strong> 書 き 込 みを 行 ってください。<br />

2. <strong>PIC</strong> 書 き 込 みライター<br />

<strong>PIC</strong>の 書 き 込 みライターはAKIの<strong>PIC</strong>ライターを3つのサーバともに 同 じものを 使 用 してい<br />

ます。<br />

ライタボード 秋 月 AKI-<strong>PIC</strong>プログラマ Ver4 キット 秋 月 電 子 通 商 オリジナルのプログラマキット<br />

です。MPLABで 実 際 に<strong>PIC</strong>に 書 き 込 むことができるプログラムデータ(ヘキサファイル)を<br />

HITEC-C で 生 成 します。<br />

線 で 消 された 穴 の 個 所 が 全 部 、 裏 でつながっています。<br />

使 用 するケーブルは、10BASET ケーブルの 芯 線 を 使 用 します。これは 適 当 な 長 さにケーブルを 切 り<br />

ラジオペンチで 芯 線 をケーブルカバーから 引 き 出 して 使 用 します。( 少 し 力 が 必 要 です。)<br />

ブレッドボードの 周 辺 の 電 源 コネクタは 赤 が+、 青 が-となるように 配 線 しています。<br />

AC アダプターから 供 給 される12V、1.0A の 電 力 をそれぞれ、 周 辺 配 線 に 送 っています。<br />

4. 電 子 素 子 の 説 明<br />

今 回 使 用 する 電 子 素 子 は、 抵 抗 、コンデンサ、レギュレータ、<strong>PIC</strong>、スイッチ、 発 振 子 (セラロック)<br />

LED、DC モータドライバーIC、ダーリントントランジスタ、DC モータ、ステッピングモータ、 整 流 ダイ<br />

オードとなっています。<br />

資 料 は P-09 の「 使 用 電 子 部 品 説 明 」を 参 照 ください<br />

5. <strong>PIC</strong>マイコンとHITEC-C<br />

MPLAB Ver7.62では 統 合 環 境 のインストールと 一 緒 に HITEC C の 開 発 環 境 もインストールされ<br />

ます。<br />

以 下 に 参 考 文 書 を 添 付 します。<br />

資 料 は P-12 の「C 言 語 による <strong>PIC</strong> プログラミング」を 参 照 ください<br />

6. 実 習<br />

基 本 的 に1 日 1テーマと 考 えています。ハードの 回 路 は 前 回 作 ったものを 取 り 外 し 違 うところだけ 新<br />

たに 作 成 するという 方 法 で 実 験 を 行 っていきます。<br />

6.1. LEDを 使 ったSWによるエレベータシミュレータ<br />

実 験 概 要 は、LED を1 列 に8 個 配 置 し、 一 番 手 前 が1 階 、1 番 向 うが3 階 、 真 中 が2 階 というように<br />

する。そして、プッシュスイッチを2つ 用 意 し、 通 常 では、LED ランプは1 階 で 点 灯 している。2 階 に<br />

あたる SW を 押 すと、2 階 まで LED が 点 灯 を 順 順 に 行 って 行 き、2 階 に 達 したら、また1 階 に 戻 ってく<br />

る。 同 じように3 階 を 押 すと3 階 まで 順 順 に 点 灯 して 行 き、3 階 に 達 したら、1 階 に 戻 ってきて、1 階<br />

で 待 機 する。<br />

6.1.1. 使 用 素 子<br />

ブレッドボード、LED×9、PSW×3、sw、<strong>PIC</strong>16F84A、R(330Ω)×8、レギュレータ、<br />

コンデンサ、セラロック20M<br />

6.1.2. 考 え 方 と 回 路 図<br />

メインルーチンでは、1 階 にあたる LED のみを 点 灯 させて、while 文 で 繰 り 返 せばよい。この<br />

繰 り 返 しの 中 に SW1、2に 当 たるポートの 変 化 があれば、それに 対 応 したサブプログラム(2 階 もしく<br />

は3 階 に 順 順 に 点 灯 するプログラム)に 動 作 が 渡 されれば 良 い。<br />

6.1.3. C 言 語 プログラム<br />

P-25 の「プログラムリスト01」を 参 照 ください<br />

6.2. DCモータの 回 転 制 御<br />

4つのプッシュ SW を 押 すそれぞれ 押 すたびに SW に 対 応 する DC モータドライバのモードが0から1<br />

から0というように 替 わり、それに 対 応 して DC モータの 回 転 の 様 子 が 変 わるプログラム。SW の 状 態 は<br />

LED で 確 認 できるようにする。<br />

6.2.1. 使 用 素 子<br />

ブレッドボード、DC モータ、DC モータドライバーIC、LED×10、PSW×3、<strong>PIC</strong>16F84A、R330<br />

PSW×2、TSW、R10K×2、R100×2、コンデンサ<br />

6.2.2. DCモータ 原 理<br />

資 料 は P-19 の「DC モータを 廻 す」を 参 照 ください<br />

6.2.3. 考 え 方 フローチャートと 回 路 図<br />

6.2.4. C 言 語 プログラム<br />

P-27 の「プログラムリスト02」を 参 照 ください<br />

6.3. STEPINGモータの 回 転 制 御<br />

ステッピングモータの 回 転 の 励 磁 方 法 を3つ 変 えて、 動 作 させるプログラムを 作 成 する。プッシュ SW<br />

を3つ 使 い、<br />

1で 1 相 励 磁<br />

2で2 相 励 磁<br />

3で1-2 相 励 磁<br />

で 回 転 するようにする。<br />

うまくできれば、 逆 回 転 する SW も 考 えてみる。<br />

6.3.1. 使 用 素 子<br />

ブレッドボード、STEPING MOTOR、LED×10、PSW×3、<strong>PIC</strong>16F84A、R330×8<br />

ダイオード、ダーリントントランジスタ<br />

6.3.2. ステッピングモータ 原 理<br />

資 料 は P-22 の「ステッピングモータの 原 理 」を 参 照 ください<br />

6.3.3. 考 え 方 と 回 路 図<br />

6.3.4. C 言 語 プログラム<br />

P-29 の「プログラムリスト03」を 参 照 ください


7. 応 用 実 習<br />

//<br />

DelayMs(250);<br />

DelayMs(250);<br />

// Delay ObJect Extern Define<br />

DelayMs(250);<br />

今 回 は 素 子 用 意 していませんが、やってみようと 思 われる 方 がおられれば 用 意 します。<br />

// Hitec-C Sample program list01 Version 2007.10.2<br />

// エレベータシーケンスデモ(LIST01)<br />

DelayMs(250);<br />

DelayMs(250);<br />

7.1. 7セグメントLEDのダイレクト 制 御 表 示<br />

数 字 表 示 用 7セグメント LED を 使 って、 専 用 のドライバーIC を 使 い、 高 速 にセグメント 表 示 を 切 り 替<br />

え、 消 費 電 力 を 少 なくする。<br />

//<br />

#include "pic.h"<br />

#include "delay.h"<br />

//<br />

int f2ndfloor(void),f3ndfloor(void);<br />

DelayMs(250);<br />

PORTB=0x40;<br />

DelayMs(250);<br />

DelayMs(250);<br />

PORTB=0x20;<br />

//<br />

DelayMs(250);<br />

int main(void)<br />

DelayMs(250);<br />

7.2. 赤 外 線 LEDとホトダイオードによる 通 信 実 験<br />

赤 外 線 LED から 信 号 を 送 信 し、 赤 外 ホトダイオードでその 信 号 を 受 信 するシステムを 作 成 する。<br />

{<br />

TRISB=0x00;<br />

TRISA=0xff;<br />

PORTB=0x10;<br />

DelayMs(250);<br />

DelayMs(250);<br />

while(1)<br />

PORTB=0x08;<br />

{<br />

DelayMs(250);<br />

PORTB=0x01;<br />

DelayMs(250);<br />

if(PORTA==0x02) f2ndfloor(); // 3 階<br />

PORTB=0x04;<br />

SW<br />

DelayMs(250);<br />

if(PORTA==0x01) f3ndfloor(); // 2 階<br />

DelayMs(250);<br />

SW<br />

PORTB=0x02;<br />

}<br />

DelayMs(250);<br />

}<br />

DelayMs(250);<br />

/////////////////////////////////////////////////////<br />

return(1);<br />

///// subroutine<br />

}<br />

////////////////////////////////////////////////////<br />

int f2ndfloor(void)<br />

{<br />

PORTB=0x02;<br />

DelayMs(250);<br />

DelayMs(250);<br />

PORTB=0x04;<br />

DelayMs(250);<br />

DelayMs(250);<br />

PORTB=0x08;<br />

DelayMs(250);<br />

DelayMs(250);<br />

DelayMs(250);<br />

DelayMs(250);<br />

PORTB=0x04;<br />

DelayMs(250);<br />

DelayMs(250);<br />

PORTB=0x02;<br />

DelayMs(250);<br />

DelayMs(250);<br />

return(1);<br />

}<br />

int f3ndfloor(void)<br />

{<br />

PORTB=0x02;<br />

DelayMs(250);<br />

DelayMs(250);<br />

PORTB=0x04;<br />

DelayMs(250);<br />

DelayMs(250);<br />

PORTB=0x08;<br />

DelayMs(250);<br />

DelayMs(250);<br />

PORTB=0x10;<br />

DelayMs(250);<br />

DelayMs(250);<br />

PORTB=0x20;<br />

DelayMs(250);<br />

DelayMs(250);<br />

PORTB=0x40;<br />

DelayMs(250);<br />

DelayMs(250);<br />

PORTB=0x80;<br />

//<br />

// Delay ObJect Extern Define Verup-version<br />

// Hitec-C Sample program list02 Version 2007.10.2<br />

// DC モータの 回 転 制 御 デモ(LIST02)<br />

//<br />

#include "pic.h"<br />

#include "delay.h"<br />

//<br />

int dcforward(void),dcreverse(void),dcbreake(void);<br />

//<br />

int main(void)<br />

{<br />

//<br />

TRISB=0x00;<br />

TRISA=0xff;<br />

//<br />

while(1)<br />

{<br />

// スイッチ 検 出<br />

DelayMs(10);<br />

if(PORTA==0x01) dcforward();<br />

DelayMs(10);<br />

if(PORTA==0x02) dcreverse();<br />

DelayMs(10);<br />

if(PORTA==0x03) dcbreake();<br />

//<br />

}<br />

}<br />

/////////////////////////////////////////////////////<br />

///// subroutine<br />

////////////////////////////////////////////////////<br />

int dcforward(void)<br />

{<br />

PORTB=0x01;<br />

DelayMs(10);<br />

return(1);<br />

}<br />

int dcreverse(void)<br />

{<br />

PORTB=0x02;<br />

DelayMs(10);<br />

return(1);<br />

}<br />

int dcbreake(void)<br />

{<br />

PORTB=0x03;<br />

DelayMs(10);<br />

return(1);<br />

}<br />

//<br />

// Delay ObJect Extern Define Verup Version<br />

// Hitec-C Sample program list03 Version 2007.11.29<br />

// STEPPING モータの 回 転 制 御 デモ(LIST03)<br />

//<br />

#include "pic.h"<br />

#include "delay.h"<br />

//<br />

int<br />

step1phase(void),step2phase(void),step12phase(void);<br />

//<br />

int main(void)<br />

{<br />

int STEPMODE=0x00;<br />

//<br />

TRISB=0x00;<br />

TRISA=0xff;<br />

//<br />

while(1)<br />

{<br />

// スイッチ 検 出 入 力 ラッチ モータ 制<br />

御<br />

DelayMs(10);<br />

if(PORTA==0x01) step1phase() ; // 1<br />

相 励 磁<br />

DelayMs(10);<br />

if(PORTA==0x02) step2phase() ; // 2<br />

相 励 磁<br />

DelayMs(10);<br />

if(PORTA==0x03) step12phase(); // 3<br />

相 励 磁<br />

}<br />

}<br />

/////////////////////////////////////////////////////<br />

///// subroutine<br />

////////////////////////////////////////////////////<br />

int step1phase(void)<br />

{<br />

PORTB=0b00000001;<br />

DelayMs(250);<br />

PORTB=0b00000010;<br />

DelayMs(250);<br />

PORTB=0b00000100;<br />

DelayMs(250);<br />

PORTB=0b00001000;<br />

DelayMs(250);<br />

return(1);<br />

}<br />

int step2phase(void)<br />

{<br />

PORTB=0b00000011;<br />

DelayMs(250);<br />

PORTB=0b00000110;<br />

DelayMs(250);<br />

PORTB=0b00001100;<br />

DelayMs(250);<br />

PORTB=0b00001001;<br />

DelayMs(250);<br />

return(1);<br />

}<br />

int step12phase(void)<br />

{<br />

PORTB=0b00000001;<br />

DelayMs(250);<br />

PORTB=0b00000011;<br />

DelayMs(250);<br />

PORTB=0b00000010;<br />

DelayMs(250);<br />

PORTB=0b00000110;<br />

DelayMs(250);<br />

}<br />

PORTB=0b00000100;<br />

DelayMs(250);<br />

PORTB=0b00001100;<br />

DelayMs(250);<br />

PORTB=0b00001000;<br />

DelayMs(250);<br />

PORTB=0b00001001;<br />

DelayMs(250);<br />

return(1);<br />

このとき、 通 信 プロトコルは232C 用 のものを<br />

使 う。

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!