ふるお〜と!- FullAuto

AI・ロボットが普及しBI(ベーシックインカム)が早急に実現されることを願う元ニートのブログ

ふるお〜と!-FullAuto

LinuxとArduinoでモータ(StepperMotor)を動かしてみた

<基本的なモータの動かし方 >
1.RS232Cシーケンサとシリアル通信をする。
2.シーケンサからパルス信号をモータ ドライバに出力。
3.モータドライバからモータへ駆動信号を出力する。

産業用の高価なシステムは組めないので、Arduinoを使用する。

RS232Cの最大伝送速度は20kb/s。
なんかこうもっとブロードバンドな規格でモータを動かしたいなぁ。

画像取り込みに1Gb/s以上の帯域を使って、出力が20 kb/sってあまりにも貧弱な気がするが...。

まぁしょうがないか。

前回のLチカのコードをモータが動くように編集します。 nullpo24.hatenablog.com

環境

OS: Ubuntu18.04
HW:Arduino Mega 2560
Stepper Motor Driver Module : A4988
Stepper Motor : 17HD48002H-22B
Power Supply : Longwei 直流電源 DC 30V 10A

Arduino と A4988 でステッピングモーターを制御する方法 - Arduino - 基礎からの IoT 入門 を参考に結線。

Arduino側の実装

以下のスケッチをArduinoへ転送します。
初期状態ではA4988.hのライブラリが見つからないため、 コンパイル時にエラーとなります。
「ツール」→「ライブラリを管理」から"A4988"を検索し、インストールしてください。

コマンド'o':正回転
コマンド'p':逆回転

#include <A4988.h>


const int MOTOR_STEPS = 200;
const int DIR  =  8;
const int STEP =  9;

float rpm      = 100;
int microsteps = 1;

A4988 stepper(MOTOR_STEPS, DIR, STEP);

void setup(){
  // set the speed at 60 rpm:
  //myStepper.setSpeed(60);
  stepper.begin(rpm, microsteps);
  // initialize the serial port:
  Serial.begin(9600);
}

void loop(){
  int inputchar;
  
  inputchar = Serial.read();
 
  if(inputchar != -1 ){
    switch(inputchar){
      case 'o':
          // 読み込みデータが o の場合
          // step one revolution  in one direction:
          stepper.rotate(360);
          delay(500);
          break;
      case 'p':  
          // 読み込みデータが p の場合
          // step one revolution in the other direction:
          stepper.rotate(-360);
          delay(500);
          break;
    }
  } else {

  }
}