Strombegrenzung für I/O

Moin, ich bin recht neu hier und auch noch nicht lange mit dem Arduino unterwegs und hab gleich eine ziemliche Anfängerfrage, von der ich hoffe, dass ich mir als Studentin der Elektrotechnik einfach nur selbst das Leben schwer mache und das Wesentliche übersehe:

Es geht nun um einen digitalen Eingang, dessen Status abgefragt und mittels eines Tasters verändert werden soll sprich, bei gedrücktem Taster +5V, sonst 0V (entprellt werden muss erstmal nichts). Den Taster nun einfach so zwischen 5V und den Inputpin zu schalten ist ja keine Option, da der Strom dann nicht begrenzt wird. Schalte ich nun einen Widerstand dazwischen kommen am Inputpin keine 5V mehr an, insbesondere dann nicht, wenn selbiger noch über 100kOhm auf Gnd gezogen wird um bei offenem Taster einen definierten Zustand zu erzeugen, da dann ein Spannungsteiler entsteht.

Wo ist das Brett?

Besten Dank und liebe Grüße, Laura

… was allerdings auch egal ist, da der input eine gewisse Toleranz im Pegel erlaubt. Ich glaube ab 1.2 Volt gilt der input als HIGH

xclef: Es geht nun um einen digitalen Eingang, dessen Status abgefragt und mittels eines Tasters verändert werden soll sprich, bei gedrücktem Taster +5V, sonst 0V (entprellt werden muss erstmal nichts). Den Taster nun einfach so zwischen 5V und den Inputpin zu schalten ist ja keine Option, da der Strom dann nicht begrenzt wird.

Bei INPUT geschalteten Pins ist der Strom alleine dadurch begrenzt, dass INPUT Pins extren hochohmig sind.

Ansonsten scheinst Du recht abenteuerliche Vorstellungen über Digitaltechnik zu haben.

Ein I/O-Pin, an dem Du einen Zustand messen möchtest, muß immer auf ein bestimmtes Level geschaltet sein: LOW (0V) oder HIGH (5V), oder wenigstens nahe dran. Ein "offenes Ende" an einem Eingang darf nicht vorhanden sein, denn als "offenes Ende" geschaltet ist ein Pin immer "schwebend", d.h. er wechselt im Laufe der Zeit mal nach HIGH und mal nach LOW und wieder retour. Schwebende (offene) Eingänge können nicht zuverlässig ausgewertet werden.

Schwebende Eingänge kannst Du mit entweder PullUp- oder PullDown-Widerständen verhindern, die als externe Bauteile beschaltet werden müssen. PullUp-Widerstände sind aber auch "intern" bereits im Mikrocontroller enthalten, brauchen daher nicht extern beschaltet, sondern nur per Software "aktiviert" werden.

Einen Button kannst Du beispielsweise zwischen einen I/O Pin und GND schalten und dabei im Setup den I/O-Pin auf pinMode "INPUT_PULLUP" setzen. Damit wird der "interne PullUp Widerstand" an diesem Pin aktiviert. Dann wird der IO bei offenem Button auf HIGH gezogen und bei geschlossenem Button auf LOW, ohne dass irgendeine weitere externe Beschaltung benötigt wird.

hi,

da mußt Du Dir keinen kopf machen, der pin zieht nur soviel wie er braucht.

wenn Du eine 12V-lampe an 220V hängst, raucht sie ab, aber wenn Du eine 12V-2Ampere-lampe an eine batterie hängst, machst Du Dir ja auch keine gedanken, daß die batterie zuviel strom liefern könnte.

wenn Du bei gedrücktem taster gegen GND fährst, kannst Du die pulldown-widerstände weglassen, und mit INPUT_PULLUP den eingebauten pullup aktivieren.

gruß stefan

[quote author=Marcus W link=topic=177069.msg1313572#msg1313572 date=1373622199] ... was allerdings auch egal ist, da der input eine gewisse Toleranz im Pegel erlaubt. Ich glaube ab 1.2 Volt gilt der input als HIGH [/quote] Da glaubst Du leider falsch. Bei 5V Spannungsversorgung wird als LOW alles zwischen 0V und 1,5V erkannt. Als HIGH werden Spannungen zwischen 3V und 5V erkannt. Bei anderen Spannungsversrgungen ändern sich die Werte proportional. Tabelle "28.2 DC Characteristics" auf Seite 313 von http://www.atmel.com/Images/doc8161.pdf

Grüße Uwe

Ach, so herum war das... :drooling_face: