PR

Arduino学習⑳ Lesson23 ステッピングモーター
Arduinoのお勉強。ステッピングモーターを動かしてみた。

Arduino学習

ついにチュートリアルの最後のレッスンになります。
ここでは、付属のモータードライバを利用して、ステッピングモーターを動かしてみたいと思います。

ステッピングモーター

ステッピングモータは、一定の角度で回転する特性を持つ電動モータの一種です。電流がモータのコイルに流れることで、内部の磁場が変化し、その変化によってローター(回転部分)が決まった角度で動きます。このように、ステッピングモータは回転を「ステップ」ごとに分けて制御するため、位置決め精度が非常に高いという特徴があります。
一般的に連続回転を行う制御は、パルス信号を入力することにより行います。このパルスが磁場の順番に変化させて回転運動に変換します。パルス信号のシーケンスによりモータの回転方向を制御し、パルス信号の周波数により回転速度を制御します。

ステッピングモータ 28BYJ-48

  • モデル: 28BYJ-48
  • 定格電圧: 5VDC
  • 位相数: 4
  • 速度変化比: 1/64
  • ストライド角: 5.625°/64
  • 周波数: 100Hz
  • DC抵抗: 50Ω±7%(25℃)
  • アイドルイントラクション周波数: > 600Hz
  • アイドルアウトトラクション周波数: > 1000Hz
  • イントラクショントルク >34.3mN.m(120Hz)
  • セルフポジショニングトルク >34.3mN.m
  • 摩擦トルク: 600-1200 gf.cm
  • 引き込みトルク: 300 gf.cm
  • 絶縁抵抗 >10MΩ(500V)
  • 絶縁電力: 600VAC/1mA/1s
  • 絶縁グレード:A
  • 温度上昇 <40K(120Hz)
  • 騒音 <35dB(120Hz、無負荷、10cm)

ULN2003 ドライバーボード

  • サイズ:42mm×30mm
  • ICチップ:ULN2003 ドライバーチップ、500mA
  • LED:A、B, C, D LEDは、4相ステッピングモーターの動作状態表示
  • ジャック:4相ステッピングモーターの標準ジャック
  • 電源ピン:5-12V

ユニポーラステッピングモーターをArduinoに接続する最も簡単な方法は、ULN2003A 7 チャネル ダーリントン トランジスタ アレイのドライバーボードを使用することです。ULN2003Aは、1チャネルあたり最大500mAを通過させることができ、オン時に内部電圧降下が約1Vになります。 また、誘導負荷を駆動する際に電圧スパイクを散逸させるための内部クランプ・ダイオードも内蔵しています。ステッピングモーターを制御するには、特定の順序で各コイルに電圧を印加します。

使用部品

必要な部品は以下になります。

  • Elegoo UNO R3 x 1
  • 830 tie-points Breadboard x 1
  • 電源供給モジュール
  • 9V1Aアダプター & 9V角形電池
  • ULN2003 ステッピングモーター ドライバー モジュール
  • ステッピングモーター
  • F-M Jumper wire x 6
  • M-M Jumper wire x 1

以下のスターターキットに使用部品はすべて同梱されています。

回路をつくってみる

チュートリアル付属の回路図
チュートリアル付属の配線図

以下は、実際に配線した写真です。

電源供給モジュールArduino UNO R3ULN2003 ドライバー
8IN4
9IN3
10IN2
11IN1
GNDGND
5V+5-12V+

プログラムを動かしてみる

チュートリアル付属のコードを動かしてみます。

//www.elegoo.com
//2018.10.25

/*
  Stepper Motor Control - one revolution

  This program drives a unipolar or bipolar stepper motor.
  The motor is attached to digital pins 8 - 11 of the Arduino.

  The motor should revolve one revolution in one direction, then
  one revolution in the other direction.

*/

#include <Stepper.h>

const int stepsPerRevolution = 2048;  // change this to fit the number of steps per revolution
const int rolePerMinute = 16;         // Adjustable range of 28BYJ-48 stepper is 0~17 rpm

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);

void setup() {
  myStepper.setSpeed(rolePerMinute);
  // initialize the serial port:
  Serial.begin(9600);
}

char ch = "s";

void loop() {
  
  // step one revolution  in one direction:
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);

  // step one revolution in the other direction:
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}
C++

ステッピングモーター「28YJ-48」は、0 – 17 RPMで指定するようです。
ここで指定しているのは、16RPMなので、1分間に16回転、1回転に3.75秒かかります。
あまり早くはないですが、ギア比1/64ということでトルクは、結構ありそうです。

ステッピングモータが動く動画なのですが、音もせずゆっくり動くので静止しているみたいです。

以上

コメント

タイトルとURLをコピーしました