SPS-Signal mit Raspberry auswerten

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Moin,

    vorneweg: mir ist bewusst, dass das, was ich machen möchte nicht gerade sinnvoll ist und ich bin noch ein blutiger Anfänger was Raspberries angeht.

    Ich habe mit ein paar Kollegen ein Projekt mit einer SPS gebaut. jetzt möchte ich Signale von der SPS (24VDC) am Raspberry auswerten.

    Dafür müsste ich ja die 24V-Signale auf 3,3V runterregeln, um sie an den GPIO lesen zu können? Hab mir schon einiges überlegt/gegoogelt, aber bin mir halt sehr unsicher.

    Kann man das einfach mit Widerständen regeln, oder braucht man einen Spannungsregler oder sonst ein Bauteil, was ich nicht kenne? :conf:

    Vielen Dank im Vorraus für Antworten

  • Es genügt ein einfacher Spannungsteiler, also zwei WIderstände im passenden Verhältnis.
    Ausgang SPS -> Widerstand1 -> Widerstand2 - GND

    Das Signal für den Pi nimmst du zwischen den beiden Widerständen ab.

    Das Verhältnis der Widerstände muss ca. 20,7 : 3,3 sein, also zum Beispiel bietet sich an 2100 Ohm (Widerstand1) und 330 Ohm (Widerstand2).

    Die Reihenfolge der Widerstände muss stimmen, sonst gehts schief.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Es genügt ein einfacher Spannungsteiler, also zwei WIderstände im passenden Verhältnis.
    Ausgang SPS -> Widerstand1 -> Widerstand2 - GND

    Das Signal für den Pi nimmst du zwischen den beiden Widerständen ab.

    Das Verhältnis der Widerstände muss ca. 20,7 : 3,3 sein, also zum Beispiel bietet sich an 2100 Ohm (Widerstand1) und 330 Ohm (Widerstand2).

    Die Reihenfolge der Widerstände muss stimmen, sonst gehts schief.

    Alles klar, danke.
    Hatte es nicht für so einfach gehalten, werds morgen gleich ausprobieren :)

  • Und miss vorher aus, ob es auch korrekt ist. Wenn deine Verbindung zu GND unterbrochen ist, hast du 24 V auf dem Pi, dann kannst du den abschreiben. Also ordentlich verbinden/verlöten/verschrauben - schon ein Wackelkontakt kann den Pi grätschen.

    Um zusätzliche Sicherheit zu haben, kannst du die Widerstände höher wählen, z. B. 21000 Ohm und 3300 Ohm - falls dir dann GND abhanden kommt, ist der Strom auf ca. 1 mA begrenzt, was vielleicht genügt, um schlimmeres zu verhindern. Oder noch höher, 68K und 10K zum Beispiel. Vorausgesetzt, dein Signal kommt dann noch zuverlässig an, sollte aber gehen. Je höher der Widerstand, desto geringer ist der Strom, der den Pi malträtiert, falls die 24 V über diesen Widerstand an den GPIO kommen (sogenannter injection current). Bei vielen Chips liegt die Granze dafür bei 1 mA. Für den Pi-SOC gibt es aber keine technischen Daten dafür.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Es gibt eine andere, eigentlich noch elegantere Lösung, die zudem absolut sicher für den Pi ist.

    Verbinde deinen SPS-Ausgang über einen Widerstand (ca. 4,8K) mit der Anode eines Optokopplers (Typ 817 oder sowas) und die Kathode mit GND der SPS.

    Den Ausgang des Optokopplers mit dem Pi und zwar Collector über 1000 Ohm an den GPIO und Emitter an GND.

    Du musst die Massen von Pi und SPS nicht verbinden. Die Stromkreise sind so völlig getrennt, was jede Gefahr für den Pi ausschließt.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Es gibt eine andere, eigentlich noch elegantere Lösung, die zudem absolut sicher für den Pi ist.

    Verbinde deinen SPS-Ausgang über einen Widerstand (ca. 4,8K) mit der Anode eines Optokopplers (Typ 817 oder sowas) und die Kathode mit GND der SPS.

    Den Ausgang des Optokopplers mit dem Pi und zwar Collector über 1000 Ohm an den GPIO und Emitter an GND.

    Du musst die Massen von Pi und SPS nicht verbinden. Die Stromkreise sind so völlig getrennt, was jede Gefahr für den Pi ausschließt.

    Die Möglichkeit, hatte ich auch als eine der ersten in Erwägung gezogen. Leider hab ich jetzt nicht mehr genug Zeit, um einen Optokoppler zu bestellen. Nochmal zum Spannungsteiler: Vielleicht habe ich da auch einen Denkfehler, aber wird nicht der GPIO des Pi parallel zum 3,3kOhm Widerstand geschaltet? Somit wäre dann doch der Widerstand dieser entstandenen Parallelschaltung kleiner als 3,3kOhm und die Spannung würde sich anders aufteilen? (aka fast alles über die 21kOhm)

    edit: oder sind im Pi sehr hohe Widerstände hinter den Pins verbaut? kann dazu garnix finden

    Einmal editiert, zuletzt von r0i (15. Dezember 2021 um 09:52)

  • Die Möglichkeit, hatte ich auch als eine der ersten in Erwägung gezogen. Leider hab ich jetzt nicht mehr genug Zeit, um einen Optokoppler zu bestellen. Nochmal zum Spannungsteiler: Vielleicht habe ich da auch einen Denkfehler, aber wird nicht der GPIO des Pi parallel zum 3,3kOhm Widerstand geschaltet? Somit wäre dann doch der Widerstand dieser entstandenen Parallelschaltung kleiner als 3,3kOhm und die Spannung würde sich anders aufteilen? (aka fast alles über die 21kOhm)

    edit: oder sind im Pi sehr hohe Widerstände hinter den Pins verbaut? kann dazu garnix finden

    Deine Formulierung ist ziemlich unklar - entsprechend ist auch nicht so richtig greifbar, was Tell meint. Offenbar bezieht er sich auf den Pullup-Widerstand des GPIO.

    Der Pullup hat 30-50 KOhm. Bei einem Ausgang hat ein Pullup aber keine Wirkung. Ist also hier bedeutungslos und wird wahrscheinlich intern abgeschaltet, wenn der GPIO auf output steht.

    Die beiden Widerstände 21K und 3,3K sind in Reihe geschaltet. Zuerst fällt am 21K ca. 20,7 Volt ab. Dann fallen am 3,3K-Widerstand die restlichen 3,3 V ab. zwischen dem ersten und zweiten Widerstand ist das Potenzial also 3,3 V - von dort gehst du an den Pi.

    Natürlich darfst du die Widerstände nicht vertauschen, sonst fallen erst 3,3 V ab und du bringst dann die 20,7 an den Pi, was nicht so gut wäre.

    Außerdem, wie gesagt, die Zwei-Widerstand-Kette muss zu GND gehen, sonst hast du 24 V am Pi, was ebenfalls nicht gut ist.

    Mittelfristig solltest du vielleicht die Optokoppler-Lösung umsetzen - ist einfach sicherer.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Das war wohl seine Intention. Bei einem GPIO, der auf Input geschaltet ist, müssten alle Pullups/downs automatisch abgeschaltet sein. Falls nicht, dürften die 30-50K auch nicht ins Gewicht fallen.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

Jetzt mitmachen!

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