PIC とモーターの駆動制御

 と モーターの駆動制御
<ディジタル制御と1チップマイコン>
現在,私たちが使用している多くの電化製品や機械・器具などに,電子制御用の1チップマイコン ワンチップマイ
クロコンピュータ と呼ばれる集積回路が使われている.これはパーソナルコンピュータの全ての機能を1から3 ほどの大きさの集積回路で実現したものである.形状は正方形あるいは長方形の板状でその下面から多数の足が出て
いる 図 .1チップマイコンは,プログラム 命令 に従って,計算や環境に応じた条件判断を行い,スイッチを入
れたり,切ったりして機器を制御している.例えば,エアコン 暖房 では,
部屋の温度を調べる 入力
部屋の温度と設定温度を比較する 判断
設定温度以上であれば暖房を止めて,設定温度以下であれば再開する 出力
基本的には ∼ を繰り返して部屋の温度を一定に保とうとしている.これ以外でも,1チップマイコンは炊飯器
や冷蔵庫など電化製品だけでなく,工作機械や工業製品の中にも内蔵されている.
図 チップマイコン
機械を1チップマイコンで制御を行うためには,機械の運転状況を知るための入力装置やセンサーが必要であり,そ
れらには
スイッチ
温度センサー 熱電対・赤外線センサー・超音波センサー・電磁波センサー 光センサー
圧力センサー マイクロフォン・ひずみゲージ
イオン濃度計・ガス濃度計
リニアエンコーダ・ポテンショメータ
加速度センサー
など列挙しきれないほどの種類のセンサー類がある.1チップマイコンはほとんどの処理をデジタルで行うので,入
力装置からのアナログ信号を 変換によりデジタル信号に変換することが多い.
また,入力情報を処理して,制御を実現するための出力装置にも数多くの装置があり,それらは
スイッチの接続と切断 リレー回路
サーボモーター・ モーター・その他のモーター
光源・電磁波発生装置
音源
などがある.多くの場合,1チップマイコンは の電圧 と の電圧 の2種類の電圧を出力することによ
り,機器を制御する.このような信号は レベルあるいは 信号などと呼ばれる.このようなデジタル信号
をアナログ信号に変換するときは, 変換を行う.
<1チップマイコン>
いわゆるマイコンは チップ シングルチップ とマルチチップに分類される. チップ シングルチップ マイコン
は などの周辺回路チップが内蔵されて つのデバイスとして完成されているものである.それに対しマルチチッ
プマイコンは チップとして独立したものに必要な デバイスやカウンターデバイスなどの
周辺デバイスを追加してシステムを構築するものである.
チップマイコンは多くの会社からそれぞれ発売されており,代表的なものに ビット,マイクロチップ・テ
クノロジー社, ! "! # $% &,' ビット,ルネサス テクノロジ (日立),
ビット,*+,
, ビット,アトメル,"#
などがある.マルチチップの代表には - ビット,ザイログ社,-# $ がある.
1チップは 個のデバイスでシステムが完成するのでコンパクトになる.ただし,使用できるメモリーが少ないので
大掛かりなものは不向きである.それに対し,マルチチップは周辺デバイスを自由に設計できるので拡張性は高くな
る.また,∼ 年前のパーソナルコンピュータの多くには - が使われていた.
< 言語と整数のビット表現>
英数文字・整数のビット表現
コンピュータの内部 ,./ など で英数文字や整数・実数などのデータを記憶したり,記録したりす
るためには,電気素子の電圧や磁気の状態の違いを利用している.ほとんどのコンピュータでは, つの異なる状態
を使ってデータを表しており,それらを模式的に 電圧が低い, 0 など と 電圧が高い, など で表現する.
このように,使用できる数字が つのときは,データを 進数で考えると便利である.
進数では,
と表すと,
1 2 2 &
を意味する.一方, 進数で と表せば,
1 2
2
2
&
となって, 進数の を表している.すなわち, 進数の 番下の桁が のときは を表し, 番目の桁の は を
表しており,右から 番目の桁の は を表している.また,それぞれの桁をビット 3 と呼ぶ.
コンピュータでは,しばしば 進数の桁を 個づつひとまとめに数えることが多く, 個の ビット 34 を バ
イト 3%" という.たとえば, は 進数で 5 となるが, 進数で バイトの数を表すと大きな数に
なるので, ビットずつ区切って, として, ビットずつ つに分けて表す.このとき,
1 2 6
&
となって, 進表現を使うことになる.これを 1 6 1 5 のように,英文字 から 7 までを から
までの数字の代わりに使用する.すなわち, 1 , 1 8 , 1 , 1 , 1 + ,
1 7 と
する.また, 進数 86 を 986 のように, 進数字の前に 9 をつけて 進数であることを表現することもある.
英数字の内部表現
では英数字を バイトで表現する.それぞれの英数字は第 章の表 & のアスキーコード表で 進数と英数字の
対応が表されている.たとえば,英字 :: はこの表の第 列第1行にあるので,9 となる.すなわち,列は 進
数の第 桁目を表し,行数は第 桁目を表す.同様に,:;: は 9 であり,小文字はそれに対応する大文字よりも 進数で だけ大きな数に対応している.第 列目と第 列目は英数字では表すことのできない特殊文字であり,周辺
機器の制御やデータの特殊な意味に使用する.たとえば,977 + はコンピュータができた初期の頃には, 文
字消すことを意味するために用いられた. は改行の意味で使用してきたが,アスキーコードでは 9< である.ま
た, はヌル ## と呼ばれて,文字列の終わりを表すのに用いる.
整数の内部表現
ここでは, バイト ビット の整数 4! 型 の内部表現について見てみよう.4! 型整数を表す ビットの
内の最上位ビット 左端,右から数えて 桁目 は正負の符号を表すのに用いられており,このビットが のときは
正の整数を示し, のときは負を表す.
正の整数を考えると,最上位ビットは であり,残りの ビットがその絶対値を表す.絶対値は通常の 進数表現
と同じで,例えば,正の数 は
1 9
&
と表される.したがって,4! 型の整数の最大値は
1 95777 1 55
&
である.
負の整数は最上位ビットが である.残り ビットについて, をすべて に, をすべて に変更 ビット反転,
の補数表現という
したのち, を加えたものが負の整数の絶対値を表す.たとえば,
1 977
&
1 96 1 &5
はビット反転すると,
となるので,これに を加え,負号
を付けて,5 である.したがって,4!
型整数の最小値は
1 9
&
であり,ビット反転したのちに を加えて,負号を付けると, 5 であることがわかる.
ビット表現のまとめ
コンピュータの内部では情報を と で表しており,この情報を1ビットという.この と の情報によって +
に流れる電流の または 0 を制御する.
図 2進数,10進数,16進数対応表
図 =
図 = 配線図
< >
とは,アメリカのマイクロチップ社が開発したワンチップマイコンである.この中には演算機能のほかにプログ
ラム格納用のメモリ,タイマ,アナログ入力やシリアル通信などの周辺モジュールもすべて内蔵されている.=
.;" /
は にいくつかの基本的な周辺部品を取り付けたキットであり, の動作を確認するための学習
教材であるが,実用的に使用することもできる 図 .このキットはコンピュータの .8 端子で接続することによ
り, へプログラムを転送することができ,,,,,<4 など大部分の マイコ
ンファミリに対応している.
この = .;" / には 76 が組み込まれたデモボードが付属しており,回路図は図4のようになっ
ている.端子 ,> ,> ,> , にはそれぞれ赤色 + .> .> .> . が接続されており,各ポートか
ら出力を行えば対応した + が点灯する.次のプログラム例1は,,
, に対応した + を点灯させるもの
である.
プログラム例1
行目
行目
クロック数を指定
行目 !"#$"!" % &''"( % )&'"( % *'"( % +!) % , '"( % "( '"( % *'"(-.
行目
/ 行目0 123
$0 04
-. プロトタイプ宣言
5 行目
6 行目 メインプログラム
7 行目0 41$-8
9 行目
0 04
:.
43
;04
:待機時間
行目 ) : <. ) を初期化
行目 "( : <. ) を全て出力に設定
行目 =
$ -8 ずっと繰り返す
行目 ) :< .
' '( 点灯
行目 123
$04
-.
04
43
の間状態を維持
/ 行目 ) :<.
' '( > '( 点灯
5 行目 123
$04
-.
04
43
の間状態を維持
6 行目 ) :<6.
' '( > '(> '( 点灯
7 行目 123
$04
-.
04
43
の間状態を維持
9 行目 ) :<1.
' '( > '(> '(> '( 点灯
行目
123
$04
-.
04
43
の間状態を維持
行目 ?
行目
@
0@ .
行目 ?
行目 04
43
待機サブルーチン
/ 行目0 123
$0 04
-8
5 行目 0 .
6 行目 A@$:.:04
.BB-8
7 行目 123
$04
-.
04
43
の間状態を維持
9 行目 1243$ -.
行目 ?
行目
@
0@ .
行目 ?
の内部にはレジスタと呼ばれるメモリ領域が存在し, はここに記録されている値をもとにして動作を行う.
数あるレジスタにはそれぞれに役割が定められており,これらはデータシートにすべて記載されている.たとえば,
76 の ,
というレジスタはデータシートに次のように記載されている.
,+?.+, @6 , & , ,+?.+, ,+.. 5! , 5!
,5
,
,
,
,
,
,
,
C0 6 C0 C0 6D 6 ) #
@1 )@A3
" ) C03
: )A@0 3 E"F
: )A@0 3 E"
これは , という 3 のレジスタの 3 ごとの役割を示したものであり,, の 3 が ,3 が を
表していることがわかる.また,,. は , の出力入力を指定するレジスタである.
上のプログラム例1ではまず第 行目で ,19 により 1 1 を代入し,1つ目のビット,つまり
, を * にしている.これにより , に対応する +(.>
最も左)が点灯する.次に第 行目で ,19
により 1 1 を代入し,同様に , と , が *,対応する左から1番目と2番目の + .> . が
点灯する.その後 5 行目で 1 5 1 5 を代入し,,> ,> , が *,対応する左から1番目,2番目,3
番目の + .> .> . が点灯する.6 行目では 1 1 を代入しているので,左から2番目と4番
目の + .> . が点灯する.その後,最初に戻り,再び左から1番目の + が点灯する.これをいつまでも
繰り返す.
なお 123
$0- は,(4")のディレイ(処理の停止)を & 秒単位で行うことができる関数である.
123
とした場合,プログラムはここで & 秒間停止する.
課題1 それぞれの学籍番号の下 桁を桁ごとに二進数表現し,∼ に対応する + の点灯で順に表示し繰り返
すプログラムを作成せよ.
例:学籍番号下 桁が の場合,
1 なので初めに と を点灯,次に と を点灯,全て消灯, を点灯とすること.
< モータの制御 >
図 に示す集積回路 56 は, 株 東芝製の モータ用フルブリッジドライバである.フルブリッジドライ
バとは,正・逆切り替えドライバのことをいう.56 には 本の端子があり,それぞれの役割は次に示す通り
である.
図 56 の外観
端子 !A 端子記号
/
#!'
+
!
E@
"!
説明
#!'
出力端子
!
制御電源端子
入力端子
5
6
7
9
"!
E
E3
!
+
入力端子 ロジック側電源端子
出力側電源端子
!
出力端子 56 を使用した 入力
出力
"!
"! +
∞
F
モータの正転・逆転切り替えは端子 * &
, への入力を次のように操作することで行う.
モード
+
∞
ストップ
F
&&
&&
ブレーキ
すなわち,入力端子への入力を片方ずつとすることで モータの正転・逆転切り替えが可能となる.56 は
制御電源端子を使用してモータへの印加電圧を調整することも可能である.ただし,制御側電圧および出力側電圧は
の範囲にあり,出力側電圧≧制御側電圧である必要がある.また,ロジック側電圧は &
の範囲でなけ
ればならない.
<フォトインタラプタ >
図 ; に示す部品は,.', 製のフォトインタラプタ 型番?. である.フォトインタラプタとは発光部か
らの光が対向する受光部で検出されるか否かによって,障害物の有無や位置を判定する光学センサの一種である.通
常,発光部には赤外線発光ダイオード,受光部にはフォトトランジスタが用いられる. ?. には 本の端子があ
り,図 3 に示すようにそれぞれ発光ダイオードのアノード とカソード /,フォトトランジスタのエミッタ +
とコレクタ の役割をもつ.
フォトインタラプタの使用方法の一例を図 に示す.図中の は正の電源電圧,, , は電流調整用の抵抗,
はセンサの出力を表す.図 の場合,隙間 . に障害物があるとき発光ダイオードの光が障害物によって遮
られるのでフォトトランジスタに電流が流れない.このとき での出力電圧が に近くなる.隙間 . に障害
物がないとき電流はフォトトランジスタに流れるので, での電圧が に近くなる.発光部からの光がどれだけ
遮られるかによって での電圧は連続的に変化する.
Vcc
Vcc
RD
A
E
K
C
RL
Output
S
図 フォトインタラプタ ?.. ; 写真, 3 フォトインタラプタの構造の概略図, 使用例&
5
<入力信号処理とモータ制御プログラム>
モータの正転・逆転を制御するプログラムを以下に示す.= .;" = 付属のデモボードに組み込まれ
た 76 に本プログラムを入力し,56 を介して モータへ接続することで制御する.ただし,関数
<"#;% 4 の に一定以上の時間を指定するとエラーが生じるためコンパイルできない.そこで,<"#;% 4 を "
繰り返すサブルーチンを用いることで任意の時間だけ次の動作まで待つことを可能にしている.
入力信号処理とモータ制御プログラム
行目
行目
*FG
行目 !"#$"!" % &''"(% )&'"( % *'"( % +!) % , '"( % "( '"( % *'"(-.
行目0 123
$0 04
-.
/ 行目HA 41$HA-8
5 行目
3I
1@ 1I : .
6 行目
"( : C . / を出力ポートに設定
7 行目
"( : C . を出力ポートに設定
9 行目
) : C. ポート を初期化
行目
) : C . 正転
行目
=
$ -8
行目
$ :: %% 1I :: -8
行目
) : C.
行目
123
$ -.
/ 行目
) : C .逆転
5 行目
1I : .
6 行目
?
3
$/ :: %% 1I :: -8
7 行目
) : C.
9 行目
123
$ -.
行目
) : C .正転
行目
1I : .
行目
?
3
$ :: %% / :: -8
行目
1I : .
?
行目
/ 行目
?
5 行目?
6 行目0 123
$0 04
-8
7 行目
0 .
A@$:.:04
.BB-8
9 行目
行目
1243$ -.
行目
?
行目
@
0@ .
行目?
<センサからの信号処理とモータ制御を行う回路>
56 を用いたモータ制御基盤の回路図を図 5 ;
に示す.回路図 5 ; 中の三角形の記号は反転シュミットトリ
ガ回路と呼ばれ,ここでは図 5 3 右側のようにオペアンプ * を用いて実現した.入力電圧 が基準
電圧 "A と比較して大きければB CB,小さければB'$!Bを出力する.つまりセンサからのアナログ信号を が
扱うことのできるデジタル信号に変換する回路である.制御基板 ##" と = デモボード =
<"
3 ;< を図 に示すように接続する.図 中のデモボード上の白い数字は制御基板からの端子を挿す汎用 のコネクタ番号を示す.コネクタ番号は図 にもとづく.制御基板上のスイッチにより動作開始および停止を制御す
る.センサ部の回路は図 と同じである.
M1
M2
2
10
TA7291P
1
3 4 5 6 7 8 9
IN1
Vcc
IN2
R1
Switch
+V
Vcc
E
GND
OUT1
S1
OUT2
S2
Vin
Vout
R2
Vref
Vin
Vout
R3
図 5 モータ制御回路. ; モータドライバ 56 を含む回路, 3 反転シュミットトリガ回路&
図 制御基板接続例
6
参考文献
()
水島二郎,横山直人,手続き型プログラミング言語 ()
後閑哲也, 言語による プログラミング入門
6,学術図書出版.
,技術論評社.