Taula de continguts:

Robot Mecanum Omni Wheels amb escut Arduino per motors passos GRBL: 4 passos
Robot Mecanum Omni Wheels amb escut Arduino per motors passos GRBL: 4 passos

Vídeo: Robot Mecanum Omni Wheels amb escut Arduino per motors passos GRBL: 4 passos

Vídeo: Robot Mecanum Omni Wheels amb escut Arduino per motors passos GRBL: 4 passos
Vídeo: The Most Versatile Wheel-Mecanum Wheel Robot Base 2024, Desembre
Anonim
Robot Mecanum Omni Wheels amb escut Arduino per motors passos GRBL
Robot Mecanum Omni Wheels amb escut Arduino per motors passos GRBL
Robot Mecanum Omni Wheels amb escut Arduino per motors passos GRBL
Robot Mecanum Omni Wheels amb escut Arduino per motors passos GRBL
Robot Mecanum Omni Wheels amb escut Arduino per motors passos GRBL
Robot Mecanum Omni Wheels amb escut Arduino per motors passos GRBL

Mecanum Robot: un projecte que volia construir des que el vaig veure al bloc de mecatrònica de Dejan: howtomechatronics.com

Dejan realment va fer una bona feina cobrint tots els aspectes del maquinari, la impressió 3D, l'electrònica, el codi i una aplicació per a Android (inventor de l'aplicació del MIT)

Aquest és un gran projecte de revisió que refresca totes les habilitats d’un fabricant.

Tenia pocs canvis a fer en els projectes

No volia fer servir el PCB personalitzat que feia servir, sinó un vell escut GRBL que tenia a casa.

Volia utilitzar BlueTooth

Tan:

Subministraments

Arduino Uno + GRBL Shield

Motors pas a pas

Mòdul HC-06 BlueTooth

Bateria Lipo de 12V

Pas 1: maquinari

Maquinari
Maquinari
Maquinari
Maquinari

Va imprimir les rodes i les va muntar com aquí:

Connectat 4 motors pas a pas al xassís (en el meu cas, un calaix no utilitzat cap amunt)

Encaminat els cables a la part superior del robot.

Pas 2: electrònica

Electrònica
Electrònica
Electrònica
Electrònica
Electrònica
Electrònica

He utilitzat el mòdul HC-06 BT, El més difícil va ser configurar l'escut GRBL perquè funcionés amb 4 motors pas a pas, ja que no hi ha una bona guia per a això, És necessari posar Jumpers com es pot veure a la imatge adjunta, per tal de fer que la sortida "Tool" del blindatge controli també un motor pas a pas. també cal posar "Activa" Jumper

cablejant els 4 passos i això és tot.

També he subministrat l’alimentació de les bateries de 12V (dues potències), una per a l’Arduino i una per al GRBl Shield.

Pas 3: Codi Arduino

/ * === Robot de rodes Arduino Mecanum === Control de telèfons intel·ligents mitjançant Bluetooth de Dejan, www. HowToMechatronics.com Biblioteques: RF24, www. HowToMechatronics.com AccelStepper de Mike McCauley: www. HowToMechatronics.com

* / / * 2019-11-12 Gilad Meller (https://www.keerbot.com - modifiqueu el codi per treballar amb el blindatge del motor arduino GRBL Els motors pas a pas del blindatge es mapen com (pas / direcció): 2/5 3 / 6 4/7 12/13 mitjançant el controlador A4988 12V

El codi de Dejan utilitza SoftwareSerial i el meu utilitzarà els pins RX, TX estàndard (0, 1) de l’Arduino Uno Nota: assegureu-vos de recuperar els pins RX TX quan es carregui l’esbós a l’arduino o fallarà la càrrega.

*/ #incloure

// Definiu els motors pas a pas i els pins que utilitzaran AccelStepper LeftBackWheel (1, 2, 5); // (Tipus: driver, STEP, DIR): Stepper1 AccelStepper LeftFrontWheel (1, 3, 6); // Stepper2 AccelStepper RightBackWheel (1, 4, 7); // Stepper3 AccelStepper RightFrontWheel (1, 12, 13); // Pas4

int incomingByte = 0, c; // per a dades de sèrie entrants wheelSpeed = 100;

configuració nul·la () {Serial.begin (9600); // obre el port sèrie, estableix la velocitat de dades a 9600 bps // Estableix els valors inicials de llavor dels steppers LeftFrontWheel.setMaxSpeed (600); LeftBackWheel.setMaxSpeed (600); RightFrontWheel.setMaxSpeed (600); RightBackWheel.setMaxSpeed (600);

}

bucle buit () {if (Serial.available ()> 0) {// llegiu el byte entrant: incomingByte = Serial.read ();

c = Byte entrant; switch (c) {case 71: Serial.println ("He rebut la rotació dreta W"); rotateRight (); trencar; cas 65: Serial.println ("He rebut la rotació esquerra Q"); rotateLeft (); trencar; cas 1: Serial.println ("He rebut BK / LFT"); moveRightBackward (); trencar; cas 2: Serial.println ("He rebut BK"); moveBackward (); trencar; cas 3: Serial.println ("He rebut BK / RT"); moveRightBackward (); trencar; cas 4: Serial.println ("He rebut ESQUERRA"); moveSidewaysLeft ();

trencar; cas 5: Serial.println ("He rebut STOP"); stopMoving (); trencar; cas 6: Serial.println ("He rebut RT"); moveSidewaysRight (); trencar; cas 7: Serial.println ("He rebut FWD / LFT"); moveLeftForward (); trencar; cas 8: Serial.println ("He rebut FWD"); avançar(); trencar; cas 9: Serial.println ("He rebut FWD / RT"); moveRightForward (); trencar; per defecte: Serial.print ("No és una ordre"); Serial.println (incomingByte, DEC); trencar; }} // moveBackward (); 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); }

Pas 4: Appinventor

Una nova aplicació d’appinventor amb una funcionalitat diferent i més senzilla (sense enregistraments)

Si us plau, envieu un missatge i us envio: les càrregues fallen.

Tingueu cura.

Recomanat: