Viele Drehschalter auslesen

OP #4057671
Lesenswert?

Hi,

mir ist ein Problem für ein kleines Projekt aufgefallen. Ich würde gern 
nen 16-Step Sequenzer mit nem Arduino bauen und für die Tonhöhe 
innerhalb einer Oktave gerne nen 12 stufigen Drehschalter verwenden. 
Dabei ist mir aufgefallen, dass es spaßig wird, die 12 stufen 
auszulesen. Jetzt hätte ich nen Ansatz und wollte mal jemanden rüber 
gucken lassen, damit ihr mir sagen könnt, ob das hin haut.

Die Drehschalter wollte ich ursprünglich eh an einen Multiplexer hängen. 
Wenn ein neuer Step aktiv wird, wird die Adresse geändert und 
ausgelesen. Durch einen Multiplexer bekommt auch immer nur ein Set von 
Potis und Schaltern überhaupt eine Spannung (5V), die anderen gehen leer 
aus.

Mein neuer Ansatz wäre nun, einen weitern 16-Kanal Multiplexer zu 
nehmen, der mit allen Stufen aller Drehschalter verbunden ist. Auf 
Eingang 1 ist also Stufe 1 aller Drehschalter, auf Eingang 2 ist Stufe 2 
und so weiter. Hinter diesem Multiplexer befindet sich Ground hinter nem 
Widerstand und der Input am Arduino.

Auslesen kann man di Position dann indem man einen der Drehschalter mit 
einem Multiplexer mit einer Spannung versorgt und dann durch die 
Eingänge des zweiten Multiplexers läuft und somit herausfindet, auf 
welcher Position sich der Schalter befindet. Anbei ist die Schaltung 
vereinfacht vier mit 4-stufigen Schaltern. Funktioniert das wie geplant 
oder habe ich was übersehen?

Beste Grüße und vielen Dank im Voraus.
Angehängte Dateien:
Gast #4057697
Lesenswert?

Das geht so schon, obwohl ich mir den unteren Multiplexer sparen würde 
und 12 Eingänge (mit aktiviertem internen pull up) nutzen würde und den 
oberen Multiplexer demnach mit Masse verbinden lasse.
Gast #4057699
Lesenswert?

Wozu der Aufwand mit dem Multiplexern? Wenn du IOs sparen willst, kannst 
du mit Charlieplexing alle 4 Schalter (und auch noch einen 5.) über 5 
IOs auslesen, als zusätzliche Hardware wären nur ein paar Dioden nötig.
OP #4057735
Lesenswert?

Wie gesagt, es sind in der Praxis dann 16 Schalter. ;) Habe noch nei was 
von Charlieplexing gehört, müsste mich da einlesen und ich habe halt 
noch nen 16 Channel Mux rum zu liegen, ...
12 Eingänge hat der Arduino dann meines Wissen nicht mehr. Ich brauche 4 
für die Adressierung, ist ein Uno.
Gast #4057955
Lesenswert?

Du könntest auch analog arbeiten.  Mit 11 Widerständen in Serie einen 
Spannungsteiler aufbauen und die 12 Spannungen dann jewels auf die 12 
Außenkontakte der 4 Drehschalter.  Die 4 Mittelkontakte dann auf je 
einen Analogeingang.
Gast #4057964
Lesenswert?

4067
Mit dem 4067 brauchst du 8 pins, oder minimal 5.
Bei 8 pins wir pin 1 des 4067 mit Masse verbunden,
und die Eingaenge verwenden den internen pull-up.
Man kann auch einen Angstwiderstand zwischen masse und pin1 des
4067 mit >=1k einplanen, damit Softwarefehler keine Beschaedigung der
Ausgangstreiber verursachen.

Minimal 5 pins,ist 4 pins fuer den Mux, und pin1 des 4067
 wird Analog mit einem ADC pin eingelesen.
Die Schalter wird mit dem gemeinsamen Kontakt am mux angeschlossen und
an den anderen Pins wird ein Spannungsteiler gemacht, bei 4 Kontakten 
sind
es 3 Widerstaende. Diese 3 Widerstande, bzw 2 Widerstaende und eine Led
braucht es nur einmal fuer alle Schalter.
Angenommen du macht es mit Led, einer led welche Power on anzeigt.
Dann sind es 5V + 330 ohm + 330 ohm + led + gnd
Abzweigungen bei + , wenn anstelle von led ein Widerstand genommen wird,
sollte dieser hoeher sein, 4.7k als Beispiel, kann aber auch nur 3x 1k
Widerstaende sein.

Fuer Bastelprojekt einfach die ADC Werte im EEprom ablegen, sowie ein
Wert fuer den diff. Beispiel diff=10.
Wenn GND Wert 0xff ist, dann wird kalibriert.
Kalibriert, warten bis Wert kleiner diff ist, dann 200ms Warten,
Wert neu einlesen und abspeichern, sofern er immer noch kleiner diff 
ist.
Dies wiederholt sich solange als abgespeicherter Wert groesser als
255-diff ist. Neuer ADC Wert muss groesser als alter Wert + diff sein.
#4058013
Lesenswert?

asdfasd schrieb:
> Du könntest auch analog arbeiten.  Mit 11 Widerständen in Serie einen
> Spannungsteiler aufbauen und die 12 Spannungen dann jewels auf die 12
> Außenkontakte der 4 Drehschalter.

Jep. Das ist die Pin-sparendste Methode, um einen Drehschalter 
abzufragen. Bei dem man ja im Gegensatz zu Einzelkontakten nicht frei 
ist, den nach Belieben in eine Matrix einzubetten.

>  Die 4 Mittelkontakte dann auf je einen Analogeingang.

Oder - wenn man nicht soviele Analogeingänge hat oder verwenden will - 
über einen Analogmultiplexer an einen Analogeingang.
#4058249
Lesenswert?

OT schrieb:
> [OT] Gibt es Gebiete, in denen man Teile "rum zu liegen" hat oder heißt
> es einfach nur "ich habe Teile rumliegen"? Meinem Sprachgefühl nach (aus
> NRW) ist "rum zu liegen" komisch[/OT]

"rum" ist eine Flüssigkeit. Hochdeutsch heißt es "herum"

"rumliegen" SAGT man, "herumliegen" SCHREIBT man. Im Forum kann man die 
Sachen  auch rumliegen lassen. Da tippt man ja nur.
Gast #4058717
Lesenswert?

Das Thema blieb anscheinend auch irgendwo liegen... ;)
Ich denke mal ich bleibe der Einfachheit halber bei zwei mal vier 
digitalen Out Pins, vier für die Addresse des aktuellen Steps und 4 für 
die Adressierung der Drehschalter.

Man merkt vielleicht das ich mit Elektrik noch nicht viel zutun hatte 
und entsprechend recht schnell an meine Grenzen komme...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren