Forum: FPGA, VHDL & Co. 4x4 Matrix Tastatur am FPGA


von Organist (Gast)


Lesenswert?

Ich beziehe mich auf diesen thread, der erklärt, wie man eine passive 
4x4 Matrix mit einem Microcontroller ausliest.

Beitrag "Matrixtastatur am AVR"

Dazu muss das Richtungsregister gesetzt werden.

Kann Ich das auch anders lösen, ohne im FPGA die Ausgänge schalten zu 
müssen? Ich möchte gerne solche Tastenfelder kaskadieren und dazu 
Schieberegister verwendent, weil Ich sonst keine Pins sparen kann.

Auf die o.a. Weise könnte Ich nur von 16 IOs auf 8 reduzieren. Ich würde 
aber gerne mehrere dieser Taster in einem Verbund benutzen und 
entsprechend schnell abfragen.

Wie müsste Ich die verschalten?

Es geht konkret um diese Dinger:
"4 x 4 Matrix Array 16 Tasten " in der Bucht.
Hat 8 Anschluss pins, keine Dioden, keine Vorwiderstände,

Ich gehe davon aus, daß Ich nur immer eine Taste erkennen kann?
Wenn Ich aber schnell genug abfrage, müsste man alle Tasten gleichzeitig 
erwischen?

von S. R. (svenska)


Lesenswert?

Um eine Matrix abzufragen, musst du immer Pins zwischen Ein- und 
Ausgängen umschalten können. Was du willst, geht also ohne Weiteres 
nicht.

Es gibt aber bestimmt Chips, die eine Matrix scannen und dir mitteilen 
können, welche Knöpfe gerade gedrückt sind und welche nicht.

von Sigint 112 (sigint)


Lesenswert?

Multiplexing ist schon der richtige Ansatz. Einfach die Ausgänge vom 
Schieberegister über Dioden an die Zeilen anschließen, und die Spalten 
dann mit Eingängen abfragen. Über das Schieberegister sucht man sich die 
aktive Zeile aus und liest diese parallel ein. Man könnte die Spalten 
auch über ein Schieberegister einlesen... ist dann aber langsamer.

von Organist (Gast)


Angehängte Dateien:

Lesenswert?

Ich es jetzt so (das mit den Dioden war mir auch in Erinnerung).

Es soll aber auf beiden Seiten ein SR hin wegen der Leitungen. Wenn ich 
es so mache und insgesamt 4 dieser 4x4 er verwende, hätte ich 64 Tasten 
und bräuchte nur ein paar Leitungen für Takte und Enables.

Das Tempo müsste reichen.

Soweit ich es sehe,brauche Ich dann einmal latchen für jeden neuen 
Zeilenvortrieb und dazwischen jeweils 1x "raus-latchen" und dann 4x4 x 
auslesen.  Also sagen wir ( (16 + 2) + 2 ) * 4 = 80 Takte?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Organist schrieb:
> Das Tempo müsste reichen.
Welches Tempo? Und wofür?

> Kann Ich das auch anders lösen
Was denn? Beschreib doch mal, WAS du machen willst und nicht WIE du es 
machen willst...

von Organist (Gast)


Lesenswert?

Ich dachte, ich hätte es beschrieben: Mehrere dieser Taster auslesen und 
wenige Pins verschwenden. Paralleles Lesen würde 64 Leitungen 
verbrauchen.

Tempo: 1kHz Abtastung reicht völlig aus.

Die Frage ist nur, ob die Schaltung so stimmt, bevor Ich die Platinen 
bestelle. Die kosten nur 1,- das Stück, zgl den Schiebereigstern. Auch 
die habe Ich in Platinenform. Ich hatte dann alles für 20,- beisammen.

Ich will die Bilder nicht reinstellen, wegen Copyright, aber man kann 
die auf Ebaby finden:

4 x 4 Matrix Array 16 Tasten

Man kann dort auch die Leiterbahnen sehen. Die sind so maxtritzenartig 
verschaltet.

von Andi (Gast)


Angehängte Dateien:

Lesenswert?

Lothar M. schrieb:
> Was denn? Beschreib doch mal, WAS du machen willst und nicht WIE du es
> machen willst...

Ich denke mal es geht immer noch um dieses Projekt hier:
Beitrag "Analoge Orgel mit USB-MIDI steuern"
nur dass die MIDI Controller durch Tastenfelder ersetzt werden sollen.

Man kann 4 solcher Tastenfelder mit 16 Pins abfragen (siehe Bild im 
Anhang), dazu muss man die nicht selektierten Reihen hochohmig machen. 
Das kann ein FPGA genau so gut, wie ein Mikrocontroller.

Das Problem ist halt dasselbe wie beim USB-MIDI: Die Art der 
Fragestellung zeigt doch schon, dass da nicht wirklich viel Ahnung 
vorhanden ist, und FPGAs sind eher schwieriger zu lernen, als 
Mikrocontroller.
Es würde also sehr helfen, wenn man etwas über die vorhandenen 
Elektronik-Kenntnisse des Organisten erfährt, sonst läuft jede Hilfe 
zwangsläufig ins Leere.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Andi schrieb:
> Man kann 4 solcher Tastenfelder mit 16 Pins abfragen (siehe Bild im
> Anhang), dazu muss man die nicht selektierten Reihen hochohmig machen.
Es reicht aus, 8 Ausgänge und 8 Eingänge zu verwenden. Da muss kein 
Treiber extra von "Ausgang" auf "Hochomig" umgeschaltet werden.

Eine solche Umschaltung ist nur nötig, wenn die Spalten der Matrix 
wieder auf die Zeilenausgänge zurückgeführt werden sollen (wie im 
angehängten Bild, Stichwort "Charlieplexing").
So kann man mit wirklich wenigen Pins viele Taster abfragen. Die Logik 
dahinter muss man sich aber zu ruhiger Stunde zu Gemüte führen und mit 
Mehrfachbetätigungen hat diese pinsparende Art auch ihre Probleme...

> Das kann ein FPGA genau so gut, wie ein Mikrocontroller.
Vor allem braucht es wegen der sehr niedrigen Abtastfrequenz kein FPGA 
(zudem müssen die Taster gar nicht mit 1kHz abgefragt werden, weil Midi 
die Daten gar nicht so schnell übertragen kann). Und ich würde hier um 
den Verdrahtungsaufwand einfach zu halten auch keine Matrix verwenden. 
Und so gerne ich FPGAs einsetze: nie im Leben käme ich auf die Idee, 
hier eines zu verwenden. Ich lese die Reedkontakte eines Vollpedals mit 
einem ATmega8 und ein paar Schieberegistern aus und sende das dann per 
Midi ab. Das lässt sich simpel linear skalieren und fertig.

Organist schrieb:
> Ich dachte, ich hätte es beschrieben:
Nein. Du hast wieder beschrieben WIE du es machen willst. Ich fragte 
nach dem, WAS du machen willst. Also dem Grund WARUM du überhaupt so 
etwas brauchst. Den hat erst Andi genannt.

> Mehrere dieser Taster auslesen und wenige Pins verschwenden.
Nimm Schieberegister zum einlesen. Das braucht 3 Pins des Controllers 
und ist durch Verlängerung der Schieberegisterkette skalierbar. 
Einfacher und geradliniger geht es nicht.

> Paralleles Lesen würde 64 Leitungen verbrauchen.
Was ist das Problem?
64 Taster haben 128 Anschlüsse. Jeder davon muss verdrahtet werden.

Eine Matrix braucht für jeden Taster 2 unabhängige Anschlüsse, die 
unterscheidlich und relativ komplex verdrahtet werden müssen. Man kann 
mit einem Multimeter nichts messen, weil die Abfrage dynamisch ist.

Wenn ich Schieberegister verwende, dann kann ich an einen Pin aller 
Schalter gleich mal Masse anlegen und muss nur noch eine Leitung zum 
nächstgelegenen Schieberegister fahren. Zudem kann ich einfach mit dem 
Multimeter nachmessen, ob der Schalter schaltet oder nicht.

Die Kombination aus "Schieberegister um Controllerpins zu sparen UND 
Tastaturmatrix um Schieberegister zu sparen", die dir vorschwebt, ist 
dank des doppelten zeitlichen Multiplexens so komplex und schwierig zu 
debuggen, da kannst du dir ganz leicht die Zähne ausbeißen.
Aber sei dir sicher: du wirst einiges dabei lernen. Wie Käptn Blaubär 
schon sagt:
"An diesem Tag habe ich alles gelernt, was man über das Scheitern wissen 
muß!"

: Bearbeitet durch Moderator
von Organist (Gast)


Lesenswert?

Andi schrieb:
> Das Problem ist halt dasselbe wie beim USB-MIDI: Die Art der
> Fragestellung zeigt doch schon, dass da nicht wirklich viel Ahnung
> vorhanden ist, und FPGAs sind eher schwieriger zu lernen, als
> Mikrocontroller.

Alles schon gemacht, nur eben kein USB-MIDI. Die Schalter sind eine 
andere Baustelle.

Lothars Schaltung ist auch interessant, aber damit kann Ich keine 
Doppeltasten erkennen, oder?

Ich würde daher lieber bei meiner Schaltung bleiben und Doppeltasten 
erkennen. Das müsste meines Erachtens gehen, weil Ich alles nacheinander 
abtaste, oder?

Wie richtig vermutet, möchte Ich einen Taster jeweils auf Masse, oder 
VDD legen und den anderen Ausgang abtasten. Dazu brauche Ich nach 
Lothars Vorschlag 2 aber nicht 64x2 sondern nur 64+1 Leitungen, oder?

Wie auch immer, die sind mir auch zuviel.

Ich würde lieber die Schieberegister investieren (haben 8 Ausgange) und 
dann hätte Ich 4x 4 Reihen und 4 Spalten = 16 Ins und 16 Outs. also 4 
Platinen. Das ist doch ok.

Das Auslesen soll mit einem FPGA geschehen, weil es einfach nur um das 
Takten geht und mir der Einsatz eines Controllers zu aufwändig wäre, 
klappt dann mit dem Timing gfs nicht.

Es geht auch um das Entprellen:

Wenn man eine Taste entprellen möchte, muss man mehrfach abtasten, also 
nehme Ich 2ms lang das Signal auf und verwende eben einige MHz. 
Umgewandelt als Daten sind das 64Bit Register. Die könnte man verordern 
und verunden um 1 und 0 zu erzeugen.

Beispiel:

Taste 1 111111111110110101100110100000000000
Taste 2 111111111110001000110001110000000000

Summenfilter

Taste 1 345555555444333333233233211000000000
Taste 2 345555555432211122222223332100000000

Hystereseentscheider "<2" und ">3"

Taste 1 111111111111111111111111100000000000
Taste 2 111111111111100000000000000000000000

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Organist schrieb:
> Wie richtig vermutet, möchte Ich einen Taster jeweils auf Masse, oder
> VDD legen und den anderen Ausgang abtasten. Dazu brauche Ich nach
> Lothars Vorschlag 2 aber nicht 64x2 sondern nur 64+1 Leitungen, oder?
Rechne nochmal nach. Und zwar unter der Annahme, dass du jeden Taster 
unabhängig von den anderen ansteuern und abfragen willst...

Organist schrieb:
> Es geht auch um das Entprellen
Das ist ein überaus nachrangiges Thema. Bei meinem bereits 
angesprochenen Pedal werden die zweieinhalb Oktaven einfach mit Peda's 
Routine entprellt. Das ist ein simpler 2 Bit Zähler. Und das reicht 
vollkommen aus.

Ansonsten sieht dich zum Thema "Entprellen im FPGA" mal auf meiner HP 
um.

Und wie gesagt: ein FPGA ist technischer Overkill für sowas...

: Bearbeitet durch Moderator
von Organist (Gast)


Lesenswert?

Ok, mag sein, dass FPGA "overkill" ist aber, ich kenne mich mit 
digitalen Schaltungen nun mal besser aus, als mit Software. Was ich aber 
weiss ist, was ein Controller kann und der dürfte mit 64 sequenziellen 
Abfragen innerhalb von 1ms und auch der Auswertung leicht überfordert 
sein.

Ich habe nochmals nachgerechnet und bin nach wie vor der Meinung, dass 
64 Taster insgesamt 65 Leitungen benötigen würden (und keine 128) und 
somit 64 Eingänge am FPGA oder dem Controller. Alle Eingänge mit 
pulldown und dann eine Spannung draufschalten. Wo siehst Du da den 
Hinkefuss?

Aber nochmal: Ich habe keine 64 Eingänge. Am FPGA vielleicht, aber nicht 
am Controller. Aber eigentlich auch am FPGA nicht, denn der soll auch 
noch AD-Wandler und DACs antreiben und ich möchte nach Möglichkeit mit 
einem preisgünstigen plugin auskommen. Also ein EK-10M08E144 mit MAX10 
zu 45,- das Stück z.B.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Organist schrieb:
> Was ich aber weiss ist, was ein Controller kann und der dürfte mit 64
> sequenziellen Abfragen innerhalb von 1ms und auch der Auswertung leicht
> überfordert sein.
In 1ms kann schon ein kleiner 16MHz AVR weit über 10000 Maschinenbefehle 
ausführen. Wer die Abfrage und Entprellung von 64 Tasten in dieser Zeit 
nicht locker  ein paar mal schafft, der programmiert umständlich.

> Ich habe nochmals nachgerechnet und bin nach wie vor der Meinung, dass
> 64 Taster insgesamt 65 Leitungen benötigen würden (und keine 128) und
> somit 64 Eingänge am FPGA oder dem Controller.
Ja, klar. Aber war da nicht was mit Matrix?

> Also ein EK-10M08E144 mit MAX10 zu 45,- das Stück z.B.
Für dieses Geld kannst du ein paar ARM-Rechenboliden auf die Platine 
setzen...

: Bearbeitet durch Moderator
von S. R. (svenska)


Lesenswert?

Organist schrieb:
> Wie auch immer, die sind mir auch zuviel.

Das ist schade, denn dann wirst du keine ordentliche Lösung mehr 
bekommen.

Organist schrieb:
> Was ich aber weiss ist, was ein Controller kann und der dürfte
> mit 64 sequenziellen Abfragen innerhalb von 1ms und auch der
> Auswertung leicht überfordert sein.

Mit dieser Aussage hast du nur bewiesen, dass du nicht weißt, was ein 
Controller kann. Denn in 1 ms kann selbst ein AVR mit 16 MHz immerhin 
8000 Bits per SPI lesen. Dir geht es um 64.

Und neben den AVRs gibt es auch deutlich schnellere Prozessoren.

von Organist (Gast)


Lesenswert?

Ich verstehe nicht, warum mir ein Controller eingeredet werden soll, den 
ich erst zusätzlich in das System bringen und programmieren muss, 
während der FPGA gesetzt ist, weil er mit den ADCs kommunizieren soll. 
Ich müsste dann  erst noch eine schnelle Schnittstelle zwischen einem 
AVR und dem FPGA machen und in beide eine Schnittstelle zum Master / PC.

Es geht mir einzig darum, ob die Schaltung so stimmt oder nicht. Das ist 
ja auch unabhängig von der Einheit, die es auslesen soll, oder?

Warum soll also die Schaltung nicht funktionieren?

von S. R. (svenska)


Lesenswert?

"Das kann man schon so machen, dann isses halt kacke."

Wenn der FPGA gesetzt ist, dann nimm einfach 64 Pins und schließe deine 
Taster da an (braucht 64 Pins). Wenn das nicht geht, dann nimm einfach 8 
Schieberegister á 8 Pins, schließe die daran an und lass den FPGA die 
zyklisch auslesen (braucht 3 Pins).

Alles dazwischen ist komplizierter Unfug.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Organist schrieb:
> Warum soll also die Schaltung nicht funktionieren?
Von welcher Schaltung redest du? Von der oben im 4. Post? Wenn ja, 
dann ist da viel zuviel Zeug drin und du kannst Mehrfachbetätigungen 
nicht (zuverlässig) erkennen.
Ergo lautet die Antwort:
Nein, für deine Anforderungen reicht diese Schaltung in mehrerer 
Hinsicht nicht aus.

> Ich müsste dann  erst noch eine schnelle Schnittstelle zwischen einem
> AVR und dem FPGA machen und in beide eine Schnittstelle zum Master / PC.
Und du meinst also, eine Midi-Schnittstelle mitsamt Protokollauswertung 
ist in einem FPGA einfacher zu machen?
Warum machen FPGA Hersteller in manche ihrer Bausteine zusätzlich zum 
FPGA Fabric noch Prozessoren?
Weil es Dinge gibt, die mit einem FPGA in Hardware zu teuer und zu 
umständlich sind.

> während der FPGA gesetzt ist, weil er mit den ADCs kommunizieren soll.
Das ist auch so ein logischer Kurzschluss. Auch ein uC kann mit ADCs 
"kommunizieren".

Aber wenn du schon mit solch realitätsfernen Anforderungen wie 
"Tastenabfrage jede Millisekunde" ins Rennen gehst, dann brauchst du 
letztlich wegen dieser Anforderungen ein FPGA. Kein Mensch drückt eine 
Taste 500 mal pro Sekunde. Oder auch nur 50 mal....

von Organist (Gast)


Lesenswert?

Lothar M. schrieb:
> Von welcher Schaltung redest du? Von der oben im 4. Post?
Ja

> Wenn ja,
> dann ist da viel zuviel Zeug drin
Was könnte ich weglassen?

> und du kannst Mehrfachbetätigungen
> nicht (zuverlässig) erkennen.

Warum sollte das nicht gehen?

Es wird immer nur 1 Zeile gleichzeitig mit positiver Spannung versorgt, 
wegen 1 am Latchausgang. Alle Tasten einer Zeile die gedrück sind, kommt 
als 1 ins Leseregister. In dem Fall der orangen Tasten 1010. Dann wird 
ausgelesen und die Werte sind bekannt. Sollte eine zweite Taste 
innerhalb einer Spalte gedrückt sein, bekommt man das in einem anderen 
Zeilen-Züklus mit. Damit das auch passiert braucht es 64x die 
Tastfrequenz.


>Kein Mensch drückt eine Taste 500 mal pro Sekunde
Ich möchte gleichzeitig gedrückte Tasten erkennen und der Unterschied 
zweier Finger sind im Bereich unter 10ms. Tastet man langsamer ab, wird 
es zu grob.

Sicher, 1MHz müssten es dafür nicht sein, aber mehr als 100kHz hätte ich 
gerne schon wegen der Störungen des Audiospektrums. Liest man z.B. nur 
mit 10kHz aus, könnte sich das negativ bemerkbar machen.

Und gfs sollten die Tasten weiter erweitert werden. Z.B. 256 Tasten. Das 
wären dann nur noch 500Hz Abtastrate.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Organist schrieb:
> der Unterschied zweier Finger sind im Bereich unter 10ms
Das sind etwa 100Hz. Warum 10000 mal schneller abtasten?

> Liest man z.B. nur mit 10kHz aus, könnte sich das negativ bemerkbar
> machen.
Ich kann den Gedankengang zwar nachvollziehen, aber er ist trotzdem 
falsch. Denn die Störungen, die da irgendwie auskoppeln kommen nicht von 
diesem Signal (oder nur bei schlechtem Layout), denn das was stört und 
überkoppelt kommt von steilen Flanken. Und die müssen bei 1MHz viel 
steiler sein als bei 1 kHz.

Organist schrieb:
>> und du kannst Mehrfachbetätigungen
>> nicht (zuverlässig) erkennen.
> Warum sollte das nicht gehen?
Bestrome mal die oberste Zeile und betätige den linken Taster der 
obersten Zeile und die linken beiden der untersten Zeile. Du wirst in 
diesem Fall fälschlicherweise die zweite Taste der obersten Zeile als 
betätigt erkennen. Solche Fehler bekommst du quer über die gesamte 
Matrix...

von Schlumpf (Gast)


Lesenswert?

Lothar M. schrieb:
> Das sind etwa 100Hz. Warum 10000 mal schneller abtasten?

Der TO will doch mit 1kHz und nicht mit 1MHz abtasten...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Schlumpf schrieb:
> Der TO will doch mit 1kHz und nicht mit 1MHz abtasten...
Ähmmm, ok. Da sind aber auch irgendwie zu viele Zahlen unterwegs.
Organist schrieb:
> Sicher, 1MHz müssten es dafür nicht sein, aber mehr als 100kHz hätte ich
> gerne schon wegen der Störungen des Audiospektrums. Liest man z.B. nur
> mit 10kHz aus, könnte sich das negativ bemerkbar machen.

Nochmal zur Tastenabfrage:
Organist schrieb:
> Es wird immer nur 1 Zeile gleichzeitig mit positiver Spannung versorgt,
> wegen 1 am Latchausgang. Alle Tasten einer Zeile die gedrück sind, kommt
> als 1 ins Leseregister. In dem Fall der orangen Tasten 1010.
???
In diesem Bild ist doch pro Zeile nur 1 Taste betätigt. Ich würde also 
bei Aktivierung der ersten Zeile 1000 und bei der dritten Zeile 0010 
erwarten. Diese beiden Werte dürfen natürlich nicht irgendwie 
"zusammengerechnet" werden.

Lothar M. schrieb:
> Organist schrieb:
>>> und du kannst Mehrfachbetätigungen
>>> nicht (zuverlässig) erkennen.
>> Warum sollte das nicht gehen?
> ... du wirst fälschlicherweise die zweite Taste der obersten Zeile als
> betätigt erkennen.
Jetzt habe ich mal noch ein Bild dazu gemalt: obwohl die zweite Taste 
der obersten Reihe nicht betätigt ist, wird sie bei Aktivierung der 
ersten Zeile als betätigt erkannt, weil der Strom den Weg über die 
beiden eigentlich nicht abgefragten Tasten unten findet...

Sieh dir einfach mal an, wie solche Entkopplungsdioden in eine Matrix 
eingearbeitet werden nmüssen:
https://www-user.tu-chemnitz.de/~heha/Mikrocontroller/Tastenmatrix.htm

: Bearbeitet durch Moderator
von J. S. (engineer) Benutzerseite


Lesenswert?

Diese Art der einfachen matrix-artigen Verschaltung ist nur für 
Anwendungen geeignet, wenn eine Taste gedrückt wird. Will man alle 
Tasten verwenden und abfangen, brauchen auch alle eine Diode. Ich rate 
daher zu einer Matrix, die die Dioden schon drin hat, oder die Schalter 
einzeln herausführt.

Ich frage mich auch, ob hier doppelseitige Schieberegister wirklich 
benötigt werden und Sinn machen. Beim eingangsseitigen Multipexen 
vergibt man sich nur die Chance, den TriStateTreiber des FPGAs zu nutzen 
und der würde das alles sehr vereinfachen.

Wie weit ist denn die Schaltung von den Registern / dem Zielsystem weg? 
Oder wie weit sind denn die Schieberegister von den Schaltern weg?

Ich denke, es ist besser, ein paar Leitungen mehr zu investieren und nur 
die Ausgänge zu lesen. Dann gibt es keine Querinformationen und die 
Auswertung reduziert sich auf eine einzige einfache 
seriell-parallel-Wandlung und es geht auch wieder mit einem Controller.

von J. S. (engineer) Benutzerseite


Lesenswert?

Lothar M. schrieb:
> Sieh dir einfach mal an, wie solche Entkopplungsdioden in eine Matrix
> eingearbeitet werden müssen:
Ja, das geht beliebig intelligent, aber nach meiner persönlichen 
Einschätzung machen nur die beiden Extreme, also "einfach + tempo und 
Materialeinsatz" oder "kompliziert + langsam und Materialsparen" richtig 
Sinn, wobei die letzte Lösung eben für industrielle Sparanwendungen gut 
geeignet ist. Dioden sind teuer und brauchen Platz.

Zu der Frage der Störungen:

Lothar M. schrieb:
> ... die Störungen, die da irgendwie auskoppeln kommen nicht von
> diesem Signal (oder nur bei schlechtem Layout), denn das was stört und
> überkoppelt kommt von steilen Flanken. Und die müssen bei 1MHz viel
> steiler sein als bei 1 kHz.
Die werden aber erst einmal dieselbe Steilheit haben, oder? Nur eben 
dichter sitzen? Es sei denn, man stellt das Signal im FPGA weniger stark 
ein. Zudem liegen die Oberwellen des steilen Taktes erst Recht im 
Unhörbaren?

Das Störspektrum ist nach meinen Erfahrungen beim Audio dann 
interessant, wenn die Signale niederfrequente Anteile generieren, weil 
sie lange Pausen haben. Eine einzelne gedrückte Taste piept dann mit 
einer Grundwelle von einem 1/64 der Taktfrequenz mit einem 
Tastverhältnis von 1:63.

Was da dann wirklich stört, hinge auch wohl von dem ab, was die 
Schieberegister an Spektrum in die Matrix weiterschalten. Was ich da 
jetzt angemerkt hätte, wäre die kapazitive Umladung der Dioden. Die 
verschleifen die Flanken und saugen dafür Strom. Sowas tastet man daher 
möglichst langsam rein und raus.

Optimiert ginge es daher mit einem gleichförmigen Takt, der keine 
niederfrequenten Anteile hat. Bleiben die Oberwellen und das EMV-Thema. 
Es gibt daher auch Spezialisten, die machen das mit Sinuswellen und 
lesen den Pegel an der richtigen Stelle.

Wie ich aber oben schon angemerkt habe, kann man sich diese 
Betrachtungen sparen, wenn man den Eingangs-Mux weglässt und einfach 
etwas Spannung über Tiefpässe an die Schalter gibt. Dann pulst da nur 
etwas beim Einschalten, hat wenig Leistung und etwaige Einflüsse ins 
System werden haptisch überdeckt, weil man gerade eine Taste drückt.

Bei meinem MIDI-Controller kann ich auch die Schaltvorgänge im Audio 
messen, wenn ich unterhalb von -70dB fs hingucke, aber es interessiert 
nicht, weil dem Signal ein lautes Knacken des Drehgebers überlagert ist 
:-)

von uijuijui (Gast)


Lesenswert?

S. R. schrieb:
> Um eine Matrix abzufragen, musst du immer Pins zwischen Ein- und
> Ausgängen umschalten können. Was du willst, geht also ohne Weiteres
> nicht.
Warum muss umgeschaltet werden?
Das verstehe ich nicht ...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Jürgen S. schrieb:
> Beim eingangsseitigen Multipexen vergibt man sich nur die Chance, den
> TriStateTreiber des FPGAs zu nutzen und der würde das alles sehr
> vereinfachen.
Und die Tristate-Sache erzeugt bei mir ein Fragezeichen... ?
Eingangsseitig brauche ich doch nur Eingänge, und die sind sowieso 
Tristate. Wenn, dann könnte man die Pullup/down Widerstände sparen.

von Andi (Gast)


Lesenswert?

uijuijui schrieb:
> S. R. schrieb:
>> Um eine Matrix abzufragen, musst du immer Pins zwischen Ein- und
>> Ausgängen umschalten können. Was du willst, geht also ohne Weiteres
>> nicht.
> Warum muss umgeschaltet werden?
> Das verstehe ich nicht ...

Lothar M. schrieb:
> Und die Tristate-Sache erzeugt bei mir ein Fragezeichen... ?
> Eingangsseitig brauche ich doch nur Eingänge, und die sind sowieso
> Tristate. Wenn, dann könnte man die Pullup/down Widerstände sparen.

Man schaltet eine Zeile auf Low und all die anderen auf Eingang 
(=Tristate) und kann sich damit die Dioden an den Zeilenausgängen 
sparen. Die Dioden werden per Software "emuliert". Zusätzlich nutzt man 
die meist vorhandenen Pullup Widerstanden an den Spalteneingängen. Somit 
benötigt man kein einziges zusätzliches Bauteil zur eigentlichen 
Tastenmatrix.
Mit zusätzlichen Dioden braucht man das Umschalten natürlich nicht, aber 
normalerweise will man ja so wenig Bauteile wie nötig verwenden, sonst 
verzichtet man besser gleich auf eine Matrix Tastatur und fragt jede 
Taste einzeln ab.

von J. S. (engineer) Benutzerseite


Lesenswert?

Lothar M. schrieb:
> Und die Tristate-Sache erzeugt bei mir ein Fragezeichen... ?
> Eingangsseitig brauche ich doch nur Eingänge,
Mit dem "Eingang" meinte ich den Eintritt in die Matrix.

Andi schrieb:
> Man schaltet eine Zeile auf Low und all die anderen auf Eingang
> (=Tristate) und kann sich damit die Dioden an den Zeilenausgängen
> sparen. Die Dioden werden per Software "emuliert".
Ob man das so darstellen sollte ...

Die Dioden kamen je erst ins Spiel, als man die Eingänge der 
Ausleseschaltungen zusammengeschaltet hatte, sonst bräuchte man das gar 
nicht. Emuliert werden müssen die in dem Sinne nicht.

Andi schrieb:
> Mit zusätzlichen Dioden braucht man das Umschalten natürlich nicht, aber
> normalerweise will man ja so wenig Bauteile wie nötig verwenden, sonst
> verzichtet man besser gleich auf eine Matrix Tastatur und fragt jede
> Taste einzeln ab.
Sage Ich doch :-)

Es ist ja so: Auch das Treiben eines Schiebregisters braucht 2-3 
Leitungen + Versorgung und dann muss die Matrix schon groß sein, dass es 
sich lohnt.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Jürgen S. schrieb:
> Mit dem "Eingang" meinte ich den Eintritt in die Matrix.
Also den Ausgang des Zeilentreibers, wenn es nach dem Bild im 4. Post 
geht.

Andi schrieb:
> Man schaltet eine Zeile auf Low und all die anderen auf Eingang
> (=Tristate) und kann sich damit die Dioden an den Zeilenausgängen sparen.
Wir waren doch schon so weit, dass wir mehrfache Betätigungen brauchen 
und deshalb pro Schalter eine eigene Diode eingesetzt werden muss. Dann 
braucht man die Dioden nach dem Zeilentreiber nicht mehr...

: Bearbeitet durch Moderator
von uijuijui (Gast)


Lesenswert?

Andi schrieb:
> Mit zusätzlichen Dioden braucht man das Umschalten natürlich nicht, aber
> normalerweise will man ja so wenig Bauteile wie nötig verwenden, sonst
> verzichtet man besser gleich auf eine Matrix Tastatur und fragt jede
> Taste einzeln ab.
Danke für die Info.

von Organist (Gast)


Lesenswert?

Lothar M. schrieb:
> In diesem Bild ist doch pro Zeile nur 1 Taste betätigt. Ich würde also
> bei Aktivierung der ersten Zeile 1000 und bei der dritten Zeile 0010
> erwarten. Diese beiden Werte dürfen natürlich nicht irgendwie
> "zusammengerechnet" werden.

Ok, das ist richtig. Ich hatte eingangs allerdings schon vermutet, dass 
es nicht möglich sein würde, mehr als eine Taste zur gleichen Zeit 
abfragen zu können.

Ich habe im Weiteren die Beiträge hier durchgearbeitet und gefunden, daß 
das Charlyplexing infrage kommen könnte, siehe den Beitrag und die 
Zeichnung hier:
Beitrag "Re: 4x4 Matrix Tastatur am FPGA"

Ich lese aber im Artikel der Wikipedia, dass auch dort Dioden benutzt 
werden müssten und selbst dann nicht sichergestellt sei, dass 
Mehrfachinterpretationen entstehen.

Danach habe ich das hier durchgelesen:
Beitrag "Charlieplexing mit PIC - wie den Strom erhöhen?"
Beitrag "suche treiber IC für Charlieplexing"

bin aber immer noch nicht schlau.

Wie würden eine optimale Charlyplexing-Schaltung (eventuell ohne Dioden) 
und eine dazu passende Auswertestrategie aussehen, damit alles Tasten 
sicher erkannt werden könnten?

Komparatoren, wie im Beispiel 2 möchte ich nicht einsetzen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Vergiss Charlieplexing, wenn du mehrfach gleichzeitig betätigte Kontakte 
auswerten willst. Ich hatte das schonmal erwähnt...

Denk einfach mal ein wenig drüber nach und male dir selber den 
Stromfluss mit mehreren betätigten Schaltern in den Schaltplan.
Es bringt nichts, wenn du es wegen der wenigen Dioden attraktiv findest, 
dann aber die Schwachstellen nicht siehst.

BTW: die Lösung ganz ohne Dioden und mit einfachster Verdrahtung hatte 
ich auch schon genannt...

: Bearbeitet durch Moderator
von Thomas W. (diddl)


Lesenswert?

Lothar M. schrieb:
> Wir waren doch schon so weit, dass wir mehrfache Betätigungen brauchen
> und deshalb pro Schalter eine eigene Diode eingesetzt werden muss. Dann
> braucht man die Dioden nach dem Zeilentreiber nicht mehr...

Dioden brauchst du in jedem Fall, wenn du mehrfach Betätigung brauchst.

Und zwar brauchst du Dioden bei jedem Taster.
Zeilen und Spalten Dioden reichen nicht!
Jedenfalls nicht für jede Tastenkombination.

von S. R. (svenska)


Lesenswert?

Organist schrieb:
> Ich habe im Weiteren die Beiträge hier durchgearbeitet und gefunden, daß
> das Charlyplexing infrage kommen könnte,

Tut es nicht.
Warum willst du nicht einfach eine Schieberegisterkette benutzen?

von Organist (Gast)


Lesenswert?

Ja,ja bin ja überzeugt. Also werden es 8 Schieberegister werden. Damit 
fallen aber die schönen (und billigen!) fertig aufgebauten 
4x4-Schalterplatinen von EBAY weg. Kennt einer zufällig einen 
Lieferanten für ähnliche Anordungen? Alle die ich bisher fand, sind auf 
diese Weise hart verodert. Auch auf diversen Bastlerseiten fand ich 
keine Platinen mit Schalteranordnungen.

Vielleicht hat einer einen Tipp?

Wir brächte dann einmal Spannung auf alle Taster parallel und 64 
Schiebregistereingänge mit pulldowns. Das doofe ist, dass ich eigentlich 
auch für die Schieberegister solche fertige Platinen verwenden wollte 
und diese aber keine pull ups haben. Gibt es Schieberegister mit 
eingebauten pulldowns wie im FPGA? Wahrscheinlich nicht, nehme ich an.

Bitte jetzt nicht vorschlagen, die Schieberegister in Verilog zu bauen 
und einen FPGA dafür zu nehmen:-)

Ich hatte noch eine Idee: Analogmultiplexer legen die Leitungen an den 
FPGA-Pin. Aber dann braucht es einen Muliplexer mehr und 5 
Steuerleitungen. Spart also nichts.

Oder gibt es noch eine Idee?

von S. R. (svenska)


Lesenswert?

Ich dachte, du wolltest eine Orgel bauen, also sowas wie hier: 
http://www.linusakesson.net/chipophone/? Bei sowas liegen die Tasten 
nebeneinander statt im Raster, also wären die 4x4-Teile sowieso unnötig.

von Organist (Gast)


Lesenswert?

Nein, hatte ich doch schon geschrieben. Diese Tasten sind zum 
Einschalten von Effekten, Registern, Steuern der Lautstärke. Sie haben 
also "an" "aus" "hoch" runter" Verhalten. Die Lautstärke von Effekten 
soll z.B. stufenlos verstellbar sein. Mit den Manualen hat das nichts zu 
tun.
Das Bedienfeld ist groß genug für 2 x 4 Tasten und in der Breite 
unbegrenzt. Etwa 100cm. Vorgesehen sind 64 Tasten, eventuell noch ein 
Feld daneben. Die Tasten müssen keine hohe Qualität haben, da sie nur 
selten gedrückt werden.

von S. R. (svenska)


Lesenswert?

Nein, das ging entweder aus deinen Beiträgen bisher nicht direkt hervor 
oder ich habe es zwischenzeitlich verdrängt.

Wenn die Tasten nur selten gedrückt werden, spielt das Problem der 
Mehrfachbetätigung eigentlich keine Rolle. Es würde also reichen, wenn 
du beim Scan feststellst, dass mehrere Tasten gedrückt sind und 
währenddessen einfach alle Tasten ignorierst. Vorteil: Billige 
Tastaturen und kein Diodenaufwand.

Was spricht eigentlich dagegen, einfach pro 4x4-Tastatur einen eigenen 
kleinen AVR abzustellen? Der kann seine kleine Matrix zügig scannen und 
entprellen und entlastet damit den Hauptcontroller. Für schnelle 
Reaktionszeiten kann er auch einen Interrupt auslösen.

Damit könntest du auch schöne kompakte, wiederverwendbare Module bauen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

S. R. schrieb:
> das ging entweder aus deinen Beiträgen bisher nicht direkt hervor
Die Angaben sind tatsächlich verwirrend und widersprüchlich, denn da war 
doch was mit mehreren Tasten erkennen und das innerhalb von 10ms 
nacheinander, denn
Organist schrieb:
> Ich möchte gleichzeitig gedrückte Tasten erkennen und der Unterschied
> zweier Finger sind im Bereich unter 10ms. Tastet man langsamer ab, wird
> es zu grob.
Fazit: hat keinen Zweck, ich bin raus...

von Organist (Gast)


Lesenswert?

Lothar M. schrieb:
> doch was mit mehreren Tasten erkennen und das innerhalb von 10ms
> nacheinander, denn
ja, weil gleichzeitig gedrückte Tasten eine andere Funktion haben, als 
nacheinander gedrückte. Es muss erkennbar sein, dass zwei Tasten 
innerhalb von einer gewissen Zeit kamen. 1ms muss es nicht sein, aber 
10ms wäre die Grenze. Wahrscheinlich gehen auch 20ms, aber dann muss man 
schneller, als die 20ms abtasten. 20ms bei 64 Tasten und 3 Einheiten 
sind auch noch immerhin 100kHz.

Es gibt auch noch eine Spezialtaste, die den Rhythmus vorgeben soll. 
Durch Eingabe der Taste soll die Periode berechnet werden und die BMP 
eingestellt werden. BPM sind bis zu 180, also 3Hz. Die hätte ich gerne 
auf 0,1% genau. Also maximal 3ms Fehler.


S. R. schrieb:
> Damit könntest du auch schöne kompakte, wiederverwendbare Module bauen.
Ja, aber ich müsste sie eben erst bauen, d.h. layouten, warten bis die 
Platine kommt, bestücken, testen und programmieren. 20h Arbeit, 100 Euro 
Kosten.

Ich hätte es gerne möglichst gekauft, ohne großartige aktive Teile an 
der Schalterbaugruppe. Die Matrixplatinen und die Schieberegister lötet 
man in einer 1h zusammen und kosten <20,- zusammen.

Gibt es nicht irgendwelche ICs, die solche Schaltergruppen auslesen und 
bedienen?

Es kann doch eigentlich nicht sein, dass so was nicht 100x exisitert.
Bin ich der einzige, der Schalter abfragen will?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Organist schrieb:
> ja, weil gleichzeitig gedrückte Tasten eine andere Funktion haben, als
> nacheinander gedrückte.
Lies endlich mal die Posts und versuche wenigstens, das zu verstehen: 
mit einer Matrix geht das nur, wenn jeder Taster/Schalter eine eigene 
Diode hat.

Du solltest deine Anforderungen einfach mal festlegen und nicht in jedem 
2. Post mit anderen Anforderungen: mal soll nur 1 Taste ausgewertet 
werden und mal mehrere...

> ja, weil gleichzeitig gedrückte Tasten eine andere Funktion haben, als
> nacheinander gedrückte.
Und warum muss man da als Bediener im ms-Bereich reagieren?

Organist schrieb:
> Bin ich der einzige, der Schalter abfragen will?
Auf diese ausgefallene Art schon. Im Ernst: solange du da auf der Suche 
nach deiner Idealplatine herumhampelst, hättest du das ein paar Mal auf 
Lochraster aufbauen können. Aber dazu musst du einfach mal anfangen.

von руки верх! (Gast)


Lesenswert?

Du bist der einzige der sich dabei so dusslig anstellt.

> Die Tasten müssen keine hohe Qualität haben
Bei Instrumenten ein völlig falscher Ansatz.

> Etwa 100cm
1 m Tastaturmatrizen?

Ich mach auch den Lothar...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

руки верх! schrieb:
> Ich mach auch den Lothar...
?

von руки верх! (Gast)


Lesenswert?

>> Ich mach auch den Lothar...

Ich darf das. Ich heisse tatsächlich auch so.

von Organist (Gast)


Lesenswert?

руки верх! schrieb:
>> Die Tasten müssen keine hohe Qualität haben
> Bei Instrumenten ein völlig falscher Ansatz.

Welche Taster würdest Du vorschlagen, die eine bessere Qualität haben? 
Die Mikrotaster können 100.000 mal schalten. Sie werden aber nur 10x mal 
Tag bedient.

>Und warum muss man da als Bediener im ms-Bereich reagieren?
Man muss im ms-Bereich abtasten um zu sehen, ob die Tasten gleichzeitig 
sind und wann sie etwa kamen.

von руки верх! (Gast)


Lesenswert?

OMRON BF3 12 × 12 mm

von Andi (Gast)


Lesenswert?

Organist schrieb:
> Gibt es nicht irgendwelche ICs, die solche Schaltergruppen auslesen und
> bedienen?

Doch, die nennen sich Mikrocontroller.

Organist schrieb:
> Diese Tasten sind zum
> Einschalten von Effekten, Registern, Steuern der Lautstärke. Sie haben
> also "an" "aus" "hoch" runter" Verhalten.

Wie willst du denn Effekte oder Lautstärke steuern, und die sich 
ändernden Werte verwalten, ohne einen Controller zu verwenden? Wie 
werden die Effekte, Register usw. in der Orgel angesteuert?

Wenn ich für so was ein FPGA nehmen müsste, würde ich da sofort einen 
Softcore implementieren, um eine solche Bedienung zu realisieren.

Und nochmal: 2 Tasten kannst man mit einer Matrix ohne Dioden 
zuverlässig abfragen, erst ab 3 gleichzeitig gedrückten kann es zu 
zusätzlich "Geister-Tasten" kommen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Andi schrieb:
> Und nochmal: 2 Tasten kannst man mit einer Matrix ohne Dioden
> zuverlässig abfragen, erst ab 3 gleichzeitig gedrückten kann es zu
> zusätzlich "Geister-Tasten" kommen.
Das muss man dem Bediener aber ziemlich deutlich sagen...
Und wehe,  da werden eines Tages nicht nur Taster, sondern auch Schalter 
in der Matrix eingesetzt...

von Organist (Gast)


Lesenswert?

Andi schrieb:
> Und nochmal: 2 Tasten kannst man mit einer Matrix ohne Dioden
> zuverlässig abfragen, erst ab 3 gleichzeitig gedrückten kann es zu
> zusätzlich "Geister-Tasten" kommen.
Danke. Ich überlege mir, ob das akzeptabel ist.

руки верх! schrieb:
> OMRON BF3 12 × 12 mm
Danke für den Hinweis. Wenn ich nun selber bauen muss, kann ich auch die 
einsetzen.

von Andi (Gast)


Lesenswert?

Die meisten Bediener sind schon überfordert, wenn das Drücken von 2 
Tasten gleichzeitig eine andere Funktion hat, als bei den Tasten einzeln 
gedrückt.

von S. R. (svenska)


Lesenswert?

Organist schrieb:
> Lothar M. schrieb:
> ja, weil gleichzeitig gedrückte Tasten eine andere Funktion haben, als
> nacheinander gedrückte.

Es ist ziemlich schwierig, mehrere Tasten innerhalb einer sehr kurzen 
Zeitspanne zuverlässig gleichzeitig zu drücken. Besonders auf einer 
4x4-Billig-Matrixtastatur.

Bei Klaviertasten ist das was anderes, aber die als Matrix zu 
verschalten ist eine bescheuerte Idee. Sollte dir inzwischen bekannt 
sein.

> Es gibt auch noch eine Spezialtaste, die den Rhythmus vorgeben soll.
> Durch Eingabe der Taste soll die Periode berechnet werden und die BMP
> eingestellt werden. BPM sind bis zu 180, also 3Hz. Die hätte ich gerne
> auf 0,1% genau. Also maximal 3ms Fehler.

Dann spendiere dieser Taste einen eigenen Pin. Mit Interrupt kannst du 
Latenzen im Mikrosekundenbereich garantieren.

>> Damit könntest du auch schöne kompakte, wiederverwendbare Module bauen.
> Ja, aber ich müsste sie eben erst bauen, d.h. layouten, warten bis die
> Platine kommt, bestücken, testen und programmieren. 20h Arbeit, 100 Euro
> Kosten.

In der Zeit, in der wir uns hier im Kreis drehen, hättest du alle Module 
schon auf Lochraster zusammenlöten und testen können. Von "Platine 
layouten und in China bestellen" sprach niemand.

Aber da du offensichtlich nichts bauen willst,
ist die Diskussion ohnehin hinfällig.

> Es kann doch eigentlich nicht sein, dass so was nicht 100x exisitert.
> Bin ich der einzige, der Schalter abfragen will?

Auf diese Weise: ja.
Warum das anders sinnvoller ist, wurde bereits ausreichend erörtert.

: Bearbeitet durch User
von J. S. (engineer) Benutzerseite


Lesenswert?

Beitrag "4x4 Matrix Tastatur am FPGA"
S. R. schrieb:
> Organist schrieb:
>> Lothar M. schrieb:
>> ja, weil gleichzeitig gedrückte Tasten eine andere Funktion haben, als
>> nacheinander gedrückte.
>
> Es ist ziemlich schwierig, mehrere Tasten innerhalb einer sehr kurzen
> Zeitspanne zuverlässig gleichzeitig zu drücken. Besonders auf einer
> 4x4-Billig-Matrixtastatur.

Solche Funktionen sind gar nicht mal so selten, nur wird man eine viel 
größere Toleranz zulassen müssen, z.B. 100ms. Dann würde auch eine 
geringere Abtastrate reichen. Z.B. 1ms je Schalter. Beim Boxen gab es 
doch eine Zeit lang mal einen Zählcomputer, der hat Schläge noch als 
"gleichzeitig" gewertet, wenn 2 Boxrichter innerhalb einer Sekunde 
gedrückt hatten ;-)

von J. S. (engineer) Benutzerseite


Lesenswert?

Andi schrieb:
> Organist schrieb:
>> Gibt es nicht irgendwelche ICs, die solche Schaltergruppen auslesen und
>> bedienen?
> Doch, die nennen sich Mikrocontroller.
:D :D :D

> Wie willst du denn Effekte oder Lautstärke steuern, und die sich
> ändernden Werte verwalten, ohne einen Controller zu verwenden? Wie
> werden die Effekte, Register usw. in der Orgel angesteuert?
Das ist mal eine gute Frage. Vielleicht sollte man mal ein Blockdiagramm 
zeichnen, wo was sitzt und was es tut, um zu erkennen, wie weit die Wege 
sind. Wenn ich mir meine Orgeln(n) so ansehe, dann gibt es immmer eine 
Hauptplatine und einen überschaubaren Kabelbaum hin zum Tastenfeld. Das 
ist aber selten mehr, als 1m. Die Tasten kommen als Baum rein. 30cm 
maximal.

> Und nochmal: 2 Tasten kannst man mit einer Matrix ohne Dioden
> zuverlässig abfragen, erst ab 3 gleichzeitig gedrückten kann es zu
> zusätzlich "Geister-Tasten" kommen.
Aber nicht mit den Dingern, die er sich ausgesucht hat. Jedenfalls nicht 
so einfach.

Organist schrieb:
> Ich hätte es gerne möglichst gekauft, ohne großartige aktive Teile an
> der Schalterbaugruppe. Die Matrixplatinen und die Schieberegister lötet
> man in einer 1h zusammen
Wenn ich mir die Bilder ansehe, wie DIE bestückt sind, Taster fast alle 
schief und krumm eingelötet, muss man nacharbeiten und dann ist man mit 
Lochraster auch nicht schlechter dran. Müssen dann eben Taster im 254er 
Raster sein. Was soll denn eigentlich drauf auf die Taster? Ich würde da 
eher die beleuchteten Kurzhubtaster nehmen. Die sehen optisch auch gut 
was, wenn man sie durch die Frontplatte durchbricht.

> Durch Eingabe der Taste soll die Periode berechnet werden und die BMP
> eingestellt werden. BPM sind bis zu 180, also 3Hz. Die hätte ich gerne
> auf 0,1% genau. Also maximal 3ms Fehler.
Wo kommt der Beat akustisch her? Wenn von MIDI, dann ist der schon nicht 
genauer, als 1%.

von Organist (Gast)


Lesenswert?

Jürgen S. schrieb:
> Wo kommt der Beat akustisch her? Wenn von MIDI, dann ist der schon nicht
> genauer, als 1%.

Der Takt wird nach Gehör mit dem Finger in die Taste gedrückt. Die 
Software muss die Periode vermessen und den BPM-Wert berechnen. Das ist 
wichtig für die MIDI Synchronisation. Die anderen Gruppenmitglieder 
spielen keine Instrumente mit MIDI. (Harfe, Cello, etc)

>Wenn ich mir die Bilder ansehe, wie DIE bestückt sind,
Diese Schalterbaugruppe hatte ich bereits verworfen

Es wird nun auf einen Neubau hinauslaufen und es geht nun nur noch um 
das Verschalten.

Beitrag "Re: Tastenmatrix Realisierung mit oder ohne IC"

von J. S. (engineer) Benutzerseite


Lesenswert?

Da das Thema der universell auslesbaren Schalter mit 
"Gleichzeitigdrücken" und trotzdem wenig Aufwand schon ausgeufert ist, 
lege ich noch dies hier drauf:

Es gäbe noch eine (teil-) digitale Lösung für 2 Drähte und große 
Entfernungen. Macht aber nur Sinn, wenn man wirklich nur die beiden 
Drähte hat, vor ort keine Spannungsversorgung hin darf oder vorhandene 
Systeme nachgerüstet werden müssen, die man nicht umbauen kann ...

... und wenn man daheim im host-System etwas Rechenleistung investieren 
möchte

... und die Umgebung das EMV-mäßig auch verträgt!

Sie wurde von mir Ende der 90er als Kundenlösung erarbeitet und ist 
industriell auch als "Additiv" genutzt worden - zusammen mit einer 
anderen Neuentwicklung zur stillschweigenden Systemerweiterung. Wir 
waren uns nicht sicher, ob es patentierbar ist oder schon so patentiert 
ist, da die Methodik in ähnlicher Weise an anderer Stelle existierte, 
nur nicht für diesen Zweck. Der Kunde hat es niemals patentiert und 
existiert auch in dieser Form nicht mehr. Aufgrund der langen Zeit wäre 
es ohnehin abgelaufen. Dasselbe gilt für einen möglichen Verstoß eines 
damals bestehenden Patents. Man darf also lustig nachbauen:

Erst einmal die alte Version:

Die von mir in der Vergangeheit immer mal wieder (auch hier!) 
publizierte Version sah so aus, das man ein analoges Frequenzgemisch in 
Form präparierten Rauschens oder einer Tonleiter in eine Leitung 
einspeist, vor den abzufragenden Schaltern ein schmalbandiges Filter 
einsetzt, somit den Schaltern bestimmte Frequenzen durchschaltet, diese 
hinten zusammenmischt und dann über die Rückleitung rückführt. Das 
Gemisch wird dann mit Signalverarbeitung getrennt und in die 
Einzelfrequenzen aufgespalten.
Damit hat man eine Information über die Schalterstellung. Optimierung 
über schmalbandigkeit der Filter und Länge des Signals, das man 
betrachtet. Eine Verbesserung ergibt sich durch Absenden eines ganz 
bestimmten Rauschens und "Abziehen" desselben / Berücksichtung bei der 
Signalverarbeitung. Damit wird das Signal auch nicht so störend, nur die 
SV aufwändiger. Am Einfachsten sind die ausdrücklichen Töne bekannter 
Frequenz.

Einen richtig guten Störabstand bekommt man durch selektives Anregen der 
Filter mittels einer digitalen Frequenz oder eines Sinussignals. Dann 
reagiert nur ein Filter, abgesehen von der dritten Oberwellen des 
Rechtecks beim digitalen Signal. Das klappte über 100m in stark 
gestörter Umgebung mit ausreichender Geschwindigkeit.

Problem: Man muss dann alle Schalterfrequenzen multiplexen und sehr 
niedrige Frequenzen können beim Prozessieren lange dauern, wegen der 
"Betrachtung" in der SV. Man braucht aber nur sehr geringe Signalpegel, 
weil die Filteraufschwingen und immer nur ein Taster aktiv ist.

Auf den ersten Blick ist sie "umständlicher", als die Versorgung der 
Matrix mit Dioden, aber es gibt ganz bestimmte Fälle wo diese 
Konfiguration stabiler ist, da man nur R's und C's benötigt.

Diese Lösung haben wir aber so nirgends gefunden und ist mir auch heute 
nicht in der Form begegnet. Ganz sicher gibt es das aber in der ein oder 
anderen Anwendung (?)

Im Grunde genommen, ist es eine Art von Orgel mit anschließender 
Tonverarbeitung. Passt also irgendwie zum Thema.


Nun kommt eine bisher nicht publizierte Variante:

Man nehme ein digitales Signal als Takt mit möglichst hoher Frequenz und 
sende es auf der Ausgangsleitung zu der Slave-Baugruppe.
Anstatt der analogen Filter werden JK-FFs verwendet, die die Frequenz 
vor ort in Kaskade halbieren und Signale für die Schalter zur Verfügung 
stellen. Das Frequenzgemisch wird also vor ort von der Slave-Schaltung 
gemacht, statt abgesendet. Die Frequenzen wären damit 100%, 50%, 25% ... 
etc. Durch Umschalten der Frequenz auf 1.0, 1.3, 1.7 bekommt man 3 
Fundamentalfrequenzen, die sich mit genügendem Störabstand unterscheiden 
und somit 3 Systeme mit binären Teilfrequenzen.

Jede Teilfrequenz wird auf Schaltergruppen geschoben, bzw mit Ausgängen 
von Digitalsensoren verundet, um deren Information zu maskieren.
Die so durchgeschalteten Signale werden mit einem EXOR gemischt und 
zurückgesendet. Im Beispiel hätte man 3x n Sensoren.

Auch das ist eigentlich wieder eine "Orgel", nur mit anderen Frequenzen.

Das Prozessieren / Falten erfolgt aber bedarfsweise mit Rechtecken und 
ist damit von einfachen Controllern zu leisten, die nur auf dem 
1..2-fachen der Frequenz abtasten. Im vorliegenden Fall haben wir 
ungekoppelte Systeme und mit dem 4fachen abgetastet.

Um zu den elementaren Rechtecken zu gelangen, wird immer ein komplettes 
Wort als serieller Datenstrom eingelesen und mit einem selektiven 
pattern verundet, welches a) die jeweilige Frequenz detektiert, wenn es 
passt und b) die hochfrequenten bits per exor zurückbiegt, damit das 
nächste pattern ein tieffrequentes Signal "sieht".

Beispiel:

Eingangsfrequenzen für z.B. 4 Schalter, mit Schalter 2 auf "aus"

Bit 0: 1010101010101010
Bit 1: 1100110011001100
Bit 2: 1111000011110000 unerheblich, da "aus"
Bit 3: 1111111100000000

Daten: 1001100101100110  (nach EXOR)

(Leitung zum Empfänger)

Gelesen 1111.0000.0000. u.s.w   wegen 4facher Abtastung.

Faltung im Empfänger mit z.B. Pseudosinus 0 1 1 0 , 0 -1 -1 0 
,0110,0-1-10 oder bei guter Synchronisation voll digital mit UND-Gatter 
1111000011110000 (dann geht auch geringere Frequenz).

Die anschließende Dezimation erzeugt wieder das gelesene Wort, diesmal 
ohne das Bit 0, da aus dem Strom absichtlich entfernt.

Stufe1: 0011001111001100

Das erspart eine Filterung mit z.B. Integerwerten, um das hochfrequente 
Bit 0 zu überlesen. Der Bit-Strom 0 wird quasi abgezogen.

Dann folgt Faltung mit der halben Frequenz für nächst höheres Bit

Stufe2: 1111111100000000

Faltung mit wieder der halben Frequenz ergibt nichts, da Frequenz nicht 
vorhanden. Es wird auch nichts korrigiert.

Stufe3: 1111111100000000

Faltung mit wieder der halben Frequenz ergibt wieder "Vorhandensein der 
Frequenz" und damit "1" für den Schalter.

Stufe4: 0000000000000000

Ende.

Wir haben also eine einfache binäre Faltung ähnlich einer 
IQ-Prozessierung / Sinus-Faltung.

Zum einfachen Umsetzen kann man auch nach jeder Dezimation jedes 2.Bit 
wegwerfen und bez. der Prüfung in eine Iteration mit immer einem 
1100-Muster hüpfen.

Das Ganze wird sinngemäß fortgesetzt für jeden weiteren Schalter. 10 
Schalter benötigen z.B. ein Spektrum von Faktor 1024 also z.B. 100kHz 
... 100Hz. Man kann also binnen einer 10ms-Periode kontinuierlich alle 
10 Schalter abfragen. Durch Umschalten der Startfrequenz z.B. 30!

Lief in einem TMS320 und belegte später in einer anderen Version einen 
halben 3000er von Xilinx.

Wenn ich es mir recht überlege, war das eine Art Mehrfrequenzmischer, 
weil die Verundung der Sensorausgänge mit jeweils steigenden 
Trägerfrequenzen ein multiplikativer Mischer ist.

Das "Schalter-Modul" wie wir es mal nennen wollen, wurde in einer 
Version sogar direkt von dem "Takt" versorgt: (Luftankopplung Induktiv). 
Die Konkurrenz hatte diesbezüglich eine ähnliche Lösung, die vor ort 
einen Controller nutzte, der ebenfalls fremd-versorgt wurde und alle 
Arbeit erledigte und seriell auf derselben Leitung zurück funkte. Man 
brauchte also nur VDD+GND zu seinem "Slave" und bediente diesen per 
kapazitiv eingekoppelten Signal. War aber langsamer und träger als 
meine, da nur einzeln / seriell und halb duplex :-)

Das gleiche gilt für die Schieberegisterlösung von oben, wobei man die 
auch mit zwei Drähten hinbekommen müsste, wenn ein Controller vor ort 
die SRs bedient. Meine Lösung ist komplett passiv und braucht nur den 
Strom für die JK-FFs und die EXORs.

Heute würde man sowas wahrscheinlich mit einer induktiven 
Stromtransportlösung fahren, die nur die Konfigdaten über die Versorgung 
hinführt, während vorort ein mini-Prozessor über bluetooth zurückfunkt 
oder die Daten gleich direkt auf facebook hochlädt :-)

von Rolf S. (audiorolf)


Lesenswert?

Das liest sich wirklich ähnlich einem Frequenzmultiplexverfahren, siehe 
hier:
https://www.vs.inf.ethz.ch/edu/SS2001/MC/slides/01-grundlagen.pdf

Andi schrieb:
> Und nochmal: 2 Tasten kannst man mit einer Matrix ohne Dioden
> zuverlässig abfragen, erst ab 3 gleichzeitig gedrückten kann es zu
> zusätzlich "Geister-Tasten" kommen.
Es lässt sich auch einrichten, immer 3 Tasten in einer 2x2-Matrize zu 
betreiben, einen Knoten unbeschaltet zu lassen und diese zu multiplexen. 
Das Charly-Multiplexing beruht auch indirekt drauf, nur benutzt es noch 
die Leutingen rückwärts.

von Duke Scarring (Gast)


Lesenswert?

Rolf S. schrieb:
> Das liest sich wirklich ähnlich einem Frequenzmultiplexverfahren
Wenn man dann noch die Frequenzen geschickt wählt, kann man sich hier 
einen Chip raussuchen, der die ganze Dekodierung schon drin hat:
https://de.wikipedia.org/wiki/Orthogonales_Frequenzmultiplexverfahren#Anwendungsbeispiele

:-)

von temp (Gast)


Lesenswert?

Last bitte den Organisten weiter von seiner Traumwelt phaseln. Ausser 
wirres Zeug ist da bisher nicht zustande gekommen. Im Nachbarthread zum 
USB-Midi Host dreht er sich auch seit Monaten im Kreis. In meinen Augen: 
Hoffnungsloser Fall!

von Rolf S. (audiorolf)


Lesenswert?

Duke Scarring schrieb:
> Wenn man dann noch die Frequenzen geschickt wählt, kann man sich hier
> einen Chip raussuchen, der die ganze Dekodierung schon drin hat:
> 
https://de.wikipedia.org/wiki/Orthogonales_Frequenzmultiplexverfahren#Anwendungsbeispiele

Das sind aber Kavänzmänner die für die hiesige Anwendung ganz minimal 
overdesigned sein könnten,oder? Das braucht es mehr für Telekom und LTE 
und soetwas.

Ich meine, dann kannst Du auch Pulse in die Leitungen senden und die 
Entfernung messen, damit Du erkennst, wo ein Schalter sitzt. So eine 
Time of Response Verfahren hatten wir mal an der ETH. Man geht da mit 
einem GHz-Oszillator rein und mischt es mit der Antwort, um dann dann 
Phasenverschiebung zu bekommen. Ist wie ein Radar in Kupfer.

P.S. In meinem Beitrag war natürlich nicht "Leutingen" sondern Leitungen 
gemeint. Da war wohl das Unterbewusstsein beim Schreiben aktiv:
https://www.leuzigen.ch

von Duke Scarring (Gast)


Lesenswert?

Rolf S. schrieb:
> Das sind aber Kavänzmänner die für die hiesige Anwendung ganz minimal
> overdesigned sein könnten,oder?
Da war original noch ein Smiley dran.

> Ich meine, dann kannst Du auch Pulse in die Leitungen senden und die
> Entfernung messen, damit Du erkennst, wo ein Schalter sitzt. So eine
> Time of Response Verfahren hatten wir mal an der ETH. Man geht da mit
> einem GHz-Oszillator rein und mischt es mit der Antwort, um dann dann
> Phasenverschiebung zu bekommen. Ist wie ein Radar in Kupfer.
Interessant. So eine Aufgabenstellung wartet hier noch auf mich (bisher 
wurde eine Laufzeitmessung gemacht und die Kollegen haben mich nach 
einem 100 GS/s Oszi gefragt, um die Zeitauflösung zu verbessern...)
Welche Ortsauflösung habt Ihr mit Eurem Setup erreichen können?

Duke

von Rolf S. (audiorolf)


Lesenswert?

Ich habe die Werte nicht mehr im Kopf. Zu lange her. Bei Leiterbahnen, 
wie sie auf PCBs vorzufinden sind, lassen sich Reflektionen messen und 
mit etwas Abgleich auch die Längen bestimmen. Es braucht aber mehrfache 
und längere Messungen, soll es genau werden.

von Mischer (Gast)


Lesenswert?

Thomas W. schrieb:
> Dioden brauchst du in jedem Fall, wenn du mehrfach Betätigung brauchst.
Nicht unbedingt. Es geht auch, jeden Eingang der Taste einzeln zu 
bestromen und dann hinten alles zusammenzufassen.

> Und zwar brauchst du Dioden bei jedem Taster.
> Zeilen und Spalten Dioden reichen nicht!
> Jedenfalls nicht für jede Tastenkombination.
Nur beim Charlyplexing ist es nötig, jede Leitung mit Dioden zu 
schützen, sodass es keine Rückströme gibt.

von J. S. (engineer) Benutzerseite


Lesenswert?

Ach ja, das gute alte "Charlyplexing". Das war mir immer schon etwas 
suspekt: Eine Mischung aus Analog und Digital, ein nicht unerheblicher 
Schaltungs- und Rechenaufwand, eigentlich wenig Leitungsersparnis, 
obendrein trotzdem noch unsicher und anfällig. Für LEDs mag es wohl 
taugen, aber zur sicheren und schnellen Eingabe eher nicht.  Die Töne zu 
erkennen, finde ich lustiger :-)

Beitrag "Schaltermatrix mit nur 2 Leitungen bedienen und abfragen"

Für das MUXen dieser Art gab es sogar auch mal ein Patent, wie im Wiki 
nachlesbar ist, allerdings nicht von "Charly" sondern den Herren 
Malinowski, Rinderle und Martin von der AEG, so der Eintrag stimmt. Es 
müsste somit eigentlich "MRM-Plexing" heißen...

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.