Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Контроллер робота-манипулятора MK2 Plus на Arduino

Компоненты и материалы

CNC Shield×1
NEMA 17 шаговые моторы (OpenBuilds или аналогичные)×3
Arduino UNO×1
Драйверы A4988 (SparkFun)×3
Микро-концевики (OpenBuilds)×3

Инструменты

Программное обеспечение

О проекте

Робот-манипулятор EEZYBOT MK2

На Thingiverse популярная рука EEZYBOT MK2 (автор daghizmo) — масштаб 1:7 к ABB IRB460. Оригинал на сервоприводах — дрожит. Версия MK2 Plus (Thingiverse) использует 3 шаговых мотора для плавного движения.

Контроллер робота-манипулятора MK2 Plus на Arduino

Печать занимает несколько дней. Сборка по туториалам в сети.

Выбор домашней позиции (Homing)

Шаговые моторы не знают свою позицию — нужна процедура хоминга на 3 концевиках. Расположение понятно после сборки.

Контроллер робота-манипулятора MK2 Plus на Arduino

Z-концевик можно поставить на базе. Капните горячий клей для фиксации проводов.

Проводка

CNC Shield имеет подписанные клеммы. Не перепутайте драйверы A4988! Мотор у Y-концевика → Y-разъём Shield, у X-концевика → X-разъём. Базовый мотор → Z-разъём. Концевики по названиям. Полярность не важна.

Контроллер робота-манипулятора MK2 Plus на Arduino

Нужен блок питания 12 В с достаточным током.

Программный код

Используем библиотеку AccelStepper (через Library Manager или GitHub) для плавного управления несколькими моторами.

Контроллер робота-манипулятора MK2 Plus на Arduino

Определение пинов и объектов

#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() {
  int initial_xhome = -1, initial_yhome = -1;
  XMOTOR.setMaxSpeed(500); XMOTOR.setAcceleration(50);
  YMOTOR.setMaxSpeed(500); YMOTOR.setAcceleration(50);
  // 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);
  initial_xhome = -1; initial_yhome = 1;
  // 2. Движение в одном направлении до нажатия X-лимита
  while (digitalRead(XLIMIT)) {
    XMOTOR.moveTo(initial_xhome); YMOTOR.moveTo(initial_yhome);
    initial_xhome--; initial_yhome++;
    XMOTOR.run(); YMOTOR.run(); delay(5);
  }
  YMOTOR.setCurrentPosition(0);
  YMOTOR.setMaxSpeed(250); YMOTOR.setAcceleration(10);
  initial_yhome = 1;
  // 3. Отпускание Y-лимита
  while (!digitalRead(YLIMIT)) {
    YMOTOR.moveTo(initial_yhome); YMOTOR.run(); initial_yhome++; delay(5);
  }
  YMOTOR.setCurrentPosition(0);
  YMOTOR.setMaxSpeed(YMOTORMAXSPEED); YMOTOR.setAcceleration(YMOTORACC);
  XMOTOR.setCurrentPosition(0);
  XMOTOR.setMaxSpeed(250); XMOTOR.setAcceleration(10);
  initial_xhome = 1;
  // 4. Отпускание X-лимита
  while (!digitalRead(XLIMIT)) {
    XMOTOR.moveTo(initial_xhome); XMOTOR.run(); initial_xhome++; delay(5);
  }
  XMOTOR.setCurrentPosition(0);
  XMOTOR.setMaxSpeed(XMOTORMAXSPEED); XMOTOR.setAcceleration(XMOTORACC);
}

void zhome() {
  int initial_zhome = -1;
  ZMOTOR.setMaxSpeed(100); ZMOTOR.setAcceleration(100);
  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);
}

Логика: сначала X и Y движутся навстречу друг другу до Y-лимита, затем вместе до X-лимита, потом отжимают лимиты, в конце Z-хоминг.

Осторожно при первом запуске! Если моторы вращаются не туда — выключите питание и переверните коннектор мотора.

Setup и Loop

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. Также можно добавить Serial-парсинг команд (например, «5,6,7*» — шаги X,Y,Z) или обратную кинематику для задавания координат захвата.

Удачи! Спасибо дизайнерам Thingiverse!

Код

Полный скетч: GitHub репозиторий (скачайте и откройте в Arduino IDE).

3D-модели

Робот MK2 Plus на Thingiverse: CAD файл (автор ackyltle).

Производственный процесс

  1. Infineon представляет IMC300 контроллер двигателя с интегрированным Arm Cortex-M0 для повышенной гибкости
  2. Двухрукие SCARA-роботы: передовые решения для сборки и производства
  3. Роботизированная рука MeArm V1.0 — сборка на Arduino и Raspberry Pi
  4. Управление манипулятором по Ethernet: Arduino 101 + WIZ750SR + Android-приложение
  5. LittleArm 2C: 3D-печатаемый робот-манипулятор на Arduino для STEM-обучения
  6. DIY манипулятор, управляемый жестами руки: пошаговая сборка на Arduino
  7. Управление манипулятором LittleArm через Android-приложение по Bluetooth
  8. Realtime Robotics запускает продвинутый контроллер для упрощения интеграции и ускорения развертывания
  9. Yama Seiki GA-2000CR: компактный токарный центр с роботом-манипулятором и паллетной системой
  10. KUKA KMR iiwa: мобильный коллаборативный манипулятор для Индустрии 4.0