Diverse Fragen zur Motorenansteuerung

Hallo Niklas,

wenn Du schon einen Signalanalyzer hast, gehen Deine Elektrotechnik-Kenntnisse über meine weit hinaus. Also lies meine Antwort mit der gebotenen Skepsis :-).

Dummerweise darf ich hier nicht mehr als zwei URLs posten, daher habe ich die Links kreativ formatiert. [.] ist einfach nur ein “.” :face_with_symbols_over_mouth:

Ich hatte zunächst auch Probleme mit der Ansteuerung von zwei Lego-Motoren über den NEPO-Editor/OpenRoberta Lab. Was das Problem für mich allerdings gelöst hat war der Einbau von einer Diode (konkret 1N4001) pro Motor wie in calliopeminigsho.wordpress[.]com/technik/dualmotorbug/ beschrieben.

Wenn ich das richtig verstanden habe, ist auf dem Calliope eine einzige H-Brücke verbaut.

Diese H-Brücke (de.wikipedia[.]org/wiki/Vierquadrantensteller) würde man normalerweise nutzen, um einen einzigen Motor in zwei Drehrichtungen anzusteuern. Der Motor wird dann zwischen die Motor-Pins A und B geschaltet. Der entsprechende
Chip (www.ti[.]com/lit/ds/symlink/drv8837.pdf) kann daher auch in Abhängigkeit von den zwei Eingängen IN1 und IN2 entweder A mit der Motor-Spannung +Vm und B mit GND verbinden, oder (für die andere Laufrichtung) B mit +Vm und A mit GND. Außerdem gibt es den Freilauf und ein “bremsen”, in dem A und B auf GND gehen und den Motor (als Generator) kurzschließen.

Wenn du nun zwei Motoren gleichzeitig betreiben möchtest, kann der Calliope (in der Firmware? In einer Bibliothek? Ich weiß es ehrlich gesagt gar nicht…) bei diesem Treiber-Chip gar nicht anders, als immer nur abwechselnd die beiden Motor-Pins auf +Vm zu setzen. Der Treiber-Chip hat keine Kombination von Inputs, die gleichzeitig beide Motoren auf +Vm ermöglichen würde.

Die erwähnte Diode ist zusätzlich notwendig, weil der Antrieb eines Motors den anderen bei dieser Betriebsweise über GND bremsen würde. Das wird durch die Diode (wie ich es verstanden habe) überbrückt.

Was mir tatsächlich sehr geholfen hätte, wäre ein entsprechender Eintrag in der Calliope FAQ. Vielleicht verbunden mit einer Art Unbedenklichkeitserklärung für diese Art der Beschaltung :wink:

Wenn das Ergebnis dann noch zwischen OpenRoberta Lab und PXT unterschiedlich ist, könnte eine Erklärung dafür sein, dass beide Editoren hinter den Kulissen anderen Code generieren/kompilieren und dabei die Unterschiede entstehen? Für OpenRoberta habe ich auch eine Issue bei GitHub github[.]com/OpenRoberta/robertalab/issues/558 gefunden, die eventuell hilfreich für Dich ist?

Weiterhin viel Spaß mit dem Calliope!
-mp.

PS. Sorry wegen der Links. Ein Beispiel, dass gut gemeint nicht gleich gut gemacht ist :frowning: