Raspberry Pi Pico: Taste auf Tastatur mit Servo-Motor SG90 betätigen

Der Servo-Motor SG90 ist ein kleiner Servo-Motor, der oft unter der Bezeichnung Micro- oder Mini-Servo bekannt ist. Er eignet sich überall dort, wo mit wenig Kraftaufwand etwas bewegt werden soll.

Bei diesem Aufbau wollen wir den Servo-Motor SG90 an einer Tastatur anbringen, um damit eine Taste zu drücken.

Dazu müssen wir zwei Dinge klären:

1. Wie können wir den Servo-Motor befestigen?
2. Um wieviel Einheiten muss die Achse des Servo-Motors gedreht werden, um die Taste zu drücken und wieder loszulassen?

So gehen wir vor:

1. Als Befestigung würde sich eine Mini-Klammer eignen. Aus Sicherheitsgründen, sollte man den Motor am Anfang nur mit dem Finger fixieren.
2. Um wie viel die Achse des Motors bewegt werden muss, hängt davon ab, wie viel die Taste gedrückt werden muss. Das Wieviel muss exakt ermittelt werden. Bei Zuwenig, bleibt die Taste ungedrückt, bei Zuviel nimmt die Taste oder der Motor Schaden.

Der SG90 ist ein Servo-Motor, der per PWM-Signal gesteuert wird. Die Position, an die sich der Motor bewegt, wird über den Winkel in Grad definiert. Der Drehbereich liegt ungefähr zwischen 0 und 180 Grad.

Es geht darum, den einzusetzenden Servo-Motor SG90 zu testen und die Zubehörteile, die auf die Achse gesteckt werden können auszurichten.
Wenn Du noch nicht mit dem Servo-Motor SG90 gearbeitet hast, dann schaue Dir bitte die grundlegenden Informationen zum SG90 an.

Wichtig ist, dass Du die Motor-Achse zuerst in Grundstellung bringst, auf der Achse das Bauteil für die Betätigung der Taste befestigst und anschließend durch ausprobieren herausfindest, welcher Wert für die Position erforderlich ist, damit die Taste gedrückt wird.

Warn- und Sicherheitshinweise

Es gibt gute Gründe, warum Anlagen und Aufbauten über Notausschalter verfügen (meist gelber Kasten mit rotem Druckknopf). Selbst kleine Motoren können genug Kraft haben, um Dinge zu beschädigen oder Personen zu verletzen.
Wenn Du die folgenden Warnhinweis nicht befolgst, wirst Du zwangsläufig mit zerstörten oder beschädigten Teilen oder Objekten rechnen müssen.

  1. Wenn Du mit den folgenden Programmcodes experimentierst, dann sollte der angeschlossen Motor ausgebaut sein. Gemeint ist, die Motorachse sollte sich frei bewegen können. Warum? Wenn Du versehentlich falsche Werte im Programmcode verwendest, Dein Programmcode einen Fehler enthält oder der Motor in einer unbekannten Stellung steht, dann kann Dein Motor das zerstören was an ihm befestigt ist oder in Kontakt kommt, sobald er ein Steuerungssignal bekommt und zu drehen beginnt.
  2. Wenn Dein Motor nicht das macht, was Du erwartest, dann NICHT den Programmcode unterbrechen oder beenden, sondern die Betriebsspannung des Motors unterbrechen. Warum? Wenn Du falsche Werte im Programmcode verwendest, dann dreht der Motor sich unter Umständen immer weiter, weil das PWM-Signal immer noch anliegt. Der Motor hört erst dann auf zu drehen, wenn seine Stromversorgung unterbrochen wird.
  3. Bei Programmende sollte immer ein Abschalten des PWM-Signals im Programmcode erfolgen.

Aufbau und Bauteile

Raspberry Pi Pico mit SG90

Raspberry Pi Pico SG90
Pin 40 +5V VBUS VCC
Pin 38 GND GND
Pin 34 GPIO 28 PWM

Sicherheitshinweis: Dein Aufbau sollte eine leicht zugängliche Unterbrechung der VCC-Leitung des Motors vorsehen, damit der Motor im Notfall schnell außer Betrieb genommen werden kann (Notaus).

Schnell und einfach alle Bauteile zusammen bestellen

Programmcode

Im Programmcode werden verschiedene Parameter definiert. Manche davon müssen beim Aufbau berücksichtigt werden. Andere müssen für den Anwendungsfall ermittelt werden.

  • servo_pin: Ist der GPIO, der als Ausgang für das PWM-Signal verwendet werden soll. Dieser GPIO wird mit dem Servo verbunden.
  • pos0: Ist der Wert für die Grundstellung bei nicht gedrückter Taste. Dieser Wert muss eventuell angepasst werden.
  • pos1: Ist der Wert für die Position des Motors bei gedrückter Taste. Dieser Wert muss in der Regel angepasst werden. Vorher muss man ihn durch ausprobieren herausfinden.
  • repeat: Ist die Anzahl der Wiederholung, die die Taste gedrückt werden soll.
  • push: Ist die Dauer in Sekunden, die die Taste gedrückt werden soll.
  • pause: ist die Dauer in Sekunden, wie lange gewartet werden soll, bis die Taste wieder gedrückt wird.

Anschließend wird der GPIO-Ausgang und das PWM-Signal initialisiert und der Motor in Grundposition gebracht. Danach wird die Taste durch den Motor 5 mal gedrückt. Dann wird das Programm beendet.

Achtung: Beim ersten Ausprobieren, den Motor nur in der Hand halten. Den Motor noch nicht auf die Tastatur drücken oder halten. Erst wenn offensichtlich der Motor das richtige tut, dann den Motor an die Tastatur halten. Den Motor aber erst dann befestigen, wenn die Werte für „pos0“ und „pos1“ richtig eingestellt sind.

# Bibliotheken laden
from machine import Pin, PWM
from time import sleep

# GPIO für Steuersignal
servo_pin = 28

# Position für nicht gedrückte Taste
pos0 = 1500000

# Position für gedrückte Taste
pos1 = 1200000

# Wiederholung
repeat = 5

# Push-Zeit
push = 0.2

# Pause bis zum nächsten Push
pause = 2

# PWM-Signal initialisieren
pwm = PWM(Pin(servo_pin))
pwm.freq(50)
pwm.duty_ns(pos0)
sleep(3)

# Wiederholung
for i in range (repeat):
    pwm.duty_ns(pos1)
    sleep(push)
    pwm.duty_ns(pos0)
    sleep(pause)

# PWM-Signal deinitialisieren
pwm.deinit()
print('Ende')

Welche Position der Motor für die gedrückte Taste einnehmen muss, hängt von der Taste ab. Je tiefer sie gedrückt werden muss, desto kleiner muss der Wert sein. Im Programmcode ist der Wert (pos1) für eine Notebook-Tastatur gewählt.

Darf es ein bisschen mehr sein?

Da wir es beim Raspberry Pi Pico um eine digitale Verarbeitung zu tun haben, tun wir uns mit analogen Anzeigen schwer. Allerdings können wir einen Servomotor vom Typ SG90 verwenden, dessen Achse sich im Bereich von 0 bis 180 Grad positionieren lässt.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren