INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Taster und der PullUp...
27.06.2015, 19:09
Beitrag #1
Taster und der PullUp...
Hallo liebe Arduianer
Bin neu dabei und lerne gerade die ersten Lektionen via youtube, Buch usw.
Was mir ein bisschen komisch vorkommt: Die simple Schaltung mit einem Taster wird IMMER mit einem physischen Pullup Widerstand beschrieben (was ja prinzipiell verständlich ist, auch wenn bei meinem Arduino der undefiniere Anschluss immer auf null steht und nicht wild umherspringt wie meist dramatisch verkünded). So frage ich mich doch, warum z.b. in Büchern nur wenige Seiten vor den ersten Schaltungen immer der interne PullUp propagiert wird nur, um dann am Ende doch wieder einen physischen aufs Breadboard zu klatschen...
Ich habe nahezu null Ahnung von Elektronik (außer das in der Schule erlernte r=u\i vlt.), aber doppelt gemoppelt ist doch genauso quark, wie NICHT auf das interne Pullup zu setzen...). Sehe ich da jetzt was falsch?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.06.2015, 21:09
Beitrag #2
RE: Taster und der PullUp...
Hi,
ich kenne nun deine Lektüren nicht.
Aber Fakt ist das ein Eingang bei einem Mikrokontroller Hochohmig ist und ohne Konfiguration (z.B. interner PullUp) kein definiertes Potential hat was bei einem CMOS Eingang zu unerwarteten Änderungen beim erkennen des Eingangspegels führt. Auch wenn du mit dem Messinstrument das nicht so einfach messen kannst weil dein Instrument durchaus Niederohmiger sein kann als der CPU Eingang.
Also gibt es mehrere Möglichkeiten das in den Griff zu bekommen und zwar durch einen externen PullUp oder einen PullDown Widerstand wo dann die Taste einmal gegen GND und einmal gegen VCC geschaltet wird. Komfortabler ist es jedoch den in den meisten Kontrollern verfügbaren PullUp Widerstand zu aktivieren und gegen GND zu schalten.
Hoffe mal du siehst das nun klarer.
Das nächste Problem was dich dann ereilt ist das entprellen....aber das hat mit der Beschaltung nichts zu tun.
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
27.06.2015, 22:35 (Dieser Beitrag wurde zuletzt bearbeitet: 27.06.2015 22:46 von thehassle.)
Beitrag #3
RE: Taster und der PullUp...
Ok, ich will ja gar nicht abstreiten, dass bei einer offenen Leitung ein undefinierter Zustand entsteht und das ein PullUp einfach notwendig ist um diese Eventualität auszuschließen. Damit habe ich mich abgefunden und ich nehme das so hin. Wird sich ja keiner aus Spaß so ausdenken.

Was Du aber scheinbar aus meinem Text nicht entnehmen konntest ist die Tatsache, dass in einen Buch/Video "Hüh" gesagt wird, im anderen "hott".. oder gar beides auf einmal. In eigentlich allen praktischen Beispielen verbauen die Leute einen physischen Widerstand am Breadboard. Warum? Es reicht doch, den internen PullUp aufzuschalten?! Wozu dann noch einen physischen Widerstand auf dem Board? Andere Bücher/Videos behandeln sogar in vorigen Kapiteln die Tatsache, dass es einen internen PullUp gibt den man aufschalten kann und kommen dann in einem späteren, praktischen Beispiel nicht wieder darauf zurück, sondern setzen einen zusätzlichen Widerstand direkt am Platinenaufbau an und setzen kein High um Sourcecode.
In einem Buch wiederum setzt man im Sourcecode sowohl einen bestimmten PullUp auf HIGH, zeichnet in der Fritzing Grafik aber denselben nochmal als extra Bauteil dazu. Nach meinem Verständnis dann also doppelt... Das will mir nicht so recht einleuchten und verwirrt mich. Weiß dort die eine Hand nicht was die andere tut?

P.S. Das mit dem Prellen ist mir bekannt und auch geläufig. Da gibt es ja, soweit ich gelesen habe, händische Methoden als auch eine Boucing Bibliothek. Mir geht es aber einfach darum zu Verstehen, warum hier mit dem PullUp Resistor so merkwürdig und uneinheitlich, ggf. auch unlogisch verfahren wird.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.06.2015, 01:31 (Dieser Beitrag wurde zuletzt bearbeitet: 28.06.2015 01:32 von thehassle.)
Beitrag #4
RE: Taster und der PullUp...
Im weiteren Verlauf habe ich mich nun daran gemacht einen Drehencoder an einen Pro Micro anzuschließen. Nahezu überall finden sich auch hier Schaltungen die Widerstände und 5V schalten für einen Pullup. Dies verkompliziert doch jegliche Verdrahtung! Ich habe nun einfach Pin A und B des Drehcoders auf einen Digitalen Input-Pin des Arduino gedrahtet, beide Pins auf PullUp High und den mittleren Pin des Drehencoders auf GND gesetzt. Whatever. Ich hab mir dann einen Interrupt-basierenden Sketch aus dem Netz besorgt, die Pinadressen angepasst, etwas an der Stepping Tabelle verfeinert und der serial Output sagt mir, dass das Ding absolut ohne Fehler hochzählt als auch runterzählt und zwar mit jedem Klick des Drehencoders.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.06.2015, 07:28 (Dieser Beitrag wurde zuletzt bearbeitet: 28.06.2015 08:06 von HaWe.)
Beitrag #5
RE: Taster und der PullUp...
zum Lernen (aus didaktischen Gründen und fürs technische Verständnis, für Noobs) ist es besser, mit externen Widerständen gegen 5V zu schalten,
pinMode(pin, INPUT);
da dann ein gedrückter Taster auch per
digitalRead(pin) als "1" angezeigt wird.

später (und so mache ich es auch) schalte ich gegen GND und verwende dazu zusätzlich die internen Pullups
pinMode(pin, INPUT_PULLUP);
und dann ergibt ein gedrückter Taster das "0" Signal (inverse Logik).
Das ist nicht weiter schlimm, man muss nur umdenken.
mit pinMode(pin, INPUT_PULLUP); verwende ich auch meine Drehencoder, ganz ohne Probleme:
http://www.mindstormsforum.de/viewtopic....624#p67235

Ein Tipp:
Als Anfänger solltest du dich langsam herantasten und nicht sofort mit vorgefassten Meinungen und Vorstellungen an die Sache herangehen.
Arduino ist nicht C , Arduino benutzt C, und das mit einer ganz eigenen, speziellen API und ganz speziellen Definitionen und auch Einschränkungen, das musste ich auch schmerzlich feststellen.
Daran muss man sich wirklich erst gewöhnen !
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.06.2015, 08:15
Beitrag #6
RE: Taster und der PullUp...
...nicht vergessen sollte man , das der interne Pullup-R ca 30-50 KOhm ist.

Bei kurzer Leitungslänge könnte dies noch Störungsfrei sein.
Besser ist es aber und auch sicherer einen Externen Pullup von 5-10 KOhm zu schalten, je nach externer Anwendungen.
Wichtig ist es die Funktion des Widerstandes zu erkennen, dann lösen sich auch die Widersprüche.

Nicht jeder Neuling in einem Forum hat keine Ahnung über die Materie!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.06.2015, 08:25
Beitrag #7
RE: Taster und der PullUp...
nur eine kleine Ergänzung:
nach meiner Info ist der interne Pullup 20kOhm, aber das ist grundsätzlich nur ein unwesentliches Detail.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.06.2015, 08:31 (Dieser Beitrag wurde zuletzt bearbeitet: 28.06.2015 09:22 von thehassle.)
Beitrag #8
RE: Taster und der PullUp...
(28.06.2015 07:28)HaWe schrieb:  mit pinMode(pin, INPUT_PULLUP); verwende ich auch meine Drehencoder, ganz ohne Probleme:
http://www.mindstormsforum.de/viewtopic....624#p67235

Ah interessant! Ich setze den PullUp über digitalWrite und HIGH, anstelle Deines Vorschlags mit pinMode(pin, INPUT_PULLUP);

Der Effekt und das Dahinter ist gleich. Dennoch wirkt Dein Vorschlag "angenehmer" von der Logik in der Syntax her. Er wirkt nicht so widersprüchlich im Code, da ja in meinem Falle erst ein Input deklariert wird und dann aber ein Write drauf kommt.

P.S. Habe übrigens auch auf das Codebeispiel von meinduino.de gesetzt :-) Finde es sehr gut aufgebaut und erklärt sich im Code auch sehr gut. Allerdings gefiel mit die StepperTabelle nicht wirklich mit meinen ALPS Drehencoder. 1/1 war too much, bei 1/4 war es mir aber zu wenig, da nicht mit jedem "Klick" gecountet wurde und es manchmal "Lücken" gab. Habe dann mit jeweils zwei -1 und 1 Zuständen gearbeitet (int8_t stepTab[16] = {0,0,1,0,0,0,0,-1,0,0,0,0,0,1,-1,0}; ) und da habe ich dann bei jedem "Klick" auch einen Count gehabt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Taster, Drehencoder und 7 Segmentanzeige Pinsparend am Arduino Michael Thielmann 6 873 30.12.2015 19:06
Letzter Beitrag: Binatone
  2 Pin Taster an Arduino paq 14 3.870 11.05.2015 17:29
Letzter Beitrag: paq
Question Taster Relais Funk Verbindung MeRo113 22 4.987 30.11.2014 14:10
Letzter Beitrag: Bitklopfer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste