GPIO als Eingang keine Funktion

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

    bin neu hier und habe mich schon gut umgesehen, leider finde ich kein Thema was so richtig zu meinem Problem passt. Daher versuch ich es jetzt mal auf diesem Wege.


    Kurze Vorgeschichte:

    Ich benutze einen RPI 2 Modell B für meine Haussteuerung mir einem Arduino Nano als Hardwarekopplung, als Software Raspian Jessie und die Software Pimatic.
    Nun habe ich Eltako-Relais für meine Beleuchtung im Haus mit 2 Schliesserkontakte verbaut. Ein Kontakt schaltet das Licht, der andere den Kontakt zum GPIO als Zustandsanzeige des Relais, der Lampe.
    Ich versorge alles über ein 12V Trafo und 2 Converter. Einen Converter auf 5V zur Versorgung des RPI den anderen Converter auf 3,3V zur Versorgung der GPIO´s über die Eltakos.

    Nun habe ich das Problem das die GPIO´s nicht richtig funktionieren. Ganz sicher kann ich sagen das der GPIO2 und 3 keine Zustandsänderung annehmen. Diese behalten immer den Zustand "high".

    Wenn ich im SSH das Kommando: gpio readall
    eingebe stehen alle GPIO´s auf "IN"

    Habe die Schaltung auch mit einem "Pull-Down" Wiederstand von 10kOhm beschaltet.
    Hänge hier mal Bilder an in der Hoffnung dass dieses meine Situation etwas besser erklärt.

    [RPI] http://www.bilder-upload.eu/show.php?file=…-1473278399.jpg

    [Relais] http://www.bilder-upload.eu/show.php?file=…-1473278445.jpg

    [Schatplan] http://www.bilder-upload.eu/show.php?file=…-1473278609.jpg

    Was mache ich da nun falsch??

    Danke

  • Hallo Masterplayer,

    herzlich Willkommen in unserem Forum!

    Hast Du bzw. irgendeine laufende Software I²C aktiviert? Dann nämlich kannst Du die GPIO2 und GPIO3 nicht als normale GPIO-Pins zum Setzen oder Abfragen von einfachen Pegeln nutzen.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.


  • Nun habe ich das Problem das die GPIO´s nicht richtig funktionieren. Ganz sicher kann ich sagen das der GPIO2 und 3 keine Zustandsänderung annehmen. Diese behalten immer den Zustand "high".

    Wenn ich im SSH das Kommando: gpio readall eingebe stehen alle GPIO´s auf "IN"


    Habe die Schaltung auch mit einem "Pull-Down" Wiederstand von 10kOhm beschaltet.

    GPIO 2+3 sind auf dem Raspi hart mit 1,8k Pullupwiderständen (für den I2C) gegen 3,3V verschaltet. Mit Deinen 10k kommst Du da nicht an. Am einfachsten ziehst Du also mit Deinem Relais gegen Masse und nicht gegen 3,3V. ... oder Du nimmst andere GPIO's und achtest auf die internen Pullup/~downs des Broadcom.

    Schau mal hier (auch wenn das nicht Deinem Modell entsprechen sollte) R23, R24: https://www.raspberrypi.org/documentation/…-Schematics.pdf
    oder hier https://www.raspberrypi.org/documentation/…atics/README.md


    Schöne Grüße

    schnasseldag

  • Hallo und danke für die schnellen Antworten.

    Ich habe in der raspi-config in den Advanced Einstellungen alle Möglichkeiten also auch den I2C deactiviert!
    WIe gesagt, wenn ich im SSh gpio readall eingebe stehen dort auch alle GPIO´s auf " IN ".

    Aber wenn die GPIO´s 2/3 Hard mit einem 1,8kOhm Pull-Up beschaltet sind ist es ja klar das ich da mit einem 10kOhm Pull-Down nicht ankomme........... Danke
    Sind denn sonst noch GPIO´s Hard mit einem Pull-Up beschaltet?
    Ist mein Gedankengang und Ausführung denn sonst richtig?

    Kann ich meinen RPi zerstören wenn ich gleichzeitig alle GPIO´s beschalte? (Frage weil mir einer vor Monaten gestorben ist und den hatte ich im gleichen Einsatz, weiss nur nicht warum das passiert ist)

    Danke


  • Sind denn sonst noch GPIO´s Hard mit einem Pull-Up beschaltet?


    Ohne mich jetzt in die einzelnen Datenblätter zu stürzen, kann ich das nicht sagen. Allerdings dürften die wenigsten GPIO's extern mit Pullups ausgerüstet sein, da die Broadcom Chips über interne Pullup/~down Widerstände verfügen, welche bei einer Konfiguration als Eingang hinzugeschaltete werden können. Ich meine deren Wert läge so bei 50kOhm (nagle mich aber bitte nicht fest).


    Kann ich meinen RPi zerstören wenn ich gleichzeitig alle GPIO´s beschalte? (Frage weil mir einer vor Monaten gestorben ist und den hatte ich im gleichen Einsatz, weiss nur nicht warum das passiert ist)

    Jein. Es kommt darauf an, was Du unter "beschalten" verstehst.

    Mehr als 3,3V auf einem GPIO-Eingang ist sicher nicht ratsam. Mehr als einen "gewissen" Strom (2mA, 16mA... ich bleibe hier bewußt schwammig, weil das in epischer Breite in diversen Artikeln bereits exakt beschrieben wurde) aus einem GPIO-Ausgang zu ziehen bzw. die erlaubte Summe von (ich meine es waren 80mA) zu überschreiten ist auch nicht ratsam. Einen GPIO-Eingang jedoch auf auf GND zu ziehen ist sicher nie ein Problem.

  • Hallo Masterplayer,


    Kann ich meinen RPi zerstören wenn ich gleichzeitig alle GPIO´s beschalte? (Frage weil mir einer vor Monaten gestorben ist und den hatte ich im gleichen Einsatz, weiss nur nicht warum das passiert ist)

    Ja: Wenn Du über alle GPIO-Ausgänge mehr als 50 mA in Summe ziehst, KANN etwas kaputt gehen. Bei leichten Defekten funktioniert ein einzelner GPIO nicht mehr, oder alle GPIO funktionieren nicht mehr, oder einer der Chips wird mächtig heiß.

    Ja: Wenn ein GPIO-Eingang einen Pegel von >3,3 V angeboten bekommt.

    Ja: Wenn eine Induktion ausgeschaltet wird und keine Freilaufdiode die entgegengesetzte Induktionsspannung aufnimmt.


    Nein: Wenn Du Dich der Angsthasen-Fraktion hier im Forum anschließt... Nie mehr als 2 mA pro GPIO-Output ziehen. Rechnen, messen, über die Schaltung nachsinnen, rechnen, messen, bis es passt. Ich gehöre auch dieser Fraktion an - meine Raspberry Pis, die für derartige Experimente und dauerhafte Aufbauten eingesetzt wurden, haben alles seit 2012 anständig überlebt.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Erstmal danke!

    Ok, ich benutze ja gar keinen GPIO als Ausgang sondern nur als Eingänge.
    Und mein Converter liefert 3,24V (Gemessen und extra so eingestellt!)
    Tja, eine Induktion ist mir noch nicht in den Sinn gekommen aber richtig, dennoch kann ich so adhoc keine Freilaufdioden dazwischen "basteln"......

    Mal das ganze von der anderen Seite aufgerollt. Ist es, wenn ich das alles so lese, nicht sinniger meine 10kOhm Widerstände als Pull-Up umzuverdrahten?
    Oder ist es egal ob Pull-Up oder Pull-Down? Ich mein, bei Pull-Up und meinen 10kOhm würden ja dauerhaft 0,33mA laut Herrn Ohm fließen, und das x23 (nutze 23GPIO´s). Macht das etwas bei einer externen Spannungsversorgung?

    Danke


  • Mal das ganze von der anderen Seite aufgerollt. Ist es, wenn ich das alles so lese, nicht sinniger meine 10kOhm Widerstände als Pull-Up umzuverdrahten?


    Warum willst Du das tun, wenn doch auf dem Raspi sowieso schon 1,8kOhm Pullup sitzen?! Deine 10k Widerstände kannst Du Dir dann sparen und mit dem Relais einfach gegen Masse ziehen.


  • Deine 10k Widerstände kannst Du Dir dann sparen und mit dem Relais einfach gegen Masse ziehen.

    genauso macht es doch I2C nur muss man dann eben auf I2C verzichten wenn man die nur als Ports nehmen will, Taster oder Relais Kontakt nach GND ziehen und auslesen.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Guten Morgen,

    ja ok. Ich meinte jetzt nur, ist es nicht sinnvoller und ggf. auch stabiler und sicherer alle GPIO´s so als Pull-Up zu verdrahten?

    (Und natürlich könnte ich das auch schneller realisieren... Würde dann GPIO 2/3 nicht mit 3,3V bestromen denn die werden ja intern dann schon bestromt so wie ich das nun lese (Oder ist das egal??). Und dann den Rest der GPIO´s mit meinen 10kOhm umbauen. Habe jetzt nämlich nix gefunden bezüglich anderer, festverbauter Pull-Up/Down Widerstände?!!? Nur welche, die ich "hinzuschalten muss". Da ich aber bis jetzt gar nicht weiss wie das geht kann ich da ja auch nix falsch machen! ;) )


  • ja ok. Ich meinte jetzt nur, ist es nicht sinnvoller und ggf. auch stabiler und sicherer alle GPIO´s so als Pull-Up zu verdrahten?

    nein NIEMALS weil der PI als Output nicht viel treiben kann, alle GPIO mit Zwangspullup zu "beglücken" wäre ja mehr Strom wenn der mal auf OUT und low werden soll!

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)


  • nein NIEMALS weil der PI als Output nicht viel treiben kann, alle GPIO mit Zwangspullup zu "beglücken" wäre ja mehr Strom wenn der mal auf OUT und low werden soll!

    ok, danke.
    Bestraft mich wenn ich jetzt falsch liege aber:

    Beim Start des RPI hängen doch alle GPIO´s in der Luft oder (Bis auf GPIO 2/3 welche ja den festverbauten 1,8kOhm haben?)? In der raspi-config hab ich jegliche Sonderfunktionen deaktiviert. Wenn ich die Software Pimatic starte setzt er mir alle GPIO´s auf "IN" wie aus der GPIO READALL zu entnehmen ist. Ich kann auch nur alle GPIO´s als Eingang gebrauchen.

    Soll ich dann alle GPIO als Eingang mit dem Pull-Down beschaltet lassen wie ich es nun habe und nur die GPIO 2/3 lediglich mit dem Schliesser auf 0V ziehen?

    Ist es nicht sicherer, natürlich solange ich alle GPIO als Eingang konfiguiere, Pull-Up Wieerstände zu nehmen? (Thema Induktionen?)

    Sorry für die vielen Fragen....

    Einmal editiert, zuletzt von Masterplayer (9. September 2016 um 15:26)

  • sorry ich verstehe dich kaum,

    was willst du erreichen?



    Beim Start des RPI hängen doch alle GPIO´s in der Luft oder (Bis auf GPIO 2/3 welche ja den festverbauten 1,8kOhm haben?)?

    ja und nun, das stört Millionen von PIs nicht und einige haben was angesteckt die hängen erst Recht nicht in der Luft.


    In der raspi-config hab ich jegliche Sonderfunktionen deaktiviert.

    wenn du musstest OK, nur warum?


    Wenn ich die Software Pimatic starte setzt er mir alle GPIO´s auf "IN" wie aus der GPIO READALL zu entnehmen ist.

    doofe Software, wer macht denn sowas?
    warum hindert mich die Software andere Funktionen zu nutzen?


    Ich kann auch nur alle GPIO´s als Eingang gebrauchen.

    ALLE? schaffe dir Portextender an, ich sag mal so, den Tx als Augang würde ich im Zweifel immer nutzen wollen und sei es um nur Statusmeldungen auszugeben wenn andere Wege klemmen.


    Soll ich dann alle GPIO als Eingang mit dem Pull-Down beschaltet lassen wie ich es nun

    wenn du es brauchst, ich sehe den Sinn noch nicht darin.


    Ist es nicht sicherer, natürlich solange ich alle GPIO als Eingang konfiguiere, Pull-Up Wieerstände zu nehmen? (Thema Induktionen?)

    nun echte pullup oder pulldown als R verdrahtet können nie von Software abgeschaltet werden, aber sie stellen eine Last dar wenn der mal auf Ausgang gehen soll, man sollte schon genau wissen wann man was tut.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • OK, sorry, ich versuche mal meine Situation etwas zu beschreiben.

    Also:
    Ich (möchte) benutze den RPI als "Haussteuerung". Das sieht im Moment so aus ds ich einen RPI 2 Modell B habe, einen Arduino Nano über USB Anschluss mit dem RPI, ein 12V Netzteil, 2Converter (einen auf 5V und einen auf 3,3V), 4Stk 15xRelais-Platinen mit 433MHz Receiver und auf dem Arduino den 433Mhz Transmitter. Dazu eine Elektroinstallation im Haus mit Tasterschaltungen fürs Licht und für die Jalousien. So.......

    Jetzt geht es mir hier um mein Licht bzw. um eine "Zustandskontrolle" meiner Lichter im und um mein Haus herum. Dieses ist so verdrahtet das ich jedes Licht mit einem Stromstoßrelais (Eltako) ansteuere welcher 2 Schließer hat. Ein Schließer schaltet bei Betätigung über einen Schalter oder über einen Stromstoß eines Relais auf der Platine welche ich über 433Mhz mit dem RPI ansteuern kann, das Licht an, den andere Schließer des Eltakos möchte ich nun dazu nutzen eine Zustandsanzeige auf einen GPIO zu signalisieren (HIGH oder LOW, egal). Für alle Lichter im Haus benötige ich in Summe 23 GPIO´s

    Die Software Pimatic, welche ich als Haussteuerungssoftware einsetze, hat ein GPIO Plugin mit welcher ich beim Start der Software bestimmen kann welcher GPIO welchen Zustand annehmen soll. Diese lasse ich somit momentan alle GPIO´s beim Start auf IN setzen, da ich (zumindest bis jetzt) lediglich 23 als Eingang gebrauche. Andere Möglichkeiten schließe ich momentan mal aus da der RPI auch "fest" in meine Verteilung eingebaut ist.
    Ausgänge realisiere ich, wie oben gesagt, über 433Mhz da ich ansonsten nochmal 52 Ausgänge bräuchte und die jetzige Lösung über Funk gut funktioniert....

    Nun war mein erster Problem das die Eingänge nicht sauber rein kamen und die GPIO´s 2/3 gar keine Zustandsänderung annahmen. Die anderen GPIO´s habe ich, denke ich, im Griff nur kam ich nicht auf die Lösung mit den GPIO 2/3. Da habe ich ja mittlerweile gelernt das diese mit einem 1,8kOhm hart beschaltet sind.

    Mich brachte es dann nur zu der weitern Frage wie ich meine allgemeine Situation am besten/stabilsten und auch am sichersten lösen kann in Bezug auf alle meine Verwendeten GPIO´s als Eingänge.??....!

    So, ich hoffe das erklärt etwas meine Situation und macht sie nicht nur noch undurchsichtiger........

    DANKE

  • Hallo Masterplayer,

    wie jar schon andeutete - ich würde ebenfalls Abstand von den GPIO's nehmen und Portexpander dazwischenschalten. Die Gründe - dann hast Du überall gleichwertig definierte Ein-/Ausgänge mit den gleichen Pegeln und Hysteresen. Keiner funkt Dir mit Pullups auf dem Raspi in die Quere. Optokoppler wären das Sahnehäubchen, aber - in Anbetracht des Preises der beliebten MCP23x17 lohnen die (und der Lötaufwand) kaum. Wird der IO-Expander gesockelt, dann läßt sich ein Schaden unter 2€ in 15s durch das Einstecken eines neuen beheben. Und noch ein Grund, der für "ein wenig Halbleiterzeugs" zwischen Deinen externen Leitungen und dem Raspi spricht - der elektrische Schutz des Raspi. Gehen Halbleiter kaputt, dann schalten sie häufig auf Kurzschluß. D.h. wenn Dir ein Portexpander abraucht, dann schützt er u.U. den Raspi. Die Chance, daß der Raspi dabei defekt geht ist erheblich niedriger (und der Raspi ist schließlich des teurere Bauteil), als dessen GPIO's in einem Verteilerkasten zu "verteilen".
    Und wenn Du vor die Portexpander noch Tiefpässe baust, dann hast Du Probleme mit Phasenanschnittsteuerungen, Relaisprellen u.a. auch relativ einfach im Griff und mußt nicht mit CPU-Leistung "entstören". Vermutlich ist das für Dich (derzeit) unerheblich, da das Problem von Pimatic (bzw. dessen Pollintervall) verdeckt wird. Wenn Du allerdings später mal mehr machen willst, als Zustände zu visualisieren, dann macht sich der Aufwand für eine saubere Hardware schnell bezahlt.

    Eine Grundregel: Störungen beseitigt man so früh wie möglich (und schleppt sie nicht über die Platine, geschweige denn in eine CPU).

    Schöne Grüße

    schnasseldag


  • Hallo,
    alles klar, danke.
    Dann werde ich mir mal einen MCP23x17 anschaffen und anfangen damit zu experimentieren.
    Können dieses dann als Eingang eine Spannung von 5V haben?

    jain, die MCP sind zickig bezüglich der I2C high pegel habe ich gelesen!
    80% vom 5V und das wären 4V schafft der PI nicht.

    die PCF8574 wollen nur 70% also 3,5V max,

    Man kann bei beiden die VCC ja etwas absenken, eine Schottky Diode zum VCC vom PCF8574 reicht ja um die high Pegelerkennung auf 3V zu senken

    ich würde ja PCF8574 wählen, da kann der I2C vom PI auf 3,3V bleiben die PCF8574 sollten mit 5V - Diodenspannung laufen.

    Die Eingansspannung vom Port ist dann auch gesenkt auf 5,2V reicht aber-> VCC + 0,7V

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Also wenn es nur um die Spannungshöhe geht, ich wollte nicht vom RPI speisen sondern von meinem Converter der hinter dem Trafo liegt. Dieser ist eimstellbar bis 12V (12V Trafo).
    Auf was für eine Spannung würdet Ihr dann die MCP23017 (konnte ich noch vom Kollegen bekommen) einstellen bzw. den Converter?
    Danke

Jetzt mitmachen!

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