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

Умный Arduino-автомат: полное руководство по мехатронке DIY

В этом проекте научимся делать Arduino-торговый автомат. Весь процесс: резка и сборка МДФ, электроника, код.

Смотрите видео или читайте урок.

Обзор

4 отдающие ячейки на сервоприводах непрерывного вращения (DS04-NFC), подвижная платформа (карьер) на двух шаговых двигателях, LCD 16×2, 4 кнопки выбора, монетоприёмник (IR-датчик). Платформа делает проект сложнее и интереснее — отлично для курсовых по мехатронике.

Умный Arduino-автомат: полное руководство по мехатронке DIY

Сборка корпуса

МДФ 8 мм, разметка по 3D-модели (Thangs). Круговая пила (самоделка на базе Creativity Hero), лобзик для вырезов и мелких деталей. Осторожно — травмоопасно!

Умный Arduino-автомат: полное руководство по мехатронке DIY
Умный Arduino-автомат: полное руководство по мехатронке DIY
Умный Arduino-автомат: полное руководство по мехатронке DIY

Сборка на клее и саморезах 3 мм, угловые зажимы, контрсверловка. F-зажимы для больших панелей.

Рельсовая система

Алюминиевые трубы: горизонтальная 16 мм (2×27 см), вертикальная 20 мм (3×45 см). Пазы фрезой, трубы закреплены. Слайдеры: доски 21×21 см, M8 шпильки, подшипники 22 мм (верт.) и 16 мм (гориз.). Устранение люфта: расширение пазов, перпендикулярные пробивки, затяжка трёщотками.

Умный Arduino-автомат: полное руководство по мехатронке DIY
Умный Arduino-автомат: полное руководство по мехатронке DIY
Умный Arduino-автомат: полное руководство по мехатронке DIY

Дополнительно: болт с шкивом для горизонтального ремня, 2 подшипника на левом вертикальном рельсе. Справа — шаговый горизонтального движения на МДФ с опорой, собранный на вертикальном слайдере. Контейнер на горизонтальном слайдере из кусков дерева на клее. Эпоксидка в пазы, дополнительная доска для жёсткости. Сборка рельс в корпусе — работает отлично.

Умный Arduino-автомат: полное руководство по мехатронке DIY
Умный Arduino-автомат: полное руководство по мехатронке DIY

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

Умный Arduino-автомат: полное руководство по мехатронке DIY

Отдающие механизмы

Спирали из 3 мм проволоки на банке 7 см диаметром. Клеим на серво непрерывного вращения термоклеем.

Умный Arduino-автомат: полное руководство по мехатронке DIY
Умный Arduino-автомат: полное руководство по мехатронке DIY

Фронтальная панель

Дверца на петлях, магнитный защёлк. Акрил 5 мм на большом окне, алюминий на малом. 4 отверстия под кнопки, монетоприёмник, LCD. Дрилл + металлопила. Электроника на алюминии, крепится к двери M5 болтами. Два микроконцевика для парковки карьера. Направляющая для монет (клей). IR-датчик близости для монет.

Умный Arduino-автомат: полное руководство по мехатронке DIY
Умный Arduino-автомат: полное руководство по мехатронке DIY

Электрическая схема

Умный Arduino-автомат: полное руководство по мехатронке DIY

БП 12В ≥2А (шаговые + LED-лента). Buck converter LM2596 → 5В для серв, LCD, датчиков, кнопок. Сервы DS04-NFC — 5В, PWM от Arduino. Шаговые — драйверы A4988. Кнопки и концевики — на GND и цифровые пины с INPUT_PULLUP.

Компоненты

  • DC-DC LM2596 Buck Converter
  • LCD 16×2
  • Серво непрерывного вращения 360° (4 шт.)
  • Шаговые NEMA 17 (2 шт.)
  • Драйверы A4988 (2 шт.)
  • IR-датчик близости
  • Кнопки (4), микроконцевики (2)
  • Arduino

Провода — перемычки (немного беспорядок, но работает). LED-ленты на двери для подсветки.

Умный Arduino-автомат: полное руководство по мехатронке DIY

Arduino-код

Библиотеки: LiquidCrystal, Servo. Пины: LCD(27-22), сервы(4-7), шаговые: V(0,1), H(2,3), монетник(9), кнопки(13-10), концевики V(15), H(14).

#include <LiquidCrystal.h> #include <Servo.h>
LiquidCrystal lcd(27,26,25,24,23,22);
Servo servo1,servo2,servo3,servo4;
#define dirPinVertical 0 #define stepPinVertical 1
#define dirPinHorizontal 2 #define stepPinHorizontal 3
#define coinDetector 9
#define button1 13 #define button2 12 #define button3 11 #define button4 10
#define microSwitchV 15 #define microSwitchH 14
int buttonPressed;
void setup() {
  lcd.begin(16,2);
  servo1.attach(4); servo2.attach(5); servo3.attach(6); servo4.attach(7);
  pinMode(dirPinVertical,OUTPUT); pinMode(stepPinVertical,OUTPUT);
  pinMode(dirPinHorizontal,OUTPUT); pinMode(stepPinHorizontal,OUTPUT);
  pinMode(coinDetector,INPUT);
  pinMode(button1,INPUT_PULLUP); pinMode(button2,INPUT_PULLUP);
  pinMode(button3,INPUT_PULLUP); pinMode(button4,INPUT_PULLUP);
  pinMode(microSwitchV,INPUT_PULLUP); pinMode(microSwitchH,INPUT_PULLUP);
  // Парковка по концевикам
  digitalWrite(dirPinVertical,HIGH);
  while(true){ if(digitalRead(microSwitchV)==LOW){ moveUp(70); break; }
    digitalWrite(stepPinVertical,HIGH); delayMicroseconds(300);
    digitalWrite(stepPinVertical,LOW); delayMicroseconds(300); }
  digitalWrite(dirPinHorizontal,LOW);
  while(true){ if(digitalRead(microSwitchH)==LOW){ moveLeft(350); break; }
    digitalWrite(stepPinHorizontal,HIGH); delayMicroseconds(300);
    digitalWrite(stepPinHorizontal,LOW); delayMicroseconds(300); }
}

Loop(): «Insert a coin!» → ждём LOW на coinDetector → «Select your item 1,2,3,4?» → ждём кнопку → «Delivering...» → switch по buttonPressed.

while(true){ if(digitalRead(coinDetector)==LOW) break; }
while(true){
  if(digitalRead(button1)==LOW){buttonPressed=1;break;}
  if(digitalRead(button2)==LOW){buttonPressed=2;break;}
  if(digitalRead(button3)==LOW){buttonPressed=3;break;}
  if(digitalRead(button4)==LOW){buttonPressed=4;break;}
}

Case 1 (верхний левый): moveUp(4900), moveLeft(1700), servo1 2000μs 950мс → стоп 1500μs, возврат moveRight(1700), moveDown(4900). Case 2 (верхний правый): только moveUp(4900), servo2. Case 3 (нижний левый): moveUp(2200), moveLeft(1700), servo3, возврат. Case 4 (нижний правый): moveUp(2200), servo4, moveDown(2200). Драйверы A4988 в 1/4 шага → 4900 шагов на верх.

case 1:
  moveUp(4900); delay(200); moveLeft(1700); delay(300);
  servo1.writeMicroseconds(2000); delay(950); servo1.writeMicroseconds(1500); delay(500);
  moveRight(1700); delay(200); moveDown(4900); break;
servo1.writeMicroseconds(2000); delay(950); servo1.writeMicroseconds(1500);

Функции moveUp/Down/Left/Right: установка DIR, цикл шагов с задержкой 300 мкс. В конце «Item delivered!» на 2 сек.

void moveUp(int steps){
  digitalWrite(dirPinVertical,LOW);
  for(int x=0;x

Просто и работает. Вопросы в комментариях, смотрите коллекцию проектов.

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

  1. Торговые автоматы: индустрия США на $36,6 млрд
  2. Сборка домашней машины для написания домашних заданий (плоттер-писатель)
  3. DIY-консоль управления Photoshop на Arduino Nano RP2040 Connect
  4. Создание потрясающей системы Ambilight для монитора на Arduino
  5. Создание ультразвукового левитатора на Arduino: пошаговое руководство
  6. Умный вольтметр на Arduino и смартфоне — простое DIY-проект
  7. Надежный ИК-датчик пульса на Arduino: пошаговое руководство
  8. Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
  9. Сборка вольтметра на Arduino с дисплеем Nokia 5110 — Пошаговое руководство
  10. Цифровые часы на Arduino с конечным автоматом (YAKINDU Statechart Tools)