ステッピングモーターを使用した簡易ロボシリンダの作成

使用するステッピングモーター

https://res.cloudinary.com/zenn/image/fetch/s--SWspx7mq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_1200/https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110060/2a157880-8705-b202-9e76-45e1f56d704e.png リニアアクチュエータ(D8-MOTOR80形搭載)仕様 駆動電圧DC 12V 1相あたり800アンペア/相 コイル抵抗15 10%Ω/相 ステップ角18。 / step 励磁法1-2相励磁 ドライブモードバイポーラドライバ 125pps 1600 ppsを超える最大応答周波数 最大開始周波数が1100 ppsを超える モーター表面温度80°C ねじ棒径3mm ねじ棒の長さ90 mm スライダストローク80mm ねじ棒ピッチ±0.5mm 長さ10.3 cm / 4.1インチ 重さ50グラム(約)

https://res.cloudinary.com/zenn/image/fetch/s--vmb10Fg8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_1200/https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110060/b5711cec-b248-2ec6-1056-2cf4b53930e0.png

赤 → A+ 黄 → A- 青 → B+ 黒 → B-

A+ A- B+ B- はA4988ドライバに対して 1A 1B 2A 2Bとする

モータードライバー

A4988を使用

iot.keicode.com

https://iot.keicode.com/arduino/img/a4988-1.png 配線図

https://iot.keicode.com/arduino/img/a4988-2.png

ソース

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

void setup() {
  pinMode(DIR, OUTPUT);
  pinMode(STEP, OUTPUT);
  digitalWrite(DIR, LOW);
  digitalWrite(STEP, LOW);
}

void loop() {
  
  digitalWrite(DIR, HIGH);

  for (int i=0; i<200; i++) {
    digitalWrite(STEP, HIGH);
    delayMicroseconds(2000);
    digitalWrite(STEP, LOW);
    delayMicroseconds(2000);
  }

  delay(1000);

  digitalWrite(DIR, LOW);
  
  for (int i=0; i<200; i++) {
    digitalWrite(STEP, HIGH);
    delayMicroseconds(2000);
    digitalWrite(STEP, LOW);
    delayMicroseconds(2000);
  }

  delay(1000);

}

stepdriver版

#include <A4988.h>

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

float rpm      = 10;
int microsteps = 30;

A4988 stepper(MOTOR_STEPS, DIR, STEP);

void setup() {
  stepper.begin(rpm, microsteps);
}

void loop() {
  stepper.rotate(360);
  delay(1000);

  stepper.rotate(-360);
  delay(1000);
}