Interne PullDown Widerstände unzuverlässig?

  • Hi,


    ich habe an meinem Slider an den Schienenenden jeweils einen Endschalter verbaut. In offenen Zustand leuchtet für jeden der beiden Schalter eine grüne LED. Wird ein Endschalter geschlossen (der Schlitten hat mechanischen Kontakt zum Schalter und schließt diesen) leuchtet eine rote Led, der Thread mit der Motorsteuerung wird abgebrochen.



    Jetzt fällt mir auf, dass die grünen LED (bei offenen Endschaltern sollten die eigentlich dauerhaft leuchten) zwischendurch mal ausgehen und die roten LED kurz aufblitzen, was natürlich meinen Thread stoppt. Daher meine Frage: sind die OnBoard PullDown Widerstände des Pi unzuverlässig? Oder was könnte hier noch als Ursache in Betracht kommen?


    Danke!

  • Servus,
    über die Zuverlässigkeit der internen Widerstände vermag ich nichts zu sagen ...
    Allerdings rate ich jedem davon ab, diese zu nutzen. Die tauchen in keinem Schaltplan auf und sind (wenn überhaupt) nur im Sourcecode ersichtlich. Dazu kommt, dass ich jetzt nicht mal sagen könnte wie gross/klein sie sind.


    Lieber externe Widerstände nehmen, dann kann man sie nicht so leicht übersehen/vergessen und zudem kannst Du sie variieren.


    Nur mal so als Tipp am Rande,
    -ds-

  • Hallo Dreamshader,



    Unterschreibe ich alles...


    GPIO2 und GPIO3 haben einen internen 1k8
    Die anderen haben Widerstände, die man auf 50 bis 60 kOhm schätzt.


    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

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    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.

    Edited once, last by Andreas ().

  • Hi.


    Die anderen haben Widerstände die man auf 50 bis 60 kOhm schätzt.


    ... kann ich durch verschieden Messungen bestätigen.



    GPIO2 und GPIO3 haben einen internen 1k8


    ... woher diese Erkentnisse ?


    Ich hab mich immer (wenn ich mal zu faul war) an den internen Pull-up/down (siehe Anhang) orientiert.
    Das passt grob.
    Hab mich mal intensiver damit beschäftig.
    Sind da 1 oder 2 R's intern vorhanden ? 1 Pullup 1 Pulldown ?.
    Laut Schematic: nein.
    Wenn nicht, ist die Pull-up/down Schematic wirklich nur grob.
    Die Pull-up/down ansteuerung ist dann letztlich 1 Pin mit Tristate-Modus.Trisate -> nix. High: oberer Transi schaltet -> pull-up. Low: unterer Transi schaltet -> pull-down.
    Mini-proggi schreiben das alle sec pull-up, 1 sec später pull-down, loop.Messen.
    Tatsächlich, ist immer nur 1 Zustand aktiv.(der letzte gilt).
    ...aber das nur nebenbei.


    and den TE.
    Wie meine Vorredner schon sagten: Ein Gpio als Eingang, an ner bischen längeren Leitung mit ~50k pull-down... kann den wohl zum schalten bewegen.


    gruß root

  • bei pullup oder down gilt immer so hochohmig wie möglich, so niederohmig wie nötig



    bei langen Leitungen sind rund 50k eben keine gute stabile Anbindung, da kann schon mal eine kleine Strörung durchschlagen, mit mehr Querstrom ist die Zustandsanbindung nach high oder low halt direkter und 20mA reichten für Telefonleitungen über Kilometer für stabile Signalisierung, dumm halt das der PI keine 20mA an einem Port mag oder sicher kann.

    lasst die PIs 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)

  • und 20mA reichten für Telefonleitungen über Kilometer für stabile Signalisierung, dumm halt das der PI keine 20mA an einem Port mag oder sicher kann.


    Muß er doch auch nicht:



    Der Widerstand 10k kann für höheren Strom verkleinert werden (Verlustleistung beachten) und auch an 5V oder 24V hängen.


    Der Eingang IN kann Spannungen zwischen -24 und 24V vertragen.


    Der Widerstand 33k begrenzt mit den internen Schutzdioden die Spannungen am GPIO auf 3.3V + 0.6V bzw. GND - 0.6V. Dabei fließen bei einer Spannung von 24V an IN etwa 0.7mA über die Schutzdioden. Sollten sie aushalten, nähere Daten zu den Dioden wären wünschenswert.


    Der Kondensator siebt in Verbindung mit dem Widerstand 33k kurze Störungen auf den Leitungen aus.


    Die internen Pullups / Pulldowns dürfen NICHT aktiviert werden, sonst Spannungsteiler mit den 33k.


    Ein versehentliches Schalten des GPIO als Ausgang führt nicht zum Kurzschluß über den Schalter.


  • bei pullup oder down gilt immer so hochohmig wie möglich, so niederohmig wie nötig


    Hi,


    ich fürchte, ich brauche nochmal eure Hilfe bei der Auswahl des passenden Widerstandes für einen externen PullDown an meinen GPIO für die Enschalter. Dazu muss ich glaube ich den Aufbau kurz beschreiben, denn sonst wird nicht genau klar welchen Widerstand ich brauchen könnte.


    Der Slider hat eine Länge von 1,5m. Er ist über eine 3,5 m lange Steuerleitung (10x 0,22m²) mit der Steuerung des Sliders verbunden, über die auch der Strom für die drei 12V DC Motoren (einer für den Schlitten und zwei für den Remote Head) fließt. Dieses lange Kabel (zusammen also 5m, die Länge für den Hin- und Rückweg zum entferntesten Endschalter wären dann ~10m) funktioniert wohl als Antenne, die für 'Radau' auf dem GPIO sorgt und mit dem der interne PullDown nicht klar kommt. Dieser 'Radau' ist aber offenbar unabhängig davon, ob ich einen oder mehrere Motoren ansteuere, die LED 'flattern' auch, wenn ich keinen der Motoren ansteuere. Auf der Leitung zu den Endschaltern liegen 3V3 an.


    Was wäre nun der passende Widerstand? 10K, 10M oder ?


    Danke!

    Edited once, last by doing ().


  • Der Widerstand 33k begrenzt mit den internen Schutzdioden die Spannungen am GPIO auf 3.3V + 0.6V bzw. GND - 0.6V. Dabei fließen bei einer Spannung von 24V an IN etwa 0.7mA über die Schutzdioden. Sollten sie aushalten, nähere Daten zu den Dioden wären wünschenswert.


    es ist unklar ob der PI interne Schutzdioden hat wie ein Arduino, die Erfahrungen hier widersprechen der Annahme!
    Es wäre sinnvoll statt Annahmen eher externe Schutzdioden vorzusehen, ich mache das bei Kopplung zu 5V schaltkreisen, Serien R 470 Ohm und wenigstens eine Ableitdiode BAT42 zu 3,3V und mein PI lebt!



    ...ich fürchte, ich brauche nochmal eure Hilfe bei der Auswahl des passenden Widerstandes für einen externen PullDown an meinen GPIO für die Enschalter. Dazu muss ich glaube ich den Aufbau kurz beschreiben, denn sonst wird nicht genau klar welchen Widerstand ich brauchen könnte.


    ....Auf der Leitung zu den Endschaltern liegen 3V3 an.
    Was wäre nun der passende Widerstand? 10K, 10M oder ?
    Danke!


    muss denn deine Schaltung an 3,3V hängen?
    musst du + Signal abfragen und pulldowns verwenden?


    Sicherer ist immer von +3,3V einen R zu nehmen sagen wir 1k zum GPIO als pullup und Schalter nach GND zu schalten, die Abrfage muss dann nur logisch umgedreht werden, ungeschaltet 1 und geschaltet 0.


    Damit wäre ein GPIO geschützt auch wenn der GPIO auf out und low liegt, der Strom wird dann durch den 1k auf 3,3mA begrenzt, im anderen Fall würde ein unbegrenzter Stom von +3,3V durch den Port fliessen bis der stirbt.

    lasst die PIs 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)

  • Doof ist, dass ich das Problem auf dem Breadboard nicht hatte (also ohne die 5m Steuerleitung) und ich das Ganze nun schon auf einem HAT verlötet habe. Ich muss mal überlegen ob ich das noch gedreht bekomme...

  • Hi doing ...
    hmm ... dann würde ich jetzt mal die internen Widerstände in der Software abschalten ( sonst hast Du eine Parallelschaltung, wenn Du externe verwendest ) und dann z.B. 10 kOhm Potis verbauen. Die bringst Du evtl. trotzdem unter ...
    Nach dem Einstellen ( also wenn das Ganze dann funktioniert ) die Einstellung mt z.B. etwas Nagellack fixieren.


    cu,
    -ds-


  • ...und dann z.B. 10 kOhm Potis verbauen


    für sowas würde ich keine Potis verbauen


    irgendwann oxidieren die Kontakte die Federschleifer geben nach und es wird unsicher, Potis neigen nun mal eher zum Ausfallen als Festwiderstände.


    Potis wirklich nur an Stellen die immer nachgestellt werden müssen da nun wirklich nicht!

    lasst die PIs 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)


  • dann würde ich jetzt mal die internen Widerstände in der Software abschalten ( sonst hast Du eine Parallelschaltung, wenn Du externe verwendest ) und dann z.B. 10 kOhm Potis verbauen. Die bringst Du evtl. trotzdem unter ...


    Hi ds,


    Potis wären auch eine Idee, mal sehen ob ich dafür noch Platz finde... Ist halt wirklich ärgerlich, dass ich schon alles verlötet habe... :wallbash:


    Wenn ich jar richtig verstanden habe, dann sollte es doch auch gehen wenn ich die GPIO mit einem 1K PullUp Widerstand an 3,3V hänge und die dann mit den Endschaltern auf GND schalte (klar, der Code muss geändert werden). Ich hatte nicht vor dem Pi das Leben schwer zu machen...

  • Ui ui ... nicht mit 1k anfangen ... das ist zu klein.
    Und jar hat schon recht ... Potis wären nichts anderes als eine Notlösung, wenn's gar nicht anders geht.
    Besser: 10k Poti mit Verlängerungsdraht anlöten, einstellen, ausmessen und dann einen SMD-Widerstand verwenden.
    Die sind so klein, dass Du dafür sicher noch irgenwo Platz findest.


    cu,
    -ds-


  • Wenn ich jar richtig verstanden habe, dann sollte es doch auch gehen wenn ich die GPIO mit einem 1K PullUp Widerstand an 3,3V hänge und die dann mit den Endschaltern auf GND schalte (klar, der Code muss geändert werden). Ich hatte nicht vor dem Pi das Leben schwer zu machen...


    1k sollte die unterste Grenze sein, sonst gilt


    so groß wie möglich, so klein wie nötig


    mit 10k kann man anfangen 3,3k wäre meine Wahl bei längeren Kabeln

    lasst die PIs 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)

  • Moin jar ...
    was gibt's Neues aus dem Kanzleramt? :) ...


    Meinst Du nicht, dass 1k schon mehr als grenzwertig ist? Das ist ja fast schon ein Kurschluss bei mehr als 3 mA, wenn ich mich nicht verrechnet habe ... um den Pegel zu ändern.


    cu,
    -ds-


  • Besser: 10k Poti mit Verlängerungsdraht anlöten, einstellen, ausmessen und dann einen SMD-Widerstand verwenden.


    Ich habe den Aufbau noch auf einem Breadboard rumstehen... ich muss mir nur überlegen wie ich die 5m Steuerleitung noch dazwischen bekomme, dann sollte ich das mit einem Poti auf dem Breadboard ausmessen und den zuvor ausgemessenen Widerstand reinfrickeln können.


    Aber irgendwie ertappe ich mich gerade dabei ein grundsätzliches Verständnisproblem bei etwas zu haben, von dem ich dachte ich hatte es verstanden (bitte um sofortige Steinigung, aber bitte mit den kleinen Runden, dabei dürfen auch gerne Otternasen verspeist werden). Ich ziehe den GPIO mit einem PullUp auf High (Verbindung zwischen GPIO IN und 3,3V) und schalte ihn dann mit dem Endschalter auf Low (GND). Welche Rolle spielt hier noch der Widerstand? Ist der Widerstand nicht nur dazu da das Potential am GPIO zu fixieren, den Strom zu begrenzen und den GPIO zu schützen? Sollte er damit nicht direkt bestimmbar sein?


    Wer wirft den ersten Kiesel?

    Edited once, last by doing ().


  • Meinst Du nicht, dass 1k schon mehr als grenzwertig ist? Das ist ja fast schon ein Kurschluss bei mehr als 3 mA, wenn ich mich nicht verrechnet habe ... um den Pegel zu ändern.


    ja sind halt 3,3mA halte ich für den vertretbaren kleinsten R


    wobei einer hier seit Jahren behauptet 820 Ohm am 1w zu haben und in Einzelfällen wenn der auf low gezogen wird mag es reichen weil das ja normal nicht dauerhaft passiert und wenn andere GPIO nicht genutzt werden wird auch der SoC nicht beleidigt.



    ....Ich ziehe den GPIO mit einem PullUp auf High (Verbindung zwischen GPIO IN und 3,3V) und schalte ihn dann mit dem Endschalter auf Low (GND). Welche Rolle spielt hier noch der Widerstand?
    Ist der Widerstand nicht nur dazu da das Potential am GPIO zu fixieren,


    ja, eben niederohmiger fester anbinden damit Störimpule nicht den Pegel versauen und ein low signalisieren wo kein low Taster gedrückt ist.



    den Strom zu begrenzen und den GPIO zu schützen?


    ja, um im Programmfehlerfall wenn irgendjemand oder Amok Lauf den GPIO auf out und low stellt um den GPIO oder SoC nicht zu grillen, denn ein Netzteil oder VCC Versorgung kann mehr Strom liefern als am GPIO vertragen wird.



    Sollte er damit nicht direkt bestimmbar sein?


    klar nenne Daten, die Kapazität vom Kabel und die Umladegeschwindigkeit die du brauchst, ist ja nix weiter als ein R-C Glied, bei high wird ein leerer Kabel und Eingangskondensator von Null auf VCC umgeladen mit Tau = R x C, die highschwelle ab wann high erkannt wird liegt irgendwo ab halber VCC und >90%VCC liegt irgendwo ab 3Tau


    Dito bei aufgeladenen Kondis und bei Tasterdruck nach GND


    Nun ist es so das man die Umladung in Nullzeit schafft mit unendlichem Strom, also das R gegen NULL bringt, nur unendlichen Strom mag der GPIO nicht und auch nicht mal der Taster und passend dicke Kabel für unendlichen Strom will keiner an den PI anbringen, Supraleitung für daheim ist noch nicht erfunden.



    Wer wirft den ersten Kiesel?


    genug gesteinigt.

    lasst die PIs 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)

  • Hi.

    Aber irgendwie ertappe ich mich gerade dabei ein grundsätzliches Verständnisproblem bei etwas zu haben, von dem ich dachte ich hatte es verstanden (bitte um sofortige Steinigung, aber bitte mit den kleinen Runden, dabei dürfen auch gerne Otternasen verspeist werden). Ich ziehe den GPIO mit einem PullUp auf High (Verbindung zwischen GPIO IN und 3,3V) und schalte ihn dann mit dem Endschalter auf Low (GND). Welche Rolle spielt hier noch der Widerstand? Ist der Widerstand nicht nur dazu da das Potential am GPIO zu fixieren, den Strom zu begrenzen und den GPIO zu schützen? Sollte er damit nicht direkt bestimmbar sein?


    Wer wirft den ersten Kiesel?


    .... keiner schmeisst was ... :D


    Versteh' so:
    Der GPIO ist ein Eingang, damit extrem hochohmig.
    Wenn der Taster losgelassen ist, "schwebt" der Eingang quasi, wenn kein Pull-up dran wäre.
    Mit dem Pull-up "hälst" ihn auf nen Ruhepegel.
    Bein drücken wird er auf Masse gelegt.
    Der Pull-up ebenfalls.Das R begrenzt quasi den Kurzschluß-strom.


    Zur Größe des pull-ups.
    Wenn der GPIO von nem Taster gesteuert, den R sol groß wöhlen, dass kein unnötiger "Kurzschluß-strom" beim drücken "verbraten" wird.
    Wird der GPIO von ner Logik angesteuert, muss der pull-up so groß sein, dass Logik beim low-schalten den fließenden "Kurschluß-strom" auch verträgt. (sink-load aus Logikbaustendatenblat)

    Edited once, last by root ().