Der Weg dazu, da zwischen HIGH und LOW kein digitaler Wert liegt, besteht darin, aktiv ein Signal an dem Pin zu erzeugen, den Sie erkennen können. Beachten Sie, dass wenn das an den Pin eingehende Signal ein Datenstrom ist (eine Folge von HIGH und LOW), der ständig läuft, dies möglicherweise nicht zuverlässig funktioniert, aber für Dinge wie Tasten und andere einfache Sensoren gut ist.
Jedes Signal auf einem Draht hat eine Antriebsstärke . Dies ist im Grunde genommen, wie stark das Signal ist und wie gut es andere Dinge überschreibt, die auf demselben Draht geschehen. Es hängt eng mit der Ausgangsimpedanz der Quelle zusammen (was das Signal sendet). Für Dinge wie Tasten und Schalter ist dies im Grunde der Wert des verwendeten Pullup-Widerstands.
Um aktiv sinnvoll , wenn ein Stift nicht angeschlossen ist oder nicht müssen Sie es vorübergehend zu einem bekannten Signalpegel verbinden zugleich , wie es mit dem Draht verbunden ist (oder nicht verbunden , wenn es passiert nicht angeschlossen werden). Dieser bekannte Signalpegel muss um mehrere Größenordnungen schwächer als das Quellensignal sein. Dies stellt sicher, dass, wenn Sie versuchen, Ihr Testsignal dem eingehenden Signal zu überlagern, das eingehende Signal das Testsignal überflutet und Sie es überhaupt nicht sehen. Wenn Ihre Quelle beispielsweise eine Impedanz von 10 kΩ hat (z. B. eine Taste mit einem Pullup-Widerstand von 10 kΩ), ist ein Testsignal mit einer Quellenimpedanz von 1 MΩ geeignet.
Jeder zu testende Pin kann an einen eigenen 1 MΩ-Widerstand (in diesem Beispiel) angeschlossen werden, und diese Widerstände sind alle an denselben zusätzlichen E / A-Pin angeschlossen:
In diesem Beispiel ist Pin D2 der Test-Pin und Pin D4-D7 sind Ihre Eingänge.
Unter normalen Umständen wird Pin D2 als Eingang gesetzt und vollständig ignoriert. Wenn Sie jedoch die Pins testen, legen Sie sie als Ausgang fest.
Sie setzen dann D2 auf HIGH und lesen jeweils D4 bis D7. Alle, die als HIGH gelesen werden, sind Kandidaten dafür, nicht verbunden zu sein.
Sie setzen dann D2 auf LOW und lesen die Pins, die zuvor HIGH lesen. Alle, die jetzt als LOW gelesen werden, werden getrennt.
Anschließend setzen Sie D2 wieder auf einen Eingang, damit der normale Betrieb nicht beeinträchtigt wird.
Wenn Sie nur wissen möchten, ob in einem Draht Strom fließt, können Sie einen sogenannten Shunt-Widerstand verwenden . Dies ist ein kleiner Widerstand (möglicherweise 1 Ω), der in einer Linie mit dem Draht angeordnet ist, und Sie messen die Spannung (unter Verwendung von Arduino-Analogeingängen) auf beiden Seiten des Widerstands. Die am Widerstand abfallende Spannung ist dank des Ohmschen Gesetzes direkt proportional zum durch ihn fließenden Strom:
I = V / R.
Zum Beispiel:
Wenn die Spannung von 5 V A1 gelesen werden soll (die Spannung der Draht verbunden ist) und die Spannung gelesen , indem A0 4.93V sein sollte, ist die Spannung fiel durch den Widerstand würde 5-4,93 = 0.07v sein. Mit dem 1Ω-Widerstand wäre der Strom 0,07 / 1 = 0,07 A oder 70 mA.
Wenn das Kabel an OUT getrennt ist, fließt kein Strom, da kein Stromkreis vorhanden ist. Wenn wir also die obige Formel neu anordnen, können wir beweisen, dass wir feststellen können, dass sie nicht verbunden ist.
Wenn I = V / R, dann ist V = RI. Daher ist V = 1Ω × 0A = 0V. Die am Widerstand abfallende Spannung wäre also 0 V, also wären A0 und A1 gleich (ohne jegliches Rauschen). A0 und A1 würden beide 5 V anzeigen. In ähnlicher Weise würden A0 und A1 beide 0 V anzeigen, wenn stattdessen der Draht IN getrennt würde.
Zum Erfassen höherer Ströme verwenden Sie einen kleineren Widerstand und zum Erfassen kleinerer Ströme verwenden Sie einen größeren Widerstand. Dadurch kann ein Spannungsabfall erzeugt werden, der innerhalb eines geeigneten Bereichs für die Empfindlichkeit des ADC liegt, der den Messwert ausführt. Für den Arduino ist das ein 10-Bit-ADC, so dass er (mit einem 5V V REF ) 5/1024 = 4,882813 mV pro LSB erfassen kann.
Beachten Sie, dass Sie diese Spannungen trennen oder auf andere Weise skalieren müssen, wenn Sie mit Spannungen arbeiten, die über denen liegen, bei denen der Arduino arbeitet. Es gibt spezielle Geräte, die speziell für diese Aufgabe entwickelt wurden und als Hochseitenstrom-Shunt-Verstärker bezeichnet werden . Sie ermöglichen es Ihnen auch, einen kleineren Widerstand zu verwenden, als Sie sonst benötigen würden, was für Ihre Schaltung weniger störend ist (weniger Spannungsabfall).