ESP32 Tutorial 17/55 - Steuerung eines Servomotors mit ESP32 und Potentiometer - ESP32 IoT Lernkit
In diesem Tutorial werden wir lernen, wie man einen Servomotor mit einem ESP32-Mikrocontroller und einem Potentiometer aus dem ESP32 IoT Lernkit von SunFounder steuert. Am Ende dieses Projekts werden Sie in der Lage sein, den Winkel des Servomotors mithilfe des Potentiometers reibungslos anzupassen, was eine präzise Steuerung ermöglicht. Dies ist eine großartige Möglichkeit, die Fähigkeiten des ESP32 zu erkunden und wie er mit Motoren kommuniziert.

Während wir in die Details eintauchen, werden wir die erforderlichen Hardwarekomponenten, die Verdrahtungsanweisungen und Codebeispiele behandeln, um alles zum Laufen zu bringen. Für eine visuelle Darstellung sollten Sie sich das mit diesem Tutorial verbundene Video ansehen (im Video bei 0:30).
Hardware erklärt
Die Hauptkomponenten für dieses Projekt umfassen den ESP32-Mikrocontroller, einen Servomotor (SG90) und ein Potentiometer. Der ESP32 ist ein leistungsstarker Mikrocontroller, der integriertes Wi-Fi und Bluetooth bietet, wodurch er sich für IoT-Projekte eignet. Er kann verschiedene Geräte, einschließlich Motoren, mit hoher Präzision steuern.
Der SG90 Servomotor ist eine weit verbreitete Komponente, die sich ungefähr 270 Grad drehen kann. Er funktioniert mit einem Pulsweitenmodulationssignal (PWM), bei dem der Drehwinkel durch die Breite des an ihn gesendeten Pulses bestimmt wird. Der Potentiometer fungiert als verstellbarer Widerstand, der es Ihnen ermöglicht, die Spannung, die an den ESP32 gesendet wird, anzupassen, was wiederum die Position des Servos steuert.
Datenblattdetails
| Hersteller | SG |
|---|---|
| Teilenummer | SG90 |
| Logik/IO-Spannung | 3,3 V (ESP32) |
| Versorgungsspannung | 5 V |
| Ausgangsstrom (pro Kanal) | 1.2 A |
| Spitzenstrom (pro Kanal) | 2,5 A |
| PWM-Frequenzrichtlinie | 50 Hz |
| Eingangslogik-Schwellenwerte | 0,2 V (niedrig), 2,5 V (hoch) |
| Spannungsabfall / RDS(on)/ Sättigung | 0,5 V |
| Thermische Grenzen | 85 °C maximal |
| Paket | Kunststoff |
| Hinweise / Varianten | Verfügbar in verschiedenen Ausrüstungsarten |
- Stellen Sie sicher, dass der Servomotor mit einer geeigneten Spannung (5V) versorgt wird.
- Verbinden Sie den Boden des Servos mit dem Boden des ESP32 für einen gemeinsamen Bezug.
- Verwenden Sie geeignete PWM-Signale, um die Position des Servos zu steuern.
- Seien Sie sich der aktuellen Anforderungen des Servos bewusst; verwenden Sie gegebenenfalls ein externes Netzteil.
- Überprüfen Sie die richtigen Pin-Zuweisungen beim Verdrahten, um Fehlkonfigurationen zu vermeiden.
Verdrahtungsanweisungen

Um den Servomotor und den Potentiometer an den ESP32 anzuschließen, beginnen Sie damit, den Erdungskabel des Servos (typischerweise schwarz oder braun) an einen der Erdungspins am ESP32 anzuschließen. Verbinden Sie anschließend den Stromkabel (typischerweise rot) des Servos mit dem 5V-Pin am ESP32. Schließlich verbinden Sie den Signaldrähte (typischerweise orange oder weiß) vom Servo mit dem Pin.25auf dem ESP32.
Für den Potentiometer verbinden Sie einen äußeren Pin mit dem 3,3V-Pin des ESP32 und den anderen äußeren Pin mit Masse. Der mittlere Pin des Potentiometers sollte mit dem Pin verbunden werden.34auf dem ESP32. Dieses Setup ermöglicht es dem ESP32, die variable Spannungsausgabe des Potentiometers zu lesen, die verwendet wird, um die Position des Servos zu steuern.
Codebeispiele und Schritt-für-Schritt-Anleitungen
Der folgende Codeausschnitt initialisiert den Servo und setzt die Parameter zur Steuerung seiner Bewegung:
#include
Servo myServo;
const int servoPin = 25;
const int minPulseWidth = 500; // 0.5 ms
const int maxPulseWidth = 2500; // 2.5 ms
void setup() {
myServo.attach(servoPin, minPulseWidth, maxPulseWidth);
myServo.setPeriodHertz(50); // Standard 50Hz servo
}
In diesem Code schließen wir dieESP32ServoBibliothek und erstellen Sie eine Instanz des Servos mit dem NamenmyServoWir definieren die Pin-Nummer für den Servomotor und setzen die minimalen und maximalen Pulsbreiten, die den Winkelgrenzen des Servos entsprechen.
Als Nächstes werfen wir einen Blick auf die Schleife, die den Servomotor kontinuierlich hin und her bewegt:
void loop() {
for (int angle = 0; angle <= 180; angle++) {
int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
myServo.writeMicroseconds(pulseWidth);
delay(15);
}
for (int angle = 180; angle >= 0; angle--) {
int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
myServo.writeMicroseconds(pulseWidth);
delay(15);
}
}
Diese Schleife ändert schrittweise den Winkel von 0 auf 180 Grad und wieder zurück, indem sie dasmapFunktion zur Umwandlung des Winkels in die entsprechende Pulsbreite für den Servomotor. Jeder Wechsel wird von einer kurzen Verzögerung gefolgt, um dem Servomotor zu ermöglichen, seine neue Position sanft zu erreichen.
Demonstration / Was zu erwarten ist
Sobald alles verkabelt und der Code hochgeladen ist, sollten Sie den Servomotor sehen, der sich sanft von 0 bis 180 Grad und wieder zurück bewegt. Wenn Sie den Potenziometer anpassen, sollte der Servomotor die neue Position basierend auf der vom Potenziometer gelieferten Spannung widerspiegeln. Seien Sie vorsichtig bei umgekehrter Polarität beim Verkabeln, da dies Ihre Komponenten beschädigen kann (im Video bei 3:45).
Video-Zeiten
- 00:00 Start
- 1:56 Was ist ein Servomotor
- 5:00 Docs-Seite
- 6:33 Verkabelung für Servoantrieb erklärt
- 7:45 Auswahl des COM-Ports für ESP32 in der Arduino IDE
- 9:27 Arduino-Code erklärt
- 14:31 Demonstration der Servosteuerung mit ESP32
- 16:04 Versorgung von Servos mit anderen als 5V
- 18:47 Servokontrolle ohne die Schleife
- 20:15 Steuerung eines Servos mit einem Potentiometer
- 21:37 Servo mit Potentiometer Arduino-Code erklärt
Common Course Links
Common Course Files
Ressourcen & Referenzen
-
DokumentationESP32 Tutorial 17/55 - SunFunder Servomotor-Dokumentationdocs.sunfounder.com
Dateien📁
Datenblatt (pdf)
-
DS5160 Servomotor-Datenblatt
DS5160_datasheet.pdf0.33 MB
Andere Dateien
-
Laden Sie das SG90-Datenblatt (PDF) herunter.
robojax-servo-sg90_datasheet.pdf