Digital Read Serial Tutorial - Berechnung des Widerstandswertes

9

Das Tutorial zu Arduino Digital Read Serial führt Sie durch die Verkabelung einer einfachen Taste. Meine Fragen drehen sich um den Widerstand.

Warum ist der Widerstand notwendig?

Ich glaube, ich verstehe das, aber korrigiere mich, wenn ich falsch liege. Um sicherzustellen, dass der Eingangsstift ein niedriges Signal liest und nicht schwebt, sollten wir den Stift mit Masse verbinden, wenn der Knopf nicht gedrückt wird. Wenn der Knopf gedrückt wird, fließt ein 5-V-Signal sowohl zum Pin als auch zur Erde. Das Spannungsgesetz von Kirchhoff besagt, dass die Gesamtspannung im geschlossenen Regelkreis gleich Null sein muss, also müssen wir uns mit diesen 5 V befassen, die direkt zur Erde fließen. Deshalb haben wir einen Widerstand zwischen Knopf und Masse gelegt.

Wie wurde der Widerstandswert gewählt?

Das ist mir unklar. Ohmsches Gesetz besagt, dass ...

resistance = voltage / current

Dies ist eine 5-V-Versorgung und die Arduino Uno- Spezifikation besagt, dass der Pin 40 mA Gleichstrom liefert. So..

resistance = 5V / 0.04A = 125 Ohms

Warum haben wir im Digital Read Serial- Tutorial einen 10K-Ohm-Widerstand? Das ist doch übertrieben, oder? Was zu einer anderen Frage führt: Können Sie jemals zu viel Widerstand leisten, wenn Ihr einziges Ziel darin besteht, die Spannung zu löschen?

Vielen Dank im Voraus für jedes Feedback!

Rip Leeb
quelle

Antworten:

6

Du bist sehr nah. Der Widerstand dient als Pulldown-Widerstand. Wenn der Eingangspin schwebt, ist es nur eine Antenne, die zufällige statische Aufladung aufnimmt. Der Schlüssel ist, dass die positive Quelle bei Zufuhr von Plus (durch Drücken der Taste) den Pulldown-Widerstand "überwältigen" muss, damit der Eingangspin positiv anzeigt.

Wenn es keinen Widerstand gäbe, würde der Eingangspin in der Mitte eines direkten Pfades lesen, der weder positiv noch negativ begünstigt. Abgesehen von dem direkten Kurzschluss, der auftreten würde, würde der Zustand, den das Arduino lesen würde, vermutlich zufällig sein oder eine Eigenschaft der Stromversorgung sein; Es würde wahrscheinlich immer noch Boden lesen.

Mit dem Widerstand wird das Signal vor dem Lastwiderstand direkt mit positiv verbunden gelesen. Auf diese Weise wird sicher ein HIGH-Signal empfangen.

Die genaue Größe des Widerstands ist von geringer Bedeutung. Zu klein und Sie verschwenden Strom, aber zu viel Widerstand trennt die Masse effektiv wieder. Es gibt einen sehr großen Wertebereich, der zwischen diesen gut funktioniert.

Ich möchte darauf hinweisen, dass ein Arduino-Pin, wenn er in den Eingangsmodus versetzt wird, effektiv keinen Strom liefert. Es kann modifiziert werden, da es mit einem 100-Mega-Ohm-Widerstand in Reihe geschaltet ist. Weitere Informationen finden Sie unter http://arduino.cc/en/Tutorial/DigitalPins .

BrettAM
quelle
2
Das Wichtigste dabei ist, dass Sie, wenn Sie bei geschlossenem Schalter keinen Widerstand verwenden, die +5 Volt gegen Masse kurzgeschlossen haben. Ein direkter Kurzschluss überlastet das Netzteil und löst die Schutzschaltung des Netzteils aus, wodurch das gesamte Arduino heruntergefahren wird. Sie möchten einen Widerstand mit einer Impedanz, die hoch genug ist, um den Stromfluss niedrig zu halten. Normalerweise verwende ich einen 100k-Widerstand, der ausreicht, um das Eingangssignal bei geöffnetem Schalter auf 0 Volt zu bringen, und nur 0,00005 Pas fließen lässt, eine unbedeutende Strommenge. Ein 10k-Widerstand funktioniert auch, aber dadurch kann 10-mal so viel Strom fließen.
Duncan C
2

Warum ist der Widerstand notwendig?

Die Arduino-Eingänge haben einen sehr hohen Widerstand. Das Datenblatt des Atmega328 besagt 100 MOhm für ADC. Solche hohen Werte sind gut, haben aber auch den Nachteil, mit parasitären Effekten (Widerstand, Induktivität, Kapazität) umzugehen. Solche Effekte können auch als Kapazitätssensoren verwendet werden .

Wie wurde der Widerstandswert gewählt?

Der Widerstand muss einen beliebigen Wert haben, der kleiner als der Eingangswiderstand ist. 10k und höher sind gut zum Deaktivieren der Eingangsleckage.

Sie können den Widerstand jedoch auch weglassen, wenn Sie die internen Pull-up-Widerstände verwenden. In diesem Fall haben Sie es mit negativer Logik zu tun:

pinMode(3, INPUT);
digitalWrite(3, HIGH);

An Pin 3 messen Sie HIGHund der Knopf muss mit dem Pin und der Masse verbunden sein. Der interne I / 0-Pull-up-Widerstand hat den Wert 50k.


quelle
1

Sie haben bereits einige gute Antworten erhalten, warum ein Pulldown-Widerstand benötigt wird.

Zusammenfassend müssen Sie den Eingang mit Masse verbinden, um zu verhindern, dass der Eingang halb zufällig zwischen hoch und niedrig schwebt. Sie verwenden einen Widerstand, damit beim Schließen des Schalters kein Kurzschluss zwischen der + 5V-Versorgung und Masse entsteht.

Ein weiterer Punkt. Zu den Eingängen des Arduino gehört ein optionaler interner, softwaregesteuerter Pull-up- Widerstand. Wenn Sie zuerst den Pin als Eingang einrichten und dann einen HIGH-Wert in diesen Port schreiben, wird der Pull-up-Widerstand aktiviert. Dadurch wird der Pin als HIGH angezeigt, wenn nichts mit ihm verbunden ist.

Sie können dann Ihren Schalter anstelle von + 5V an Masse anschließen. Sie müssen dann Ihre Codelogik ändern, um einen HIGH-Wert als nicht gedrückt und einen LOW-Wert als gedrückt zu behandeln. Auf diese Weise können Sie die Verkabelung ein wenig vereinfachen, da Sie keinen externen Widerstand benötigen.

Duncan C.
quelle