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

Программируемый набор 3-осевой манипулятора — локальное и удаленное управление через Arduino и Bluetooth

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

Arduino Mega 2560 × 1
SainSmart DIY 3-Axis Control Palletizing Robot Arm Model для Arduino UNO MEGA2560 × 1
MeArm DIY Robot Arm Kit × 1
HC-06 Bluetooth модуль × 1
Adafruit RGB Backlight LCD 16x2 × 1
Android устройство × 1
Потенциометр вращательный 10 кОм × 4
Кнопка тактовая 12 мм × 3
Светодиоды (красный, синий, зеленый, желтый) × 4

Приложения и сервисы

Arduino IDE
MIT App Inventor 2

О проекте

Программируемый набор 3-осевой манипулятора — локальное и удаленное управление через Arduino и Bluetooth

Цель этого руководства — пошагово разработать проект управления и программирования манипулятора, имитирующего базовые функции промышленного робота.

Шаг 1: Спецификации

Программируемый набор 3-осевой манипулятора — локальное и удаленное управление через Arduino и Bluetooth

Робот имеет две основные функции:

Основные характеристики:

Шаг 2: Проект

Программируемый набор 3-осевой манипулятора — локальное и удаленное управление через Arduino и Bluetooth

Блок-схема показывает спецификацию материалов. Выбрал Arduino MEGA, чтобы не беспокоиться о количестве пинов (на UNO понадобился бы расширитель, например 74138).

Для Bluetooth используется HC-06. Android-приложение для «remote mode» разработано в MIT App Inventor 2, доступно бесплатно в Google Play: «MJRoBot Arduino Robot Arm Control».

Видео демонстрирует удаленное программирование.

Шаг 3: Разработка проекта

Программируемый набор 3-осевой манипулятора — локальное и удаленное управление через Arduino и Bluetooth
Программируемый набор 3-осевой манипулятора — локальное и удаленное управление через Arduino и Bluetooth

Роботизированные манипуляторы классифицируются по количеству «суставов» или степеней свободы (DOF):

Шаг 4: Схема подключения

Программируемый набор 3-осевой манипулятора — локальное и удаленное управление через Arduino и Bluetooth

Сервоприводы приводят суставы в движение, подключены прямо к Arduino. На базе иногда используют шаговые двигатели для большего момента и точности. Выбор серв критичен (дешевые китайские MG995 плохо сделаны, но для проекта подошли).

Питание серв должно быть отдельным от Arduino и остальной электроники. Внешний источник 5-6В (проверьте даташит серв). Рекомендуется конденсатор 470 мкФ между VCC и GND для сглаживания шумов от двигателей серв. Все «Ground» должны быть соединены (внешний источник с GND Arduino).

Если сервы вибрируют — увеличьте задержки в коде, чтобы сервы успевали дойти до позиции. Также проверьте, цифровые или аналоговые сервы: цифровые работают на 300 Гц, аналоговые на 50 Гц. Стандартная библиотека Servo.h для аналоговых, для цифровых может потребоваться модификация.

Шаг 5: Код

Проект не сложный, но много переменных. Разумно определить их в отдельном файле:

ArmDefine.h

Здесь же задаются минимальные, максимальные и начальные углы серв. В коде два набора параметров для протестированных манипуляторов (использовать только один):

// MeArm 4-DOF
#define minGrip 15
#define minBase 0
#define minShou 60
#define minElbw 60
#define maxGrip 45
#define maxBase 170
#define maxShou 180
#define maxElbw 150
#define midGrip 30
#define midBase 87
#define midShou 138
#define midElbw 100

/* SS 3-DOF
#define minGrip 75
#define minBase 5
#define minShou 5
#define minElbw 0
#define maxGrip 125
#define maxBase 150
#define maxShou 155
#define maxElbw 0
#define midGrip 100
#define midBase 90
#define midShou 90
#define midElbw 0
*/

У каждого манипулятора свои параметры. Рекомендую: поставьте потенциометры в середину, PWM маппинг по умолчанию (Max=255, Min=0, Mid=126). Затем поворачивайте потенциометры по одному и смотрите в Serial Monitor или на LCD минимальные/максимальные рабочие значения. Их и пропишите в ArmDefine.h.

Для записи наборов координат (шагов) использую массивы:

int gripPosition[100];
int basePosition[100];
int shouPosition[100];
int elbwPosition[100];
int positionIndex = 0; // индекс для массива записанных задач

Записанная программа не сохраняется после выключения (индекс сбрасывается в 0). Можно хранить в EEPROM для сохранения между сессиями.

Шаг 6: Логика программы

Главный блок loop() прост:

void loop() {
  checkBTcmd();
  defineLocalRemote();
  execTaskCmd = digitalRead(execTaskPin);
  if (execTaskCmd == HIGH || command == "runon") {
    RunProgram();
  } else {
    recArmPosition();
  }
  command = "";
}

Код разбит на файлы по функциям:

Видео показывает 4DOF манипулятор «meArm», запрограммированный удаленно через Android-приложение.

Полный исходный код на GitHub: https://github.com/Mjrovai/MJRoBot-Programmed-Arm

Файлы проекта: F49C85FIL8CVX0P.ino, FC4OQJNIL8CVX1C.h, FBYPQAMIL8CVX1D.ino, F2SBAXVIL8CVX1E.ino

Шаг 7: Заключение

Программируемый набор 3-осевой манипулятора — локальное и удаленное управление через Arduino и Bluetooth

Надеюсь, проект поможет другим в увлекательном мире электроники, робототехники и IoT! Больше проектов в блоге: MJRoBot.org

Привет с юга мира! До встречи в следующем уроке!

Спасибо, Марсело

Код

Фрагмент кода #1 (Arduino) — параметры манипулятора

// MeArm 4-DOF
#define minGrip 15
#define minBase 0
#define minShou 60
#define minElbw 60
#define maxGrip 45
#define maxBase 170
#define maxShou 180
#define maxElbw 150
#define midGrip 30
#define midBase 87
#define midShou 138
#define midElbw 100

/* SS 3-DOF
#define minGrip 75
#define minBase 5
#define minShou 5
#define minElbw 0
#define maxGrip 125
#define maxBase 150
#define maxShou 155
#define maxElbw 0
#define midGrip 100
#define midBase 90
#define midShou 90
#define midElbw 0
*/

Фрагмент кода #2 (Arduino) — массивы позиций

int gripPosition[100];
int basePosition[100];
int shouPosition[100];
int elbwPosition[100];
int positionIndex = 0; // индекс для массива записанных задач

Фрагмент кода #3 (Arduino) — основной цикл

void loop() {
  checkBTcmd();
  defineLocalRemote();
  execTaskCmd = digitalRead(execTaskPin);
  if (execTaskCmd == HIGH || command == "runon") {
    RunProgram();
  } else {
    recArmPosition();
  }
  command = "";
}

GitHub

https://github.com/Mjrovai/MJRoBot-Programmed-Arm

Схемы

Роботизированная рука

Схема на GitHub

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

  1. Универсальный Android-пульт на Arduino, 1Sheeld и ИК-управлении
  2. Как промышленные манипуляторы трансформируют производство: ключевые преимущества
  3. Роботизированные манипуляторы vs роботизированные руки: ключевые различия
  4. Создание анимации и игр на LCD 16×2 с Arduino UNO
  5. Умный вольтметр на Arduino и смартфоне — простое DIY-проект
  6. Удаленное IoT-управление самодельной манипулятором
  7. Сборка функционального 3D-печатного манипулятора на Arduino: пошаговое руководство
  8. Роботизированная рука 6 степеней свободы на Arduino Mega с управлением через Nunchuk
  9. Сборка вольтметра на Arduino с дисплеем Nokia 5110 — Пошаговое руководство
  10. Умная робо-рука на Arduino: простое DIY-руководство