Tabla de contenido:

Robot Mecanum Omni Wheels con motores paso a paso GRBL Arduino Shield: 4 pasos
Robot Mecanum Omni Wheels con motores paso a paso GRBL Arduino Shield: 4 pasos

Video: Robot Mecanum Omni Wheels con motores paso a paso GRBL Arduino Shield: 4 pasos

Video: Robot Mecanum Omni Wheels con motores paso a paso GRBL Arduino Shield: 4 pasos
Video: TurboPi Raspberry Pi Omnidirectional Mecanum Wheels Robot Car Kit 2024, Diciembre
Anonim
Robot Mecanum Omni Wheels con motores paso a paso GRBL Arduino Shield
Robot Mecanum Omni Wheels con motores paso a paso GRBL Arduino Shield
Robot Mecanum Omni Wheels con motores paso a paso GRBL Arduino Shield
Robot Mecanum Omni Wheels con motores paso a paso GRBL Arduino Shield
Robot Mecanum Omni Wheels con motores paso a paso GRBL Arduino Shield
Robot Mecanum Omni Wheels con motores paso a paso GRBL Arduino Shield

Mecanum Robot: un proyecto que quería construir desde que lo vi en el blog de mecatrónica de Dejan: howtomechatronics.com

Dejan realmente hizo un buen trabajo cubriendo todos los aspectos del hardware, la impresión 3D, la electrónica, el código y una aplicación para Android (inventor de la aplicación del MIT)

Este es un gran proyecto de overhoul que actualiza todas las habilidades de un creador.

Tenía pocos cambios que hacer en los proyectos.

No quería usar el PCB hecho a medida que usaba, sino un viejo escudo GRBL que tenía en casa.

Quería usar BlueTooth

Entonces:

Suministros

Escudo Arduino Uno + GRBL

Motores paso a paso

Módulo HC-06 BlueTooth

Batería de 12V Lipo

Paso 1: hardware

Hardware
Hardware
Hardware
Hardware

Imprimí las ruedas y las ensamblé como aquí:

4 motores paso a paso conectados al chasis (en mi caso, un cajón sin usar boca abajo)

Enrute los cables a la parte superior del robot.

Paso 2: Electrónica

Electrónica
Electrónica
Electrónica
Electrónica
Electrónica
Electrónica

Usé mi módulo HC-06 BT, La parte más difícil fue configurar el escudo GRBL para que funcione con 4 motores paso a paso, ya que no hay una buena guía para eso, Es necesario colocar puentes como se puede ver en la imagen adjunta, para que la salida "Herramienta" del escudo también controle un motor paso a paso. también es necesario poner el puente "Habilitar"

cableado de los 4 steppers y eso es todo.

También suministré la energía de baterías de 12 V, dos estaciones, una para Arduino y otra para GRBl Shield

Paso 3: Código Arduino

/ * === Arduino Mecanum Wheels Robot === Control de teléfono inteligente a través de Bluetooth por Dejan, www. HowToMechatronics.com Bibliotecas: RF24, www. HowToMechatronics.com AccelStepper por Mike McCauley: www. HowToMechatronics.com

* / / * 2019-11-12 Gilad Meller (https://www.keerbot.com - modificar el código para que funcione con el escudo del motor arduino GRBL Los motores paso a paso en el escudo están mapeados como (paso / dirección): 2/5 3 / 6 4/7 12/13 usando el controlador A4988 12V

El código de Dejan usa SoftwareSerial y el mío usará los pines estándar RX, TX (0, 1) del Arduino Uno Nota: Asegúrese de cambiar los pines RX TX cuando suba el boceto al arduino o la carga fallará.

* / #include

// Defina los motores paso a paso y los pines que usará AccelStepper LeftBackWheel (1, 2, 5); // (Tipo: controlador, PASO, DIR) - Stepper1 AccelStepper LeftFrontWheel (1, 3, 6); // Stepper2 AccelStepper RightBackWheel (1, 4, 7); // Stepper3 AccelStepper RightFrontWheel (1, 12, 13); // Stepper4

int entranteByte = 0, c; // para datos seriales entrantes int wheelSpeed = 100;

configuración vacía () {Serial.begin (9600); // abre el puerto serie, establece la velocidad de datos en 9600 bps // Establece los valores de semilla iniciales para los steppers LeftFrontWheel.setMaxSpeed (600); LeftBackWheel.setMaxSpeed (600); RightFrontWheel.setMaxSpeed (600); RightBackWheel.setMaxSpeed (600);

}

void loop () {if (Serial.available ()> 0) {// leer el byte entrante: entranteByte = Serial.read ();

c = entranteByte; switch (c) {caso 71: Serial.println ("Recibí Girar a la derecha W"); Gira a la derecha(); rotura; caso 65: Serial.println ("Recibí Rotate left Q"); girar a la izquierda(); rotura; caso 1: Serial.println ("Recibí BK / LFT"); moveRightBackward (); rotura; caso 2: Serial.println ("Recibí BK"); mover hacia atrás(); rotura; caso 3: Serial.println ("Recibí BK / RT"); moveRightBackward (); rotura; caso 4: Serial.println ("Recibí IZQUIERDA"); moveSidewaysLeft ();

rotura; caso 5: Serial.println ("Recibí STOP"); stopMoving (); rotura; caso 6: Serial.println ("Recibí RT"); moveSidewaysRight (); rotura; caso 7: Serial.println ("Recibí FWD / LFT"); moveLeftForward (); rotura; caso 8: Serial.println ("Recibí FWD"); moveForward (); rotura; caso 9: Serial.println ("Recibí FWD / RT"); moveRightForward (); rotura; predeterminado: Serial.print ("No es un comando"); Serial.println (entranteByte, DEC); rotura; } } //mover hacia atrás(); moveRobot ();

}

void moveRobot () {LeftBackWheel.runSpeed (); LeftFrontWheel.runSpeed (); RightFrontWheel.runSpeed (); RightBackWheel.runSpeed (); }

void moveForward () {LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed (wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (wheelSpeed); } void moveBackward () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (-wheelSpeed); RightBackWheel.setSpeed (-wheelSpeed); } void moveSidewaysRight () {LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (-wheelSpeed); RightBackWheel.setSpeed (wheelSpeed); } void moveSidewaysLeft () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (-wheelSpeed); } void rotateLeft () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (wheelSpeed); } void rotateRight () {LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed (wheelSpeed); RightFrontWheel.setSpeed (-wheelSpeed); RightBackWheel.setSpeed (-wheelSpeed); } void moveRightForward () {LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed (0); RightFrontWheel.setSpeed (0); RightBackWheel.setSpeed (wheelSpeed); } void moveRightBackward () {LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed (-wheelSpeed); RightFrontWheel.setSpeed (-wheelSpeed); RightBackWheel.setSpeed (0); } void moveLeftForward () {LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed (wheelSpeed); RightFrontWheel.setSpeed (wheelSpeed); RightBackWheel.setSpeed (0); } void moveLeftBackward () {LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed (0); RightFrontWheel.setSpeed (0); RightBackWheel.setSpeed (-wheelSpeed); } void stopMoving () {LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed (0); RightFrontWheel.setSpeed (0); RightBackWheel.setSpeed (0); }

Paso 4: Appinventor

Una nueva aplicación appinventor con una funcionalidad diferente y más simple (sin grabaciones)

Por favor envíe msg y yo se lo envío - la carga falla.

Cuídate.

Recomendado: