Warum einen Widerstand für Pull-Up verwenden? [Duplikat]

Ich habe gerade meinen ersten Arduino bekommen und hatte eine Frage zu Pull-up-Widerständen.

Ich habe versucht, einen Taster an Pin 2 mit dem Arduino zu verbinden, und wenn er HIGH ist, schreibe ich HIGH an Pin 13. Nun, in dem Tutorial, das ich mir angesehen habe, hieß es, dass ein Widerstand vom Taster zur Masse vorhanden sein soll, also wenn Pin 2 fragt, wie hoch die Spannung ist, es wird geerdet, also schreibt es nicht HIGH an Pin 13.

Ich habe dies getestet und es hat tatsächlich das Rauschen von Pin 2 verhindert. Als ich jedoch versuchte, den 10k-Widerstand durch ein normales Kabel zu ersetzen, funktionierte es nicht. Meine Frage ist also, warum müssen wir einen Widerstand verwenden und warum kann es nicht einfach eine Verbindung zur Masse sein?

In diesem Diagramm liest Pin 2, ob er 5 V (HIGH) oder 0 V (LOW) erhält, und gibt einen booleschen Wert zurück. Dann, wenn der Wert HIGH ist, gibt Pin 13 HIGH aus. Außerdem sieht es so aus, als ob der lange Draht auf dem Arduino die Beschriftung auf einem Stift blockiert. Der Pin, an den der lange Draht angeschlossen ist, sagt "5V".

Danke!Geben Sie hier die Bildbeschreibung ein

Diese Frage hat viele Probleme. Sie sagen "Arduino an Pin 2", als ob jeder den Schaltplan für Arduino direkt zur Hand hätte, um es zu überprüfen. Wir nicht. Ich glaube, ich weiß, was Sie fragen, aber es ist schwer, sicher zu sein. Ich schlage vor, dass Sie in Zukunft nicht davon ausgehen, dass jeder mit dem System vertraut ist, an dem Sie arbeiten. Stellen Sie zu Diskussionszwecken einen Link oder einen Schaltplan oder eine Schaltplanskizze bereit.
Diese Art von Frage wurde bereits auf EE.SE gestellt: hier und hier .
@mkeith Ich habe ein Diagramm hinzugefügt :)
@Globmont, der zweite Link von Nick Alexeev oben ist ziemlich gut. Lesen Sie die hoch bewertete Antwort. Es erklärt alles.

Antworten (3)

Sie müssen einen Widerstand verwenden, damit der Taster ihn überwältigen kann. Wenn Sie ein Stück Draht verwenden, erhalten Sie beim Drücken des Tasters einen Kurzschluss zwischen Vcc und GND - nicht so gut für den Taster oder den Rest der Platine. Die Verwendung eines Widerstands hält den Pin auf einem bestimmten Pegel, bis etwas „Stärkeres“ (niedrigerer Widerstand) kommt und ihn ändert (in diesem Fall die Taste).

Aktualisierung wegen Ergänzung des Diagramms.

Im Allgemeinen sind Tasten Schalter. Eine Art Feder hält sie "aus". Wenn Sie den Knopf drücken, überwinden Sie die Federkraft und er schließt seine beiden Kontakte kurz und er ist dann "an".

In Ihrem Fall haben Sie keinen Pullup, Sie haben einen Pulldown. Eine Seite des Schalters ist mit VCC (5 V) verbunden und die andere Seite ist mit dem Widerstand verbunden, der auf GND herunterzieht. Der IO-Pin ist auch mit der Widerstandsseite des Schalters verbunden.

Der Grund, warum Sie einen Widerstand benötigen, der von anderen Antwortenden erklärt wurde, ist, dass, wenn Sie ein Kabel verwenden, jedes Mal, wenn Sie die Taste drücken, 5 V direkt mit GND kurzgeschlossen werden. Sie erwähnen, dass Sie dies versucht haben und es "nicht funktioniert hat". Ich bin mir nicht sicher, was "nicht funktioniert" in diesem Zusammenhang bedeutet, aber das gesamte Board wird wahrscheinlich jedes Mal neu gestartet, wenn Sie das tun. Ich hoffe, das beantwortet alle Ihre Fragen. Viel Spaß beim Experimentieren!

Ich habe ein Diagramm hinzugefügt! Ich glaube, ich habe es herausgefunden, aber können Sie mein Verständnis für mich bestätigen? Meine ursprüngliche Frage war, warum ich einen Widerstand verwenden musste, um den Knopf / Pin 2 anstelle eines Drahtes mit Masse zu verbinden. Mein Verständnis ist, dass ich einen Widerstand verwenden muss, damit, wenn ich den Knopf drücke und die 5 V durchgehen, wenn Pin 2 nach dem Eingang fragt, die 5 V und nicht der Massewert von 0 V gelesen werden, da es einen Widerstand geben wird? Und wenn ich eine Terminologie falsch verwende, korrigieren Sie mich bitte. Ich bin völlig neu in Sachen Elektrik :) Danke!
@Globmont, ich habe meine Antwort aktualisiert. Danke für das Hinzufügen des Diagramms.
Eindrucksvoll! Danke! Eine letzte Frage: Sie hatten Recht, dass das Board jedes Mal neu gestartet wird, wenn ich einen Draht anstelle eines Widerstands verwendet habe. Würden Sie erklären, warum das passiert ist? Sie sagten, dass die 5 V mit GND kurzgeschlossen würden, aber warum würde dies dazu führen, dass das Board neu gestartet wird?
@Globmont, das Netzteil kann keine 5 V liefern, wenn es mit GND kurzgeschlossen ist. Die Spannung fällt also sehr niedrig ab (möglicherweise nahe Null, abhängig vom Widerstand des Drahtes und der Versorgungskapazität usw.). Entweder löst der Chip einen internen Niederspannungs-Reset aus oder er wird einfach vollständig stromlos. Dies ist aus Sicht des Chips dasselbe wie das Trennen der Stromversorgung. Wenn Sie die Taste loslassen, ist das so, als würden Sie die Stromversorgung wieder einstecken. Viele Prozessoren starten automatisch, wenn sie zum ersten Mal mit Strom versorgt werden.

Ähm .. hier sind meine 2 Cent ....

Jeder Mikrocontroller (einschließlich des im Arduino sitzenden) hat eine Strombegrenzung für seine Pins. Wenn Sie also die Pull-up- (oder Pull-down-) Widerstände anschließen, müssen Sie sicherstellen, dass der Strom, den sie ziehen können, innerhalb der Spezifikationen des Mikrocontrollers liegt). Sie brauchen dafür also einen hohen Widerstand, aber Sie können keinen zu großen Widerstand halten, damit selbst Streuströme Ihre Schaltung durcheinander bringen. Typischerweise werden etwa 10.000 bis 20.000 empfohlen.

FYI: Ich bin ein Hobbyist, kein Elektronikingenieur, also benutze meine Informationen auf eigene Gefahr :-P

Abhishek