Erste Schritte mit LEGO
Erweiterte Funktionen für Motoren mit Drehsensor
track_target (target_angle)
Hiermit wird ein Zielwinkel nachverfolgt, der sich im Verlauf der Zeit ändert.
Diese Funktion ähnelt der Funktion run_target(), ignoriert aber die Einstellungen für
Geschwindigkeit und Beschleunigung: Der Motor bewegt sich so schnell wie möglich zum Zielwinkel.
Geschwindigkeit und Beschleunigung werden stattdessen festgelegt, indem man auswählt, wie
schnell oder langsam sich der target_angle verändern soll.
Diese Methode ist für schnelle Schleifen gut geeignet, bei denen sich das Motorziel ständig ändert.
Parameters target_angle
Beispiel:
# Initialize motor and timer
from
math
import
motor = Motor(Port.A)
watch = StopWatch()
amplitude =
# In a fast loop, compute a reference angle
# and make the motor track it.
while True:
# Get the time in seconds
seconds =
# Compute a reference angle. This produces
# a sine wave that makes the motor move
# smoothly between -90 and +90 degrees.
angle_now = sin(seconds)*amplitude
# Make the motor track the given angle
motor.track_target(angle_now)
stalled()
Hiermit wird überprüft, ob der Motor derzeit blockiert ist.
Ein Motor gilt als blockiert, wenn er sich selbst bei maximalem Drehmoment nicht bewegen kann.
Dies ist beispielsweise der Fall, wenn der Motor durch etwas blockiert wird oder wenn sich der
Mechanismus einfach nicht weiter drehen kann.
Genauer gesagt, ist der Motor blockiert, wenn der im PID-Regler programmierte Arbeitszyklus das
Maximum erreicht hat (duty = duty_limit) und der Motor es in der mit stall_time festgelegten
Zeit nicht schafft, die Mindestgeschwindigkeit (speed < stall_speed) zu erreichen.
Die Einstellungen können für duty_limit, stall_speed und stall_time mit
set_pid_settings()
und
Returns True, wenn der Motor blockiert ist, bzw. False, wenn er nicht blockiert ist
Return type bool
run_until_stalled (speed, stop_type=Stop.COAST, duty_limit=default)
Hiermit läuft der Motor mit einer konstanten Geschwindigkeit (Winkelgeschwindigkeit), bis er
blockiert wird. Der Motor gilt als blockiert, wenn er sich selbst bei maximalem Drehmoment nicht
bewegen kann. Für eine detailliertere Definition siehe stalled().
Mit duty_limit lässt sich das Drehmoment des Motors während dieses Fahrmanövers
kurzzeitig begrenzen. Diese Funktion ist nützlich, um zu verhindern, dass ein Getriebe- oder
Hebelmechanismus mit dem vollen Motordrehmoment angetrieben wird.
MINDSTORMS
®
®
(angle:
sin
90
watch.time()/1000
angepasst werden, um die Anfälligkeit für Blockierungen zu verändern.
LEGO, the LEGO logo and MINDSTORMS are trademarks of the LEGO Group.
©2019 The LEGO Group.
Education EV3 MicroPython
deg) – Zielwinkel, bis zu dem sich der Motor drehen soll
Version 1.0.0
set_dc_settings()
23