Spieltisch-Elektronik: Wissen Allgemein

15.07.2023 00:02 (zuletzt bearbeitet: 15.07.2023 10:15)
avatar  Montre
#1
avatar

Bisher haben wir ja die Fäden zur Arduino-Programmierung und zur RaspberryPi-Programmierung. Soweit, so gut.

In diesem Faden möchte ich Wissen sammeln, der sich mit der benötigten Elektronik und dessen Verschaltung beschäftigt, also nicht in erster Linie Arduino- oder RaspPi-Programmierung.

Steht mal eine Schaltung, dann kann man natürlich den Arduino- oder RaspPi-Zugriff hier darstellen, ohne das man in die oben genannten Fäden ausweichen muss.

Was mich gerade antreibt, ist die benötigte Elektronik für ein Selbstbau-Manual - im ersten Schritt ein Prototyp mit ein paar Tasten, dessen Aktivitäten elektronisch erfasst und ausgewertet werden müssen, damit ein Sampler beim betätigen der Tasten die entsprechenden Pfeifen spielen kann.

Vorab:
Elektro-technisch bin ich ein Laie und man möge mich bitte korrigieren, wenn ich mit irgendwelchen Aussagen Unsinn verzapfe. Ich suche mir das Wissen im Netz zusammen, wobei ich aufgrund mangelnder Kenntnisse vielleicht falsche Schlüsse ziehe und es nicht bemerke.
Also: Kritik bei falschen Aussagen oder Verbesserungsvorschläge bei schlechtem Schaltungsdesign sind unbedingt erwünscht!

Die Kosten habe ich auch immer im Blick, also kommt eine fertige Platine für ein paar hundert Euro nicht ohne Weiteres nicht in Frage. Wenn es aber sowas gibt und man statt in ein paar Wochen in zwei Tagen fertig wäre, dann sollte man sich das mal anschauen. Ginos Midi-Hardware oder Pausch-e haben da ggf. was im Programm, das aber meistens für Fatar-Manuale praktisch ist, aber nicht für mein Projekt, wo jede Taste im Selbstbau entsteht (ich will es so versuchen; gebrauchte Klaviaturen vom Orgelbauer sind gerade kein Thema für mich).

In meinem Fall habe ich vor, das Hall-Sensoren Tastenbewegungen registrieren (z.B. mit dem 4905TL). Pro Manual fallen somit 61 Sensoren an, wofür ich 61 Eingänge benötige. Beim recherchieren nach passender Hardware trifft man auf das Schieberegister 74HC595, womit sich 8x8 Dioden-Matrix-Schaltungen realisieren lassen. Ich sehe da mit meinem Wissen keine Lösung für mich.

Dann gibt es den IO-Expander sx1 509 dem, der eine eingebaute Keypad Engine hat. Auftretendes Ghosting bei mehreren gedrückten Tasten kann mit Dioden verhindert werden => 8x8-Dioden-Matrix.

Interessanter finde ich den MCP23017 / MCP23S17, bei dem man 16 Pins als Ein- und Ausgang konfigurieren kann. Der Unterschied zwischen den beiden Chips ist, das der MCP23017 über den I2C programmiert wird, und der MCP23S17 über SPI, der höhere Taktraten unterstützt (max. 10 MHz).

Beim MCP23017 muss man aufpassen - ab Rev D hat der auf Port A und B einen Eingang weniger. GPA7 und GPB7 müssen als Ausgang deklariert werden. Dafür gibt es in der Community nur wenig Verständnis. Den MCP23S17 betrifft das wohl nicht, damit steht fest, das der MCP23S17 die erste Wahl ist, es sei denn, man möchte I2C programmieren, dann muss man sich Chips suchen, die vor 2022 hergestellt wurden.

Hier gibt es eine Lib für die genannten Chips. Die Webseite dazu vom Autor der Lib.

Mit den Pins A0, A1, A2 (das entspricht 3 Bits) wird eine eindeutige Adresse festgelegt, sodass sich max. 2^3 = 8 MCP23X17 kaskadieren lassen.
Mir ist aufgrund der Kaskadierung noch nicht ganz klar, ob ich die 16 GPIO komplett als Eingänge nutzen kann. In dem Fall würde ich 4 MCP23S17 kaskadieren (=64 Eingänge) und diese über einen RaspPi Pico abfragen. Alternativ 3 MCP23S17 (48 Eingänge) und 13 IO's des Controllers (RaspPi-Pico oder Arduino Nano Every).


 Antworten

 Beitrag melden
15.07.2023 15:08
#2
So

Ich werde in meinem Blog noch näher auf meine eigene Lösung und deren Abwandlung eingehen.

Bzgl. Schieberegister. Das 74HC595 Schieberegister ist ein SIPO (Serial In, Parallel Out). Das benutzt du, wenn du z.B. viele LEDs zum leuchten bringen willst, aber weniger Ausgangspins z.B. an einem Arduino belegen willst/kannst, als du LEDs hast. Diese Register kann man auf Kosten der Performance kaskadieren, was je nach Anwendungszweck zu vernachlässigen ist. Worauf man hier achten muss ist die Last an Strom, die man auf der anderen Seite dran hängt. Der ist gemäß jeweiliger Spezifikation beschränkt, sowohl pro Ausgangs-Pin, als auch in Summe. Die die maximal erlaubte Summe ist gern niedriger, als die Summe der jeweiligen Pin-Maximums. Das kann man dann wiederum umgehen, in dem man mit dem 595er Ausgang einen Transistor schaltet, der eine Last mit deutlich höheren Strömen gemäß der Spezifikation des jeweiligen Transistors versorgen kann.

Das was du @Montre suchst ist das 74HC165, ein PISO. Das hat 8 Eingänge und schickt die An/Aus Informationen seriell an den Arduino oder welchen Controller auch immer. Dieser ist auch kaskadierbar. Ich verwende ihn bislang nur für Registertaster, bislang in 2er-Kaskadierung. Aktuell erstelle ich für diverse Pistons an den Manualen eine 4er Kaskadierung. Wie das Ding reagiert, wenn man darüber Manual-Impulse einsammeln und seriell weiterleiten will, weiß ich nicht. Käme mal auf einen Test an.

Die anderen Chips, die du da erwähnt hast, kenne ich nicht.

Hast du denn den Transistor-Vorschlag für deine Hall-Sensoren und eine Matrix schon verworfen? Dann kommst du vlt. wieder ohne solche Mätzchen aus.

Ansonsten gibt es auf der Arduino-Seite mit dem Mega und Due zwei verschiedene Controller, die min. 64 digitale Eingänge haben (analoge sind als digitale nutzbar). Du kannst also auch komplett parallel bleiben bis zum Controller. Du musst halt nur pro Manual einen Controller einplanen. Aber bei der (auch finanziellen) Größe, die dein Projekt hat, fallen 40€ für einen "richtigen" Arduino auch nicht ins Gewicht.


 Antworten

 Beitrag melden
16.07.2023 00:28 (zuletzt bearbeitet: 16.07.2023 00:46)
avatar  Montre
#3
avatar

Ja, ich habe mittlerweile auch herausgefunden, das der 74HC595 dazu geeignet ist, die Anzahl der Ausgänge zu vergrößern. In der Tat wäre der 74HC165 die richtige Lösung, der 8 Eingänge hat. Das der Due so viele IO's hat, habe ich bisher nicht gesehen. Die MCP23X17 sind ziemlich bekannte und beliebte Bausteine. Ich werde mir mal ein paar Sachen bestellen. Eine Abisolierzange wird jeden falls dabei sein. Danke für den Tipp.

Zitat von Brassmann im Beitrag #2
Hast du denn den Transistor-Vorschlag für deine Hall-Sensoren und eine Matrix schon verworfen?

Nein, aber ich habe keine Ahnung was der bewirkt und wie das verschaltet werden muss. Ich bin ohne weitere Erklärungen dazu leider überfordert.


 Antworten

 Beitrag melden
16.07.2023 13:41
#4
So

Wer fragt, dem wird geholfen ;-)

Stark vereinfacht: ein Transistor ist ein Schalter, der mit einem kleinen Strom betätigt wird und dann einen Stromkreis schließt, über den deutlich größere Ströme und Spannungen fließen können. Daher sind davon unzählige in jeder Elektronik und auch jedem Handy verbaut. Du kannst mit einem Controller die Schalter per Software betätigen. Die Spannung und der Strombedarf des Verbrauchers kann ebenfalls vom Arduino kommen, kann aber auch extern eingespeist werden. Das macht die Dinger für eine Heimorgel interessant, z.B. um die Beleuchtung von Registertastern zu steuern. Ein paar wenige LEDs kannst du direkt an den Ausgangspin hängen und leuchten lassen. Doch das findet schnell seine Grenzen, da immer 8 Pins (was die Stromlast angeht) zusammengefasst sind. Zieht jeder Pin 20 mA ist das zu viel, ich meine das dürfen in Summe höchsten 100mA für die 8 Pins sein. Ebenfalls ist der Arduino je nach Spannungsversorgung z.B. auf 500 mA beschränkt, die vom USB Anschluss kommen. Ein bisschen davon braucht der Arduino auch für sich, sodass nicht viel übrig bleiben würde.

Bei 89 Tastern, wie bei mir, plus beleuchtete Pistons könnte man also maximal ca. 100 gleichzeitig leuchtende LEDs haben. Das mit 20 mA pro Stück (beim Einschalten sogar 30) ergibt 2 Ampere. Mit Mikrocontrollern unmöglich, mit Transistoren und einem externen Netzteil kein Problem.

Bei deinem Anwendungsfall wären die 5V vom Hall Sensor die Spannung, die den Transistor schaltet. Dadurch lässt er Spannung in der Matrix fließen, so als hättest du einen mechanischen Schalter (z.B. einen Tastenkontakt) betätigt.

Wichtig ist, dass du mit einem Vorwiderstand arbeitest, sodass die Spannung an der Basis (mittleres Beinchen) des Transistors nur noch ca. 0,8V beträgt (ab 0,7 schaltet der Transistor). Bei 5V müsste das mit einem 1 kOhm Widerstand der Fall sein.

Hier zwei Links mit unterschiedlich langen Erklärungen dazu.
https://www.conrad.de/de/ratgeber/handwe...eile/bc547.html
https://funduino.de/wp-content/uploads/2...or_schalten.pdf


Ich würde auch empfehlen, dass du dir einen Starterkoffer von Arduino oder Raspi besorgst. Da ist ein Steckbrett drin, ein Controller, etliche Verbindungskabel und jede Menge Kleinkram (Widerstände, LEDs, Transistoren, Potis, etc. pp). Da kannst du dich sehr gut mit der Materie vertraut machen und herumprobieren.

Starter Set von Funduino: https://funduinoshop.com/funduino-lernse...number=KIT-18M1


Im Funduino Shop habe ich schon oft eingekauft. Da kriegt man jede Menge Kleinkram zu guten Preisen, teilweise günstiger als Reichelt. Ich habe je nach dem was ich in welcher Menge brauchte entweder bei Reichelt, Funduino, AZ Delivery oder ebay bestellt.


 Antworten

 Beitrag melden
17.07.2023 14:01
#5
avatar

Achte nur darauf bei solchen Dingen niemals einen Fehler in der Schaltung zu haben. Leitest du aus versehen einen Strom fiktiv 12 Volt für Beleuchtung auf einen deiner Pins, dann war es das mit deinem Controller, vermutlich auch mit allem anderen daran :) Also lieber zehnmal kontrollieren und messen. Es gibt aber für so was auch spezielle Entwicklerboards die einen Schutz haben. Eine Diode vor die Pins ist aber auch eine gute Idee, so kann kein Strom in die falsche Richtung fließen.

Zitat von Montre im Beitrag #1
im ersten Schritt ein Prototyp mit ein paar Tasten, dessen Aktivitäten elektronisch erfasst und ausgewertet werden müssen,

Das ist der richtige Weg. Zuerst mal einen Schalter versuchen abzufragen, dann einen Regler und dann mal eine LED ansteuern. Dann mit dem Regler z.B die Helligkeit der LED steuern und so weiter. Eben Schritt für Schritt.

Betreffend Selbstbau könntest du einmal bei den Kleinanzeigen schauen, dort werden in deiner Region bestimmt auch alte Vintage Orgeln angeboten für geschenkt oder einem symbolischen Preis. Die könntest du als Basis nehmen. Aus meiner Wersi Orgel habe ich auch das Gehäuse, Manuale und eine Menge Schalter und Wippen übernommen. Wenn du Tasten suchst und Holz möchtest, dann könntest du vielleicht ein altes Harmonium bei den Kleinanzeigen nutzen. Die Manuale sitzen auf einem Block denn du leicht rausnehmen kannst um die Tasten zu midifizieren. Registerzüge hättest du auch gleich dabei und ein Gehäuse.


 Antworten

 Beitrag melden
17.07.2023 18:15
#6
So

Ich habe mit diesem Tutorial hier angefangen und gute Erfahrungen damit gemacht. Damit kommt man in die Grundmaterie Arduino ganz gut rein. Den Rest googelt man sich zusammen. Das offizielle Arduino Forum ist auch eine hilfreiche Adresse.

https://funduino.de/vorwort

Nur falls Arduino überhaupt noch eine Rolle spielt...


 Antworten

 Beitrag melden
17.07.2023 19:39
#7
avatar

Zitat von Brassmann im Beitrag #6
Nur falls Arduino überhaupt noch eine Rolle spielt...

Die Logik lässt sich ja übertragen und im Zweifel kann er ja auch mit dem Arduino Code auf dem Pi Pico programmieren.


 Antworten

 Beitrag melden
21.07.2023 00:21
avatar  Montre
#8
avatar

Eine Frage zu Platinen - bei Reichelt gibt es Platinen aus Hartpapier, 1,5mm dick. Taugt das was? Nimmt das nicht leicht Feuchtigkeit auf und verbiegt sich dann?


 Antworten

 Beitrag melden
21.07.2023 01:10
#9
avatar

Das ist kein Problem, sofern du keine Platinen willst, die du in ein Aquarium hängst 😄

Ich würde dir aber zu dieser Variante raten, da du so wirklich Schaltungen aufbauen kannst https://www.reichelt.de/punkt-streifenra...ct=pos_14&nbc=1


 Antworten

 Beitrag melden
21.07.2023 21:13 (zuletzt bearbeitet: 21.07.2023 21:14)
avatar  Montre
#10
avatar

Vielen Dank für den Tipp. Von Punkt/Streifen- und Streifenplatinen habe ich bisher noch nichts gehört. Bei den Streifenraster-Platinen ist man vermutlich nur mit dem Trennen der Leitbahnen beschäftigt (wenn man das so in den Elektronik-Foren liest).

Kurz vor Urlaubsende (Urlaub kommt noch) steht dann langsam mal eine Elektronik-Bauteile-Bestellung an. Ich freue mich schon drauf. Ich werde zum Basteln und Ausprobieren die bereits erwähnten Chips (74HC595, 74HC165, MCP23S17) und Hall-Sensoren (TLE 4905L) bestellen.


 Antworten

 Beitrag melden
23.07.2023 21:50
#11
So

Ich bin sehr auf deine Ergebnisse gespannt! Ich will nämlich mein Pedal auch nochmal neu midifizieren und hatte dafür bislang auch Hallsensoren ins Auge gefasst. Die gibt es ja in digitaler Ausführung, ideal für Arduino.


 Antworten

 Beitrag melden
24.07.2023 11:54 (zuletzt bearbeitet: 24.07.2023 12:32)
avatar  Montre
#12
avatar

Der 4905L ist digital. Den will ich ausprobieren, weil ihn jemand in seinem Orgelprojekt verwendet hat (und nicht, weil ich davon Ahnung habe). Derjenige ist leider in keinem Forum mehr aktiv, so dass man ihn dazu nicht befragen kann (Olaf Schmidt aus Minden).

Kleiner Exkurs zu seinen Arbeiten
Er hat auch eine tolle Druckpunkt-Simulation gebaut, die bei aktiven Koppeln auch den Druckpunkt gekoppelter Manuale berücksichtigt. Über einen Schrittmotor aus dem Heizungsbereich kann er die unterschiedlichen Kräfte der Magnete stabil halten. Er hatte dazu auch ein Patent angemeldet (Korrektur - das verlinkte Patent erwähnt sein Patent). Lt. seinen Aussagen hat er die Technik allen führenden Klaviatur-Herstellern vorgestellt (u.a. UHT), die aber kein Interesse hatten.

Zurück zum Thema
In dem Datenblatt von Infineon sind auch andere Versionen aufgeführt (TLE4935L, TLE4945L, TLE4945-2L).

Seite 6: "Absolute Maximum Ratings"
Seite 7 "AC/DC Characteristics"
ab Seite 8 sind "Magnetic Characteristics" aufgeführt, wo man sieht, dass der Typ
- TLE4905 unipolar
- TLE4935 bipolar latch
- TLE4945 bipolar switch
- TLE4945-2 bipolar switch
ist.

Was davon für unsere Zwecke am besten geeignet ist, kann ich absolut nicht beurteilen. Null Ahnung. Was für Probleme da auf mich zu kommen, weiß ich auch noch nicht ;-)


 Antworten

 Beitrag melden
24.07.2023 12:55
#13
So

Unipolar bedeutet, dass der Sensor nur auf eine Polarität eines Magneten reagiert. Also Magnet richtigherum verwenden. Bipolar erlaubt beide Pole.

Latch bedeutet einrasten. Das bedeutet der Sensor geht auf "an" wenn man einen Magnet dran und wieder wegnimmt und geht beim nächsten mal dran und wieder weg aus. Für Orgelspiel eher doof, wäre eher was für Taster. Wobei man das in der HW Software auch gut abfangen kann, dass da zweimal NoteOn/Off kommt.

Für Manuale brauchst du also non-latching oder mutmaßlich switch. Ich würde bipolar, digital, non-latching nehmen.

Für mich die interessantere Frage: welchen Magnet verwendet man? Wie groß, welche Stärke, etc.


 Antworten

 Beitrag melden
24.07.2023 15:23 (zuletzt bearbeitet: 24.07.2023 15:28)
avatar  Montre
#14
avatar

Neodym-Magnete. FAQ dazu.

Da würde ich zu handhabbaren Größen tendieren. Rund lässt sich gut bohren/vertiefen. 4mm x 1,5mm (?)


 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!