Warum brauchen wir externe Ziehwiderstände, wenn Mikrocontroller interne Ziehwiderstände haben?

Mikrocontroller haben interne Pull-Up-Pull-Down-Widerstände, aber die meisten Schaltungen haben externe Pull-Widerstände.

Ich habe bei Google nach Antworten gesucht und einige Websites sagten, dass diese Widerstände nicht so stark sind, aber ich dachte, sie seien gut genug, um zu funktionieren. Ich hatte den Gedanken, dass sie möglicherweise extern benötigen, da die internen Widerstände durch Programmierung ausgelöst werden müssen.

Für einige ungeplante Situationen bringen sie also auch externe Widerstände an. Aber ich bin mir da nicht sicher.

Was ist der wahre Grund dafür, Externals zu verwenden, wenn wir Internals haben?

Einige Mikrocontroller haben interne Widerstände. Und diese Widerstände sind nicht für alle Anwendungen richtig dimensioniert (sie sind normalerweise für geringen Stromverbrauch optimiert).
Was passiert, wenn ich die Pullup-Widerstände auf I2C-Leitungen weglasse? Dieser Thread ist eine Analyse eines Versuchs, interne Pull-up-Widerstände mit I2C zu verwenden.
„Also schließen sie für einige ungeplante Situationen auch externe Widerstände an.“ Manchmal auch geplante Situationen. Oft ist es in einer Produktionsumgebung einfacher/schneller/billiger, einen Widerstand einfach von einem Ort zum anderen zu verschieben, als die Firmware neu flashen zu müssen, um das gleiche Ergebnis zu erzielen. Dies in der Firmware zu tun, würde wahrscheinlich eine zweite Version derselben Firmware erfordern, die gewartet werden muss. Bei einer Lötmodifikation ist lediglich eine bedingte Arbeitsanweisung erforderlich.

Antworten (3)

Es gibt ein paar mögliche Gründe, wie z

  • Der Widerstand muss während des Einschaltens vorhanden sein, da der Mikrocontroller noch nicht mit der Ausführung begonnen hat.
  • Benötigen Sie einen genaueren Widerstand als den internen Widerstand. Interne Pull-up/-down-Widerstände haben sehr große Toleranzen.
  • Benötigen Sie einen größeren oder kleineren Widerstand als den intern bereitgestellten. Zum Beispiel verwendet I 2 C normalerweise stärkere Pullups, während Sie vielleicht einen sehr schwachen Pullup zum Überwachen eines Schalters benötigen, um Strom zu sparen.
  • Auf eine andere Spannung als die Versorgungsspannung oder Masse des Mikrocontrollers ziehen müssen.
  • Verwenden eines Pull-up / -down-Widerstands zusammen mit dem ADC auf dem Mikrocontroller. Einige Mikrocontroller deaktivieren ihre internen Widerstände an jedem Pin, an den der ADC angeschlossen ist.
  • Benötigen Sie einen Pulldown-Widerstand auf einem Mikrocontroller, der nur Pullups hat.
Ich konnte den letzten zweiten Punkt nicht verstehen ... Warum sollten Mikrocontroller ihre internen Widerstände mit ADC deaktivieren
@GunjanGangwani Ich denke nicht, dass es eine gute Designentscheidung ist, aber die Idee ist, dass Sie normalerweise nicht möchten, dass der ADC Strom von dem misst, was er misst, also möchten Sie eine hochohmige Verbindung. Ich denke, einige Designer vertrauen den Firmware-Entwicklern nicht, die internen Widerstände immer zu deaktivieren.
Ich denke, das liegt normalerweise daran, dass die Pull-Ups / Pull-Downs mit den digitalen Eingangspuffern verbunden sind und das Aktivieren der ADCs manchmal die digitale Pufferschaltung (und damit die Pull-Up / Down-Widerstände) vollständig deaktivieren kann.
@AbeKarplus Wie würden Sie eine hohe Impedanz erreichen, indem Sie externe Pull-ups hinzufügen, wenn das interne Pull-up an einem Pin im ADC-Betrieb deaktiviert / aktiviert ist? Kein Klimmzug sollte in diesem Fall besser sein als jeder Klimmzug, oder?
@Assutosh Wenn Sie eine hohe Impedanz wünschen, verwenden Sie natürlich keinen Pullup. Einige Mikrocontroller erzwingen dies, indem sie ihre internen Pullups automatisch ausschalten, was in Situationen, in denen Sie keine hohe Impedanz wünschen, ein Problem darstellt.
@GunjanGangwani ADC-Eingänge sollten von allen anderen Schaltkreisen isoliert werden, um das niedrigste Grundrauschen zu erzielen. Digitale Eingänge verbrauchen oft mehr Strom als erwünscht, wenn sie zwischen ihren "hohen" und "niedrigen" Spannungen getrieben werden. Ältere Mikrocontroller verwendeten einen internen Schalter, um den Eingang vom digitalen Teil zu trennen, wenn dieser Pin für ADC verwendet wurde, und es ist dieser digitale Teil, der den Pull-up hat. Dies wird getrennt, um sowohl den ADC zu isolieren und das Grundrauschen zu senken als auch eine mögliche zusätzliche Stromaufnahme (oder bei sehr alten Chips CMOS-Latchup) zu verhindern.

Einige (oder vielleicht viele) Mikrocontroller haben interne Pull-up-Widerstände, aber das sind oft ziemlich hohe Werte. Viele Anwendungen würden Klimmzüge mit niedrigerem Wert erfordern.

Pullup-Widerstände können auch an den Eingängen zu normalen Logikschaltungen (Gattern, Zählern usw.) erforderlich sein, die keine internen Pullups haben (und manchmal wollen wir stattdessen Pulldown-Widerstände ...)

interne Pull-up-Widerstände, aber das sind oft ziemlich hohe Werte . Ich habe kürzlich eine Low-Power-Anwendung erstellt und festgestellt, dass die Pull-up-Widerstände etwa 50 k betragen, was meiner Meinung nach ziemlich niedrig ist , was zu einem zu hohen Stromverbrauch führt. Also habe ich einen höherwertigen externen Widerstand verwendet. Am Ende kommt es darauf an, welche Bedürfnisse Sie haben.

Außerdem würden Sie jedes Mal einen externen Widerstand verwenden, wenn Sie einen tatsächlichen Widerstandswert benötigen. MCUs haben normalerweise keine tatsächlichen Pull-up-Widerstände, sondern MOSFETs, die einen kleinen Strom aufnehmen, sodass ihr äquivalenter Widerstandswert je nach dem an den Pin angelegten Signal stark variieren kann.