Motoren
Dokumentation der Klasse
- class compLib.Motor.Motor
Klasse zum Ansteuern der Motoren
- static multiple_power(*arguments: tuple[int, float])
Mehrere Motoren auf eine prozentuale Leistung der Höchstgeschwindigkeit einstellen
- Parameter
arguments – tuple von port, percentage
- Raises
IndexError
- static multiple_pulse_width(*arguments: tuple[int, float])
Setzen den Pulsbreite mehreer Motoren in Prozent der Periode
- Parameter
arguments – tuple von port, prozent
- Raises
IndexError
- static multiple_speed(*arguments: tuple[int, float])
Geschwindigkeit mehrerer Motoren einstellen
- Parameter
arguments – tuple von port, Geschwindigkeit in Radianten pro Sekunde (rad/s)
- Raises
IndexError
- static power(port: int, percent: float)
Motor auf eine prozentuale Leistung der Höchstgeschwindigkeit einstellen
- Parameter
port – Port, an welchen der Motor angestecht wird. 0-3
percent – Prozentsatz der Höchstgeschwindigkeit. zwischen -100 und 100
- Raises
IndexError
- static pulse_width(port: int, percent: float)
Setzen den Pulsbreite eines Motors in Prozent der Periode
- Parameter
port – Port, an welchen der Motor angestecht wird. 0-3
percent – Prozent der Periode zwischen -100 und 100
- Raises
IndexError
- static speed(port: int, speed: float)
Geschwindigkeit des Motors einstellen
- Parameter
port – Port, an welchen der Motor angestecht wird. 0-3
speed – Drehzahl, mit der sich ein Motor dreht, in Radianten pro Sekunde (rad/s)
- Raises
IndexError
Genauere Informationen
Power vs Speed vs PulseWidth
Zur ansteuerung der Motoren kann entweder Motor.power(...)
, Motor.speed(...)
oder Motor.pulse_width(...)`
verwendet werden.
Der Unterschied der 3 Funktionen liegt dabei in der Einheit des 2. Parameters.
Motor.power()
wird dabei ein Wert zwischen -100% und 100% der maximalen Geschwindigkeit angegeben.Motor.speed()
verwendet die Encoder um die Geschwindigkeit der Motoren mittels closed-loop zu steuern. Diese Funktion sollte nur verwendet werden, wenn Motor.power()
nicht zur Ansteuerung ausreicht.Motor.pulse_width()
stellt die Geschwindigkeit des Motors mittels der Pulsbreite der PWM-Steuerung des Motors ein. Diese Funktion ist so nah an der Hardware wie möglich und sollte auch nur verwendet werden, wenn es einen expliziten Grund dafür gibt.Normal vs Multiple
Der Aufruf der funktionen kann entweder über Motor.power(port, percent)
oder Motor.power((port, percent), (port, percent), ..)
erfolgen.
Der zweite Aufruf ermöglicht dem Entwickler dabei beide Motoren in einem Aufruf anzusteuern und bringt einen kleinen Vorteil in der Leistungsfähigkeit der Software.
Beispiele
Vorwärts fahren
Mit folgenden Programm drehen sich beide Motoren mit 50% ihrer maximalen Geschwindigkeit. Dabei ist zu beachten, dass ein Motor in die entgegengesetzte Richtung zum aneren Motor gedreht werden muss, da diese spiegelverkehrt montiert sind.
Zusätzlich ist ein time.sleep(5)
notwendig, welches das Programm für 5 Sekunden pausiert. Diese Pause wird benötigt, da der Roboter automatisch alle Motoren beim Ende des Progammes deaktiviert.
from compLib.Motor import Motor
import time
Motor.power(0, -50)
Motor.power(3, 50)
time.sleep(5)