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ß!"
:
Bearbeitet durch Moderator
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...
:
Bearbeitet durch Moderator
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...
:
Bearbeitet durch Moderator
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...
Lothar M. schrieb: > Das sind etwa 100Hz. Warum 10000 mal schneller abtasten? Der TO will doch mit 1kHz und nicht mit 1MHz abtasten...
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
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...
:
Bearbeitet durch Moderator
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...
:
Bearbeitet durch Moderator
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...
>> Ich mach auch den Lothar...
Ich darf das. Ich heisse tatsächlich auch so.
руки верх! 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.
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.
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
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.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.
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 :-)
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...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.