Roboterarme haben die menschliche Kraft im industriellen Bereich ersetzt. In Fabriken übernehmen Roboterarme die Aufgabe, Lasten mit einem Gewicht und einer Größe zu tragen und zu drehen, die ein Mensch nicht tragen kann. Mit einer Genauigkeit von einem Tausendstel Millimeter positionieren zu können, liegt über der Empfindlichkeit einer menschlichen Hand. Wenn Sie sich die Produktionsvideos von Automobilfabriken ansehen, werden Sie erkennen, wie wichtig die Roboterarme sind. Der Grund, warum sie Roboter genannt werden, liegt darin, dass sie so programmiert werden können, dass sie die gleiche Arbeit in endlosen Wiederholungen ausführen. Der Grund, warum es Arm genannt wird, liegt darin, dass es eine gegliederte Struktur wie unsere Arme hat. Wie viele verschiedene Richtungen ein Roboterarm drehen und bewegen kann, wird in Achsen ausgedrückt. Roboterarme werden auch zum Schnitzen und Formen von Aluminium und verschiedenen Metallen verwendet. Diese als 7-Achsen-CNC-Fräser bezeichneten Geräte können Metalle so formen, wie ein Bildhauer Schlamm formt.
Abhängig vom Einsatzzweck des Roboterarms, Schrittmotoren Und Servomotor kann verwendet werden. Mit PicoBricks können Sie Projekte mit Servomotoren erstellen.
Details und Algorithmus
Wenn ein Objekt wird auf dem erkannt LDR Sensor, RGB-LED wird ROT und der Roboterarm führt die folgenden Manöver aus:
- Öffnen Sie den Greifer
- nach unten bewegen
- Schließen Sie den Greifer
- nach oben bewegen
Nach Abschluss der Armbewegung wird die RGB-LED grün.
Basierend auf diesen Bewegungen sollten die Anfangspositionen der beiden Servos wie folgt sein:
- Servo1 steuert den Greifer sollte sich in der GESCHLOSSENEN Position befinden
- Servo 2 steuert auf/ab Die Bewegung sollte sich in der AUF-Position befinden
Es werden vier verschiedene Bewegungssteuerungslogiken benötigt:
- UP: Führen Sie eine 90-Grad-Bewegung in 2-Grad-Schritten aus
- AB: Führen Sie eine 90-Grad-Bewegung in Schritten von -2 Grad aus
- OFFEN: Greifer auf 90 Grad positionieren
- SCHLIESSEN: Greifer auf -60 Grad positionieren
Alle Bewegungen werden von einem akustischen Feedback begleitet und auf dem angezeigt GEHT zur Fehlerbehebung. Später können Sie die Sprachblöcke bei Bedarf entfernen.
Die Bewegungen des Servomotors sind sehr schnell. Um die Bewegung zu verlangsamen, bewegen wir die Servomotoren in 30-Millisekunden-Intervallen jeweils um 2 Grad, um eine 90-Grad-Bewegung abzuschließen. Wir werden dies nicht tun, damit sich der Greifer schließt.
3D-Drucken und montieren Sie die notwendigen Teile dafür Greifer aus dem Link Hier.
Komponenten
1X PicoBricks
2X Servomotor
4X einfache Verbindungskabel
Überbrückungskabel
Schaltplan
Sie können die Module von Picobricks ohne Verkabelung programmieren und betreiben. Wenn Sie die Module getrennt von der Platine verwenden möchten, sollten Sie die Modulverbindungen mit Grove-Kabeln herstellen.
Bauphasen des Projekts
Bereiten Sie die Teile des Pan-Tilt-Kits vor, um das Projekt vorzubereiten. Tragen Sie Ihre 3D-gedruckten Teile, Abfallkartonstücke, heißen Silikonkleber und eine Schere bei sich.
1) Zunächst bereiten wir den festen Arm des Roboterarms vor. In die Rundung von Teil D einen 8 cm hohen Pappzylinder formen. Auf Teil D aufsetzen und mit Silikon befestigen bzw. festkleben.
2) Platzieren Sie den Kopf, der aus dem Servomotorpaket kam, auf dem C-Teil, indem Sie ihn etwas kürzen. Befestigen Sie es mit den kleinsten Schrauben aus dem Pan Tilt-Kit.
3) Befestigen Sie die Teile A und C mit 2 Spitzschrauben.
4) Befestigen Sie den Servomotor innen an Teil C. Platzieren Sie dann den Servomotor an Teil B und schrauben Sie ihn fest.
5) Für den Halter schneiden Sie einen der Servomotorköpfe in der Mitte des Getriebeteils, das Sie auf dem 3D-Drucker gedruckt haben, aus und setzen Sie ihn in das Getriebe ein. Anschließend mit dem Servomotor verschrauben.
6) Kleben Sie das 3D-gedruckte Lineargetriebe und den Griff mit starkem Kleber zusammen.
7) Platzieren Sie das Servo in der 3D-Druckhalterung und befestigen Sie es. Das geht mit heißem Silikon oder durch Schrauben. Achten Sie beim Aufsetzen des Servogetriebes auf das Lineargetriebe darauf, dass es vollständig geöffnet ist.
8) Befestigen Sie das Halteservosystem mit Silikon an Teil B.
9) Führen Sie das in Schritt 3 vorbereitete Stück über den Zylinder, den wir im ersten Schritt aus Pappe vorbereitet haben, und fixieren Sie es mit Silikon.
10) Stecken Sie die Motorantriebsbrücken auf die Servostifte. Verbinden Sie das Kabel des Halteservos mit dem GPIO21 und das Kabel des Kippservos mit dem GPIO22.
11) Platzieren Sie die Kraftfahrer, Summer, LDR- und RGB-LED-Modul auf einer Plattform und platzieren Sie den Roboterarm entsprechend auf der Plattform. Mit dem 3D-Stiftdrucker können Sie Ihr Projekt nach Ihren Wünschen anpassen.
MicroBlocks-Codes der PicoBricks
Sie können auf die Microblocks-Codes des Projekts zugreifen, indem Sie das Bild auf die Registerkarte „Microblocks Run“ ziehen oder auf klicken Taste.
Registerkarte „Mikroblöcke ausführen“.
MicroPython-Codes der PicoBricks
Roboterarmcode:
vom Maschinenimport Pin, PWM, ADC
aus utime import schlaf
von Picobricks Import WS2812
# Bibliotheken definieren
ws = WS2812(6, Helligkeit=0,3)
ldr = ADC(27)
Summer = PWM(Pin(20, Pin.OUT))
servo1 = PWM(Pin(21))
servo2 = PWM(Pin(22))
# Definieren Sie LDR-, Summer- und Servomotor-Pins
servo1.freq(50)
servo2.freq(50)
Buzzer.freq(440)
# Definieren Sie die Frequenzen der Servomotoren und des Summers
# RGB-Farbeinstellungen
ROT = (255, 0, 0)
GRÜN = (0, 255, 0)
SCHWARZ = (0, 0, 0)
angleupdown = 4770
angleupdown2 = 8200
def up():
globaler Winkelaufwärtsabwärts
für i im Bereich(45):
Winkelaufwärtsabwärts += 76
servo2.duty_u16(angleupdown)
Schlaf(0,03)
Buzzer.duty_u16(2000)
Schlaf(0.1)
Buzzer.duty_u16(0)
# Servo2 steigt in festgelegten Intervallen an
def down():
globaler Winkelaufwärtsabwärts
für i im Bereich(45):
angleupdown -= 76
servo2.duty_u16(angleupdown)
Schlaf(0,03)
Buzzer.duty_u16(2000)
Schlaf(0.1)
Buzzer.duty_u16(0)
# Servo2 fällt in festgelegten Intervallen ab
def open():
globaler Winkelupdown2
für i im Bereich(45):
angleupdown2 += 500
servo1.duty_u16(angleupdown2)
Schlaf(0,03)
Buzzer.duty_u16(2000)
Schlaf(0.1)
Buzzer.duty_u16(0)
# Servo1 dient zum Öffnen der Klammern
def close():
globaler Winkelupdown2
für i im Bereich(45):
angleupdown2 -= 500
servo1.duty_u16(angleupdown2)
Schlaf(0,03)
Buzzer.duty_u16(2000)
Schlaf(0.1)
Buzzer.duty_u16(0)
# Servo1 dient zum Schließen der Klammern
offen()
servo2.duty_u16(angleupdown)
ws.pixels_fill(SCHWARZ)
ws.pixels_show()
während True:
wenn ldr.read_u16() > 20000:
ws.pixels_fill(ROT)
ws.pixels_show()
schlafen(1)
Buzzer.duty_u16(2000)
schlafen(1)
Buzzer.duty_u16(0)
offen()
Schlaf(0,5)
runter()
Schlaf(0,5)
schließen()
Schlaf(0,5)
hoch()
ws.pixels_fill(GRÜN)
ws.pixels_show()
Schlaf(0,5)
# Gemäß den vom LDR empfangenen Daten leuchten die RGB-LEDs rot und grün und die Servomotoren bewegen sich
Roboterarm-Servocode:
vom Maschinenimport Pin, PWM
servo1 = PWM(Pin(21))
servo2 = PWM(Pin(22))
servo1.freq(50)
servo2.freq(50)
servo1.duty_u16(8200) # 180 Grad
servo2.duty_u16(4770) # 90 Grad
Arduino C-Codes der PicoBricks
#include
#ifdef __AVR__
#include
#endif
#PIN 6 festlegen
#define NUMPIXEL 1
Adafruit_NeoPixel Pixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 500 // Zeit (in Millisekunden) für die Pause zwischen den Pixeln
#include
Servo myservo1;
Servo myservo2;
int angleupdown;
void setup() {
pinMode(20, OUTPUT);
pinMode(27, INPUT); // Eingabe- und Ausgabepins definieren
pixels.begin(); // Initialisiere die NeoPixel-Bibliothek.
pixels.clear(); // Alle Pixel auf „Aus“ initialisieren
myservo1.attach(21);
myservo2.attach(22); // Servos anbringen.
Offen();
Winkelobenunten = 180;
myservo2.write(angleupdown);
}
void loop() {
if (analogRead(27) > 150) {
pixels.setPixelColor(0, pixels.Color(255, 0, 0)); // Rote Farbe.
pixels.show();
Verzögerung (1000);
Ton(20, 700); // Den Summer ertönen lassen
Verzögerung (1000);
noTone(20); // Stoppen Sie den Summer
Offen();
Verzögerung (500);
Runter();
Verzögerung (500);
Schließen();
Verzögerung (500);
Hoch();
pixels.setPixelColor(0, pixels.Color(0, 255, 0)); // Grüne Farbe.
pixels.show();
Verzögerung (500);
// Lösche die Farbe nach einer Verzögerung.
pixels.setPixelColor(0, pixels.Color(0, 0, 0)); // Aus
pixels.show();
Verzögerung (500);
Offen();
Winkelobenunten = 180;
myservo2.write(angleupdown); // Servoposition zurücksetzen
}
}
void Open() {
myservo1.write(180); // Servo öffnet
}
void Close() {
myservo1.write(30); // Servo schließt
}
void Up() {
for (int i = 0; i < 45; i++) {
angleupdown += 2;
myservo2.write(angleupdown); // Servo nach oben bewegen
Verzögerung(30);
}
}
void Down() {
for (int i = 0; i < 45; i++) {
angleupdown -= 2;
myservo2.write(angleupdown); // Servo nach unten bewegen
Verzögerung(30);
}
}
GitHub-Projektseite