Forum: Mikrocontroller und Digitale Elektronik Kurzschalten von I/O Pins um Schalter auszulesen


von ArduinoNewbie (Gast)


Lesenswert?

Hi,

ich probiere gerade bisschen mit den Arduino rum und habe zu dem Thema 
bereits einige Antworten in Google gefunden, allerdings ist mir das noch 
nicht ganz klar.

Zum Experimentieren probiere ich folgendes:
- Ein 2-Pin-Schalter
- Arduino Pin A0 + D2

Ich schalte A0 auf OUTPUT mit Pegel LOW
Ich schalte D2 auf INPUT mit Pegel HIGH
Mit dem Schalter verbinde ich beide Pins A0 und D2. Über die serielle 
Schnittstelle gebe ich mir den Status von Pin D2 aus.

Wenn der Schalter offen ist, dann kommt wie erwartet als Ausgang in D2 = 
1 raus. Wenn der Schalter geschlossen ist, dann geht der D2 = 0. Meine 
Vermutung aus dem was ich gelesen habe ist, das ein Pegel LOW den Pin 
direkt an GND schaltet. Ich habe jetzt nur die Befürchtung dass ich ohne 
Widerstand und anderen A0 und D2 kurzschalte und den Arduino so 
zerstören könnte, richtig?

Aus der Arduino-Dokumentation lese ich folgendes:
Pins configured as OUTPUT with pinMode() are said to be in a 
low-impedance state. This means that they can provide a substantial 
amount of current to other circuits. Atmega pins can source (provide 
positive current) or sink (provide negative current) up to 40 mA 
(milliamps) of current to other devices/circuits. This is enough current 
to brightly light up an LED (don't forget the series resistor), or run 
many sensors, for example, but not enough current to run most relays, 
solenoids, or motors.

Short circuits on Arduino pins, or attempting to run high current 
devices from them, can damage or destroy the output transistors in the 
pin, or damage the entire Atmega chip. Often this will result in a 
"dead" pin in the microcontroller but the remaining chip will still 
function adequately. For this reason it is a good idea to connect OUTPUT 
pins to other devices with 470Ω or 1k resistors, unless maximum current 
draw from the pins is required for a particular application.

Also sollte man z.B. ein 1k-Widerstand zum Schalter in Reihe anlegen.

Die Frage, wieso ich sowas teste... Ich experimentiere nur ein wenig mit 
verschiedenen Schalter-Schaltungen und dachte mir, wenn ich nun A0 z.B. 
auf HIGH setze, dann kann ich sozusagen den Schalter "deaktivieren", da 
ich nun an D2 immer 1 messe. Wenn ich A0 auf LOW setze, dann kriege ich 
den gegenteiligen Schaltwert 0 oder 1. Somit könnte man sich eine 
Schaltung aufbauen die z.B. eine 4x4-Matrix aus Schaltern 
Reihe-für-Reihe ausliest und seriell jeden Schalterstatus ausgibt.

Hoffe ihr könnt mir hier helfen dass genauer zu verstehen.

von AVR (Gast)


Lesenswert?

Manchmal ist es ganz sinnvoll, wenn man mit Elektronik gespielt, etwas 
über Elektronik zu lesen. Im Besonderen über die Zusammenhänge von 
Strom, Spannung und Widerstand. So wie etwas über Eingangs- wiederstände 
und Impedanz.

von Georg G. (df2au)


Lesenswert?

ArduinoNewbie schrieb:
> Ich habe jetzt nur die Befürchtung dass ich ohne
> Widerstand und anderen A0 und D2 kurzschalte und den Arduino so
> zerstören könnte, richtig?

Falsch. Dein Arduino wird nicht zerstört. Der Eingang ist hochohmig. Da 
fließt fast kein Strom.

Nun passiert es aber manchmal, dass man mit einer Prüfspitze abrutscht 
oder aus Versehen mal eine ungewollte Verbindung herstellt. Deshalb ist 
es eine gute Idee, direkt am Ausgang einen Angstwiderstand an zu bauen 
(wie in der von dir zitierten Doku beschrieben).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.