Mecanum Omni Wheels Roboter mit GRBL-Schrittmotoren Arduino Shield - Gunook
Mecanum Omni Wheels Roboter mit GRBL-Schrittmotoren Arduino Shield - Gunook
Anonim
Mecanum Omni Wheels Roboter mit GRBL-Schrittmotoren Arduino Shield
Mecanum Omni Wheels Roboter mit GRBL-Schrittmotoren Arduino Shield
Mecanum Omni Wheels Roboter mit GRBL Schrittmotoren Arduino Shield
Mecanum Omni Wheels Roboter mit GRBL Schrittmotoren Arduino Shield
Mecanum Omni Wheels Roboter mit GRBL Schrittmotoren Arduino Shield
Mecanum Omni Wheels Roboter mit GRBL Schrittmotoren Arduino Shield

Mecanum Robot - Ein Projekt, das ich bauen wollte, seit ich es auf Dejans großem Mechatronik-Blog gesehen habe: howtomechatronics.com

Dejan hat wirklich gute Arbeit geleistet und alle Aspekte von Hardware, 3D-Druck, Elektronik, Code und einer Android-App abgedeckt (MIT-App-Erfinder)

Dies ist ein großartiges Overhoul-Projekt, das alle Fähigkeiten eines Herstellers auffrischt.

Ich musste einige Änderungen an den Projekten vornehmen

Ich wollte nicht die von ihm verwendete maßgeschneiderte Platine verwenden, sondern ein altes GRBL-Schild, das ich zu Hause hatte.

Ich wollte BlueTooth verwenden

So:

Lieferungen

Arduino Uno + GRBL-Schild

Schrittmotoren

HC-06 BlueTooth-Modul

12V Lipo-Batterie

Schritt 1: Hardware

Hardware
Hardware
Hardware
Hardware

Habe die Räder ausgedruckt und wie hier zusammengebaut:

4 Schrittmotoren mit dem Chassis verbunden (in meinem Fall eine unbenutzte Schublade auf den Kopf gestellt)

Verlegen Sie die Kabel zur Oberseite des Roboters.

Schritt 2: Elektronik

Elektronik
Elektronik
Elektronik
Elektronik
Elektronik
Elektronik

Ich habe mein HC-06 BT-Modul verwendet, Der schwierigste Teil war, den GRBL-Schild so einzustellen, dass er mit 4 Schrittmotoren funktioniert, da es dafür keine gute Anleitung gibt.

Es müssen Jumper gesetzt werden, wie im beigefügten Bild zu sehen ist, damit der "Tool" -Ausgang des Schilds auch einen Schrittmotor steuert. müssen auch "Enable" Jumper setzen

Verkabelung der 4 Stepper und das wars.

Ich habe auch den Strom von 12V-Batterien geliefert - zwei stes - eine für das Arduino und eine für das GRBl Shield

Schritt 3: Arduino-Code

/* === Arduino Mecanum Wheels Robot === Smartphone-Steuerung über Bluetooth von Dejan, www. HowToMechatronics.com Bibliotheken: RF24, www. HowToMechatronics.com AccelStepper von Mike McCauley: www. HowToMechatronics.com

*/ /* 2019-11-12 Gilad Meller (https://www.keerbot.com - Ändern Sie den Code, um mit dem GRBL-Arduino-Motorschild zu arbeiten Schrittmotoren im Schild sind abgebildet als (Schritt / Richtung): 2/5 3 /6 4/7 12/13 mit A4988 Treiber 12V

Dejans Code verwendet SoftwareSerial und meiner verwendet die Standard-RX, TX-Pins (0, 1) des Arduino Uno Hinweis: Stellen Sie sicher, dass Sie die RX-TX-Pins rempve, wenn Sie die Skizze auf das Arduino hochladen, sonst schlägt der Upload fehl.

*/ #enthalten

// Definieren Sie die Schrittmotoren und die Pins, die AccelStepper LeftBackWheel (1, 2, 5) verwenden; // (Typ:Treiber, STEP, DIR) - Stepper1 AccelStepper LeftFrontWheel(1, 3, 6); // Stepper2 AccelStepper RightBackWheel(1, 4, 7); // Stepper3 AccelStepper RightFrontWheel (1, 12, 13); // Stepper4

int eingehendesByte = 0, c; // für eingehende serielle Daten Int WheelSpeed = 100;

Void setup () { Serial.begin (9600); // öffnet den seriellen Port, setzt die Datenrate auf 9600 bps // Setzt die anfänglichen Seed-Werte für die Stepper LeftFrontWheel.setMaxSpeed(600); LeftBackWheel.setMaxSpeed(600); RightFrontWheel.setMaxSpeed(600); RightBackWheel.setMaxSpeed(600);

}

Void loop () { if (Serial.available () > 0) {// das eingehende Byte lesen: eingehendeByte = Serial.read ();

c = eingehendesByte; Schalter (c) {Fall 71: Serial.println ("Ich habe Rotate Right W erhalten"); nach rechts drehen(); brechen; Fall 65: Serial.println ("Ich habe Rotate left Q erhalten"); Nach links drehen(); brechen; Fall 1: Serial.println ("Ich habe BK/LFT erhalten"); moveRightBackward(); brechen; Fall 2: Serial.println ("Ich habe BK erhalten"); rückwärts bewegen(); brechen; Fall 3: Serial.println ("Ich habe BK/RT erhalten"); moveRightBackward(); brechen; Fall 4: Serial.println ("Ich habe LINKS erhalten"); moveSidewaysLeft();

brechen; Fall 5: Serial.println ("Ich habe STOP erhalten"); nicht bewegen(); brechen; Fall 6: Serial.println ("Ich habe RT erhalten"); moveSidewaysRight(); brechen; Fall 7: Serial.println ("Ich habe FWD/LFT erhalten"); moveLeftForward(); brechen; Fall 8: Serial.println ("Ich habe FWD erhalten"); moveForward(); brechen; Fall 9: Serial.println ("Ich habe FWD/RT erhalten"); moveRightForward(); brechen; Standard: Serial.print ("Kein Befehl"); Serial.println (incomingByte, DEC); brechen; } } //rückwärts bewegen(); 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); aufrechtzuerhalten. Void moveBackward () { LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed(-wheelSpeed); RightFrontWheel.setSpeed(-wheelSpeed); RightBackWheel.setSpeed(-wheelSpeed); aufrechtzuerhalten. Void moveSidewaysRight () { LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed(-wheelSpeed); RightFrontWheel.setSpeed(-wheelSpeed); RightBackWheel.setSpeed(wheelSpeed); aufrechtzuerhalten. Void moveSidewaysLeft () { LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed(wheelSpeed); RightFrontWheel.setSpeed(wheelSpeed); RightBackWheel.setSpeed(-wheelSpeed); aufrechtzuerhalten. Void rotationLeft () { LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed(-wheelSpeed); RightFrontWheel.setSpeed(wheelSpeed); RightBackWheel.setSpeed(wheelSpeed); aufrechtzuerhalten. Void rotationRight () { LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed(wheelSpeed); RightFrontWheel.setSpeed(-wheelSpeed); RightBackWheel.setSpeed(-wheelSpeed); aufrechtzuerhalten. Void moveRightForward () { LeftFrontWheel.setSpeed (wheelSpeed); LeftBackWheel.setSpeed(0); RightFrontWheel.setSpeed(0); RightBackWheel.setSpeed(wheelSpeed); aufrechtzuerhalten. Void moveRightBackward () { LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed(-wheelSpeed); RightFrontWheel.setSpeed(-wheelSpeed); RightBackWheel.setSpeed(0); aufrechtzuerhalten. Void moveLeftForward () { LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed(wheelSpeed); RightFrontWheel.setSpeed(wheelSpeed); RightBackWheel.setSpeed(0); aufrechtzuerhalten. Void moveLeftBackward () { LeftFrontWheel.setSpeed (-wheelSpeed); LeftBackWheel.setSpeed(0); RightFrontWheel.setSpeed(0); RightBackWheel.setSpeed(-wheelSpeed); aufrechtzuerhalten. Void stopMoving () { LeftFrontWheel.setSpeed (0); LeftBackWheel.setSpeed(0); RightFrontWheel.setSpeed(0); RightBackWheel.setSpeed(0); }

Schritt 4: Appinventor

Eine neue Appinventor-App mit anderer und einfacherer Funktionalität (keine Aufzeichnungen)

Bitte senden Sie eine Nachricht und ich sende Ihnen - der Upload schlägt fehl.

Aufpassen.