Wie berechne ich den erforderlichen Wert für einen Pullup-Widerstand?

98

Es gibt viele Tutorials, die einen Pull-Up- oder Pull-Down-Widerstand in Verbindung mit einem Schalter verwenden, um eine schwebende Masse zu vermeiden, z

http://www.arduino.cc/en/Tutorial/button

Viele dieser Projekte verwenden einen 10-K-Widerstand, der lediglich einen guten Wert darstellt.

Wie bestimme ich bei gegebener Schaltung den geeigneten Wert für einen Pulldown-Widerstand? Kann es berechnet werden oder wird es am besten durch Experimente bestimmt?

Mark Harrison
quelle
Ich fand dieses Tutorial von sparkfun eine gute Einführung in Pull-Up- und Pull-Down-Widerstände. Sparkfun Pull-Up-Widerstände und die Antworten auf Ihre am besten gestellten Fragen sind großartig.
Richard Chambers

Antworten:

82

Schnelle Antwort: Durch Erfahrung und Experimentieren ermitteln Sie den richtigen Pullup / Pulldown-Wert.

Lange Antwort: Der Pullup / Down-Widerstand ist das R in einer RC-Zeitgeberschaltung. Die Geschwindigkeit, mit der Ihr Signal übergeht, hängt von R (Ihrem Widerstand) und C (der Kapazität dieses Signals) ab. Oft ist es schwierig, C genau zu kennen, da dies von vielen Faktoren abhängt, einschließlich der Art und Weise, wie diese Ablaufverfolgung auf der Leiterplatte geleitet wird. Da Sie C nicht kennen, können Sie nicht herausfinden, was R sein soll. Hier kommen Erfahrung und Experimente ins Spiel.

Hier sind einige Faustregeln, wenn ein guter Pullup / Down-Widerstandswert geschätzt wird:

  • Für die meisten Dinge funktionieren 3,3k bis 10k Ohm einwandfrei.
  • Verwenden Sie für leistungsempfindliche Stromkreise einen höheren Wert. 50k oder sogar 100k Ohm können für viele Anwendungen (aber nicht für alle) verwendet werden.
  • Verwenden Sie für geschwindigkeitsempfindliche Schaltkreise einen niedrigeren Wert. 1 kOhm ist durchaus üblich, während Werte von nur 200 Ohm keine Seltenheit sind.
  • Manchmal, wie bei I2C, gibt der "Standard" einen bestimmten zu verwendenden Wert an. In anderen Fällen empfehlen die Anwendungshinweise für Chips möglicherweise einen Wert.

quelle
10
200 Ohm für einen Pullup? Wow, das ist viel Ruhestrom.
0x6d64
4
@ 0x6d64 - Sie gehen davon aus, dass der Bus im Ruhezustand niedrig ist.
Connor Wolf
3
Texas Instruments hat eine sehr gute Referenz, die nicht nur erklärt, wie der Wert für einen I2C-Pull-up-Widerstand berechnet wird, sondern auch, wie die Formel tatsächlich abgeleitet wird. Siehe den Anwendungsbericht zur I2C-Bus-Pullup-Widerstandsberechnung unter ti.com/lit/an/slva689/slva689.pdf .
JamieSee
77

Verwenden Sie 10 kΩ, es ist ein guter Wert.

Für mehr Details müssen wir uns ansehen, was ein Pullup macht. Angenommen, Sie haben eine Drucktaste, die Sie mit einem Mikrocontroller lesen möchten. Der Druckknopf ist ein kurzzeitiger SPST-Schalter (Single Pole Single Throw). Es hat zwei Verbindungspunkte, die entweder verbunden sind oder nicht. Wenn die Taste gedrückt wird, werden die beiden Punkte verbunden (Schalter ist geschlossen). Beim Loslassen sind sie nicht verbunden (Schalter ist offen). Mikrocontroller erkennen die Verbindung oder Trennung nicht automatisch. Was sie spüren, ist eine Spannung. Da dieser Schalter nur zwei Zustände hat, ist es sinnvoll, einen Digitaleingang zu verwenden, der immerhin nur für einen von zwei Zuständen ausgelegt ist. Das Mikro kann direkt erkennen, in welchem ​​Zustand sich ein digitaler Eingang befindet.

Ein Pullup hilft dabei, die offene / geschlossene Verbindung des Schalters in eine niedrige oder hohe Spannung umzuwandeln, die der Mikrocontroller erfassen kann. Eine Seite des Schalters ist mit Masse verbunden und die andere mit dem Digitaleingang. Wenn der Schalter gedrückt wird, wird die Leitung auf Tiefpegel geschaltet, da der Schalter sie im Wesentlichen gegen Masse kurzschließt. Wenn der Schalter losgelassen wird, treibt jedoch nichts die Leitung auf eine bestimmte Spannung. Es kann einfach niedrig bleiben, andere Signale in der Nähe durch kapazitive Kopplung aufnehmen oder aufgrund des winzigen Kriechstroms über den Digitaleingang auf eine bestimmte Spannung schweben. Die Aufgabe des Pullup-Widerstandes besteht darin, bei geöffnetem Schalter einen positiven, garantiert hohen Pegel bereitzustellen, den Schalter jedoch im geschlossenen Zustand einen sicheren Masseschluss zu ermöglichen.

An die Größe des Pullup-Widerstands werden zwei Hauptanforderungen gestellt. Es muss niedrig genug sein, um die Leitung fest nach oben zu ziehen, aber hoch genug, um nicht zu viel Strom fließen zu lassen, wenn der Schalter geschlossen ist. Beide sind offensichtlich subjektiv und ihre relative Bedeutung hängt von der Situation ab. Im Allgemeinen stellen Sie den Pullup gerade so niedrig ein, dass sichergestellt ist, dass die Leitung hoch ist, wenn der Schalter geöffnet ist, und zwar angesichts all der Dinge, die die Leitung ansonsten niedrig machen könnten.

Schauen wir uns an, was nötig ist, um die Leine hochzuziehen. Betrachtet man nur den DC-Bedarf, so wird der Leckstrom der digitalen Eingangsleitung aufgedeckt. Der ideale digitale Eingang hat eine unendliche Impedanz. Reale tun dies natürlich nicht und das Ausmaß, in dem sie nicht ideal sind, wird normalerweise als maximaler Leckstrom ausgedrückt, der entweder aus dem Stift austreten oder in den Stift eintreten kann. Angenommen, Ihr Mikro ist für einen maximalen Leckstrom von 1 µA an den digitalen Eingangspins spezifiziert. Da der Pullup die Leitung hoch halten muss, wird im schlimmsten Fall angenommen, dass der Pin wie eine Stromsenke von 1 µA gegen Erde aussieht. Wenn Sie zum Beispiel einen 1-MΩ-Pullup verwenden, würde dieser 1-µA-Wert 1 Volt über dem 1-MΩ-Widerstand verursachen. Nehmen wir an, es handelt sich um ein 5-V-System, das heißt, der Pin ist garantiert nur mit 4 V belastet. Nun müssen Sie sich die digitalen Eingangsspezifikationen ansehen und herausfinden, welche Mindestspannung für einen logisch hohen Pegel erforderlich ist. Das kann 80% von Vdd für einige Mikros sein, was in diesem Fall 4 V wäre. Daher befindet sich ein 1 MΩ-Pullup direkt am Rand. Sie benötigen mindestens etwas weniger als das, um aus DC-Gründen ein korrektes Verhalten zu gewährleisten.

Es gibt jedoch andere Überlegungen, und diese sind schwerer zu quantifizieren. Jeder Knoten hat eine kapazitive Kopplung mit allen anderen Knoten, obwohl die Größe der Kopplung mit der Entfernung abnimmt, so dass nur nahegelegene Knoten relevant sind. Wenn diese anderen Knoten über Signale verfügen, können diese Signale an Ihren Digitaleingang gekoppelt werden. Ein Pullup mit einem niedrigeren Wert verringert die Impedanz der Leitung, wodurch die Menge des Streusignals verringert wird, das von der Leitung aufgenommen wird. Es gibt Ihnen auch einen höheren garantierten Mindestgleichstrompegel gegenüber dem Leckstrom, sodass mehr Raum zwischen diesem Gleichstrompegel und dem Punkt bleibt, an dem der Digitaleingang das Ergebnis möglicherweise als logisch niedrig interpretiert, anstatt als beabsichtigt logisch hoch. Wie viel ist genug? Offensichtlich ist der 1 MΩ-Pullup in diesem Beispiel nicht ausreichend (ein zu hoher Widerstand). Es ist fast unmöglich, die Kopplung an Signale in der Nähe zu erraten, aber ich würde mindestens eine Größenordnung Spielraum über dem minimalen DC-Fall wünschen. Das heißt, ich möchte einen Pullup von 100 kΩ oder weniger, obwohl ich möchte, dass er niedriger ist, wenn viel Rauschen in der Nähe ist.

Es gibt eine andere Überlegung, die den Pullup nach unten treibt, und das ist die Anstiegszeit. Die Leitung hat eine gewisse Streukapazität zur Erde, so dass sie exponentiell zum Versorgungswert abfällt, anstatt sofort dorthin zu gehen. Angenommen, die gesamte Streukapazität summiert sich auf 20 pF. Das heißt, der 100-kΩ-Pullup beträgt 2 µs. Es dauert 3 Zeitkonstanten, bis 95% des Einschwingwerts erreicht sind, in diesem Fall 6 µs. Das hat in der menschlichen Zeit keine Bedeutung, spielt in diesem Beispiel also keine Rolle. Wenn dies jedoch eine digitale Busleitung wäre, die Sie mit einer Datenrate von 200 kHz betreiben möchten, würde dies nicht funktionieren.

Schauen wir uns nun die andere konkurrierende Überlegung an, bei der es sich um den Strom handelt, der beim Drücken des Schalters verschwendet wird. Wenn dieses Gerät keinen Netzstrom mehr hat oder auf andere Weise einen erheblichen Strom verbraucht, spielen einige mA keine Rolle. Bei 5 V werden 5 kΩ benötigt, um 1 mA zu ziehen. Das ist tatsächlich "viel" Strom in einigen Fällen und aufgrund der anderen Überlegungen auch mehr als erforderlich. Wenn dies ein batteriebetriebenes Gerät ist und der Schalter für einen wesentlichen Teil der Zeit eingeschaltet sein könnte, kann jeder µA von Bedeutung sein, und Sie müssen sehr sorgfältig darüber nachdenken. In einigen Fällen können Sie den Schalter in regelmäßigen Abständen abtasten und den Pullup nur für kurze Zeit um das Sample herum einschalten, um die Stromaufnahme zu minimieren.

Abgesehen von speziellen Überlegungen wie dem Batteriebetrieb sind 100 kΩ hoch genug, um mich nervös zu machen, wenn ich Geräusche wahrnehme. 1 mA Strom, der bei eingeschaltetem Schalter verschwendet wird, scheint unnötig groß zu sein. Also 500 µA, was bedeutet, dass eine Impedanz von 10 kΩ ungefähr richtig ist.

Wie gesagt, benutze 10 kΩ. Es ist ein guter Wert.

Olin Lathrop
quelle
1
Eine zusätzliche Anforderung ist, dass einige Schalter, zum Beispiel die üblichen Taktschalter, nur für einen sehr geringen Strom, zum Beispiel 1 mA, spezifiziert sind. Es ist zu beachten, dass 10 k (bei 5 V oder weniger) diese Anforderung erfüllen, es ist jedoch zu beachten, wenn niedrigere Widerstandswerte berücksichtigt werden.
Wouter van Ooijen
1
@Wouter - Meine bevorzugten Taktschalter haben nicht nur ein Maximum von 50 mA (1 mA scheint mir niedrig zu sein), sondern auch ein Minimum. Um die Kontakte sauber zu halten, platziere ich parallel zum Schalter einen Kondensator. Die Idee dabei ist, dass die Kurzschlussstromspitze beim Schalten die Kontakte sauber hält. Obwohl im Test eine Lebensdauer von nur 100.000 Zyklen angegeben ist, hatten wir keine Probleme, sie bis 200.000 Zyklen zu verwenden.
Stevenvh
@stevenvh Könnten Sie mehr über den Kondensator parallel zum Schalter erklären? Wie kommt es, dass der anfängliche Kurzschlussstrom die Kontakte sauber hält?
Abdullah Kahraman
In dieser Situation kann es zu einer übermäßigen kapazitiven Kopplung kommen, die einen Pull-up-Widerstandswert beeinflusst. Scheint verrückt, ist es aber nicht. Ich habe eine unangenehme Tri-State-Ausgabe, die ich mit einem ADC lese. Eine Karte, ein 220k Pull-Up ist ausreichend, damit alle Tri-States vom ADC gelesen werden können. Auf einem anderen (enger platzierten Brett) brauche ich wie ein 100k Klimmzug. Ich dachte, ich hätte den ganzen Morgen verrückte Pillen.
Leroy105
23

Erstens ist diese Art von Tutorials nutzlos, da sie Ihnen keine Elektronik beibringen. Sie müssen lernen, wie man einen Schaltplan zeichnet, die Verkabelung erfolgt danach.
Da mir der Schaltplan fehlte, musste ich ihn selbst aus dem Schaltplan ableiten. OK, das war nicht so schwer, aber wenn Sie den Schaltplan zeichnen, sehen Sie, dass etwas fehlt: Womit verbindet sich der Taktschalter? Das musst du wissen, um deine Frage zu beantworten. Ich nehme an, es ist ein digitaler Eingang des Mikrocontrollers, aber es gibt keine Möglichkeit, es zu wissen.

Es gibt zwei Situationen: Taktschalter offen und Schalter geschlossen.

Im geschlossenen Zustand ist der Eingang des Mikrocontrollers mit Masse verbunden, sodass ein niedriger Pegel angezeigt wird. Es fließt auch ein Strom durch den Widerstand. Ein guter Schaltplan hätte Ihnen gesagt, dass ein Ende des Widerstands an + 5V angeschlossen ist, der Taktschalter verbindet das andere Ende mit Masse. Mal sehen, ob ein 10k Widerstand ausreicht. Dann ist der Strom durch den Widerstand gleich = 500 A. Das scheint vernünftig. Mal sehen, ob das auch in Ordnung ist, wenn der Schalter offen ist. Ω5V10kΩμ

Im geöffneten Zustand des Schalters können wir es ignorieren und so tun, als gäbe es nur den Widerstand zwischen V + und dem Eingang des Mikrocontrollers. Aus Erfahrung wissen wir, oder besser, weil wir es im Datenblatt sah , dass , wenn Sie eine Spannung an einen Mikrocontroller Eingang gelten dort nur sehr wenig Strom fließt, oft weniger als 1 A. Lassen Sie uns sagen , es ist 1 A . Dann wird der Spannungsabfall über den Widerstand 1 sein A 10K = 10mV. Die Spannung am Eingang beträgt dann 4,99V. Das ist wahrscheinlich in Ordnung, aber lasst uns unsere Arbeit richtig machen. Wenn Sie einen Schaltplan hätten (ich glaube, Sie haben ihn schon, oder?), Würden Sie wissen, welcher Typ der Mikrocontroller ist. Ich weiß, Arduino ist AVR, also ich 'μμμ×Ωzufälliges AVR Datenblatt . Die elektrischen Eigenschaften besagen, dass ein hoher Eingangspegel mindestens das 0,6- (Seite 320). Das sind 3 V, also sind 4,99 V sicher. × VDD

Was wäre, wenn wir einen anderen Widerstandswert gewählt hätten? Ein niedrigerer Wert würde einen geringeren Spannungsabfall bedeuten und die Eingangsspannung würde sogar höher als 4,99 V sein. Aber dann würde mehr Strom durch den Widerstand fließen, wenn der Schalter geschlossen ist, und das ist etwas, was Sie nicht wollen.
Ein höherer Widerstandswert wäre in Ordnung, wenn der Schalter geschlossen ist, da weniger Strom fließt, die Eingangsspannung am Mikrocontroller jedoch unter 4,99 V liegt. Wir haben hier etwas Spielraum, daher ist ein etwas höherer Wert möglicherweise in Ordnung.

Fazit

  1. Der 10k ist sowohl für geöffnete als auch geschlossene Schalter in Ordnung.Ω
  2. Erfahren Sie, wie Sie Schaltpläne zeichnen und Datenblätter lesen
stevenvh
quelle
7
Ich würde nicht zustimmen, dass dies nutzlos ist. Tatsächlich sind mit Fritzing erstellte Schaltpläne in Bezug auf Arduino heute wahrscheinlich häufiger als Schaltpläne. Das Publikum muss berücksichtigt werden.
Dave Newton