Servo plus Motor: Weiterhin kein Erfolg

Hallo,

ich habe weiterhin kein Erfolg dabei, ein Servo und einen Motor gleichzeitig anzusprechen, obwohl ich mich hier durch die einschlägigen Forenbeiträge gearbeitet habe.

Sowohl Motor als auch Servo haben eine eigene Stromversorgung, die Massen sind zusammengelegt, das Servo alleine funktioniert.

Sobald ich aber nur einen einzigen Befehl in den Code einfüge, der den Motor ansprechen soll (z.B. „Wenn Knopf B gedrückt, Motor an mit 100%“), macht das Servo keinen Mucks mehr - selbst wenn gar kein Motor angeschlossen ist.

Danke für jede Hilfe!

Bitte immer angeben:
Versionsnummer auf dem mini: 1.3
Betriebssystem: Windows 10
Benutzter Editor: MakeCode
Servo: TowerPro 9g SG90

Ich kann bestätigen, dass es nicht funktioniert, Motor und Servo an einem Calliope 1.3 zu betreiben. Motor und Servo original von Fischertechnik mit je eigener 9V und 6V Batterie.

Jedes allein lässt sich einwandfrei steuern. Nach dem ersten „setze Winkel von Servo an P1“ wird der Servo angesteuert und nachfolgende Blöcke „Motor an mit“ sind wirkungslos oder der Servo springt (bei dem Motor Kommando) an einen End-Anschlag.

Wenn der Motor zuerst läuft und dann kommt ein Servo Kommando, bewegt sich am Servo nichts und der Motor reagiert nicht auf andere Geschwindigkeiten, eventuell aber auf Stop.

Auch mit Calliope 2.0 und minimalem Code kommen die Kommandos wild durcheinander. Mal geht der Motor los wenn der Servo gemeint ist, mal springt der Servo an den Anschlag wenn der Motor um 5% geändert werden soll.

Bei der grünen Erweiterung „Servos“ fällt auf, dass dort nur die digitalen Pins 1 und 2 zur Wahl stehen. Bei dem braunen Block unter Pins gibt es 1 und 2 nicht, aber die analogen Pins 0,3,16,17,… Es funktionieren aber beide Möglichkeiten gleich schlecht. Das heißt Servo funktioniert solange der Motor nicht angesteuert wird.

Wenn beim Start schon etwas zum Servo drin steht, stellt der sich zwar in die Mitte (auf 90°), aber der Motor geht dann gleich gar nicht.

Was machen wir jetzt?

Lutz

Hallo Jonathan und asp.net,

danke für den Hinweis. Ich habe mir das gerade mal angeschaut und konnte den Fehler reproduzieren. Es können momentan nicht Drehmotoren über den Motortreiber zusammen mit anderen anlogen Aktoren verwendet werden. Sobald ein analoger Wert auf einen Pin geschrieben wird, dann setzen die beiden Motoren an dem Motortreiber aus. Seltsamerweise funktionieren aber ca. 3 analoge Aktoren parallel, wenn diese über die Pinblöcke konfiguriert werden. Es muss also irgendetwas damit zu tun haben, dass die Variablen für den PWM-Timer z.B. überschrieben wird, womit die verschiedenen PWM-Signale generiert werden. Das Problem wird irgendwo in der Microbit-DAL liegen, wo die PWM-Timer für den Motor definiert werden. Gleiches Problem tritt nämlich auch mit der Programmierung im Open Roberta Lab auf.

Die Pins 1 und 2 gehen auf jeden Fall. Die grüne Servolibrary scheint die Pins vom Microbit zu nehmen. 0 und 3 sollten eigentlich nicht gehen. Ich würde bei dem bereits implementierten braunen?/roten Servoblock unter Pins bleiben. Die stimmen auch mit den analogen Pins überein.

Momentan bleibt wohl erstmal nur die Option 2 Drehmotoren und einen Servo über „analog schreiben“ und externen Motortreiber anzusteuern. Oder zwei 360° Servos und einen normalen Servo.

Besten Gruß,
Jasper

1 „Gefällt mir“

Hallo Jasper,

besten Dank für die Analyse!

Dann wird für mich die Alternative 360°-Servos statt Drehmotoren das Mittel der Wahl sein.

Sag Bescheid, wenn ich irgendwie dazu beitragen kann, diesen Fehler zu beheben, etwa durch einen Bug-Report an einer anderen Stelle.

Einen Hinweis auf das Problem in der Doku zum Calliope fände ich auch sinnvoll.

Ich würde auch noch eine kurze Notiz im anderen Thread anhängen, wo ich nach den beiden Servoblöcken gefragt hatte. Offensichtlich sind die beiden Möglichkeiten (grüne Servolibrary vs. Pins > Servo) ja doch nicht gleichberechtigt.

Nochmals Danke und viele Grüße
Jonathan

Erwartungsgemäß funktioniert auch Servo und Musik zusammen nicht. Nach dem ersten Aufrufen eines Servo Block ist es vorbei mit der Melodie. Dazu muss gar kein Servo angeschlossen sein. Im Simulator funktioniert es…

Mein CaR (= Calliope auf Rädern) hat 2 Calliope und einen dritten als Fernbedienung.


Als „Gelöst“ würde ich das Thema aber nicht markieren. Wir haben hier einen Bug, der repariert werden muss!

Lutz

Ja, der Motor ist unbefriedigend beim mini. Bei Interesse kann ich für Dich noch ein Motorboard von mir über die Ferien fertig bestücken.

1 „Gefällt mir“

Nein, gelöst ist es nicht. Der Fehler liegt wohl in der Microbit-DAL. Wenn wir den ausfindig machen können, beheben wir diesen Fehler selbstverständlich. Die Piezo-Lautsprecherpins teilen sich die Pins mit dem Motor. Deshalb hört man auch Geräusche, wenn der Motor angesteuert wird. Das heißt auch dass mit dem Bug PWM-Signale an Lautsprecher ebenfalls den Servo funktionsuntüchtig machen.
Ja, ich denke auch dass der I2C Motorboard von Michael Klein genau das richtige für dein Projekt ist. Der Motortreiber auf dem Calliope mini ist für komplexere Fahrzeuge und -funktionen nicht wirklich ausgelegt. Vorallem auch eingeschränkt, weil die zwei Motorenlogik vom DRV8837 kein entgegengesetzte Bewegungen oder Rückwärtsfahren möglich macht.
Das CaR sieht auf jeden Fall richtig toll und komplex aus!

LG,
Jasper