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

Kommentar hinterlassen

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