-----「コントロールマイコン PIC を使ったアクチュエータ制御入門」
-----「コントロールマイコン PIC を使ったアクチュエータ制御入門」
-----「コントロールマイコン PIC を使ったアクチュエータ制御入門」
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 />
使 う。