前回はHブリッジについて学びました。
今回はステッピングモータの概要と制御方法について学んでゆきます。
ステッピングモータ
ステッピングモータは、パルスモータ、ステップモータ、ステッパーモータとも呼ばれ、プリンタのヘッド移動やスロットマシンのリール制御、3Dプリンタのヘッド移動などに使用されています。
本実験では、ROHS社の「28BYJ-48」を使用します。
https://akizukidenshi.com/catalog/g/g113256/
基本原理
ステッピングモータは、4本または6本の配線が接続されており、入力されたパルス電力によって回転します。
DCモータとは異なり、ステッピングモータは単純に電圧をかけるだけでは回転しません。
そのため、ステッピングモータの駆動・制御には、必ずドライバ回路が必要です。
ステッピングモータは、入力されたパルス数に比例した角度だけ回転するため、細かな回転角の制御が可能です。
特徴
- ステップ角:モータの構造によって、1パルスで回転する角度が決まっています。例えば、40度回転させたい場合は、40度をステップ角で割った数だけパルスを送ります。
- 保持トルク:停止時にも一定のトルクがあり、小さな力では軸が回転しません。
- 位置制御:入力されたパルス数に比例して回転するため、位置決めの誤差が累積しません。
- 角速度制御:入力されたパルスの周波数に比例して回転速度が変化します。
- オープンループ制御:センサーを使わずに制御が可能です。
配線と駆動回路
ステッピングモータにはバイポーラ結線とユニポーラ結線があり、制御方法が異なります。
バイポーラ結線
- 特徴:電流の流れる方向を変更する必要があるため、Hブリッジが2セット使用されます。
- 駆動回路:複雑ですが、高いトルクと効率が得られます。
ユニポーラ結線
- 特徴:駆動回路が単純で、バイポーラよりも簡単に制御できます。
- 駆動回路:トランジスタやMOSFETを用いた簡単な回路で駆動できます。
- 本実習:ユニポーラ式のステッピングモータの駆動回路を実装します。
ステッピングモータの制御例
- 40度回転:ステップ角が5度の場合、40度÷5度=8パルスを送信します。
- 角速度制御:パルスの周波数を変えることで、回転速度を制御します。
ユニポーラ結線ステッピングモータの駆動回路
ステッピングモータの駆動方法には、オンにする電磁石の組み合わせによって以下の3種類の制御方法があります:
1相励磁(1相駆動)
- 特徴:1つの電磁石のみを駆動させる制御方法。
- メリット:消費電力が小さい。
- デメリット:トルクも小さい。
2相励磁(2相駆動)
- 特徴:2つの電磁石を同時に駆動させる制御方法。
- メリット:トルクが大きい(1相励磁と比較して√2倍のトルク)。
- デメリット:消費電力が大きく、発熱も大きくなる。
1-2相励磁
- 特徴:1相励磁と2相励磁を交互に行う制御方法。
- メリット:分解能が倍になる。
- デメリット:トルクが脈動してしまう。
マイクロステップ
- 特徴:モータの励磁電流を0と1ではなく、無段階のサイン波で駆動する手法。
- メリット:高分解能、静寂性、高回転が可能。
駆動回路の動作
駆動回路が1秒間に発するパルスの回数を「パルスレート」または「パルス周波数」といいます。パルスレートが高すぎたり、負荷トルクが大きすぎたりするとモータを始動させることができません。このときの始動できるトルクの大きさを「引込トルク」といい、パルスレートに依存します。
- 最大自起動周波数:始動できるパルスレートの上限。
- 最大連続応答周波数:運転できるパルスレートの上限。
駆動回路の作成
市販のステッピングモータドライバを使用すると手軽に駆動できます。
ステッピングモータへのスイッチングは電流が多く流れる為、直接行うことが出来ません。
今回はArduinoキットに含まれている、ULN2003APGという回路を使用します。
ULN2003APGのデータシート
https://www.tyro-teq.com/show_datasheet?path=/ds/pdf/u/0094/ULN2003APGSCHZ.pdf
この回路はIN1~IN4のデジタル入力の状況によって、モータの出力をそれぞれON,OFFを切り替えてくれます。
この回路の電源はArduinoからではなく、別途電池や安定化電源で供給しましょう。
配線は以下の通り行います。
制御プログラム
無限に正転を行うプログラムを下記に示します。
#define v の値を小さくすると回転が速くなり、大きくすると遅くなります。
#define v 100
void setup() {
pinMode(11,OUTPUT);
pinMode(10,OUTPUT);
pinMode(9,OUTPUT);
pinMode(8,OUTPUT);
}
void loop() {
digitalWrite(11,HIGH);
delay(v);
digitalWrite(11,LOW);
digitalWrite(10,HIGH);
delay(v);
digitalWrite(10,LOW);
digitalWrite(9,HIGH);
delay(v);
digitalWrite(9,LOW);
digitalWrite(8,HIGH);
delay(v);
digitalWrite(8,LOW);
}
仕様書によると今回使用したモータは減速機も内蔵されており、1-2相励磁で制御した場合は1パルスで5.625/64=0.087890625°回転します。
つまり4096ステップで1回転することになり、
上記のプログラムは1相励磁で1ループで4ステップの出力が行われる為、512ループで1回転します。
送るパルスは早すぎるとモーター側の回転が追い付かなくなり、1周回りきらなくなる場合があるので注意が必要です。
モータ制御 実験⑧
ステッピングモータとドライバ回路を使用し、Arduinoのシリアルモニタより,Aを送ると右に1回転、Bを送ると左に1回転するプログラムを作成せよ。