工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

MK2 Plusロボットアームコントローラーの自作

部品と材料

部品数量
Arduino UNO1
CNCシールド(Arduino用)1
A4988ステッピングモータードライバー3
NEMA 17 ステッピングモーター3
マイクロリミットスイッチ3
12V電源(十分な電流容量のもの)1

必要な工具

使用ソフトウェア

プロジェクト概要

Thingiverseで人気のEEZYBOT MK2アーム(ABB IRB460の1/7スケール)を、サーボ駆動からステッピングモーター駆動に改良した「MK2 Plus」を制御するコントローラーをArduino UNO + CNCシールドで自作しました。AccelStepperライブラリで滑らかな多軸同時制御を実現し、リミットスイッチによる自動原点復帰(ホーミング)機能を実装しています。

MK2 Plusロボットアームコントローラーの自作

3Dプリントパーツ: MK2 Plus on Thingiverse(設計: ackyltle / daghizmoのリミックス)

原点復帰(ホーミング)の設計

MK2 Plusロボットアームコントローラーの自作

ステッピングモーターには位置情報がないため、起動時に3つのリミットスイッチで原点を決定します。リンク機構の関係上、X/Y軸は連動して動くため、ホーミングは以下の手順で行います:

  1. X/Yモーターを逆方向に動かし、Yリミットスイッチが押されるまで移動
  2. 両モーターを同方向に動かし、Xリミットスイッチが押されるまで移動
  3. 両モーターを少し戻してスイッチを解放(離脱)
  4. Zモーターを回転させ、Zリミットスイッチで原点決定

初回はモーターの回転方向が逆だとアームが破損する恐れがあるため、電源スイッチに手を置いて即座に切れる状態でテストしてください。

配線

MK2 Plusロボットアームコントローラーの自作

CNCシールドの端子表示に従って接続:

ソースコード解説

ピン定義とAccelStepperオブジェクト生成

#define XSTEP 2
#define YSTEP 3
#define ZSTEP 4
#define XDIR 5
#define YDIR 6
#define ZDIR 7
#define ENABLE 8
#define XLIMIT 9
#define YLIMIT 10
#define ZLIMIT 11

#define XMOTORACC 250
#define XMOTORMAXSPEED 1000
#define YMOTORACC 250
#define YMOTORMAXSPEED 1000

#include <AccelStepper.h>
AccelStepper XMOTOR(1, XSTEP, XDIR);
AccelStepper YMOTOR(1, YSTEP, YDIR);
AccelStepper ZMOTOR(1, ZSTEP, ZDIR);

ピン初期化

void pinsetup() {
  pinMode(ENABLE, OUTPUT); digitalWrite(ENABLE, LOW);
  pinMode(XLIMIT, INPUT_PULLUP);
  pinMode(YLIMIT, INPUT_PULLUP);
  pinMode(ZLIMIT, INPUT_PULLUP);
}

ホーミングルーチン(抜粋・簡略化)

void autohome() { xyhome(); zhome(); }

void xyhome() {
  // 低速・低加速で正確なホーミング
  XMOTOR.setMaxSpeed(500); XMOTOR.setAcceleration(50);
  YMOTOR.setMaxSpeed(500); YMOTOR.setAcceleration(50);

  int initial_xhome = -1, initial_yhome = -1;
  // Step 1: Yリミットまで逆方向移動
  while (digitalRead(YLIMIT)) {
    XMOTOR.moveTo(initial_xhome); YMOTOR.moveTo(initial_yhome);
    initial_xhome--; initial_yhome--;
    XMOTOR.run(); YMOTOR.run(); delay(5);
  }
  XMOTOR.setCurrentPosition(0); YMOTOR.setCurrentPosition(0);

  // Step 2: Xリミットまで同方向移動
  initial_xhome = -1; initial_yhome = 1;
  while (digitalRead(XLIMIT)) {
    XMOTOR.moveTo(initial_xhome); YMOTOR.moveTo(initial_yhome);
    initial_xhome--; initial_yhome++;
    XMOTOR.run(); YMOTOR.run(); delay(5);
  }
  YMOTOR.setCurrentPosition(0);

  // Step 3: スイッチ離脱
  YMOTOR.setMaxSpeed(250); YMOTOR.setAcceleration(10);
  initial_yhome = 1;
  while (!digitalRead(YLIMIT)) {
    YMOTOR.moveTo(initial_yhome); YMOTOR.run(); initial_yhome++; delay(5);
  }
  YMOTOR.setCurrentPosition(0);
  YMOTOR.setMaxSpeed(YMOTORMAXSPEED); YMOTOR.setAcceleration(YMOTORACC);

  XMOTOR.setMaxSpeed(250); XMOTOR.setAcceleration(10);
  initial_xhome = 1;
  while (!digitalRead(XLIMIT)) {
    XMOTOR.moveTo(initial_xhome); XMOTOR.run(); initial_xhome++; delay(5);
  }
  XMOTOR.setCurrentPosition(0);
  XMOTOR.setMaxSpeed(XMOTORMAXSPEED); XMOTOR.setAcceleration(XMOTORACC);
}

void zhome() {
  ZMOTOR.setMaxSpeed(100); ZMOTOR.setAcceleration(100);
  int initial_zhome = -1;
  while (digitalRead(ZLIMIT)) {
    ZMOTOR.moveTo(initial_zhome); initial_zhome--; ZMOTOR.run(); delay(5);
  }
  ZMOTOR.setCurrentPosition(0);
  ZMOTOR.setMaxSpeed(50); ZMOTOR.setAcceleration(50);
  initial_zhome = 1;
  while (!digitalRead(ZLIMIT)) {
    ZMOTOR.moveTo(initial_zhome); ZMOTOR.run(); initial_zhome++; delay(5);
  }
  ZMOTOR.setCurrentPosition(0);
  ZMOTOR.setMaxSpeed(1000); ZMOTOR.setAcceleration(1000);
}

セットアップとメインループ例

void setup() {
  Serial.begin(9600);
  pinsetup();
  autohome();
  Serial.println("HOMING OK");
}

void loop() {
  // デモ: 簡単な動作パターン
  XMOTOR.runToNewPosition(100); delay(1000);
  YMOTOR.runToNewPosition(50);  delay(1000);
  YMOTOR.runToNewPosition(-50); delay(1000);
  YMOTOR.runToNewPosition(0);   delay(1000);
  XMOTOR.runToNewPosition(0);   delay(1000);
}

発展の可能性

リソース

結論

GRBLを使わずArduino単体でステッピングモーター駆動アームを制御する方法を示しました。ホーミングルーチンさえ正しく動けば、AccelStepperのおかげで驚くほど滑らかに動作します。自作ロボットアームの制御基盤として、アイデア次第で様々な応用が可能です。Thingiverseの設計者たちに感謝!

製造プロセス

  1. MeArmロボットアーム V1.0 – Arduino/Raspberry Piで作るロボットアーム
  2. Ethernet制御ロボットアーム - WIZ750SRとAndroidアプリでリモート操作
  3. LittleArm 2C: 3Dプリント製Arduinoロボットアーム – STEM教育向け耐久設計
  4. DIY ハンドジェスチャー制御 Arduino ロボットアーム - ステップバイステップ構築ガイド
  5. Arduinoロボットアーム「LittleArm」をAndroidアプリでBluetooth制御
  6. MeArmロボット用精密ジョイスティックコントローラー - 座標の記録・再生機能付き
  7. Realtime Robotics、統合簡素化と導入加速を実現する先進コントローラを発表
  8. KUKA KMR iiwa:インダストリー4.0対応の移動型協働ロボットアーム
  9. デュアルアームSCARAロボット:高度な組立・生産ソリューションを実現する次世代ロボット
  10. Yama Seiki GA-2000CR:ロボットアームとパレットシステム搭載のコンパクト旋削センター
  11. Infineon、Arm Cortex-M0統合のIMC300モーターコントローラー発表——柔軟性を強化