GPIO Doppelbelegen mit hilfe von Relais

  • Hallo,
    da ich nach einer Test Phase mit einem Schrittmotor nun auf 8 aufstocken wollte, ist mir aufgefallen das der Pi alleine das nicht kann, da ein Motor 4 GPIOs zur Ansteuerung belegt. Somit kann ich nur 4 Motoren an den Pi anschließen.

    Meine Idee ist es nun mit einem Y-Jumper Kabel von einem GPIO 2 Motoren zu versorgen. Da aber nicht beide Motoren gleichzeitig angesteuert werden sollen wollte ich mithilfe eines 8-Kanal Relais die Motoren am Pi anschließen und nur den Motor mit Strom versorgen der auch geschaltet werden soll. Dadurch kann ich ohne zusätzliche GPIO Erweiterungen 8 Motoren betreiben.

    Ich hoffe es war verständlich was ich meine.

    Meine Frage ist nun ob dies möglich ist oder habe ich bei meiner Theorie etwas übersehen?

    Einmal editiert, zuletzt von MrVinc (1. Juli 2015 um 14:47)

  • Keine Ahnung ob das Signal über das Relais drüber kommt... kenn mich da zu wenig mit elektronik aus.
    Aber selbst wenn es funktioniert ist die Lösung arg improvisiert ^^

    Was für Driver nutzt du eigentlich?

    Es gibt Driver (den hier nutze ich z. B.) die bereits über 2 Pins betrieben werden können (Step und Direction)

    Edit: Ok, wenn du noch die nicht verwendeten Motoren abschalten willst, sind es eben 3 Pins aber man kann da dann bestimmt auch was zusammenfassen.

    Einmal editiert, zuletzt von Nueffe (1. Juli 2015 um 12:39)

  • Ich nutzediesen. Motor.

    Und das Relai dient ja nur für die Stromversorgung der Motoren. Ich werde aus einem einfachen Female-to-Female Jumper Kabel ein Femle-to-Female-Y-Kabel machen. Dann setzte ich das eine Ende an die GPIO des Pi und versorge dank der Y-Funktion 2 Motoren über die selbe GPIO. Damit aber nur ein Motor sich dreht bekommt auch immer nur einer über die Relaisschaltung Strom. Ich persönlich finde die Lösung eigentlich gut :D.

    Einmal editiert, zuletzt von MrVinc (1. Juli 2015 um 12:48)

  • Hi,
    mach doch da mal eine Skizze dazu, wie Du Dir das vorstellst.
    Afaik werden diese Stepper mit vier Signal-Leitungen betrieben, die zyklisch entsprechend einer Tabelle den Zustand HIGH oder LOW annehmen. Das Ganze wird dann afaik über einen ULN28x Baustein getrieben.
    Eine separate "Stromversorgung" im klassischen Sinn haben die imho nicht.

    Dein Ansatz, falls ich das richtig verstanden habe, würde zumindest voraussetzen, dass Du vier Releais pro Motor benötigst und Dir zudem den aktuellen Zustand der Signal-Leitungen merkst, bevor Du "umschaltest" um beim "zurückschalten" dort wieder aufzusetzen.

    Wie gesagt: Skizze (am besten Fritzing o.ä.) wäre ganz hilfreich.

    //EDIT: Lies Dir mal Deine Überschrift durch ;)

    cu,
    -ds-

  • Hi,
    über Relais jeweils genau den Motor mit 5V versorgen, den man gerade ansteuern möchte, warum nicht. Wenn der Motor tatsächlich ohne die 5V-Versorgung bei Signaländerung auf den GPIOs nichts macht und es auch kein Problem ist, dass dann bestimmte Motoren nicht gleichzeitig gesteuert werden können, dann ist das sicher eine Lösung. Eventuell musst du dir aber jeweils die Zustände von A-D speichern, bevor du von einem Motor zum anderen umschaltest. Alternative wäre noch eine Porterweiterung. Damit hättest du dann genügend GPIOs und könntest die Relaisbank sparen.
    Gruß

  • Naja ... passt schon, das Bildchen ...

    Also imho wird das nix. Lies Dir vielleicht mal -> das Prinzip eines Schrittmotors <- durch.
    Die HIGH/LOW -Kombination und Abfolge legt die Richtung fest und schaltet bei jedem Wechsel einen Schritt weiter oder zurück.
    Wenn Du den Motor umschaltest, hast Du an den Ausgänge eine - für den anderen Motor - falsche Signalfolge anliegen. Dadurch dreht er sich entweder erst mal gar nicht oder in die falsche Richtung.

    Verstanden ;) ??

    cu,
    -ds-

  • Das kann ich jetzt nicht ganz nachvollziehen.
    Denn wenn ich Motor 1 und Motor 2 habe die mittels Y Kabel an den selben 4 GPIOs angeschlossen sind.

    Bsp:
    Alle Stromkreise sind offen beim Relai, d.h. kein Motor kann sich drehen.
    1. Pi, schließt über das Relais den Stromkreis für Motor 1 und lässt diesen drehen. Öffnet über das Relai den Stromkreis wieder Motor 1 hat somit keinen Strom.
    2. Pi, schließt über das Relaus den Stromkreis für Motor 2 und lässt diesen drehen. Öffnet über das Relai den Stromkreis wieder Motor 2 hat somit keinen Strom.

    Zwar bekommen beide Motoren den Impuls wegen des Y Kabels aber nur ein Motor kann sich ja drehen da nur einer der beiden Strom hat?

  • MrVinc
    Bei der Variante mit den Relais stelle ich mir eher die Frage, wie sich die Schrittmotoren verhalten, wenn sie 'aus' und wieder 'an' geschaltet werden. Das kann man aber sicher testen. Wenn sich die Motoren im 'aus'-Zustand neutral verhalten, sollte das funktionieren.
    Was spricht denn gegen die Porterweiterung, z.B. über I2C und einen Port Expander MCP23017 (ca. 2€)? Port Expander gibt es mit unterschiedlicher Anzahl an IOs, z.B. 16, und man kann, glaube ich, mehrere an den I2C-Bus hängen. So würdest du nur wenige Pins am Raspi belegen.

    dreamshader
    Natürlich muss er die 4 Signale an den Motor anpassen, auf den er per Relais umschalten möchte. Sollte aber kein Problem sein.

    Einmal editiert, zuletzt von rob.z (1. Juli 2015 um 16:02)

  • Hi,
    also vielleicht noch abschliessend zum Thema Schrittmotor: da hatte ich -> hier <- mal was zu einem Tutorial zusammengefasst.

    MrVinc:
    Wenn der Motor keinen Strom hat, bekommt er auch keinen Impuls ;) ...
    Ich würde da an Deiner Stelle der Anregung von rob.z folgen und einen Portexpander verwenden oder gleich einen Arduino (Pro Mini, Nano, ...) einsetzen. Da wärst Du imho auf der sicheren Seite ...

    cu,
    -ds-

  • Hallo.
    Mal mein Senf dazu:, ich hoffe , ich hab das richtig verstanden. :D


    Das kann ich jetzt nicht ganz nachvollziehen.
    Denn wenn ich Motor 1 und Motor 2 habe die mittels Y Kabel an den selben 4 GPIOs angeschlossen sind.

    Bsp:
    Alle Stromkreise sind offen beim Relai, d.h. kein Motor kann sich drehen.
    1. Pi, schließt über das Relais den Stromkreis für Motor 1 und lässt diesen drehen. Öffnet über das Relai den Stromkreis wieder Motor 1 hat somit keinen Strom.
    2. Pi, schließt über das Relaus den Stromkreis für Motor 2 und lässt diesen drehen. Öffnet über das Relai den Stromkreis wieder Motor 2 hat somit keinen Strom.

    Zwar bekommen beide Motoren den Impuls wegen des Y Kabels aber nur ein Motor kann sich ja drehen da nur einer der beiden Strom hat?


    Ich denke, da hast was missverstanden.
    Wozu die Relais ?
    Im Prinzip kannst Du n Lm's parallel schalten.Allerdings brauchst Du dann pro LM einen E (Enable) GPIO Pin (Freigabe).Sprich, Du selectierst den entspr. LM, gibst die Pulse raus, schaltest um, usw.
    Siehe Datenblatt.
    Das kostet zwar bischen Software-Hirn, aber ist machbar, wenn Du absolut keine Portwerweiterung magst.

    gruß root

    Einmal editiert, zuletzt von root (1. Juli 2015 um 18:39)

  • Hi


    Hi, es liegt wohl am Wetter, denn ich komme nicht drauf. Was ist ein LM? Sonniger Gruß


    Haste wohl recht... recht warm hier :)
    Ich meinte natürlich den UNL...

    gruß root


  • Im Prinzip kannst Du n Lm's parallel schalten.Allerdings brauchst Du dann pro LM einen E (Enable) GPIO Pin (Freigabe).Sprich, Du selectierst den entspr. LM, gibst die Pulse raus, schaltest um, usw.
    Siehe Datenblatt.

    Da dies mein erstes Pi Projekt ist was ich umsetzte, weiß ich leider nicht genau was du meinst. Kannst du es bitte etwas genauer beschreiben. Weiß leider auch nicht was LM heißen soll?

  • Hi.


    Da dies mein erstes Pi Projekt ist was ich umsetzte, weiß ich leider nicht genau was du meinst. Kannst du es bitte etwas genauer beschreiben. Weiß leider auch nicht was LM heißen soll?


    ok, aber gönn mir mal ne Std. Kühlschrank, dann ne Std. Biergarten... mach heute Abend nen groben Plan :)

    gruß root


  • Hi


    Haste wohl recht... recht warm hier :)
    Ich meinte natürlich den UNL...

    gruß root

    Du meinst sowas wie einen ULN2803, also ein Darlington Transistor Array. Anstelle der Relais. Stimmt, Relais sind wohl etwas übertrieben für diese Aufgabe, der ULN... kann das bestimmt auch. Aber ich denke, der Programmieraufwand ist der gleiche. Gruß

  • Na wenn der Programmieraufwand der gleiche ist, dann nimm den ULN, denn Pipifaxstrom mit nem Relais zu schalten, macht wenig Sinn, zumal das ja auch wieder mehr Strom braucht und u.U. "lauter" ist.

    ;) Gruß Outi :D
    Pis: 2x Pi B (Rente) / 1x Pi B+ (Rente) / 1x Pi 2 B (Rente) / 2x Pi 3 B (RaspberryMatic / Repetier Server) / 2x Pi Zero 1.2 (B. Lite) / 2x Pi Zero 1.3 (B. Lite) / 2x Pi Zero W 1.1 (B. Lite) / 1x Pi Zero 2 (mal so, mal so) / 1x Pi 3 B+ (Tests) / 1x Pi 4 B 4GB (BW Lite (Webserver)) / Pi 400 (BW) / 1x Pi 5 (BW) / 2x Pi Pico / 2x Pi Pico W
    Platinen: Sense HAT / HM-MOD-RPI-PCB / RPI-RF-MOD / PiFi DAC+ V2.0 / TV HAT / Pi 5 Kühler HAT
    Kameras: orig. Raspberry Pi Camera Module V1 & V3 / PS3 Eye

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!