Programmieren mit MicroPython #7: Servomotor SG90 am ESP32 betreiben

In diesem Beitrag möchte ich dir zeigen, wie du einen Servomotor vom Typ SG90 am ESP32 betreiben kannst.

Um den kleinen Servomotor vom Typ SG90 am ESP32 zu betreiben, musst du eine zusätzliche Stromquelle anschließen, ich verwende ein Power Shield für das 400 Pin Breadboard.

Den Servomotor habe ich bereits in den beiden Beiträgen zum Microcontroller Arduino Arduino, Lektion 16: Servo ansteuern sowie für den Rasppberry PI Raspberry PI Tutorial #7: Servomotor steuern beschrieben. Jedoch möchte ich in diesem Beitrag darauf eingehen was es beim ESP32 zu beachten gibt und wie dieser an dem Microcontroller programmiert wird.

benötigte Bauteile für diesen Beitrag

Du benötigst folgende Bauteile für diesen Beitrag:

Du findest alle benötigten Bauteile für diesen Beitrag auf ebay.de (passende Links habe ich den Artikeln hinterlegt). Die Servos, Breadboardkabel und vor allem die Batterien erhältst du in „Maxipackungen“ pro Stück deutlich günstiger.

Aufbau der Schaltung

Der Servomotor vom Typ SG90 verfügt über 3 Pins. Da wir eine zusätzliche Stromquelle in Form eines Power Shields verwenden, müssen wir zunächst GND vom Breadboard an den Pin „G“ des ESP32 verbinden. Vom Stecker des Servomotors wird braun an GND bzw. „-“ und rot an VCC bzw. „+“ des Breadboards angeschlossen.
Der gelbe Pin des Steckers wird an den GPIO Pin 4 des ESP32 angeschlossen.

Aufbau der Schaltung - Servomotor SG90 am ESP32
Aufbau der Schaltung – Servomotor SG90 am ESP32

Quellcode

Bevor wir mit der Programmierung beginnen können, müssen wir die technischen Daten des Servomotors SG90 im Datenblatt nachlesen. Du findest ein Datenblatt zbsp. unter http://www.ee.ic.ac.uk/pcheung/teaching/DE1_EE/stores/sg90_datasheet.pdf.

Aus diesem Datenblatt können wir entnehmen das dieser Servomotor mit einer Frequenz von 50Hz arbeitet.

#Bibliothek zum ansteuern der GPIO Pins
from machine import Pin, PWM
#Bibliothek welche die Funktion enthält den Ablauf zu Pausieren
import time 

#der Servomotor ist am GPIO 4 angeschlossen
#die Arbeitsfrequenz ist 50Hz
servo = PWM(Pin(4), freq=50, duty=77)

#Variable für den Wert einer Pause zwischen den
#Schritten des Servomotors
PAUSE = 0.05

#Endlosschleife
while(True):
  #Schleife von 0 bis 100
  for duty in range(0,100):
    servo.duty(duty)
    time.sleep(PAUSE)

  #Schleife von 100 bis 0
  for duty in range(100,0, -1):
    servo.duty(duty)
    time.sleep(PAUSE)

Video

Fazit

Einen kleinen Servomotor vom Typ SG90 am ESP32 mit MicroPython zu betreiben ist relativ einfach und auch schnell erledigt. Den Code kannst du natürlich auch nutzen, um größere Servomotoren wie den MG995 oder MG996R am ESP32 zu betreiben bzw. anzusteuern. Da diese Servomotoren deutlich mehr Leistung aufnehmen, benötigst du für diese eine stärkere Spannungsversorgung.

2DOF Aluminium Klaue (fertig aufgebaut)

Im nächsten Beitrag möchte ich dir zeigen, wie du das 16 Kanal Servo Driver Modul vom Typ PCA9685 mit MicroPython ansteuerst und somit mit nur einem GPIO Pin maximal 16 Servomotoren ansprechen kannst.

PCA9685 16 Kanal Servo Driver Shield
PCA9685 16 Kanal Servo Driver Shield

3 Kommentare

  1. Huhu,

    ich habe den Aufbau exakt nach Deinem Vorschlag gemacht (ich setze ein Heltec WiFi Kit 32 ein).
    Das Kuriose ist, dass der Servo nur wie erwartet funktioniert, wenn ich ihn direkt über das WiFi Kit mit Strom versorge (egal ob 3,3V oder 5V – funktioniert beides).
    Schließe ich ihn hingegen an ein externes Power Shield an (egal ob 3,3V oder 5V / GND des WiFi Kits ist mit GND vom Power Shield verbunden) dann brummt der Servo nur, ändert aber nicht seine Stellung.
    Hast Du eine Idee?

  2. Ich glaube das diese Setup eh nicht funktionieren kann denn den ESP32 3.3V Signal auf die GPIOs hat und den Servo 5V signal braucht oder?

    Das brummen habe ich auch wann den Servo GND nicht mit den ESP GND verbunden ist. Bei mir bewegt sich leider auch nichts.

    1. Hi,

      in dem Aufbau ist am Breadboard ein Power Supply Modul mit einer 9V Blockbatterie angeschlossen.
      Dieses Modul liefert 3,3V & 5V wobei ich hier die 5V für den Servo abgreife.

      Wichtig dabei ist das GND vom Power Supply Modul mit dem ESP32 verbunden wird.

      Gruß,

      Stefan Draeger

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht.