So steuern Sie einen Servomotor mit Arduino

So Steuern Sie Einen Servomotor Mit Arduino



Servomotor ist eine Art elektrisches Gerät, das die Position eines Objekts mit großer Präzision ändern oder drehen kann. Am Anfang wurden sie zur Steuerung von RC-Flugzeugflügeln verwendet, kurz darauf fanden sie ihren Weg in die Robotik, humanoide Roboter und viele Automatisierungsprojekte. Im Gegensatz zu Schrittmotoren ist ihre Bewegung zwischen 0o und 180o begrenzt.

Normalerweise haben Servomotoren Arme, die mit Arduino gesteuert werden können. Servomotoren bestehen aus einem Steuersystem, das Folgendes bereitstellt Rückmeldung über die aktuelle Position der Motorwelle ermöglicht diese Rückmeldung eine Bewegung mit großer Präzision.

Pinbelegung des Servomotors

Typischerweise haben die meisten Servomotoren drei Pins:







  • Vcc Pin (normalerweise rot 5V)
  • GND-Pin (normalerweise schwarz 0 V)
  • Eingangssignal-Pin (PWM-Signal von Arduino empfangen)



Funktion des Servomotors

Wir können den Servomotor steuern, indem wir den Vcc-Pin mit 5 V und den GND-Pin mit 0 V verbinden. Am gelben Farbterminal stellen wir a PWM Signal, das den Drehwinkel des Servomotors steuert. Die Breite des PWM-Signals gibt uns den Winkel an, in dem der Motor seinen Arm dreht.



Wenn wir in das Datenblatt von Servomotoren schauen, erhalten wir folgende Parameter:





  • Zeitdauer des PWM-Signals
  • Mindestbreite für PWM
  • Maximale Breite für PWM

Alle diese Parameter sind in der Arduino Servo-Bibliothek vordefiniert.

Servomotoren mit Arduino

Servomotoren sind dank Arduino super einfach zu steuern Servo-Bibliothek Dies hilft uns, unseren Code nach Bedarf anzupassen und ermöglicht es uns, den Servoarm in unserem gewünschten Winkel zu drehen.



Alle drei oben genannten Parameter sind in der Servobibliothek festgelegt. Durch die Verwendung dieser Parameter können wir den Winkel des Servomotors auf folgende Weise steuern:

  • Wenn die PWM-Signalbreite = WIDTH_MAX ist, dreht sich das Servo auf 180o
  • Wenn die PWM-Signalbreite = WIDTH_MIIN ist, dreht sich der Servo auf 0o
  • Wenn die PWM-Signalbreite dazwischen liegt WIDTH_MAX und WIDTH_MIN , dreht sich der Servomotor zwischen 0o und 180o

Wir können ein gewünschtes PWM-Signal auf einigen der Arduino-Pins erzeugen. Das PWM-Signal wird am Eingangssignal-Pin des Servomotors ausgegeben. Anschließen der verbleibenden zwei Pins des Servos an 5 V und GND von Arduino.

So steuern Sie den Servomotor mit Arduino

Hier werde ich erklären, wie wir unseren Servomotor mit Arduino verbinden und programmieren können. Alles was Sie brauchen ist:

  • Arduino UNO
  • USB-B-Kabel
  • Servomotor
  • Überbrückungsdrähte

Wie man Servo mit Arduino programmiert

Im Folgenden sind einige einfache Schritte aufgeführt:

Schritt 1: Vordefinierte Servobibliothek einbinden:

# enthalten < Servo.h >

Schritt 2: Servoobjekt erstellen:

Servo myservo;

Tipp: Falls Sie mehr als einen Servomotor steuern, müssen Sie mehrere Servoobjekte erstellen:

Servo myservo1;
Servo myservo2;

Schritt 3: Stellen Sie den Steuerstift (9) auf Arduino Uno ein, der das PWM-Signal an den Eingangssignalanschluss des Servos sendet:

meinservo.attach ( 9 ) ;

Schritt 4: Drehen Sie den Winkel des Servomotors auf den gewünschten Wert, z. B. 90o:

meinservo.write ( Pos ) ;

Arduino-Code

Öffnen Sie das Servomotor-Beispielprogramm von Datei > Beispiel > Servo > Sweep , ein neues Fenster öffnet sich und zeigt uns unsere Servoskizze:

#include

Servo myservo; // Servo-Objekt wird erstellt zum Steuerung des Servomotors
intpos = 0 ; // Um die Servoposition zu speichern, wird eine neue Variable erstellt
ungültige Einrichtung ( ) {
meinservo.attach ( 9 ) ; // dieser Wille einstellen Arduino-Stift 9 zum PWM-Ausgang
}
Leere Schleife ( ) {
zum ( Pos = 0 ; Pos = 0 ; pos -= 1 ) { // geht von 180 zu 0 Grad
meinservo.write ( Pos ) ; // Sagen Sie dem Servo, dass er in die Position „pos“ gehen soll
Verzögerung ( 5 ) ; // wartet zum 5 ms, damit das Servo die Position erreichen kann
}
}

Sobald das Programm kompiliert und hochgeladen ist, beginnt sich der Servomotor langsam von der Startposition 0 Grad bis 180 Grad zu drehen, ein Grad nach dem anderen, genau wie Schritte. Wenn der Motor eine 180-Grad-Drehung abgeschlossen hat, beginnt er seine Drehung in die entgegengesetzte Richtung zu seinem Startpunkt, d. h. 0 Grad.

Schema

So steuern Sie den Servomotor mit dem Potentiometer

Wir können die Position des Servomotors auch von Hand steuern. Dazu brauchen wir eine Potentiometer . Potentiometer hat drei Stifte. Verbinden Sie die beiden äußeren Pins mit 5V Vcc und GND von Arduino und den mittleren mit dem A0-Pin auf der Arduino-Platine.

So programmieren Sie Servo mit Potentiometer

Der größte Teil der Skizze für das Potentiometer ist mit dem vorherigen Beispiel identisch. Der einzige Unterschied ist eine neue Variable Wert und Subpin wird vor dem Setup- und Schleifenabschnitt des Codes definiert.

int potpin = A0;
int val;

Im Schleifenabschnitt wird der analoge Pin A0 verwendet, um Werte für Potentiometer mit Funktion zu lesen analogRead() . Arduino-Boards enthalten einen 10-Bit-ADC (Analog-Digital-Wandler), der uns Werte zwischen 0 und 1023 gibt, je nachdem, an welcher Position sich das Potentiometer befindet:

val = analogRead ( Subpin ) ;

Zuletzt haben wir verwendet Karte() Funktion, um Zahlen von 0 bis 1023 entsprechend dem Winkel des Servos neu zuzuordnen, da wir wissen, dass Servomotoren nur zwischen 00 und 1800 rotieren können.

Wert = Karte ( Wert, 0 , 1023 , 0 , 180 ) ;

Arduino-Code

Öffnen Sie die Knopfskizze, die in Arduino IDE verfügbar ist, gehen Sie zu Dateien > Beispiele > Servo > Knopf . Es öffnet sich ein neues Fenster, das uns unsere Knopfskizze für Servo zeigt:

#include
Servo myservo; // Erstellen eines Servoobjekts namens myservo
int potpin = A0; // Analog-Pin definieren zum Potentiometer
int val; // Variable die Wille lesen analoge Pin-Werte zum Potentiometer

ungültige Einrichtung ( ) {
meinservo.attach ( 9 ) ; // definierter Stift 9 zum PWM-Eingangssignal des Servos auf Arduino
}
Leere Schleife ( ) {
val = analogRead ( Subpin ) ; // liest den Wert vom Potentiometer ( Wert zwischen 0 und 1023 )
Wert = Karte ( Wert, 0 , 1023 , 0 , 180 ) ; // Skalieren Sie den Wert, der mit dem Servo verwendet werden soll ( Wert zwischen 0 und 180 )
meinservo.write ( Wert ) ; // setzt Servoposition mit skaliertem Wert
Verzögerung ( fünfzehn ) ; // wartet zum das Servo in Position zu bringen
}

Der obige Code hilft uns, die Servomotorwelle mit einem Potentiometer zu steuern, die Welle dreht sich zwischen 0 und 180 Grad. Wir können auch die Geschwindigkeit zusammen mit der Richtung des Servos beibehalten, indem wir es verwenden.

Schaltplan

Wie viele Servomotoren kann ich mit Arduino verbinden?

Die maximale Anzahl von Servomotoren, die Arduino UNO verarbeiten kann, beträgt bis zu 12 mit der Arduino-Bibliothek für Servo und maximal 48 Servos kann mit Boards wie Mega verbunden werden.

Tipp: Wir können Servo direkt mit Arduino-Strom betreiben, aber denken Sie daran, wenn Servomotoren mehr als ziehen 500mA dann kann Ihr Arduino-Board automatisch zurückgesetzt werden und Strom verlieren. Es wird empfohlen, immer eine eigene Stromversorgung für Servomotoren zu verwenden.

Fazit

In diesem Tutorial haben wir den Steuermechanismus von Servomotoren mit Arduino behandelt. Wir haben die Grundlagen der Steuerung von Servoposition und -geschwindigkeit mit Potentiometern behandelt. Jetzt haben Sie eine Vorstellung von Servo und die Möglichkeiten für Ihre Robotik, RC-Projekte und Automatisierung mit Servo sind endlos.