読者です 読者をやめる 読者になる 読者になる

catalinaの備忘録

ソフトウェアやハードウェアの備忘録。後で逆引きできるように。

Arduinoでステッピングモータ制御

前回の記事でDCモータ制御したけども、速度制御とか回転方向とかもっと細かく制御したいので、ステッピングモータを試してみることにした。

 

試しに使ったのはSPG20-332。

4相ユニポーラ方式。

 

というわけで回路図。

f:id:Catalina1344:20140907123642p:plain

回路図の説明。

左端のコネクタArduinoのDigital-ポート。LEONARDOだと実際には13本しかないはず。15本もあるのは、回路図のツールの都合で15になってるだけです。

Arduinoのポートからの出力は非常に小さくてモータを駆動するには能力が足りないので、MOSFETで増幅してあげることに。(ARDUINOの回路図みてないけど、ベース抵抗とか色々と必要かもしれない。)

 

N型MOSFETとして2SK2231を使う。千石電子あたりで一個百円くらい。

このMOSFETはゲートに電圧をかけると、ドレインーソース間に電流が流れる。

回路図でいうと、左側の端子(ベース)に電圧をかけると、上側の端子(ドレイン)から下側の端子(ソース)間に電流が流れる。

ソース側はそのまま接地。ドレイン側はステッピングモータの出力端子へ。

ステッピングモータの電源端子はそのまま電池に接続

これで4相での回転を制御できる。

 

というわけでソースコード

1相励磁方式では安定しなかったので2相励磁でやることにした。


#define LED_PIN1 13
#define MOTER_PIN1 3
#define MOTER_PIN2 5
#define MOTER_PIN3 6
#define MOTER_PIN4 9

#define STEP_DELAY 50
 
// 初期化
void setup(){
 
  // ピンを出力に
  pinMode(MOTER_PIN1, OUTPUT);
  pinMode(MOTER_PIN2, OUTPUT);
  pinMode(MOTER_PIN3, OUTPUT);
  pinMode(MOTER_PIN4, OUTPUT);
}
 
void loop() {
   digitalWrite(MOTER_PIN1, 1);
   digitalWrite(MOTER_PIN3, 0);
   delay(STEP_DELAY);
   digitalWrite(MOTER_PIN2, 1);
   digitalWrite(MOTER_PIN4, 0);
   delay(STEP_DELAY);
   digitalWrite(MOTER_PIN3, 1);
   digitalWrite(MOTER_PIN1, 0);
   delay(STEP_DELAY);
   digitalWrite(MOTER_PIN4, 1);
   digitalWrite(MOTER_PIN2, 0);
   delay(STEP_DELAY);
}

 

とりあえず回った。

駆動部分の機構ができてから色々調整していくことにしましょう。

 

あと必要な機能は初期位置を検出するためのエンコーダ。

エンコーダとか買うと高いので、赤外線LEDと赤外線受信モジュールあたりでなんとかできないか試してみたい。