Arduino プログラム モータ制御 回路 電子工作 高専3年生

【モータ制御⑦】ステッピングモータの制御~ULN2003APG~【Arduino】

前回は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パルスで5.625/64=0.087890625°回転します。

つまり4096ステップで1回転することになり、

上記のプログラムは1ループで4ステップの出力が行われる為、1024ループで1回転します。

送るパルスは早すぎるとモーター側の回転が追い付かなくなり、1周回りきらなくなる場合があるので注意が必要です。

モータ制御 実験

ステッピングモータとドライバ回路を使用し、Arduinoのシリアルモニタより,Aを送ると右に1回転、Bを送ると左に1回転するプログラムを作成せよ。

Follow me!

-Arduino, プログラム, モータ制御, 回路, 電子工作, 高専3年生
-, , , ,

PAGE TOP