Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Einsatz des IoT zur Fernsteuerung eines Roboterarms

Komponenten und Verbrauchsmaterialien

Arduino MKR1000
× 1

Notwendige Werkzeuge und Maschinen

Laserschneider (generisch)

Apps und Onlinedienste

MATLAB
Arduino-IDE

Über dieses Projekt

Einführung

Ich wollte wirklich versuchen, einen Roboterarm von Grund auf neu zu entwerfen. Es gibt viele Open-Source-Designs, aber ich dachte, es wäre erfreulich, wenn ich eines aus dem Nichts entwerfen, bauen und programmieren könnte (und das war es).

Ich werde sowohl über die Design- als auch über die Programmierphase sprechen. Aber ich werde mich mehr auf die Programmierseite konzentrieren, da es nicht nur um die Steuerung der Servowinkel geht.

Hier ist ein Link zum Video des letzten Projekts in Aktion - https://www.mathworks.com/videos/how-to-control-a-robotic-arm-from-a-remote-location-using-iot-1538564659095. html.

Ich habe Simulink verwendet, um einen Arduino MKR1000 zu programmieren, der die MCU ist, die den Roboterarm steuert. Dann fügte ich die Möglichkeit hinzu, den Roboterarm von praktisch überall aus über ThingSpeak zu steuern, eine offene IoT-Plattform mit MATLAB-Analyse.

Hardware erforderlich

  • 15" x 20" 1/8-Zoll-Sperrholz
  • Arduino MKR1000
  • 5x GS9025MG-Servo
  • 2,1 mm Breadboard-freundliche DC-Buchse
  • 6 V DC Hohlstecker-Netzteil
  • Überbrückungskabel
  • 3x 2n2222a Transistoren
  • 10x M2-Muttern
  • 10x M2 x 10 Schrauben
  • 40x M3-Muttern
  • 40x M3 x 25 Schrauben

Verwendete Software

  • MATLAB
  • Simulink
  • MATLAB-Supportpaket für Arduino-Hardware
  • Simulink-Supportpaket für Arduino-Hardware
  • MATLAB-Supportpaket für ThingSpeak

Design

Ich wollte die Teilekosten niedrig halten, also habe ich dies für Hobby-Servos entworfen, insbesondere das GS-9025MG-Modell. Dies bedeutete, dass das endgültige Gewicht und die Größe begrenzt waren. Dies lag daran, dass Mikroservos nicht viel Drehmoment ausüben konnten und infolgedessen schwere Hebelarme nicht heben konnten.

Ich versuchte Prototyping mit 1/4 Zoll Sperrholz, das sich als zu schwer für die Servos erwies. Ich habe die Länge der Arme reduziert und 1/8 Zoll Sperrholz verwendet, und das hat das Servosteuerungsproblem behoben. Ich habe das Design mit Fusion 360 erstellt und das Design als .dxf-Datei heruntergeladen, die ich dann lasergeschnitten habe.

Außerdem erwies sich die Bereitstellung einer kontinuierlichen Gleichspannung aus einer Steckdose als notwendig, da die Stromaufnahme aus den Akkus sehr hoch war und diese sehr schnell entladen.

Zur Steuerung der Motoren hat der Arduino MKR1000 4 PWM-Pins, aber ich brauchte 5, um die 5 Servos zu steuern. Ich wurde kreativ und benutzte einen PWM-Pin, um 2 Servos zu steuern, und einen digitalen Pin, um zwischen den beiden Servos umzuschalten und einen nach dem anderen zu steuern.

Hier ist die Schaltung, die das beschreibt:

Hier ist die Verkabelung der Servos zum Arduino:

Programmierung

Es gab zwei Teile der Programmierung, die Prototyping-Phase, in der ich es zusammenbaute und die Servos an einen bestimmten Ort befehlen konnte, und die präzise Steuerphase, in der ich dem Servo mit ThingSpeak einen Ort befehlen konnte.

Prototyping

Mit Schiebereglern und konstanten Blöcken konnte ich den Servos auf dem Arduino befehlen, sich in bestimmte Winkel zu bewegen. Ich habe dieses Modell verwendet, um die Abweichungen zwischen dem befohlenen Winkel und den tatsächlichen Winkeln des Arms sowie den Bereich der zulässigen Winkel für jedes Servo herauszufinden.

Die Blöcke mit dem Zahnrad darauf sind die PWM-Schreibblöcke, um den Aufschlag auf einen bestimmten Winkel zwischen 0 und 180 zu befehlen.

Ich habe die inverse Kinematik für einen Arm in einer planaren 2D-Bewegung verwendet, um die Winkel aufzulösen, die erforderlich sind, um den Arm zu einer XY-Koordinate zu bewegen. Ich fand, dass dieser Link die Kinematik ziemlich gut erklärt:https://appliedgo.net/roboticarm/

Präzise Steuerung

Obwohl dies komplizierter aussieht als das andere, ist die Logik immer noch dieselbe. Die Ausgangsblöcke sind immer noch die Servo-Schreibblöcke mit den Zahnrädern. Die Eingangsblöcke sind jetzt nicht die Schieberegler-/Konstantblock-Eingänge, sondern werden vom ThingSpeak-Kanal gelesen. Ich werde später auf die Verwendung von ThingSpeak eingehen. Die Eingaben sind die X- und Y-Position des Arms, die mithilfe des MATLAB-Funktionsblocks loc2angles in befohlene Winkel für den Arm umgewandelt werden. Der Block angles2loc oben im Modell dient nur zur Überwachung des Systems, um sicherzustellen, dass der Servo Winkel, die mithilfe einer Vorwärtskinematik in die richtige Eingabeposition übersetzt werden. Eines der coolen Tools von Simulink, die ich in diesem Projekt verwendet habe, ist der Externer Modus . Dadurch konnte ich das System überwachen, während es auf dem Arduino selbst lief.

Die Blöcke mit der grauen Wolke darauf sind der ThingSpeak-Leseblock, der in das Simulink-Supportpaket für Arduino integriert ist. Ich gebe die Kanal-ID, die Datenfeldnummer, die ich abrufen möchte, und den API-Leseschlüssel ein, und es werden die Daten von diesem Kanal und Feld ausgegeben. Keine Sorge, wenn Sie mit einem dieser Begriffe nicht vertraut sind, werde ich es bald erläutern.

Verwenden von ThingSpeak:Erstellen und Verwenden eines Kanals

1. Gehe zu https://thingspeak.com/

2. Klicken Sie oben rechts auf „Anmelden“ und melden Sie sich mit Ihrem kostenlosen MathWorks-Konto an.

3. Klicken Sie auf der Dashboard-Seite auf „Neuer Kanal“

4. Geben Sie die Daten wie unten beschrieben ein. Die angezeigten Daten sind alles, was Sie ausfüllen müssen.

5. Klicken Sie unten auf „Kanal speichern“

6. Sie haben jetzt einen ThingSpeak-Kanal erstellt

7. Im MATLAB-Befehlsfenster oder mithilfe der mobilen MATLAB-App können Sie Befehle eingeben, die wie folgt aussehen:thingSpeakWrite(chID, [0.6963.94 -12 0 0], 'WriteKey', APIKEY, 'Fields', [1 2 3 4 5]);

Dadurch werden neue Daten in die angegebenen Felder im ThingSpeak-Kanal geschrieben. Sie können die Werte im zweiten Argument des Funktionsaufrufs ändern, um den Wert des entsprechenden Felds zu ändern. Nach dem Ändern der Werte sollten die Kanaldaten wie folgt aussehen:

Ausführen des Modells

Wenn Sie mit der Einrichtung des ThingSpeak-Kanals fertig sind, können Sie das Modell entweder auf dem Arduino im externen Modus ausführen oder auf der Hardware bereitstellen. Gehen Sie im Simulink-Modell zu "Model Configuration Parameters", indem Sie auf das kleine Zahnrad im oberen Menübereich klicken, wählen Sie "Hardwareimplementierung" und stellen Sie sicher, dass das "Hardware Board" das Arduino MKR 1000 ist. Unter "Target Hardware Resources" in Klicken Sie auf derselben Registerkarte auf WLAN-Eigenschaften und geben Sie die WLAN-Anmeldeinformationen ein, um auf das Netzwerk zuzugreifen.

Klicken Sie auf die grüne Schaltfläche Ausführen, um das Modell im externen Modus auszuführen, oder auf die blaue Schaltfläche Bereitstellen, um es auf der Hardware bereitzustellen.

Sobald das Modell ausgeführt wird, können Sie von MATLAB oder MATLAB mobile auf Ihrem Telefon neue Daten in die Felder im ThingSpeak-Kanal schreiben und beobachten, wie sich Ihr Roboterarm bewegt!

Code

https://www.mathworks.com/matlabcentral/fileexchange/68880-controlling-a-robotic-arm-from-anywhere-using-iot


Herstellungsprozess

  1. Universelle Fernbedienung mit Arduino, 1Sheeld und Android
  2. Münzprüfer mit Arduino steuern
  3. Arduino-Kontrollzentrum
  4. Herzfrequenzmesser mit IoT
  5. IOT - Smart Jar mit ESP8266, Arduino und Ultraschallsensor
  6. Arduino 3D-gedruckter Roboterarm
  7. Steuern Sie Arduino Rover mit Firmata und Xbox One-Controller
  8. Arduino-Befeuchtersteuerung
  9. Nunchuk-gesteuerter Roboterarm (mit Arduino)
  10. Einfacher und intelligenter Roboterarm mit Arduino