Forum: Mikrocontroller und Digitale Elektronik 8x8 Matrix mit Hallsensoren


von Andreas K. (stummorgel)


Lesenswert?

Hallo in die Runde!

Ich zerbreche mir den Kopf über eine Matrix.
Zum Abfragen von Tastenfeldern nutzt man ja gerne Matrizen, z.B. 8x8, 
alles nix Neues.
Die werden aber logischerweise mit Schaltern realisiert.
Nun würde ich statt Schaltern gerne Hallsensoren nutzen, Problem:
mit einer klassischen Diodenmatrix nicht machbar, da der Output des Hall 
zwar bei Erkennen eines Magneten auf GND zieht (Open Collector), aber ja 
nicht als klassischer Schalter fungiert.

Mein Ziel soll sein: Klassische 8x8 Matrix statt mit Schaltern über 
Hall.... mit wenigen zusätzlichen Bauteilen.

Es handelt sich um eine MIDI-Projekt. Rein Theoretisch könnte ich die 
einzelnen Eingabetasten als Einzeleingang (Scanrow) auf den MIDI-Encoder 
schicken, aber aus Platzgründen geht das nicht (54 Einzeltasten), daher 
muß es schon eine 8x8-Matrix sein.

Die Hallsensoren sollen dauerhaft auf Vss und GND sein, d.h., die 
Variante, bei der solche Sensoren in einer Matrix mittels Transistoren, 
Multiplexer etc. ein- und ausgeschaltet werden, fällt flach. Mir geht es 
darum, eine Version zu entwerfen, bei der der Ausgang des Halls quasi 
"schaltet". Transistor?

Besten Dank für Eure Anregungen!!

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Es gibt Analogschalter in 8*8-Matrix, aber das wäre hier etwas 
überdimensioniert
https://www.maximintegrated.com/en/products/analog/analog-switches-multiplexers/MAX4456.html

64 Optokoppler als Analogschalter sind auch etwas aufwendig. Vom 
gewöhnlichen CD4066 oder CD4016 sind immer noch 16 Stück nötig.

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


Lesenswert?

Andreas K. schrieb:
> Es handelt sich um eine MIDI-Projekt. Rein Theoretisch könnte ich die
> einzelnen Eingabetasten als Einzeleingang (Scanrow) auf den MIDI-Encoder
> schicken, aber aus Platzgründen geht das nicht (54 Einzeltasten), daher
> muß es schon eine 8x8-Matrix sein.
Der logische Kurzschluss erschließt sich mir nicht. Ich würde da der 
Einfachheit halber ein paar Schieberegister nehmen.

Andreas K. schrieb:
> Die Hallsensoren sollen dauerhaft auf Vss und GND sein, d.h., die
> Variante, bei der solche Sensoren in einer Matrix mittels Transistoren,
> Multiplexer etc. ein- und ausgeschaltet werden, fällt flach.
Würde das Parallelschalten prinzipiell fuktionieren? Halten die nicht 
versorgten Schalter am Ausgang still? Hast du das probiert?

: Bearbeitet durch Moderator
von Andreas K. (stummorgel)


Lesenswert?

Das Problem beim Multiplexen der Vss ist ja dann die Reaktionszeit. Das 
haben einige Freaks schon probiert, mit bescheidenen Ergebnissen. 
Teilweise hat der MIDI-Encoder Müll eingelesen.

Man müßte also schon den in der klassischen 8x8-Diodenmatrix vorhandenen 
Schalter mittels des Hall-Ausgangs simulieren.
Das wäre dann die ultimative Lösung, weil man dann eine Platine 
entwerfen kann, die anreihbar und zu jedem üblichen MIDI-Encoder paßt, 
der 8x8 kann, was bei den meisten so ist, die mit Klaviertasten o.ä. zu 
tun haben.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Ein Problem der Tastenmatrix ist das "Rollover", wenn kurzzeitig mehrere 
Tasten gedrückt sind. Hier hilft am einfachsten ein Prioritäts-Encoder 
74xx147/148
https://www.ti.com/lit/ds/symlink/cd74hc147.pdf
https://www.ti.com/lit/ds/symlink/sn74hc148.pdf

von Andreas K. (stummorgel)


Lesenswert?

Es wird natürlich so sein, daß bis zu 10 Tasten (zehn Finger) gedrückt 
sein können.
Bei klassischen 8x8-Scannern ist das auch kein Thema.
Die Firma FATAR, weltweit größter Klaviaturhersteller, löst das ja nicht 
mit Hallsensoren, sondern mit kleinen Gummihütchen, die dann auf ein 
Graphitbeet drücken, so wie beim Taschenrechner quasi.
Problem: die nutzen sich rapide ab.
Hallsensorlösungen gibt es, klar, aber nicht als Matrix, sondern nur als 
Einzelkontakt, was bei 64 Tasten ein 64pol. Kabel fordert mit 
entsprechender Anbindung an die Auswertelektronik. Gerade bei MIDI hat 
sich aber die 8x8 bewährt. Deswegen bin ich an einer Lösung für Hall 
dran.

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Eine Handvoll Schieberegister ala 74HC595 oder PCF8574.

Wenn es denn UNBEDINGT eine Matrix sein soll, könnte man 
PNP-Transistoren über den Open Collector Ausgang ansteuern und deren 
Emitter an die geschalteten Zeilen klemmen. Siehe Anhang. Könnte 
funktionieren. Wenn man welche mit integriertem Basiswiderstand nimmt 
("Digitaltransistor"), wird das auch alles recht klein.

von Falk B. (falk)


Lesenswert?

Christoph db1uq K. schrieb:
> Ein Problem der Tastenmatrix ist das "Rollover", wenn kurzzeitig mehrere
> Tasten gedrückt sind.

Den vermeidet man, wenn die Tasten Dioden in Reihe haben.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Die ICs, die sich "8*8" nennen sind leider nicht brauchbar, die werden 
digital angesteuert, nicht über einzelne Tasten (auch das von Maxim, das 
ich nannte).
https://www.mouser.de/Semiconductors/Communication-Networking-ICs/Analog-Digital-Crosspoint-ICs/_/N-50nch?P=1yyhncd

Ich habe ein aufrollbares "Klavier" von Pollin (35€ damals), da hat der 
Hersteller die Matrixdioden eingespart. Wenn ich mehr als drei Tasten 
gleichzeitig drücke gibt es noch mindestens einen vierten Misston gratis 
dazu.

von Toby P. (Gast)


Lesenswert?

Andreas K. schrieb:
> Mir geht es
> darum, eine Version zu entwerfen, bei der der Ausgang des Halls quasi
> "schaltet". Transistor?

Da brauchst du Schalter, ob Transistor Relais Opto .. ist vom Prinzip 
her egal. Deine Abfrage muss auch schnell genug sein um den "Hallimpuls" 
zu erwischen

Wenn es ein Keyboard ist will man noch wissen ob mehrere Tasten 
gleichzeitig gedrückt wurden, evtl später noch ne Anschlagdynamik usw 
...

Wird das jetzt weniger Aufwand als mit Schieberegistern?


Alternativ, die Ausgänge sind ja aktiv, kann man auch über analoge 
Messung per Spannungsteiler nachdenken. Dann muss der Analogwert für 
jede Taste verschieden sein und man nimmt ein paar A/D Wandler als 
Eingänge. Hat auch den Charme das keine Frequenzen durch das ganze 
laufen die andere Teile stören können

von MaWin (Gast)


Lesenswert?

Andreas K. schrieb:
> Besten Dank für Eure Anregungen

Jeder Kreuzungspunkt:
1
+5V+5V
2
 |     |
3
 |   10k  +---- Scanrow (die eine, die ausgewertet wurd, auf high)
4
 |    |   |
5
Hall--+--|< NPN
6
 |        |
7
 |        +----+--- Scanline (aktiver Hallsensor bleibt low)
8
 |              |
9
 |             10k common pull down
10
 |              |
11
GND          GND
Die Transistoren wirken als Dioden, also dürfen simultan mehrere 
Hallsensoren aktiv sein. So lange VCC nur 5V beträgt, ist UBE reverse 
kein Problem. Leider braucht man 64 10k pull ups weil die meisten 
Hgallsensoren nur open collector Ausgänge haben. Bei Halsensor mit 
push-pull können die entfallen, braucht auch keine Basisvorwiderstände.

von Andreas K. (stummorgel)


Angehängte Dateien:

Lesenswert?

Toby P. schrieb:
> Andreas K. schrieb:
>> Mir geht es
>> darum, eine Version zu entwerfen, bei der der Ausgang des Halls quasi
>> "schaltet". Transistor?
>
> Da brauchst du Schalter, ob Transistor Relais Opto .. ist vom Prinzip
> her egal. Deine Abfrage muss auch schnell genug sein um den "Hallimpuls"
> zu erwischen
>
> Wenn es ein Keyboard ist will man noch wissen ob mehrere Tasten
> gleichzeitig gedrückt wurden, evtl später noch ne Anschlagdynamik usw
> ...
>
> Wird das jetzt weniger Aufwand als mit Schieberegistern?
>
>
> Alternativ, die Ausgänge sind ja aktiv, kann man auch über analoge
> Messung per Spannungsteiler nachdenken. Dann muss der Analogwert für
> jede Taste verschieden sein und man nimmt ein paar A/D Wandler als
> Eingänge. Hat auch den Charme das keine Frequenzen durch das ganze
> laufen die andere Teile stören können

Die MIDI-Encoder, die ich im Blickfeld habe, fragen mit ca. 300Hz ab, 
das reicht locker für jede musikalische Anwendung.
Problem ist halt, wie schon beschrieben, daß die Encoder, die wirklich 
was taugen, mehrheitlich entweder mit 8x8 Diodenmatrix oder mit 64x1 
Scanrow (alle Taster liegen an einem GND-Bus und jeder hat einen Input 
am Encoder) fahren.
Diodenmatrix ist Standard im Musikbereich, Korg, Roland, Kawai, Yamaha, 
alles nutzen das. Teilweise sogar mit zwei oder drei Tastern pro Ton, 
damit man die Dynamik "berechnen" kann (laut, leise...). Hallsensoren 
gibt es nur im professionellen Orgelbau, da aber, wie gesagt, nicht für 
MIDI, sondern eben Ton für Ton auf Rechner und weiter zur 
Leistungsstufe.

Angehängt das übliche Diodenschema mit den Tastern. So läuft das in Mio 
Tastaturen.
Die Taster sollen eben jetzt durch Hall ersetzt werden, da die
1. ewig robust
2. prellfrei
3. besser justierbar sind
4. man nix mechanisch drücken muß, was wiederum zu Lasten des 
Druckpunktes der Tasten geht.

von Andreas K. (stummorgel)


Lesenswert?

MaWin schrieb:
> Andreas K. schrieb:
>> Besten Dank für Eure Anregungen
>
> Jeder Kreuzungspunkt:
>
>
1
> +5V+5V
2
>  |     |
3
>  |   10k  +---- Scanrow (die eine, die ausgewertet wurd, auf high)
4
>  |    |   |
5
> Hall--+--|< NPN
6
>  |        |
7
>  |        +----+--- Scanline (aktiver Hallsensor bleibt low)
8
>  |              |
9
>  |             10k common pull down
10
>  |              |
11
> GND          GND
12
>

Die Elektronik würde 5V+ erhalten, demnach wäre das machbar. Der 10k 
Pulldown ist notwendig? Hat die Auswerte-Elektronik nicht schon 
pull-downs drin?
Pull-Ups kein Problem, SMD.
Die Platine soll immer 8 Halls enthalten, modular erweiterbar über 
Flachstecker... da passen die paar Pull-Ups gut drauf.

von Wolfgang (Gast)


Lesenswert?

Andreas K. schrieb:
> Das Problem beim Multiplexen der Vss ist ja dann die Reaktionszeit.

Dann verrate doch mal, wie lang die Reaktionszeit sein darf, ohne dass 
es sich störend auswirkt?

> Das haben einige Freaks schon probiert, mit bescheidenen Ergebnissen.

Und du bist sicher, dass die kein Problem in ihrer Verschaltung und dem 
Auswertealgorithmus hatten?

von Andreas K. (stummorgel)


Lesenswert?

Wolfgang schrieb:
> Andreas K. schrieb:
>> Das Problem beim Multiplexen der Vss ist ja dann die Reaktionszeit.
>
> Dann verrate doch mal, wie lang die Reaktionszeit sein darf, ohne dass
> es sich störend auswirkt?

ab 10ms wird es kritisch, je nachdem, was Du spielst....

>
>> Das haben einige Freaks schon probiert, mit bescheidenen Ergebnissen.
>
> Und du bist sicher, dass die kein Problem in ihrer Verschaltung und dem
> Auswertealgorithmus hatten?

300Hz sollten es schon sein, ist halt Standard bei MIDI... mir geht es 
ja darum, etwas zu entwerfen, was mit bereits erhältlichen Teilen 
kompatibel ist.

Das Problem bei anderen war offenbar, daß die Hallsensoren beim 
Zuschalten offenbar undefinierte Zustände angenommen hatten und just in 
dem Moment eine Abfrage generiert wurde, die dann ein fehlerhaftes 
Ergebnis lieferte.

Auf jeden Fall ist diese Art der Hallverschaltung (Vss über Transistor 
etc. zuschalten) nicht bei instrumentalen Sachen anwendbar, wurde 
probiert, unbefriedigend. Deswegen hängt man ja immer noch auf 
Graphit-Gummi-Kontakten fest oder eben auf Hall mit Einzelton-Einlesung.

Ich weiß, keine befriedigende Antwort auf Deine Frage, aber alle 
MIDI-Hersteller und Lieferanten schütteln den Kopf, wenn ich nach Hall 
und Matrix frage. Selbst hochpreisige im Orgelbau-Zubehör..... da reden 
wir dann mal über 5000 für die Klaviatur, und 15000 für die Elektronik, 
bei 10 Registern und knapp 700 Pfeifen.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Andreas K. schrieb:
> bei 10 Registern und knapp 700 Pfeifen.

Hier im Forum gibt es DEUTLICH mehr davon ;-)

von Matritze (Gast)


Lesenswert?

Schau mal ob Du ne alte DDR Tastatur bekommst. ich weis nicht mehr 
welche es war, da war jede Taste mit Hall IC gebaut. Vlt. schau ich mal 
nach, ich müsste sogar noch welche von den Tasten haben.

von MaWin (Gast)


Lesenswert?

Andreas K. schrieb:
> Der 10k Pulldown ist notwendig? Hat die Auswerte-Elektronik nicht schon
> pull-downs drin?

Wenn die welche drin hat, sind die verzichtbar.

von Toby P. (Gast)


Lesenswert?

Alternativ das ganze per Mikrocontroller und SPI lösen. Sind dann ja nur 
64 Bit durchzuschieben. Du kannst z.B jeweils 8 Tasten an einen Klemmen. 
Da die Hall Tasten ja aktiv sind geht das empfangen auch per Interrupts.

Das lässt sich auch beliebig in Module aufteilen.

von Wolfgang (Gast)


Lesenswert?

Andreas K. schrieb:
> Wolfgang schrieb:
>> Andreas K. schrieb:
>>> Das Problem beim Multiplexen der Vss ist ja dann die Reaktionszeit.
>>
>> Dann verrate doch mal, wie lang die Reaktionszeit sein darf, ohne dass
>> es sich störend auswirkt?
>
> ab 10ms wird es kritisch, je nachdem, was Du spielst....

Wenn man den Multiplexer nicht ausgerechnet mit Relais aufbaut, sind 
10ms doch überhaupt kein Problem. Das wären gerade 100 Scans pro 
Sekunde, d.h. bei einer 8x8-Matrix hätte man mehr als 1ms pro Spalte ;-)

von Andreas K. (stummorgel)


Angehängte Dateien:

Lesenswert?

Ha, wer suchet, der findet!

Hier hat jemand ein Board zusammengebruzzelt, Hallsensoren, zur Abfrage 
von Pedaltastensignalen... wenn ich richtig sehe: 74HCT4051....... 
Multiplexer

: Bearbeitet durch User
von hinz (Gast)


Lesenswert?

Christoph db1uq K. schrieb:
> 64 Optokoppler als Analogschalter sind auch etwas aufwendig.

Sehe ich nicht so, und auch der Preis ist klein.

von Andreas K. (stummorgel)


Lesenswert?

unterm Strich brauchen wir ja nur die beiden Widerstände 0 Ohm und 
unendlich zu simulieren, also Schalter "ZU" oder "AUF".
Das sollte doch wohl mit nem Transistor "in etwa" möglich sein.

von Andreas K. (stummorgel)


Lesenswert?

Falk B. schrieb:
> Eine Handvoll Schieberegister ala 74HC595 oder PCF8574.
>
> Wenn es denn UNBEDINGT eine Matrix sein soll, könnte man
> PNP-Transistoren über den Open Collector Ausgang ansteuern und deren
> Emitter an die geschalteten Zeilen klemmen. Siehe Anhang. Könnte
> funktionieren. Wenn man welche mit integriertem Basiswiderstand nimmt
> ("Digitaltransistor"), wird das auch alles recht klein.

z.B. BCR185 SMD?

von Larry (Gast)


Lesenswert?

Wenn man Anschlagdynamik will, braucht man das ganze zweimal.

128 Hallsensoren lassen sich leicht mit 16 165er Schieberegistern
einlesen. Man hat ueberhaupt keine Probleme mit Roll-over, vielen
gleichzeitig gedrueckten Tasten und dem Timing.
Die Schieberegister kann mit man direkt per SPI in den Controller
einlesen.

Bautechnischer Vorteil: Man muss keine 128 Strippen von den
Hallsensoren zu einer Auswerteelektronik fuehren, sondern
nur zwei bzw 3. Takt, Daten-In und Daten-Out.
Und kann jeweils einer Gruppe von Tasten eine Baugruppe
mit Schieberegistern zuordnen und dann per SPI kaskadieren.

Kommerzielle Instrumente haben Platinen von Manualgroesse
verbaut. Das will man sich selber vielleicht nicht antun.
Schieberegister erlauben, den gesamten Aufbeu in handliche
Teile zu zerlegen.

Alles andere ist m.E. voellig sinnfrei.

von Larry (Gast)


Lesenswert?

Aus den Daten kann man natuerlich auch selbst dann MIDI-Befehle
erzeugen. Note-On, Note-Off und aus der Geschwindigkeit des
Anschlags die Velocity.
Kein Grund fuer einen weiteren "komischen" Matrixdekoder.

von Tilo R. (joey5337) Benutzerseite


Lesenswert?

Larry schrieb:
> Bautechnischer Vorteil: Man muss keine 128 Strippen von den
> Hallsensoren zu einer Auswerteelektronik fuehren, sondern
> nur zwei bzw 3. Takt, Daten-In und Daten-Out.
> Und kann jeweils einer Gruppe von Tasten eine Baugruppe
> mit Schieberegistern zuordnen und dann per SPI kaskadieren.

und schnell genug wäre es auch.
10ms / 54 Tasten = 185us, das entspricht einem Mindest-Bittakt von nur 
5,4 kHz.

von Larry (Gast)


Lesenswert?

> 5,4 kHz

Wenn man bei der Velocity einigermassen exakte Werte
haben will, muss man da schon einen Zahn zulegen.
Sonst hat man da nur einen Hausnummerngenerator.
Aber selbst 1.28 MHz ist ja fuer HCMOS kein Problem.
Dann hat man alle 100 us eine Abfrage jedes Ein- und
Aus-Hallsensors.
Oder man teilt das auf 2 SPI-Kanaele auf.

von Tilo R. (joey5337) Benutzerseite


Lesenswert?

@Larry:
natürlich. Die Rechnung war nur als Überschlag gedacht um zu zeigen, 
dass die Geschwindigkeit kein Problem ist und man um Größenordnungen von 
irgendwelchen Limits entfernt ist.

von Der Zahn der Zeit (Gast)


Lesenswert?

Auf die Schnelle habe ich nicht gesehen, ob folgender Vorschlag schon 
mal kam:

Jedem Hall-Sensor wird ein ein 1-Gatter Analogschalter (z. B. 74HCT1G66) 
und eine Diode zugeordnet. Platz für die beiden Elemente in 
SOT23-Gehäusen, oder auch viel, viel kleiner, sollte sein. Der 
Analogschalter wirkt wie ein potentialfreier Kontakt, so dass die 
Schaltung wieder wie in 
Beitrag "Re: 8x8 Matrix mit Hallsensoren" aussieht. Der 
Hall-Sensor müsste natürlich einen digitalen Ausgang mit aktiv high 
haben.

Prinzipiell würde es statt der '66 auch ein kleiner MOS-FET tun, wenn 
seine Schaltschwelle (und sein Gehäuse sowie sein Preis) klein genug 
ist. Oder 4-fach eine 'HCT4066.

von Route_66 H. (route_66)


Lesenswert?

Matritze schrieb:
> Schau mal ob Du ne alte DDR Tastatur bekommst. ich weis nicht mehr
> welche es war, da war jede Taste mit Hall IC gebaut.

Die Taster da drin hießen TSH19. Jede Taste hatte 4 Anschlüsse; 5P, GND, 
Enable und Out. Es konnte mit Enable und Out also ganz leicht eine 
Matrix aufgebaut werden. Der Hall-IC war ein B461 (TTL-Pegel) oder B462 
(CMOS).

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

So eine ASCII-Tastatur mit 4-oder 5-poligen Siemens Hall-ICs habe ich 
auch noch. Je nach Tastenfunktion eines mit Dauerausgang oder kurzem 
Impuls. Unter jeder Tastenkappe ein kleiner Permanentmagnet. Im 
Vergleich zu heutigen Tastaturen ist die ziemlich hoch.
Ich hatte die an meinen Apple-II-Nachbauten hängen.

von Axel S. (a-za-z0-9)


Lesenswert?

Andreas K. schrieb:
> Zum Abfragen von Tastenfeldern nutzt man ja gerne Matrizen, z.B. 8x8,
> alles nix Neues.
> Die werden aber logischerweise mit Schaltern realisiert.
> Nun würde ich statt Schaltern gerne Hallsensoren nutzen, Problem:

Kein Problem. Du mußt nur passende Hallsensoren verwenden.

Die Tätärä hat Tastaturen auf dieser Basis gebaut, mit dem B461 
Hallsensor. Der hat 4 Pins: GND, Vcc, Enable (l-aktiv) und Out (open 
collector). Damit konnte man direkt eine Matrix aufbauen. 
Enable-Eingänge als Zeilen und open-collector Ausgänge als Spalten. Der 
Äquivalenztyp zum B461 war der SAS261 von Siemens. Diese historischen 
Typen wirst du nicht mehr bekommen (bzw. nur als Restposten aus 
unzuverlässigen Quellen). Aber neuere Typen dieser Art wird es ja wohl 
geben.

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

nanu, da werde ich zitiert:
https://telcontar.net/KBK/Siemens/Hall_ICs#docs
von hier:
Beitrag "Re: Hall Sensor SAS 221S2 (Siemens)"

mit dem genannten SAS-261

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.