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

Arduino - Kontrollarm-Roboter über das Web

Komponenten und Verbrauchsmaterialien

Arduino UNO
× 1
PHPoC WiFi Shield für Arduino
× 1
6DOF-Arm-Roboter
× 1

Über dieses Projekt

Wenn Sie Anfänger sind, empfehle ich Ihnen, die folgenden Tutorials zu lesen:

  • Arduino - Motor
  • Arduino - Servomotor
  • Arduino - WLAN

1. Demonstration

2. Benutzeroberfläche

Der Roboterarm hat 6 Motoren.

  • Zone A:Motor 2, 3, 4 steuern (drei Handgelenke steuern)
  • Zone B:Steuermotor 1 (Steuerbasis)
  • Zone C:Steuermotor 5 (Steuerung der Greiferdrehung)
  • Zone D:Steuermotor 6 (Steuergreifer)

3. Systemarchitektur

4. Arbeitsablauf

Kundenseite (Web-Benutzeroberfläche - geschrieben in JavaScript + HTML + CSS)

Wenn ein Benutzer den Finger berührt oder streicht (oder die Maus klickt oder bewegt), können wir die Koordinaten (x, y) abrufen. Der Arbeitsablauf ist wie folgt:

Im Fall von Zone A müssen wir zur Berechnung der Winkel von Motor 2, 3, 4 eine geometrische Berechnung . durchführen . Sie können am Ende dieser Seite darauf verweisen.

Serverseitig (Arduino-Code):

Nach dem Empfang einer Reihe von Winkeln von den Kunden bewegen sich sechs Motoren allmählich von den aktuellen Winkeln zu den neuen Winkeln. Sechs Motoren sollten sich gleichzeitig bewegen und neue Winkel erreichen. Bevor wir detailliert auf die Steuerung aller Motoren eingehen, schauen wir uns an, wie Sie einen einzelnen Motor steuern. Angenommen, wir möchten einen Motor vom aktuellen Winkel (angle) zu einem neuen Winkel (new_angle) bewegen. Da die Geschwindigkeit des Motors hoch ist, sollten wir ihn verlangsamen. Dazu werden zwei folgende Schritte wiederholt, bis der Motor einen neuen Winkel erreicht:

  • Motor mit kleinen Schritten bewegen.
  • Pause eine kleine Zeit und gehe dann um einen weiteren Schritt.

Das folgende Diagramm veranschaulicht das obige Schema für den Fall, dass der neue Winkel größer als der aktuelle Winkel ist:

Wherestep_numis Anzahl der Schritte, die der Motor machen muss. Schritt und Zeit ist vordefinierte Werte. Zwei spätere entscheiden über Geschwindigkeit und Laufruhe. Das obige gilt nur für einen Roboter. Damit Roboter sich gleichzeitig bewegen und das Ziel erreichen, können wir Folgendes tun:Sechs Motoren nehmen die gleiche step_num , aber Schritt jedes Motors unterscheidet sich voneinander. Also müssen wir step_num wählen in diesem Projekt ist maximal.

Im Allgemeinen ist der Arbeitsablauf von Arduino wie folgt:

5. Geometrische Berechnung

Lassen Sie uns eine Roboterarmberechnung zu dem folgenden Geometrieproblem machen:

Bekannt

  • C ist behoben
  • Ein bekannter Punkt - D ist die Eingabe des Benutzers
  • Ein bekannter Punkt - CB, BA, AD (bezeichnet mit b, a, d)
  • Längen der einzelnen Armsegmente Finde: Winkel C, B, A Lösung:
  • Gehen Sie davon aus, dass die Winkel B und A gleich sind
  • Füge einige zusätzliche Punkte und Segmente hinzu

Berechnung

  • Wir kannten die Punkte C und D => wir können die Länge von DC berechnen (bezeichnet mit c)
  • Wir können auch die δ berechnen
  • Schauen Sie sich das Dreieck ABE an, wir können daraus schließen, dass AE =BE und ∠E =π - 2α.
  • Also:
  • Der Kosinussatz im Dreieck CDE:
  • Ändere (1) und (2) in (3), wir haben:

Vereinfachen

  • Vereinfachen Sie das oben Gesagte:
  • Da wir a, b, c und d kennen, lösen Sie die obige quadratische Gleichung und können den Wert von α berechnen. - Und β =π – α - Bis jetzt haben wir β gefunden, finden wir γ - Der Kosinussatz in den Dreiecken BDC und BDA:
  • Löse diese Gleichungen, wir können γ berechnen.
  • Ihre erforderlichen Winkel sind also:(δ+γ), β und β. Dies sind die Winkel der Motoren 2, 3 bzw. 4.

6. Quellcode

Der Quellcode enthält zwei Dateien:

  • RobotArmWeb.ino :Arduino-Code
  • Remote_arm.php :Web-App-Code, der auf PHPoC WiFi Shield oder PHPoC Shield hochgeladen wird. (Siehe Anleitung in diesem Artikel.)

Sie müssen auch die Bilddatei flywheel.png in PHPoC Shield hochladen.

Das beste Arduino Starter Kit für Anfänger

Wenn Sie nach einem Arduino-Kit suchen, lesen Sie Das beste Arduino-Kit für Anfänger


Funktionsreferenzen

  • Arduino - Servobibliothek
  • Servo.attach()
  • Servo.write()
  • Servo.writeMicroseconds()
  • Servo.read()
  • Servo.attached()
  • Servo.detach()
  • Seriell.begin()
  • Seriell.println()

Code

  • RobotArmWeb
  • remote_arm.php
RobotArmWebArduino
Dies ist Arduino Code
#include #include int angle_init[] ={90, 101, 165, 153, 90, 120}; // wenn der Motor gerade steht. In der Bahn beträgt der Winkel bei gerade stehendem Motor {0, 90, 130, 180, 0, 0};int angle_offset[] ={0, 11, -15, -27, 0, 137}; // Offset zwischen echtem Servomotor und Winkel auf webint cur_angles[] ={90, 101, 165, 153, 90, 120}; // aktuelle Winkel von sechs Motoren (Grad) int dest_angles[] ={0, 0, 0, 0, 0, 0}; // Zielwinkelint angle_max[] ={180, 180, 160, 120, 180, 137};int angle_min[] ={ 0, 0, 0, 20, 0, 75};int Direction[] ={1, 1 , 1, 1, 1 ,-1};int angleSteps[] ={3, 2, 2, 2, 4 ,4}; // Bewegungsschritte jedes Motors (Grad)Servo-Servo1;Servo-Servo2;Servo-Servo3;Servo-Servo4;Servo-Servo5;Servo-Servo6;Servo-Servo[6] ={Servo1, Servo2, Servo3, Servo4, Servo5, Servo6};PhpocServer-Server (80);PhpocClient-Client;int stepNum =0;void setup () { Serial.begin (9600); Phpoc.begin(PF_LOG_SPI | PF_LOG_NET); server.beginWebSocket("remote_arm"); servo1.attach(2); // verbindet das Servo an Pin 2 mit dem Servo-Objekt servo2.attach (3); // verbindet das Servo an Pin 3 mit dem Servo-Objekt servo3.attach (4); // verbindet das Servo an Pin 4 mit dem Servo-Objekt servo4.attach (5); // verbindet das Servo an Pin 5 mit dem Servo-Objekt servo5.attach (6); // verbindet das Servo an Pin 6 mit dem Servo-Objekt servo6.attach (7); // verbindet das Servo an Pin 7 mit dem Servo-Objekt für (int i =0; i <6; i++) servo[i].write (angle_init[i]);}void loop () { PhpocClient client =server.available (); if(client) { String angleStr =client.readLine(); if (angleStr) {Serial.println (angleStr); int KommaPos1 =-1; int KommaPos2; for(int i =0; i <5; i++) { commaPos2 =angleStr.indexOf(',', commaPos1 + 1); int angle =angleStr.substring(commaPos1 + 1, commaPos2).toInt(); dest_angles[i] =Winkel * Richtung[i] + angle_offset[i]; KommaPos1 =KommaPos2; } int angle5 =angleStr.substring(commaPos1 + 1).toInt(); dest_angles[5] =angle5 * direction[5] + angle_offset[5]; Schrittnummer =0; // Motoren in vielen kleinen Schritten bewegen, damit sich der Motor reibungslos bewegt und ein plötzliches Bewegen des Motors vermieden wird. Unten ist die Schrittberechnung für (int i =0; i <6; i++) {int dif =abs(cur_angles[i] - dest_angles[i]); int step =dif / angleSteps[i]; if(stepNum  0) { for(int i =0; i <6; i++) {int angleStepMove =(dest_angles[i] - cur_angles[i]) / stepNum; cur_angles[i] +=angleStepMove; if(cur_angles[i]> angle_max[i]) cur_angles[i] =angle_max[i]; sonst if(cur_angles[i]  
remote_arm.phpPHP
Dieser Code ist eine Web-App.
Arduino - Arm Robot - Web

Arduino - Control Arm Robot via Web

WebSocket :null

Schaltpläne

Es muss die externe Stromquelle für 6 Motoren bereitstellen

Herstellungsprozess

  1. Einfacher Pi-Roboter
  2. Arduino-Kontrollzentrum
  3. Einsatz des IoT zur Fernsteuerung eines Roboterarms
  4. Hindernisse vermeiden Roboter mit Servomotor
  5. Linienfolger-Roboter
  6. Arduino-Befeuchtersteuerung
  7. Arduino - Temperatur über eine serielle Schnittstelle an das Web senden
  8. Littlearm 2C:Erstellen Sie einen 3D-gedruckten Arduino-Roboterarm
  9. Autonomer Heimassistent-Roboter
  10. Roboter für supercoole Indoor-Navigation