目次>5章 第2ステップ(色々な実験) (19)ステッピングモータを回す(ユニポーラ型)
ステッピングモータを回す
(ユニポーラ型)
更新日2008.5.17
ロボット(ヒューマン型に限らず産業用も含め)などで使われるステッピングモータを回して見ます。
ステッピングモータは回転制御にも使いますが、正確に位置決めができることから、一定の角度を回す用途(関節を曲げ伸ばしする等)に向いています。
今回は基本的な使い方としてスピードを変えたり逆転させたりの実験を行います。
使用したステッピングモータは、扱いやすいユニポーラ型です。
ステッピングモータとは
|
・ |
ステッピングモータは、パルスを与える毎にそのステッピングモータ固有の角度だけ回転します。
ステッピングモータの仕様の1つに、ステップ数があります。
ステップ数は、1回転(360度)をいくつに分割して制御できるかを表し、例えば200ステップのステッピングモータであれば、360度を200分割して制御でき1ステップは1.8度になります。(360度÷200)
そして、1回のパルスで正確に1ステップ回転します。
このステッピングモータにパルスを50回与えると、丁度90度回転します。(1.8度×50)
与えるパルスにはパターンがあり、正転・逆転が可能です。
また、パルスの幅で回転スピードを制御できます。
これについては、後で実際に動かしながら説明します。
DCモータやACモータと異なり、パルスを与えればそのパターンに従って一定角回転し、パルスを与えなければ停止します。
パルスで制御することから、パルスモータとも言われます。
|
今回使用したステッピングモータ
|
|
ステッピングモータは、コイルの構造(結線方法の違い)からユニポーラ型とバイポーラ型の2種類に分類されます。
今回は、ユニポーラ型を対象にしました。
制御方法が若干異なるバイポーラ型についても、いずれアップしようと思います。
- 今回使用したステッピングモータ
-
|
| 2相ユニポーラ駆動 BH200575048 秋月電子 \700
ステップ数 | 200(1.8度)
| 駆動電圧 | 5V(5〜9V)
| コイル抵抗 | 39Ω
| コイル電流 | 120mA(5V時)
| 軸径 | 6.37mm
|
|
コイルの結線
|
使用するパーツ
|
|
- ステッピングモータ以外の主なパーツです。
-
| 左から FET(2SK2231)2つ(表,裏) PIC16F84A つまようじ(パーツではありませんが)
|
FETは、ステッピングモータを制御するために使います。
ステッピングモータの1つのコイルには120mAの電流が流れますので、PICの入出力ポートに直接接続はできません。
2SK2231の他に、2SK2961,2SK1094,2SK940などでも使えます。
トランジスタでは2SC3420などですが、この場合はベースに1KΩ程度の抵抗を接続する必要があります。
|
スイッチ操作で回して見る
|
|
まずは、スイッチだけで動作を確認して見ましょう。
回路図とブレッドボードに組み込んだ状態です。
簡単に組めて、ステッピングモータの動作が確認できますので、是非実践して下さい。
スイッチは左から
X・Y・X・Y
です。
8ピンコネクタの左の3本は使わないので外してあります。
- では、スイッチを左から順に1つずつ押して見て下さい。
- X→Y→X→Y
- これを繰り返すとどうなるでしょう。
- X→Y→X→Y
→X→Y→X→Y
・・・
少しずつ回転すると思います。
回転しない場合は回路を見直して下さい。
スイッチを押すと、それに接続されたステッピングモータのコイルに電流が流れ磁界が発生します。
この事を励磁と呼びます。
今回は、スイッチを1つずつ順に押しましたので、コイルも1つずつ順に励磁されます。
このように、1つずつ励磁する方法を1相励磁と呼びます。
- 4つのスイッチの状態とその順番を表にすると以下のようになります。
-
順番 | X | Y | X | Y
| 1 | 1 | 0 | 0 | 0
| 2 | 0 | 1 | 0 | 0
| 3 | 0 | 0 | 1 | 0
| 4 | 0 | 0 | 0 | 1
|
以降、順番1から繰り返す。
|
| 1はスイッチを押した状態 0はスイッチを押していない状態
|
- ではスイッチを右から順に1つずつ押して見ましょう。
-
順番 | X | Y | X | Y
| 1 | 0 | 0 | 0 | 1
| 2 | 0 | 0 | 1 | 0
| 3 | 0 | 1 | 0 | 0
| 4 | 1 | 0 | 0 | 0
|
以降、順番1から繰り返す。
|
| 1はスイッチを押した状態 0はスイッチを押していない状態
|
逆回転しましたか?
励磁する順番で回転の方向を変える事ができます。
次に、スイッチを2つずつ押して見ましょう。
- 先ほどの表にすると以下の順番です。
-
順番 | X | Y | X | Y
| 1 | 1 | 1 | 0 | 0
| 2 | 0 | 1 | 1 | 0
| 3 | 0 | 0 | 1 | 1
| 4 | 1 | 0 | 0 | 1
|
以降、順番1から繰り返す。
|
| 1はスイッチを押した状態 0はスイッチを押していない状態
|
- 逆も試して見ましょう。
-
順番 | X | Y | X | Y
| 1 | 0 | 0 | 1 | 1
| 2 | 0 | 1 | 1 | 0
| 3 | 1 | 1 | 0 | 0
| 4 | 1 | 0 | 0 | 1
|
以降、順番1から繰り返す。
|
| 1はスイッチを押した状態 0はスイッチを押していない状態
|
どうなりましたか?
このように、2つのコイルを順に励磁する方法を2相励磁と呼びます。
1相励磁と2相励磁を組み合わせた1−2相励磁がありますが、今回は省略します。
|
FETを追加
|
|
上ではスイッチで直接ステッピングモータを制御しましたが、次はFETに変更します。
回路図は以下の通りです。 右は、2SK2231のデータシートからの抜粋です。
|
|
|
ブレッドボードに仮組みした状態です。
スイッチは先ほどと同じで、左から
X・Y・X・Y
です。
|
|
|
スイッチのみの場合と同様に、1相励磁,2相励磁,正転,逆転を試して下さい。
全く同じ動きをすればOKです。
|
PICで制御
|
|
いよいよPICでステッピングモータを制御します。
回路図は以下の通りです。
FETのゲートを、スイッチの代わりにPICのRB4〜7に接続します。
PICのRB4〜7が今までのスイッチ代わりになると言うことです。
逆に、スイッチは今までとは役割が異なり、PICに指示を与えるために使います。
-
- 51KΩの抵抗4本は、1KΩ〜1MΩ程度の範囲であれば何でも良い。
ブレッドボードに仮組みした状態
回路図とは異なり、5V電源は共有させました。
ちゃんと組む場合は分離した方が安心です。
更に、パスコンや平滑コンデンサも乗せるべきです。
|
|
まずは、一定方向に同じ速度で回し続けるという単純なプログラムを作りましょう。
スイッチ4個の代わりに、PICのRB4〜7に替わっただけですので、RB4〜7を順にON/OFFすれば良いと分かります。
- スイッチの時と同じ表にすると、このようになります。
-
順番 | RB4 (X) | RB5 (Y) | RB6 (X) | RB7 (Y)
| 1 | 1 | 0 | 0 | 0
| 2 | 0 | 1 | 0 | 0
| 3 | 0 | 0 | 1 | 0
| 4 | 0 | 0 | 0 | 1
|
以降、順番1から繰り返す。
|
| 0,1はRB4〜7の状態
|
一定時間待ちながら、RB4〜7の設定値を変えていけばステッピングモータを回す事ができます。
一定時間はTMR0割り込みを使い、約25ミリ秒としました。
プログラムはこちらです。
上の表から分かるように、これは1相励磁方式です。
- 続けて2相励磁方式も試して見ます。
-
順番 | RB4 (X) | RB5 (Y) | RB6 (X) | RB7 (Y)
| 1 | 1 | 1 | 0 | 0
| 2 | 0 | 1 | 1 | 0
| 3 | 0 | 0 | 1 | 1
| 4 | 1 | 0 | 0 | 1
|
以降、順番1から繰り返す。
|
| 0,1はRB4〜7の状態
|
プログラムはこちらです。
ステッピングモータ制御はRB4−7で行いますが、順次変化させる方法が分かりづらいかも知れませんので簡単に説明します。
1相励磁の正転の場合、下の図のように、最初にRB4だけ1をセットします。
後は、インターバル毎に1ビット左にシフト(RLF命令)させます。
この時、STATUSレジスタのCビットが1なら4回分の処理完了ですので、RB4に1をセットします。
実際のプログラムは、PORTBを直接変更せず、motor_dataと名付けたファイルレジスタを使っています。
-
-
- 1相励磁と2相励磁の違いは、初期処理でmotor_dataにセットする値を変えるだけです。
-
motor_data への設定値 | 励磁方式
| 010h | 1相励磁
| 030h | 2相励磁
|
RRF命令で右にシフトさせれば逆転できる事が分かると思います。(後のプログラム参照)
これ以外は単純なプログラムですので詳細説明は省きます。
せっかくスイッチを付けましたので、回転方向とスピードをスイッチで変更できるようにしましょう。
- スイッチを押した時の動作は次の通りです。
-
スイッチ | 押下時の動作
| sw1(RB0) | 回転数を上げる
| sw2(RB1) | 回転数を下げる
| sw3(RB2) | 正転開始・停止 | sw3とsw4を同時に押すと 1相励磁/2相励磁を切り替える
| sw4(RB3) | 逆転開始・停止
|
概略処理フローを載せておきます。
個々の処理は小さく作ってありますので、詳細はソースを参照して下さい。
プログラムはこちらです。
-
-
では、実際に動かして見ましょう。
特に、1相励磁と2相励磁のトルクの違いや、スピードによるトルクの違いを実感してみて下さい。
今回は表示系のパーツは付けませんでしたので、正転・逆転・停止以外のPICの状態を見る事はできませんが、
PORTAは使っていませんので、必要でしたらLEDなどを付けるのも良いと思います。
|
感想など
|
|
- 1.回転速度とトルク
-
回転速度,1相励磁と2相励磁の違いをいくつか試して見ました。
回転速度が速くなるとトルクは低くなり、ある程度になると動作不可になります。
励磁方式の違いは、2相励磁の方が圧倒的にトルクが強くなります。
TMR0割込み回数 | 1ステップの時間(mS) | 1回転の時間(秒) | 回転数(rpm) | 動作状況
| 1相励磁 | 2相励磁
| 20 | 16.38 | 3.28 | 18.3 | × 脱調しながら辛うじて回る | ○ 軸を非常に強くつまむと止まる
| 30 | 24.58 | 4.92 | 12.2 | ○ 軸をやや強くつまむと止まる | ○ 軸を強くつまんでも止められない
| 40 | 32.77 | 6.55 | 9.2 | ○ 軸を強くつまんでも止められない | ○ 軸を強くつまんでも止められない
|
- この表だけ見ると、1相励磁を使う必要が無いと思われますが、1相励磁のメリットもあります。
- ・消費電流が少ない
- ・振動が少ない
用途によって、どちらにするか、あるいは組み合わせるかを選択する事になります。
- 2.ステッピングモータの制御
-
今回は、ステッピングモータを「回す」事を主眼にしました。
興味があれば、一定の角度を回したり、加速・減速なども試すとおもしろいと思います。
90度回して0度に戻すような事は難しく無いでしょう。
ですが、ロボットの関節として使うなら、電源ON時のステッピングモータの位置を知る必要があります。
その簡単な方法が思いつきませんでしたのでこれ以上は試しませんでした。
(光系であればフォトインタラプタであったり、メカ系であればマイクロスイッチなどが思い浮かびますが)
|