Wie Servomotor funktioniert und es mit Arduino verbindet

Möchten Sie Ihrem nächsten Arduino-Projekt Bewegung hinzufügen, ohne einen Motorcontroller zu bauen? Dann könnten Servomotoren der solide Startpunkt für Sie sein.

Im Gegensatz zu Gleichstrommotoren können Sie die Positionierung dieser Motoren präzise steuern. Weisen Sie sie an, wohin sie zeigen sollen, und sie werden es für Sie tun.

Sie sind in vielen Robotikprojekten nützlich, z. B. zum Drehen der Vorderräder eines RC-Modells zum Lenken oder Schwenken eines Sensors, um sich in einem Roboterfahrzeug umzusehen.,

Was ist Servo?

Servo ist ein allgemeiner Begriff für ein Regelsystem.

Ein Closed-Loop-System verwendet das Rückkopplungssignal, um die Geschwindigkeit und Richtung des Motors anzupassen, um das gewünschte Ergebnis zu erzielen.

RC servo motor arbeitet auf dem gleichen Prinzip. Es enthält einen kleinen Gleichstrommotor, der über die Zahnräder mit der Abtriebswelle verbunden ist.

Die Abtriebswelle treibt einen Servoarm an und ist auch mit einem Potentiometer (Pot) verbunden.,

Das Potentiometer liefert eine Positionsrückmeldung zur Servosteuereinheit, bei der die aktuelle Position des Motors mit der Zielposition verglichen wird.

Entsprechend dem Fehler korrigiert das Steuergerät die tatsächliche Position des Motors, so dass es mit der Zielposition übereinstimmt.

Wie Servomotoren Arbeiten?

Sie können den Servomotor steuern, indem Sie eine Reihe von Impulsen an die Signalleitung senden. Ein herkömmlicher analoger Servomotor erwartet einen Impuls etwa alle 20 Millisekunden (d. H., signal sollte 50Hz sein).

Die Länge des Impulses bestimmt die position des Motors.

  • Wenn der Puls für 1 ms hoch ist, ist der Servowinkel Null.
  • Wenn der Impuls für 1,5 ms hoch ist, befindet sich das Servo in seiner Mittelposition.
  • Wenn der puls ist hohe für 2 ms, dann die servo wird bei 180 grad.
  • Impulse zwischen 1 ms und 2 ms bewegen die Servowelle durch die vollen 180 Grad ihrer Reise.,

Die Dauer der Impulse kann manchmal variieren mit verschiedenen Marken, und Sie können 0,5 ms für 0 Grad und 2,5 ms für 180 Grad.

Servomotor Pinout

servomotoren haben typischerweise drei anschlüsse und sind wie folgt:

GND ist eine gemeinsame boden sowohl für die motor und logik.

5V ist eine positive Spannung, die das Servo antreibt.

Die Steuerung wird für das Steuerungssystem eingegeben.,

Die farbe der drähte variiert zwischen servomotoren, aber der rote draht ist immer 5 V und GND wird entweder schwarz oder braun. Der Steuerdraht ist normalerweise orange oder gelb.

Verdrahtung Servo Motor zu Arduino UNO

Lassen sie uns haken die servo motor bis zu die Arduino.

Zum Beispiel verwenden wir den Mikro-Servomotor SG90. Es läuft auf 4.8-6VDC (5V typisch) und kann etwa 180 Grad (90 in jede Richtung) drehen.

Es verbraucht um 10mA im leerlauf und 100mA zu 250mA, wenn moving, so können wir power es up durch 5-volt ausgang auf die Arduino.,

Wenn Sie ein Servo haben, das mehr als 250mA verbraucht, sollten Sie ein separates Netzteil für Ihr Servo verwenden.

Schließen sie das Rote kabel an die 5V auf Arduino (oder DC jack) und Schwarz / Braun draht zu boden. Schließen Sie abschließend das orange / gelbe Kabel an den PWM-fähigen Pin 9 an.

Arduino Code – Sweep

Für unsere erste Arduino-Skizze verwenden wir eines der integrierten Beispiele, die mit der Arduino-IDE geliefert werden.

Gehen Sie zum Untermenü Beispiele. Wählen Sie das Servo und laden Sie die Sweep-Skizze.,

Gehen Sie weiter und laden Sie die Skizze. Sie werden sofort sehen, wie sich der Motor in eine Richtung bewegt und dann in eine andere zurückkehrt.

Erklärung:

Servos zu steuern ist keine leichte Aufgabe, aber zum Glück enthält Arduino IDE bereits eine sehr schöne Bibliothek namens Servo. Es enthält einfache Befehle, mit denen Sie das Servo schnell anweisen können, sich in einen bestimmten Winkel zu drehen.,

Wenn Sie diese Befehle verwenden möchten, müssen Sie der Arduino-IDE mitteilen, dass Sie die Bibliothek mit diesem Befehl verwenden:

#include <Servo.h>

Als nächstes deklarieren wir den Arduino-Pin, an den der Steuerstift des Servomotors angeschlossen ist.

int servoPin = 9;

Unterhalb der Zeile wird ein Servo-Objekt erstellt.,

Servo servo;

Sie können tatsächlich bis zu acht Servos auf diese Weise definieren, zum Beispiel, wenn wir zwei Servos hatten, dann könnten wir so etwas schreiben:

Servo servo1;Servo servo2;

Die Variable angle wird verwendet, um den aktuellen Winkel des Servos in Grad zu speichern.

int angle = 0;

In der Setup-Funktion verknüpfen wir das servo – Objekt mit dem Pin, der das Servo mit diesem Befehl steuert:

servo.attach(servoPin);

Die Loop-Funktion enthält tatsächlich zwei for-Schleifen., Die erste Schleife erhöht den Winkel in eine Richtung und die zweite in die entgegengesetzte Richtung.

Der folgende Befehl weist das Servo an, seine Position auf den angegebenen Winkel zu aktualisieren.

servo.write(angle);

Fehlerbehebung

Manchmal kann sich Ihr Servo schlecht benehmen, wenn Sie es direkt vom Arduino aus ausführen möchten. Der Grund dafür ist, dass das Servo insbesondere während des Starts erhebliche Leistung bezieht, wodurch das Arduino-Board zurückgesetzt werden kann.,

In diesem Fall können Sie dies normalerweise beheben, indem Sie einen ziemlich großen Elektrolytkondensator (470uF – 1000uF) zwischen GND und 5V platzieren.

Der Kondensator fungiert als Stromspeicher, sodass er beim Starten des Motors sowohl vom Kondensator als auch vom Netzteil aufgeladen wird.

Die längere Leitung des Kondensators sollte an 5V und die negative Leitung an GND angeschlossen werden.,

Steuerung Servo mit einem Potentiometer

Unser nächster Schritt ist es, ein Potentiometer hinzuzufügen, damit wir die Position des Servos durch Drehen des Knopfes steuern können.

Dieses Projekt kann sehr nützlich sein, wenn Sie das Schwenken und Neigen eines an das Servo angeschlossenen Sensors steuern möchten.

Verdrahtung

Wie der Schaltplan zeigt, benötigen Sie ein Potentiometer, jeder Wert ab 10k ist in Ordnung. Verbinden Sie ein Ende des Topfes mit Masse, das andere Ende mit dem Arduino 5V und das andere mit dem Analogeingang A0.,

Arduino Code

Die code zu machen die servo folgen die knob der position ist einfacher als zu machen es sweep.

Beachten Sie, dass es jetzt eine neue Variable namens potPin.

In der Loop-Funktion lesen wir zunächst den Wert vom analogen Pin A0.

int reading = analogRead(potPin);

Dies ergibt einen Wert zwischen 0 und 1023. Aber wir müssen es verkleinern, da sich das Servo nur um 180 Grad drehen kann.,

Eine Möglichkeit, dies zu tun, besteht darin, die Arduino map() Funktion zu verwenden, die eine Zahl von einem Bereich in einen anderen neu abbildet. Die folgende Zeile ändert also den Messwert, um den Winkel zwischen 0 und 180 Grad darzustellen.

int angle = map(reading, 0, 1023, 0, 180);

Schließlich verwenden wir den Befehl write(), der das Servo anweist, seine Position auf den vom Potentiometer ausgewählten Winkel zu aktualisieren.

servo.write(angle);

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.