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?
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.
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.
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?
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...
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.
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.
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ß!"
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
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...
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.
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...
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.
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?
"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.
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....
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.
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...
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
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.
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
:-)
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 ...
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.
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.
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.
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...
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.
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.
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...
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.
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?
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?
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.
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.
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.
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...
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?
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.
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...
руки верх! 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.
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.
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...
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.
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.
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 ;-)
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%.
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"
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 :-)
Das liest sich wirklich ähnlich einem Frequenzmultiplexverfahren, siehe
hier:
https://www.vs.inf.ethz.ch/edu/SS2001/MC/slides/01-grundlagen.pdfAndi 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.
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!
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
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
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.
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.
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...