Alarmanlagen-Ausgang an GPIO Banana Pi

  • Hallo zusammen!

    Ich als blutiger Elektronik-Anfänger möchte gerne meinen Alarmanlagen-Ausgang via Optokoppler-Schaltung mit dem
    GPIO-Eingang meines Banana-Pi verbinden, um mich von diesem im Auslösefall benachrichtigen zu lassen.
    Die Benachrichtigungsthematik - also Software-Seite - stellt für mich als Programmierer kein Problem dar.
    Als Schutz-Widerstand habe ich auf dem GPIO-Eingang einen 1k Ohm-Widerstand gesetzt (R3), falls der Pin "zufällig" einmal als Ausgang geschaltet sein sollte.

    Allerdings bin ich mir mit der von mir erstellten Schaltung in einigen Punkten nicht ganz sicher:

    Frage 1:
    Viele Anwender scheinen auf Pi-Seite die Pullup-Widerstand-Variante zu bevorzugen (s. R2).
    Ist diese empfehlenswerter als die Pulldown-Variante (R4) - und warum nehmen manche Anwender für die eine oder andere Variante 10k- und wieder andere 4k7 Ohm-Widerstände?


    Frage 2:
    Brauche ich im Falle einer Pulldown-Variante (R4) zwischen 3.3V und Emitter-Kollektor-Seite des Optokopplers (Datasheet Sharp PC817) nicht einen
    zusätzlichen Widerstand (R2) für den Kollektor - wie auch auf der LED-Seite des Optokoppers(R1)?

    Frage3:
    Meinen 165 Ohm-Widerstand (R1) habe ich für die im Datasheet angegeben Forward Voltage 1.2V, IF=20mA dimensioniert.
    Manche Anwender verbauen für R1 einen stärkeren Widerstand, um die Lebendauer der LED des Optokopplers zu erhöhen.
    Geht das und wieviel wäre da dann empfehlenswert?

    Letzte Frage :D :
    Welche Widerstände mit welchen jeweiligen "Stärken" für R1, sowie R2 und R4 brauche ich effektiv, damit auch ich das verstehe und richtig bauen kann.

    Ich danke euch vielmals im voraus!

    Lieben Gruß,
    Stephan

  • Servus Stephan,

    Frage 1:
    Ein PullUp- bzw. PullDown-Widerstand hat die Aufgabe, den Pegel an einem IC-Eingang (hier am GPIO) im nicht treibenden Zustand der externen Beschaltung auf einen definierten Pegel zu ziehen. Deine vermeintlichen Pull-Widerstände (die Optionen R2 und R4) sind nicht an der richtigen Stelle! Sie müssen den GPIO direkt mit GND bzw. 3,3V verbinden!
    Ein PullUp- bzw. PullDown-Widerstand sollte so groß wie möglich sein, aber auch so klein wie nötig, um seine sichere Funktion zu gewährleisten. Insbesondere wenn z.B. PullUp-Widerstände (nach 3,3V) durch Widerstände nach GND aus der übrigen Beschaltung (u.U. für ganz andere Zwecke) beeinflusst werden und in der Gesamtschaltung einen Spannungsteiler darstellen, muss der Pull-Widerstand entsprechend kleiner gewählt werden, um die Spannung am Spannungsteilerpunkt in die Nähe des gewünschten Pegels zu ziehen. Ist die resultierende Spannung nämlich ziemlich in der Mitte, so ist der ganze Pull-Widerstand relativ zwecklos!
    In diesem Zusammenhang ist auch der Widerstand (bzw. die Impedanz) des Eingangs am IC zu beachten. Die Werte 10k oder 4k7 sind Daumenwerte, die gerne verwendet werden. Es können aber auch wesentlich höhere Pull-Widerstände wie 33k, 47k oder sogar 100k verwendet werden, wenn die sonstige Beschaltung dies zulässt...
    Generell wird die PullUp-Variante deshalb gerne bevorzugt, da sich die meisten Halbleiter "leichter tun", nach GND zu schalten, als nach Vcc (3,3V), aber dieser Aspekt wäre beim Optokoppler in Deiner Schaltung beinahe egal.
    In Deinem Fall muss aber ein PullUp-Widerstand verwendet werden, da der Optokoppler GND (und nicht 3,3V) durchschaltet!

    Frage 2:
    Prinzipiell ist der Stromfluss durch die Emitter-Kollektor-Strecke eines Transistors mit einem Widerstand so zu begrenzen, dass die maximal zulässige Stromstärke laut Datenblatt (hier "Collector Current", Ic=50mA) nicht überschritten wird. Bei 3,3V sind das in diesem Beispiel rechnerisch 66 Ohm. Etwas Sicherheit kann aber nie schaden, daher mind. 82 Ohm oder besser gleich 100 Ohm wählen.
    Diese Berechnung bezieht sich auf die Maximalbelastung des Optokopplers, nicht auf Deine konkrete Anwendung. Da ist die Sache mit dem 1k-Widerstand für R3 schon ganz gut.
    Auf welcher Seite (Emitter oder Kollektor) sich der Widerstand befindet ist bei niedrigen Stromflüssen wie bei Deiner Schaltung zum GPIO-Eingang eigentlich egal.

    Frage 3:

    Der LED-Widerstand bestimmt bei vielen Optokopplern die Schaltcharakteristik, d.h. bei niedrigen Widerständen (bzw. höherem LED-Stromfluss) ist auch der Widerstand der Emitter-Kollektorstrecke am Phototransistor geringer und es können größere Lasten gesteuert werden. Bei Digitalschaltungen empfiehlt es sich, bei niedrigen LED-Strömen einen normalen Transistor hinter den Transistor des Optokopplers zu schalten.
    In diesem Spezialfall wird ein sehr hochohmiger GPIO-Eingang eines Banana Pi angesteueuert. Es ist somit eine relativ geringe LED-Intensität notwendig und der Widerstand R1 kann leicht verdoppelt oder verdreifacht werden.

    Gegenfrage:
    Warum hängst Du den Pull-Widerstand nicht direkt zwischen den GPIO-Pin und GND bzw. 3,3V? So wäre es eigentlich richtig!
    Also ich würde es so beschalten:
    a) GPIO über PullUp-Widerstand (10k) mit 3,3V verbinden.
    b) GPIO über R3 (1k) mit Kollektor (Pin 4) des Optokopplers verbinden.
    c) Emitter (Pin 3) des Optokopplers mit GND verbinden. Hier ist kein Widerstand notwendig, die Strombegrenzung erfolgt über R3
    d) Vorwiderstand R1 der Optokoppler-LED auf 330 Ohm oder 470 Ohm erhöhen

    Peter

  • Hallo Peter!

    Wow - ich danke Dir vielmals für deine Mühe und deine glasklaren Antworten!

    Bitte entschuldige die Verquickung von Varianten innerhalb meiner Schaltung,
    aber ich wusste halt nicht welche Variante die bessere ist und wo dann welche Widerstände hin müssen.

    Deine Erklärungen haben mir als Rookie eindeutig geschildert wo die Probleme sitzen und Lösungen aufgezeigt.
    Ich werde demnächst wohl häufiger bei euch sein - und vielleicht kann ich mich als Programmierer im einen
    oder anderen Falle durch Hilfestellungen revanchieren.

    Nochmals vielen Dank und einen schönen Tag.

    Lieben Gruß,

    Stephan

    Edited once, last by brush2 (August 25, 2016 at 11:04 AM).

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!