RCMix - Programmierbarer RC Mischer

  • Guten Morgen,

    Ich möchte euch hiermit ein kleines Projekt vorstellen, welches ich bereits vor einiger Zeit umgesetzt habe, aber erst vor kurzem dazu gekommen bin ein bisschen Dokumentation zu schreiben und gute Fotos machen zu lassen.

    Es handelt sich dabei um einen RC Mischer welcher über 4 Eingangskanäle sowie 6 Ausgangskanäle verfügt.

    Der Quellcode des Mischers ist Open-Source und kann unter https://github.com/lxrobotics/RCMix eingesehen werden. Der Quellcode wurde weiters so geschrieben, dass er in der Arduino IDE kompiliert werden kann (Mikrocontroller: ATMega32U4 wie bei Arduino Leonardo).

    Da der Quellcode Open-Source ist kann jeder eine absolut beliebige Mischfunktion einprogrammieren, Beispiele für zwei verschiedene Mischfunktionen sind dabei schon vorhanden.

    Erkennung auf gültiges Eingangssignal ist möglich, es lässt sich damit also Failsafe-Funktionalität implementieren. Als gültiges Eingangssignal gilt ein PWM-Signal mit einer Pulsdauer zwischen 1 und 2 ms sowie einer Periode von 20 ms.

    Pin-Belegung:

    Block Diagramm:

    Bin auf eure Meinungen gespannt.

    • Offizieller Beitrag

    sieht sehr kompakt aus. Würde insbesondere bei einfachen Funken deutlich mehr Möglichkeiten einräumen. Mir fällt allerdings ein, dass die Impulslängen bei den Funken etwas unterschiedlich sind. Ich glaube Reiner hatte mal geschrieben, dass sich Futaba z.B. von Spektrum etwas unterscheiden.

    Wiki: ".... Der Impuls variiert heute mehrheitlich im Bereich von 1,5 ms ± 0,5 ms (System Multiplex: 1,6 ms ± 0,5 ms)..."


    könnte also sein, dass der Baustein nicht mit allen Funken einwandfrei arbeitet.

  • Wiki: ".... Der Impuls variiert heute mehrheitlich im Bereich von 1,5 ms ± 0,5 ms (System Multiplex: 1,6 ms ± 0,5 ms)..."


    könnte also sein, dass der Baustein nicht mit allen Funken einwandfrei arbeitet.

    Servus Dirk,

    Das wäre kein Problem, die Grenzen kann man ja anpassen.

    Abgesehen vom Abbilden komplexerer Mischfunktionen mit einfachen Funkgeräten bieten sich noch andere Möglichkeiten: So kann man Mischfunktionen abbilden, welche es in Funkgeräten nicht gibt, wie z.B. die Ansteuerung eines Roboters mit einem aus 3 Motoren bestehenden omnidirektionalen Antrieb wobei man auf der Fernsteuerung 3 Kanäle für Links/Rechts, Vor/Rückwärts, Drehen Links/Drehen Rechts hat. Die Umsetzung erfolgt dann im Mischer der die einzelnen Motoren entsprechend ansteuert. Das wäre mit reiner Knüppelarbeit als Mensch nicht zu bewältigen (und dafür gibts auch ein Codebeispiel ;) )

    • Offizieller Beitrag

    sieht sehr kompakt aus. Würde insbesondere bei einfachen Funken deutlich mehr Möglichkeiten einräumen. Mir fällt allerdings ein, dass die Impulslängen bei den Funken etwas unterschiedlich sind. Ich glaube Reiner hatte mal geschrieben, dass sich Futaba z.B. von Spektrum etwas unterscheiden.

    Yep, da hatte ich anfangs bei der Programmierung der Kreuzmischerfunktion lange gesucht, warum das gleichzeitige "Fahren" und "Lenken" manchmal in die falsche Richtung lenkt.

    Man muss tatsächlich unterscheiden, welche Funke es ist, denn:

    Bei der Bewegung des Kreuzknüppels ändert sich die Richtung des Pulsweiten-Signals. Im Mittelpunkt sind alle beiden Signale bei 1.5ms, egal ob Spectrum oder Futaba. Wird der Kreuzknüppel nach vorne bewegt, wird bei der Spectrum das Signal auf 2,0ms erhöht, bei der Futaba auf 1,0ms reduziert.

    Bei Panzersteuerung ist das egal, da wird einfach die Polung des Motors am Ausgang des Fahrtreglers geändert.

    Schlimm wird es, wie o.g. schon beschrieben, wenn sich die Signale über die Kreuzmischerfunktion überlagern müssen.
    Die Vorwärts-/Rückwärtsfunktion kann bei falscher Ansteuerung wieder durch das Umpolen der beiden Motoren kompensiert werden. Aber sobald eine Fahrfunktion und die Lenkfunktion ausgelöst wird, erfolgt ein falsches "Subtrahieren" bzw. "Addieren". Und dann ergibt das die falsche Lenkrichtung.

    (Jetzt kann man natürlich sagen: Leg' bei der DX5e-Spectrum den kleinen Schiebeschalter auf "Reverse", und schon funktioniert es.... => Stimmt => Aber bei einem anderen Bot mit anderem Fahrtregler dann wieder nicht.... usw. . Ich hasse es, wenn man nach dem Einschalten und Aktivieren des Bots erst mal "ausprobieren" und herumfummeln muss, bis die Kiste korrekt läuft. Es muss "Einschalten und losfahren" heißen... ;) . Und das bei allen Bots mit einer einzigen Funke.)


    Zitat von Alex

    eines Roboters mit einem aus 3 Motoren bestehenden omnidirektionalen Antrieb wobei man auf der Fernsteuerung 3 Kanäle für Links/Rechts, Vor/Rückwärts, Drehen Links/Drehen Rechts hat.

    Das wäre natürlich eine Superfunktion, wenn eine Überlagerung für drei Motoren möglich wäre. Ich hatte mir auch schon überlegt, für unsere Hockey-Spieler einen Torwart zu bauen. Aber der muss auch "seitlich" fahren können. Mit z.b. drei im gleichschenkeligen Dreieck angeordneten "Walzen" statt Rädern müsste das eigentlich funktionieren. Zwei Walzen müssen eine höhere Drehzahl haben und sich in der Richtung der Kraftvektoren gegenseitig kompensieren.....


    Zitat von Alex

    also Failsafe-Funktionalität implementieren. Als gültiges Eingangssignal gilt ein PWM-Signal mit einer Pulsdauer zwischen 1 und 2 ms sowie einer Periode von 20 ms.


    Ich habe den Quellcode jetzt noch nicht heruntergeladen und mal durchgesehen. Aber an den Entwickler die Frage gerichtet: Ist da auch eine Zählfunktion hinterlegt? => Also erst wenn mindestens 10 gültige Pulse hintereinander waren, dann gilt das Signal als stabil und wird akzeptiert,... etc. ? (Sorry, ist jetzt natürlich schon eine Detailfrage, ohne mal unter die Motorhaube der Baugruppe gesehen zu haben,.... aber Du hast ja um Feedback gebeten? )

  • Also erst wenn mindestens 10 gültige Pulse hintereinander waren, dann gilt das Signal als stabil und wird akzeptiert,...

    Ja 8)

  • z.B. die Ansteuerung eines Roboters mit einem aus 3 Motoren bestehenden omnidirektionalen Antrieb wobei man auf der Fernsteuerung 3 Kanäle für Links/Rechts, Vor/Rückwärts, Drehen Links/Drehen Rechts hat. Die Umsetzung erfolgt dann im Mischer der die einzelnen Motoren entsprechend ansteuert. Das wäre mit reiner Knüppelarbeit als Mensch nicht zu bewältigen (und dafür gibts auch ein Codebeispiel ;) )

    Zo wie dieses vieleicht:
    http://www.robotmarketplace.com/products/0-OMX4.html
    oder
    http://www.robotmarketplace.com/products/RL-OMX3.html
    :saint:

    Marien

    Scraptosaur, Midnight Oil, Lt Lee, Mecha Knights, Rockey, Race Robots, Artbots, Linefollowers.