購入した機器のため情報紛失しないようにピックアップして残しています。

手持ちのモーターについて情報を集めました。
  1. STEPPERONLINE_Nema17
  2. 参照:
    https://amzn.asia/d/gZ437Nu

    電気仕様:
    * 製造元の部品番号: 17HS19-1684S-PG100
    * モーター型: バイポーラステッパー
    * ステップ角度: 0.018 °
    * 保持トルク: 4Nm
    * 定格電流/位相: 1.68A
    * 位相抵抗: 1.65ohms
    * インダクタンス: 2.8mH+/-20%(1KHz)

    ギアボックス仕様:
    * ギヤボックスタイプ:惑星系
    * ギア比: 99.05:1
    * 効率: 73%
    * 無負荷バックラッシュ: <=1 deg
    * 最大許容トルク:4Nm(566oz-in)
    * モーメント許容トルク: 6Nm(850oz-in)
    * 軸最大軸力: 50N
    * 軸最大ラジアル荷重: 100N

    物理的仕様:
    * フレームサイズ: 42 x 42mm
    * モーター 長さ:48mm
    * ギヤボックスの長さ: 42.7mm
    * 軸直径:8mm
    * 軸長さ: 20mm
    * Dカット長さ:15mm
    * リード線数: 4
    * リード長さ: 500mm
    * 重量: 630g

    接続:
    Black(A+), Green(A-), Red(B+), Blue(B-)


  3. SM-428YG011
  4. 参照:
    http://akizukidenshi.com/catalog/g/gP-05372/

    バイポーラタイプ
    主な仕様
    ■相数:2
    ■ステップ角:1.8度±5%
    ■1回転ステップ数:200
    ■絶縁抵抗:100MΩ(500VDC)
    ■コイル抵抗:34±10%Ω/相
    ■入力定格電圧:12V
    ■定格電流:0.33A/相
    ■静止トルク:0.23N・M
    ■重量:0.2kg

    赤:1A
    緑:1B
    黄:2B
    青:2A


  5. LongrunerNema 17
  6. 参照:
    https://www.amazon.co.jp/dp/B07W7Z3NH6

    黒:A+:1A
    緑:B-:1B
    赤:C+:2B
    青:D-:2A


  7. LongrunerNema 17_42mm
  8. 参照:
    https://amzn.to/3uotNqZ

    電気仕様:
    * 製造元の部品番号: 17HS13-0404S
    * モーター型:双極性ステッパー
    * ステップ角度: 1.8 deg.
    * 保持トルク: 26Ncm(36.8oz.in)
    * 定格電流/位相: 0.4A
    * 位相抵抗: 30ohms
    * インダクタンス: 37mH+/-20%(1KHz)

    物理的仕様:
    * フレームサイズ: 42 x 42mm
    * ボディ長さ: 34mm
    * 軸直径: 5mm
    * 軸長さ: 20mm
    * dカット長さ: 15mm
    * リード線数: 4
    * リード長さ: 1000mm
    * 重さ: 230g

    接続:
    Black(A+), Green(A-), Red(B+), Blue(B-)


ドライバについて情報を集めました。
ピン配置と設定方法に注目してください。
  1. TB6674PG (1)
  2. 参照:
    http://webpark1772.sakura.ne.jp/toki_no_katachi_2016/actuator.html

    TB6674PG_1.inc
      /* Stepper */
    
      #include 
    
      const int STEPS = 48;
      const int PIN_1 = 6;
      const int PIN_2 = 7;
    
      Stepper MyStepper(STEPS, PIN_1, PIN_2);
    
      void setup() {
        MyStepper.setSpeed(10);
      }
    
      void loop() {
        MyStepper.step(1);
      }
    

  3. TB6674PG (2)
  4. 参照:
    https://www.hiramine.com/physicalcomputing/arduino/steppingmotordriver.html

    TB6674PG_2.inc
    #define INAPIN	(7)
    #define INBPIN	(6)
    #define VOLUMEPIN	(0)
    
    // 真理値表
    //  IN │ φ : φ~
    // ──┼──┼──
    //  LOW│ LOW: HIGH
    // ──┼──┼──
    // HIGH│HIGH: LOW
    
    #define BASESTEPANGLE	(1.8)	// 基本ステップ角度:1ステップで動く角度
    
    void setup()
    {
    	pinMode(INAPIN, OUTPUT);
    	pinMode(INBPIN, OUTPUT);
    	Serial.begin(9600);
    }
    
    void step_forward( int iRpm )
    {
    	// ・1ステップにかけるべき時間は、
    	//  (基本ステップ角度) * (rpmから求まる1度うごくのにかける時間)
    	// ・rpmから求まる1度うごくのにかける時間は、
    	//    1 / ( iRpm[rpm] * 360[deg] / 60[s] ) = 1 / (iRpm * 6)
    	//  = 1 / (iRpm * 6)
    	// ・1ステップ時間[s]は
    	//  StepTime = BASESTEPANGLE / (iRpm * 6)
    	int iStepTime_milli = (int)(1000.0 * BASESTEPANGLE / (iRpm * 6));
    	Serial.println(iStepTime_milli);
    	// P1:ON, P2:ON, P1B:off, P2B:off
    	digitalWrite(INAPIN, HIGH);
    	digitalWrite(INBPIN, HIGH);
    	delay(iStepTime_milli);
    	// P1:off, P2:ON, P1B:ON, P2B:off
    	digitalWrite(INAPIN, LOW);
    	digitalWrite(INBPIN, HIGH);
    	delay(iStepTime_milli);
    	// P1:off, P2:off, P1B:ON, P2B:ON
    	digitalWrite(INAPIN, LOW);
    	digitalWrite(INBPIN, LOW);
    	delay(iStepTime_milli);
    	// P1:ON, P2:off, P1B:off, P2B:ON
    	digitalWrite(INAPIN, HIGH);
    	digitalWrite(INBPIN, LOW);
    	delay(iStepTime_milli);
    }
    
    void step_reverse( int iRpm )
    {
    	int iStepTime_milli = (int)(1000.0 * BASESTEPANGLE / (iRpm * 6));
    	Serial.println(iStepTime_milli);
    	// P1:off, P2:off, P1B:ON, P2B:ON
    	digitalWrite(INAPIN, LOW);
    	digitalWrite(INBPIN, LOW);
    	delay(iStepTime_milli);
    	// P1:off, P2:ON, P1B:ON, P2B:off
    	digitalWrite(INAPIN, LOW);
    	digitalWrite(INBPIN, HIGH);
    	delay(iStepTime_milli);
    	// P1:ON, P2:ON, P1B:off, P2B:off
    	digitalWrite(INAPIN, HIGH);
    	digitalWrite(INBPIN, HIGH);
    	delay(iStepTime_milli);
    	// P1:ON, P2:off, P1B:off, P2B:ON
    	digitalWrite(INAPIN, HIGH);
    	digitalWrite(INBPIN, LOW);
    	delay(iStepTime_milli);
    }
    
    void step_stop()
    {
    }
    
    void loop()
    {
    //	int iValue = analogRead(VOLUMEPIN);
    	//Serial.println(iValue);
    //	iValue = iValue / 8;	// [0 1023] -> [0 127]
    //	if(      64 + 2 < iValue )
    //	{
    		// iValue   :  64   127
    		// rpm      :   1    64
    //		step_forward( iValue - 63 );
    //	}
    //	else if( 63 - 2 > iValue )
    //	{
    		// iValue   :    0   63
    		// rpm      :   64    1
    //		step_reverse( 64 - iValue );
    //	}
    //	else
    //	{
    //		step_stop();
    //	}
    		step_forward( 10 );
    }
    

  5. L6470
  6. マイクロステップ:1/128
    制御入力:SPIでコマンド送信
    参照:
    https://qiita.com/nakagawa1017/items/dcf67d9ceb384715f7ee
    参照:http://tyokota.hateblo.jp/entry/2017/06/16/191852
    参照:http://spinelify.blog.fc2.com/blog-entry-41.html
    参照:https://kogakubu.com/?p=2918
    Arduino の SPI 使用方法
    参照:https://stupiddog.jp/note/archives/976



    AE-L6470 4CN Arduino UNO
    1:#BUSY/SYNC 9:
    2:FLAG
    3:GND GND
    4:EXT-VDD 3.3V
    5:SDO 12:(SPI[MISO])
    6:CK 13:(SPI[SCK])
    7:SDI 11:(SPI[MODSI])
    8:#CS 10:(SPI[SS])
    9:STCK
    10:#STBY/#RST
    #include 
    //#include 
    
    // ピン定義。
    #define PIN_SPI_MOSI 11
    #define PIN_SPI_MISO 12
    #define PIN_SPI_SCK 13
    #define PIN_SPI_SS 10
    #define PIN_BUSY 9
    
    void setup()
    {
      delay(1000);
      pinMode(PIN_SPI_MOSI, OUTPUT);
      pinMode(PIN_SPI_MISO, INPUT);
      pinMode(PIN_SPI_SCK, OUTPUT);
      pinMode(PIN_SPI_SS, OUTPUT);
      pinMode(PIN_BUSY, INPUT);
      SPI.begin();
      SPI.setDataMode(SPI_MODE3);
      SPI.setBitOrder(MSBFIRST);
      Serial.begin(9600);
      digitalWrite(PIN_SPI_SS, HIGH);
     
      L6470_resetdevice(); //L6470リセット
      L6470_setup();  //L6470を設定
      
    //  MsTimer2::set(50, fulash);//シリアルモニター用のタイマー割り込み
    //  MsTimer2::start();
      delay(4000);
    
      Serial.println("指定方向に指定数ステップする");
      L6470_move(1,1600);//指定方向に指定数ステップする 
      L6470_busydelay(5000); //busyフラグがHIGHになってから、指定ミリ秒待つ。
      Serial.println("指定方向に連続回転");
      L6470_run(0,10000);//指定方向に連続回転
      delay(6000);
      Serial.println("回転停止、保持トルクあり");
      L6470_softstop();//回転停止、保持トルクあり
      L6470_busydelay(5000);
      Serial.println("指定座標に最短でいける回転方向で移動");
      L6470_goto(0x6789);//指定座標に最短でいける回転方向で移動
      L6470_busydelay(5000);
      L6470_run(0,0x4567);
      delay(6000);
      Serial.println("回転急停止、保持トルクなし");
      L6470_hardhiz();//回転急停止、保持トルクなし
    }
    
    void loop(){
    }
    
    void L6470_setup(){
    L6470_setparam_acc(0x40); //[R, WS] 加速度default 0x08A (12bit) (14.55*val+14.55[step/s^2])
    L6470_setparam_dec(0x40); //[R, WS] 減速度default 0x08A (12bit) (14.55*val+14.55[step/s^2])
    L6470_setparam_maxspeed(0x40); //[R, WR]最大速度default 0x041 (10bit) (15.25*val+15.25[step/s])
    L6470_setparam_minspeed(0x01); //[R, WS]最小速度default 0x000 (1+12bit) (0.238*val[step/s])
    L6470_setparam_fsspd(0x3ff); //[R, WR]μステップからフルステップへの切替点速度default 0x027 (10bit) (15.25*val+7.63[step/s])
    L6470_setparam_kvalhold(0x50); //[R, WR]停止時励磁電圧default 0x29 (8bit) (Vs[V]*val/256)
    L6470_setparam_kvalrun(0x50); //[R, WR]定速回転時励磁電圧default 0x29 (8bit) (Vs[V]*val/256)
    L6470_setparam_kvalacc(0x50); //[R, WR]加速時励磁電圧default 0x29 (8bit) (Vs[V]*val/256)
    L6470_setparam_kvaldec(0x50); //[R, WR]減速時励磁電圧default 0x29 (8bit) (Vs[V]*val/256)
    L6470_setparam_stepmood(0x03); //ステップモードdefault 0x07 (1+3+1+3bit)
    }
    
    void fulash(){
      Serial.print("0x");
      Serial.print( L6470_getparam_abspos(),HEX);
      Serial.print("  ");
      Serial.print("0x");
      Serial.println( L6470_getparam_speed(),HEX);
    }
    
  7. TB67S249FTG
  8. 設定:ピン3本
    マイクロステップ:1/32
    制御入力:回転方向(DIR)、クロック(STEP)
    特徴:Arduinoとセットで3Dプリンタ制御用として売られている
    参照:
    http://akizukidenshi.com/catalog/g/gK-14791/


  9. DRV8825
  10. 設定:ピン3本
    マイクロステップ:1/32
    制御入力:回転方向(DIR)、クロック(STEP)
    参照:
    https://www.amazon.co.jp/gp/product/B078SHRSKH/

  11. ST820
  12. 設定:ピン3本
    マイクロステップ:1/256
    制御入力:回転方向(DIR)、クロック(STEP)
    参照:
    https://wiki.fysetc.com/ST820_V1.0/
    参照:https://www.amazon.co.jp/gp/product/B07P81QHCH/

    // ピン定義
    #define PIN_MS0 13
    #define PIN_MS1 12
    #define PIN_MS2 11
    #define PIN_EN 10
    #define PIN_STEP 9
    #define PIN_DIR 8
    #define PIN_RST 7
    //1回転させるための値
    #define stepsPerRevolution 200  //1ステップ1.8度の場合
    #define microstep 256           //逆数
    #define reductionratio  1       //減速比
    #define DELAY 256/microstep
    //#define DELAY 2000
    /*
     * MS2 MS1 MS0
     * 0   0   0    full step
     * 0   0   1    1/2 step
     * 0   1   0    1/4 step
     * 0   1   1    1/8 step
     * 1   0   0    1/16 step
     * 1   0   1    1/32 step
     * 1   1   0    1/128 step
     * 1   1   1    1/256 step
     */
    
    void setup() {
      // put your setup code here, to run once:
      pinMode(PIN_EN, OUTPUT);
      pinMode(PIN_STEP, OUTPUT);
      pinMode(PIN_DIR, OUTPUT);
    
      delay(500);
      digitalWrite(PIN_MS0, HIGH);
      digitalWrite(PIN_MS1, HIGH);
      digitalWrite(PIN_MS2, HIGH);
      digitalWrite(PIN_EN, HIGH);
      digitalWrite(PIN_DIR, LOW);
      digitalWrite(PIN_RST, HIGH);
      Serial.begin(9600);
      delay(500);
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
      Serial.println("時計回り");
      digitalWrite(PIN_DIR, LOW);
      for (int i = 0; i < reductionratio; i++) {
        for (int j = 0; j < stepsPerRevolution; j++) {
          for (int k = 0; k < microstep; k++) {
            digitalWrite(PIN_STEP, HIGH);
            delayMicroseconds(DELAY);
            digitalWrite(PIN_STEP, LOW);
            delayMicroseconds(DELAY);
          }
        }
      }
      delay(1000);
      Serial.println("反時計回り");
      digitalWrite(PIN_DIR, HIGH);
      for (int i = 0; i < reductionratio; i++) {
        for (int j = 0; j < stepsPerRevolution; j++) {
          for (int k = 0; k < microstep; k++) {
            digitalWrite(PIN_STEP, HIGH);
            delayMicroseconds(DELAY);
            digitalWrite(PIN_STEP, LOW);
            delayMicroseconds(DELAY);
          }
        }
      }
      delay(1000);
    }
    
  13. UNL2003
  14. 参照:
    http://qqtrading.com.my/stepper-motor-driver-unipolar-bipolar-module-uln2003


  15. A4988
  16. ドライバ名:
    設定:ピン3本
    マイクロステップ:1/16
    制御入力:回転方向(DIR)、クロック(STEP)
    参照:
    https://www.switch-science.com/products/582
    参照:https://iot.keicode.com/arduino/arduino-stepper-motor-a4988.php
  17. TMC2209
  18. 設定:ピン3本
    マイクロステップ:1/16
    制御入力:回転方向(DIR)、クロック(STEP)
    参照:
    https://www.switch-science.com/products/582
    参照:https://iot.keicode.com/arduino/arduino-stepper-motor-a4988.php


  • 更新履歴
  • 2022.12.12 作成