Muss ich an jeden Taster einen eigenen Wiederstand hängen?

Hallo Ihr lieben,

mein Midi-Kontroller bekommt 9 Taster und ich frage mich grade ob jeder Taster seinen eigenen Wiederstand braucht?

In einen kleinen Versuch hat es mit 1 Wiederstand genauso gut funktioniert wie mit 3 (Jedes mal kein zittern zwischen 1 und 0 im Seriellen Monitor).

Und warum benutz man nicht den internen Wiederstand?

Anbei habe ich Bilder von meinen Versuchsaufbau beigefügt.

Und warum benutz man nicht den internen Wiederstand?

Normal macht man das. Und das solltest du auch tun.

Ich glaube man will in den Anleitungen leider Anfänger nicht mit den invertierten Pegeln verwirren. Weil dann gedrückt Low ist. Damit tut man ihnen aber keinen Gefallen weil das in der Elektronik sehr häufig vorkommt.

Hallo,

du wirst Effekte vom Steckbrett o.ä. haben, weshalb du denkst es reicht auch ein Widerstand.
Kurzum. Jeder Taster benötigt seinen eigenen Pullup oder Pulldown Widerstand, weil jeder Taster seinen eigenen Pin am Controller hat. Ansonsten kannst du nicht auf definierte Pegel vertrauen. Und ja du kannst den internen Pullup verwenden.

m8trix:
ich frage mich grade ob jeder Taster seinen eigenen Wiederstand braucht?

Was ist ein Wiederstand? Oder sollte es heißen: Wie der stand?

urdaino:
Was ist ein Wiederstand? Oder sollte es heißen: Wie der stand?

Übersetzt heißt das: Widerstand schreibt man nur mit einem i.

m8trix:
Und warum benutz man nicht den internen Wiederstand?

Doch, genau den benutzt man. Gib in setup() einfach jeweils an:

pinMode(pin, INPUT_PULLUP);

und spare Dir die Löterei.

Gruß

Gregor

Im übrigen, so wie du den einzelnen Widerstand in der Schaltung angeschlossen hast, hat dieser zwar auch du Wirkung, die er haben soll, allerdings gleichzeitig auf alle Pins, da diese parallel geschaltet sind. Du betätigst mit einem Taster alle Pins. Also für deine Anwendung sinnlos.

m8trix:
ich frage mich grade ob jeder Taster seinen eigenen Wiederstand braucht?

Und warum benutz man nicht den internen Wiederstand?

zu Frage 1:
ja
zu Frage 2:

  1. der passt nicht zu Deinem Aufbau
  2. kann das manchmal nicht funktionieren

Du benutzt in Deinen Schaltungen PULL_DOWN.
Besser ist PULL_UP. Das macht auch der Controller. Aber da hängen 10Kohm ca. dran. Das kann unter Umständen nicht ausreichen.

Okay ich habe es verstanden ohne WIDERSTAND muss es dann eine Pullup-Schaltung sein also der Pin wir hoch auf High gezogen und erst beim drücken entsteht ein low Signal somit funktioniert die Schaltung nur umgekehrt.

Wovon ist es den abhängig ob ich mit den internen Widerstand auskomme?
Ich will ja z.B. nur ein LOW oder HIGH abfragen.

Wovon ist es den abhängig ob ich mit den internen Widerstand auskomme?

Von den eingestreuten Störungen!

m8trix:
Wovon ist es den abhängig ob ich mit den internen Widerstand auskomme?

Somit auch von der Kabllänge.

Der interne PullUp-Widerstand liegt bei ungefähr 50 kΩ, die resultierenden 0,1 mA können durch elektromegnetische Felder zu Störungen führen. Ist das der Fall, kann man mit einem externen PullUp auf einen kleineren Wert wie 1 kΩ runtergehen. Sowas hängt von der Umgebung und dem Aufbau - geschirmte Kabel - ab.

m8trix:
Okay ich habe es verstanden ohne WIDERSTAND muss es dann eine Pullup-Schaltung sein

Falsch!
ohne Widerstand gehts garnicht.
Du kannst extern Widerstand PULL_UP oder PULL_DOWN machen. Mit Riskiken und Wirkungen :wink:
Du kannst INTERN nur PULL_DOWN PULL_UP einstellen.

Wovon ist es den abhängig ob ich mit den internen Widerstand auskomme?

Von der Ladung, die auf der Leitung vorhanden ist.

Dein MidiPult kann mit 5k6 auskommen und einigermassen störsicher sein.
Muss es aber nicht.

my_xy_projekt:
Falsch!
ohne Widerstand gehts garnicht.

Er hat sehr wahrscheinlich implizit einen externen Widerstand gemeint

Quote from: combie Sun Mar 21 2021 18:24:37 GMT+0100 (Mitteleuropäische Normalzeit)

combie:
Von den eingestreuten Störungen!

Wovon hängt die eingestreute Störung ab außer der Kabellänge und wie ermittelt ich den wert der Störungen und den wert des Widerstands?

HotSystems:
Somit auch von der Kabllänge.

Ist dann die Art des Kabels und der Durchmesser dann nicht auch relevant?

Und kann man den Internen Pullup auch bei einem 4051 Multiplexer einsetzen wenn ich die COM OUT Leitung am PIN 5 ein _PULLUP verpasse und alle Widerstände raus aus der Schaltung. (ich habe grade leider kein gutes Steckbrett da. Das in meinen Starter-Set ist leider ehr schlecht als recht. Ich habe heute feststellen müssen ob er eine Verbindung nimmt oder nicht ist ein Glücksspiel und da ein Multiplexer seht viele hat ....) Eine Simulation mit Fritzing gelingt mir leider nicht.

Also wenn ich in meine Code den pinMode(5, INPUT); ändere in pinMode(5, INPUT_PULLUP);

int Wert = 0;
int zaehler = 0;


int bit1 = 0;
int bit2 = 0;
int bit3 = 0;


void setup() {
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, INPUT);
  Serial.begin(9600);
}





void loop() {
  for ( zaehler = 0 ; zaehler <=7; zaehler++) {
    bit1 = bitRead(zaehler, 0);
    bit2 = bitRead(zaehler, 1);
    bit3 = bitRead(zaehler, 2);


    digitalWrite(2, bit1);
    digitalWrite(3, bit2);
    digitalWrite(4, bit3);    


    potiWert = DigitalRead(5);
    Serial.println(Wert);
  }
}

Serenifly:
Er hat sehr wahrscheinlich implizit einen externen Widerstand gemeint

Ok. :wink:

my_xy_projekt:
Du kannst INTERN nur PULL_DOWN einstellen.

Nee, beim Uno geht nur PullUp:

pinMode(pin, INPUT_PULLUP);

Bei anderen µCs geht auch PullDown.

agmue:
Nee, beim Uno geht nur PullUp:

Soviele Tränen kann ich nicht weinen .... JAAAA!!

m8trix:
Wovon hängt die eingestreute Störung ab außer der Kabellänge und wie ermittelt ich den wert der Störungen und den wert des Widerstands?
Ist dann die Art des Kabels und der Durchmesser dann nicht auch relevant?

Die Größe der Störungen hängt von vielem ab. Die Länge und der „Verlauf“ der Kabel sind die IMO wichtigsten Kriterien. Und natürlich hängt das auch von Art und Durchmesser des Drahtes/Kabels ab. Störungen sind bei Deiner Art der Anwendung aber eher unproblematisch, auch mit simplem Klingeldraht.
Achte darauf, dass Du Pullup- oder -down-Widerstände benutzt - wenn die Controller-Internen nicht „gut genug“ sind, nimm z.B. 4,7 kOhm. Nach „externen“ Störquellen suche ich immer erst, wenn Fehler im Code unwahrscheinlich sind.

Gruß

Gregor

Hallo,
ich würde auf die Muliplxerei verzichten und ein R2R Netzwerk einsetzen.