こんかいは、家にあった謎のステッピングモーターを動かしました。

 前にも謎のLCDを使ったことがありますが、今回のモーターもその時のLCDとセットになってたやつだと思われます。
 何年か前に、中国からArduino周辺機器セット?みたいなものを買ったことがあってそれに入ってたものだと思うのですが、このセットはすごく不親切でデータシートはおろか型番の一覧すら入っていません。それなので、型番を本体から読んでネットから関連情報を持ってくるまで謎の部品になるのです。

 そんなわけで、今回のステッピングモーターはこれです。
DSC01159
DSC01158
 裏に「STEP MOTOR」と書いてあります。また、書いてあることが正しければ5V耐圧のようです。

 また、付属していたドライバー基板はこんな感じです。
DSC01160
 これ、左にあるピン4本が入力ピンで、下にあるピンが電源の+と-なのですが、5~12Vと書いてあります。ICはトランジスタアレイで、電源平滑用のコンデンサは入っていますが、レギュレータのようなものはどう考えてもありません。モーターの耐圧は5Vと書いてあったのですが、果たして12Vもかけて大丈夫なんでしょうか?

 まあ、そんなことは置いといて配線です。
 今回はドライバとArduino双方の電源を共通の5Vにしました。また、ドライバの1,2,3,4番ピンをArduinoの8,9,10,11番ピンにさします。

 コードですが、今回はArduinoのAtepperライブラリを使います。
#include <Stepper.h>

const int number_of_steps = 32;
const int steps_output_rev = 32 * 64; // 2048
const int CW = 1;
const int CCW = -1;

Stepper stepper(number_of_steps, 8, 10, 9, 11);

void setup() {
  stepper.setSpeed(1000);
}

void loop() {
  int steps;

  steps = get_step_by_rev(CW, 1);
  stepper.step(steps);
  delay(3000);

  steps = get_step_by_rev(CCW, 1);
  stepper.step(steps);
  delay(3000);  
}

int get_step_by_rev(int dir, float rev){
  return dir * (steps_output_rev * rev);  
}

 このようにすると回ります。Stepperの解説はまた違う機会に。気になる人はArduino公式リファレンスを見てください。


 実際に動かすとこんな感じです。
 そこそこトルクは強いようです。


 今回はここまでです。次回はまたなんか作りたいと思います。それではまた今度。