Forum: Mikrocontroller und Digitale Elektronik Hammond B3 Clone mit ATMega


von Peter R. (2meter_peter)



Lesenswert?

Moin Zusammen,

ich baue derzeit eine Orgel. Es soll eine moderne Nachbildung einer 
Hammond B3 werden. Eine gut erhalten B3 geht derzeit für 5-10kEuro über 
den Tisch, abhängig vom Erhaltungszustand und dem mitgelieferten Leslie 
Cabinet. Das passt nicht so ganz ins Budget, also selbst was bauen.

Eine gute Basis ist imho der Hammond XM1 Midi Expander. Der liefert für 
3 Manuale (Upper, Lower und Pedal) ziemlich amtliche Sounds. Angesteuert 
wir das Teil über 3 Midi Kanäle, je Manual 1 Kanal. So ein Teil hab ich 
kürzlich günstig bekommen weil das Display defekt war. Das Display ist 
schon getauscht, die Kiste funzt.

Dazu gibt es von Hammond einen Controller der einen Satz Zugriegel 
(Drawbars) hat und mit dem man mit ein wenig tastendrücken jeweils den 
Sound der 3 Manuale einstellen kann. Das Teil habe ich nicht und ich hab 
auch nicht vor es anzuschaffen weil es mir zu umständlich zu bedienen 
ist.

Kleiner Exkurs in Sachen Klangsynthese bei Drawbar-Orgeln:
In alten Hammond Orgeln sitzt ein riesen Kasten mit "Tone-Wheels". Ein 
Motor treibt über unterscheidliche Übersetzungsgetriebe eine Reihe von 
kleinen Rädern an die ähnlich aussehen wie Sterne. Die Zacken der Sterne 
laufen vor einer vormagnetisierten Spule her und erzeugen durch den 
Wechsel des magnetischen Flusses eine sinusähnliche Wechselspannung. 
Damit werden alle Töne erzeugt die es in der Orgel gibt.
Jede Keyboard-Taste hat mehrere Schließerkontakte über die die 
jeweiligen Töne auf eine Sammelschiene geschaltet werden. Auf diese 
Weise werden zum eigentliche Grundton diverse Ober- und Untertöne dazu 
gemischt. Das Mischungsverhältnis (..oder der Ober- und Untertonanteil) 
wird dann schließlich je Sammelschiene über Potis geregelt. Diese Potis 
sind die Drawbars. Man kann also das Spektrum des Tons den man spielen 
will über diese Drawbars einstellen.

Die B3 hat je Manual 9 solcher Drawbars und für das Pedal noch 2 
weitere. Das ist auch der Grund weswegen ich den Controller nicht will, 
der hat nämlich für alles nur einen Satz Drawbars. Um den Sound schnell 
wechseln zu können gibt es sogar umschaltbar 2 Stätze Drawbars je 
Manual. 10 weitere Sounds mit fest verdrahteten Einstellungen sind 
ebenfalls schaltbar.

Mein Projekt:
2 Manuale je 61 Tasten und ein Pedal mit 25 Tasten (alle vorhanden) 
steuern über einen Midi Controller (Projekt) den Midi-Expander 
(vorhanden) an. Die Stellung der Drawbars (muss ich noch bauen) werden 
über Linearfader abgefragt und ebenfalls über einen Midi Controller 
(Projekt) an den Expander gesendet. Ändert sich der Wert des Faders 
schickt der Controller neue Werte an den Expander.
Ich möchte in meiner Orgel Presets verwalten (Projekt). In jedem Preset 
ist unter Anderem die Stellung der Drawbars für einen Sound gespeichert. 
Wird ein Preset aus dem Speicher abgerufen sendet der Controller für 
alle (20) Drawbars die entsprechenden Werte an den Expander. Leider 
sieht man jedoch nicht welche Werte ma da gerade aufgerufen hat. Die 
Stellung der Drawbars ist aber ein wichtiges Mittel für den Spieler um 
den Sound zu formen. Außerdem gibt es ein Problem beim Einstellen eines 
Faders: Wenn man die Stellung verändert und der Controller den neuen 
Wert sendet kann ein Sprung entstehen (vom eingestellten auf den neuen 
Wert), das klingt unschön. Zur Abhilfe hab ich mir folgendes überlegt: 
Wenn der Controller die neuen Werte an den Expander sendet werden in der 
Orgel die Drawbars machanisch auf den entsprechenden Wert gestellt 
(Projket!). Dazu benutze ich die Motorfader von Alps 
http://www.reichelt.de/Schiebepotis/RS60N11M9-LIN5K/3/index.html?&ACTION=3&LA=5&ARTICLE=73883&GROUPID=3713&artnr=RS60N11M9-LIN5K

Mein ganzes Bauvorhaben besteht, vom mechanischen Aufbau mal abgesehen, 
also aus folgenden Teilen:
- Keyboard Midi Controller
- Drawbar Midi Controller
- Preset Speicher
- Ansteuerung der Motorfader

Im Moment bin ich noch damit beschäftigt eine Roh-Version des Gehäuses 
zu bauen. Wenn technisch alles läuft werde ich das noch mal bauen, dann 
aber mit allen notwendigen Änderungen und in schön.

Irgendwann in den nächsten 2-3 Wochen werde ich anfangen einem Atmega328 
ein wenig Midi beizubringen und damit meine ersten Gehversuche zu 
starten. Ein paar Midi relevante Beiträge hab ich hier schon gelesen. 
Ich glaube das ich das einigermaßen flott hinbekomme. Auch zum Thema 
Daten auf irgendwelchen Karten zu speichern hab ich auch schon was 
gesehen, allerdings war mir die Lösung für mein damaliges Projekt 
(Datenlogger im Modellflugzeug) zu aufwändig. Hier werde ich also noch 
was tun müssen. Worauf ich mich schon richtig freue ist die Sache mit 
den Motorfadern, da ist bestimmt noch ne Menge Kreativität gefragt :-)

Soweit meine Vorstellung, ich werde euch aufm laufenden halten. Für gute 
Ideen bin ich immer zu haben.

von R. W. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Peter

wow - sehr viel Text sehr viele Infos und ein schönes Projekt oben 
drauf.

Welche Claviaturen verwendest du? Hersteller?

Die Motorfader willst du dann auch für Preset's nutzen?

Der Hammond XM1 Midi Expander hört sich gut an,
darf ich fragen was du bezahlt hast?
Um den geht es oder:

http://www.kalaydo.de/kleinanzeigen/orgeln/hammond-xm-1-organ-expander-b3-mit/a/64623755/

Deinen Thread hab ich mal unter Beobachtung :)
bin gespannt wie es weitergeht; ich verwende den den LS ( Live-Styler ) 
und B3 von Steinberg. Extern in einem eMbeddedCase und minimal Win, 
angesteuert dann über WIFI-MIDI und Android APP.

Gutes gelingen!

lg rudi :)

btw:
aus welcher Gegend kommst du?

edit:

kennst du das: Doepfer B3
http://www.doepfer.de/Controller_Organ_8.htm

und B4 ( native instruments )
http://www.bergermusic.de/de/b4-controller/home/

von Peter R. (2meter_peter)


Lesenswert?

Hi Rudi,


>Welche Claviaturen verwendest du? Hersteller?
Hersteller weiss ich nicht. Die Claviaturen kommen aus 2 Funkey DP61 
Digitalpianos. Die gab es letztens 2 Stück defekt für kleines Geld.
http://www.ebay.de/itm/DEFEKT-2-STUCK-BASTLER-DIGITAL-KEYBOARD-61-TASTEN-E-PIANO-LED-DISPLAY-100-SOUNDS-/311312713797?pt=LH_DefaultDomain_77&hash=item487baf0845
http://www.kirstein.de/Home-Keyboards/FunKey-DP-61-II-Digitalpiano-mit-Staender-Schwarz-SET-inkl-Bank-Kopfhoerer.html
An dem einen war das Display gebrochen, am anderen ein Stecker ab. Die 
Tasten waren zum Glück tadellos ok. Ich würde die aber nicht noch mal 
kaufen, der Druckpunkt ist imho zu tief, soll heißen man muss die Taste 
fast bis an den Anschlag niederdrücken bis der Ton kommt. Könnte aber 
auch an dem Controller gelegen haben, ich habs noch nicht mim Ohmmeter 
nachgemessen. Ein paar Tage später gingen 2 61er Fatar Claivaturen incl 
Matrixscanner für 50€ weg, wie wären wahrscheinlich besser gewesen.

>Die Motorfader willst du dann auch für Preset's nutzen?
Ähh, fast. Die Motorfader werde ich nur für die Drawbars nehmen. Dann 
brauche ich noch ein paar Schalter für diverse Effekte, natürlch auch 
"motorisiert". Ich glaube da werd ich klassische Ersatzteil Wippschalter 
nehmen und einen elektrischen Weichenantrieb von der Modellbahn 
dranbauen. Um de Presets abzurufen gibts ne kleine Zifferntastatur. Mal 
sehn das ich was hinbekomme was nicht sö fürchterlich nach Stilbruch 
aussieht, das Original ist schliesslich aus den 30ern :-) Vieleicht was 
mit Nixie Tubes

>Der Hammond XM1 Midi Expander hört sich gut an,
>darf ich fragen was du bezahlt hast?

30€ incl Versand + 15€ Display

>Um den geht es oder:
>http://www.kalaydo.de/kleinanzeigen/orgeln/hammond...
jepp


>[..]ich verwende den den LS ( Live-Styler ) und B3 von Steinberg.
https://www.youtube.com/watch?v=5gCUOZK9-A0&index=2&list=PL7EA79A3CB03C32AA
Das geht schon in die richtige Richtung

>aus welcher Gegend kommst du?
Münster / Westfalen

>kennst du das: Doepfer B3
Jau. Die hab ich mir wohl ziemlich genau angekuckt. Wahrscheinlich tut 
die Kiste schon viel von dem was ich vorhabe, aber ich finde sie 
pottenhässlich, sorry :-o Ich bin da vieleicht ein wenig altbacken.

Uuh, ich seh gerade das ich das mit dem Doepfer d3c verwechselt habe.
http://www.doepfer.de/Controller_d3.htm
Ich hab von Doepfer ein CTM64 Board gekauft um das Pedal zu 
midifizieren. Das war aber vor meinen B3 Plänen, und so liegt das Teil 
noch hier rum. An sonsten sind die Doepfer Baugruppen nicht schlecht.

Greetinx,
Peter

: Bearbeitet durch User
von Peter R. (2meter_peter)


Lesenswert?

Systemarchitektur

Da sich die technische Umsetzung meines Projektes wegen Zeitmangel ein 
wenig verzögert, habe ich mir in der Zwischenzeit mal Gedanken zu 
Systemarchitektur gemacht. Erster Schritt meines Projekts wird sein aus 
einen Tastendruck auf dem Keyboard in ein Midi Telegramm zu erzeugen und 
auf der Midi Schnitte auszugeben.

Teilschritte:
-  schnelles Keyboardscanning der insgesamt 147 Tasten, wenn
        möglich ca 10.000 Scans pro Sekunde
-  Zwischenspeichern der Informationen
-  Ausgabe auf der Midi Schnittstelle

Das Problem sehe ich im Moment beim Scanning, ich erwarte das der 
Controller damit ausreichend beschäftigt ist. Ich habe daher geplant für 
die beiden Keyboards und das Pedal je einen Atmega328 einzusetzen. Die 
wollte ich dann per I2C an einen weiteren 328er hängen der die 
Midiausgabe übernimmt. An diesen Bus können dann später auch die 
Controller die das ganze Drawbar- Preset- Diaplay- SDKartengedöns 
machen.

Alternativ wäre es auch möglich die Peripherie-Controller über je eine 
UART Schnittstelle an den Midicontroller zu hängen. Ich weiss aber noch 
nicht wie sich das mit den „echten“ und emulierten UARTS im 328er 
verhält

Entwurf 1:

+-----------------+
| µC Upper Manual |-----I2C-----+
+-----------------+             |
                                |
+-----------------+             |
| µC Lower Manual |-----I2C-----|
+-----------------+             |
                                |
+-----------------+             |
| µC Pedal        |-----I2C-----|
+-----------------+             |
                                |
+-----------------+             |
| µC Drawbar      |-----I2C-----|
+-----------------+             |
                                |
+-----------------+             |
| µC MMI          |-----I2C-----|
+-----------------+             |
                                |
+-----------------+             |
| µC Midi         |-----I2C-----+
+-------+---------+
        |
        +---RS232--- Midi Interface



Entwurf 2:


+-----------------+               +-------+
| µC Upper Manual |-----RS232-----| µC    |
+-----------------+               | MIDI  |
                                  |       |
+-----------------+               |       |
| µC Upper Manual |-----RS232-----|       |---RS232--- Midi
+-----------------+               |       |            Interface
                                  |       |
+-----------------+               |       |
| µC Pedal        |-----RS232-----|       |
+-----------------+               |       |
                                  |       |
+-----------------+               |       |
| µC Drawbars     |-----RS232-----|       |
+-----------------+               |       |
                                  |       |
+-----------------+               |       |
| µC MMI          |-----RS232-----|       |
+-----------------+               |       |
                                  +-------+


Unschwer zu erkennen das der Entwurf 1 der ausbaufähigere ist, 
allerdings habe ich noch keinerlei Kenntnisse zur I2C Programmierung. So 
wie ich weiss gibt es im I2C immer nur einen Master. Das wäre dann der 
MIDI Controller denn der ist am wenigsten beschäftigt (nach derzeitgem 
Kenntnisstand).

Ich denke das ich übernächste Woche meinen Gehäuserohbau abgeschlossen 
habe, dann werd ich mal zwei 328er aufm Steckboard aneinanderhängen.

greetinx
Peter

von HX3 (Gast)


Lesenswert?


von Martin S. (led_martin)


Lesenswert?

Wenn UART, würde ich für den 'µC MIDI' einen mit 2 echten UARTs nehmen, 
und die Anderen zu einem UART-Ring verschalten: z.B. 'µC Lower Manual' 
TXD -> RXD 'µC Upper Manual' TXD -> RXD 'µC MIDI' TXD -> 'µC MMI' ... 
Dann kann man mit den echten UARTS arbeiten, bindet nicht so viel 
Leistung in (Timing kritische) Soft UARTs, und das System bleibt 
erweiterbar. Den Ring kann man mit recht hoher Baudrate betreiben, und 
so auch mit dem Nachteil leben, daß die Daten durch die anderen 
Controller 'durchgeschleift' werden. Ein Vorteil der UART-Lösung sind 
die Puffer der UARTs, da siehts bei der SPI der ATmegas schlechter aus.

Mit freundlichen Grüßen - Martin

von Eric B. (beric)


Lesenswert?

Martin Schlüter schrieb:
> Wenn UART, würde ich für den 'µC MIDI' einen mit 2 echten UARTs nehmen,
> und die Anderen zu einem UART-Ring verschalten

Ich würde für alle uCs Typen mit echten UARTs wählen und die dann MIDI 
mit einander sprechen lassen, nur mit höherem Bitrate. Dann kann der 
Kommunikationsteil der Software von allen Controllern weitgehend gleich 
bleiben.

von Martin S. (led_martin)


Lesenswert?

@Eric B. (beric):
Da der TO ja schon den ATmega328 genannt hat, bin ich davon ausgegangen, 
daß die 'Unter-Baugruppen' ja schon einen echten UART haben, der 'µC 
MIDI' braucht aber 2, was es nicht bei allen ATmegas gibt. Der, von mir 
vorgeschlagene, UART-Ring ist ja, von der Struktur her, dem MIDI recht 
ähnlich. Dort das MIDI-Protokoll zu verwenden sollte gehen. Bei echter 
MIDI-Hardware kommt halt noch die galvanische Trennung, und die 
Störsicherheit, weil Stromschleife, dazu. Ob der Aufwand bei der 
internen Vernetzung nötig ist?

Mit freundlichen Grüßen - Martin

von Peter R. (2meter_peter)


Lesenswert?

@HX3

Jau, HOAX kenn ich von einem Spezi der sich die Midi-Version zugelegt 
hat. Das HX3 hat ne ganze Menge Funktionen mehr als der Hammond XM1 
Expander. Außerdem hat es den Vorteil das man die Scanner direkt 
anschließen kann und nicht über Midi muss. Da ich aber das XM1 schon 
habe werde ich wohl dabei bleiben. Hast Du irgendwie einen Draht zu der 
Firma? Die Website find ich seltsam.

cu,
Peter

von Peter R. (2meter_peter)


Lesenswert?

Systemarchitekur II

Eine Kette aus RS232 hätte den charmanten Vorteil das ich die Technik 
dazu einigermaßen beherrsche. Es würde zuwar zu höheren Latenzzeiten von 
Lower Manual und Pedal führen, aber da muss ich ohenhin nochmal 
nachrechnen in welchem Bereich ich mich befinde und ob das überhaupt 
Auswirkungen hat. Schließlich muss der ganze Sumps am Ende durch die 
Midi Schnittstelle, und das ist nach meiner jetztigen Auffassung das 
eigentliche Nadelöhr.


Entwurf 3:

+----------------------+               +-------+
| µC Upper Manual   TX |-----RS232-----| RX0   |
|                   RX |--+            |       |
+----------------------+  |            |       |
                          |            |       |
+----------------------+  |            |       |
| µC Lower Manual   TX |--+            |       |
|                   RX |--+            | µC    |
+----------------------+  |            | MIDI  |
                          |            |       |
+----------------------+  |            |       |
| µC Pedal          TX |--+            |   RX1 |--- RS232----- Midi in
|                   RX |--+            |   TX1 |--- RS232----- Midi out
+----------------------+  |            |       |
                          |            |       |
+----------------------+  |            |       |
| µC Drawbars       TX |--+            |       |
|                   RX |--+            |       |
+----------------------+  |            |       |
                          |            |       |
+----------------------+  |            |       |
| µC MMI            TX |--+            |       |
|                   RX |-----RS232-----| TX0   |
+----------------------+               |       |
                                       +-------+

Erinnert mich irgendwie an dei Token-Ring Verkabelung die wir Anfang der 
90er bei unseren Kunden installiert haben :-)

Da ich möglichst bei DIL Bauweise bleiben möchte käme irgendwas zwischen 
ATmega164A-PU bis ATmega1284A-PU in Frage. Den gibt es im handlichen 
40Pin DIL Gehäuse mit reichlich IO Pins, so das er sich auch für die 
Manual-Scanner anbieten würde.

Natürlich würde auf den Leitungen Midi gesprochen, knapper lässt sich 
die Information ohnehin nicht übertragen. Vieleicht liesse sich der 
Vel-on und Vel-off Wert noch einsparen da ich die ganze Kiste (zunächtst 
mal) ohne Anschlagdynamik betreiben werde.


Zum Thema Baudrate:

Standard Midi Baudrate ist 31250. Ich werde also wahrscheinlich 
(zumindest den Midi µC) mit 16MHz betreiben weil sich daraus sauber die 
31250Bd generieren lassen. Mach es also Sinn die Periepherie µC mit 
20MHz zu betreiben nur um die letzten 25% mehr Performance rauszuholen? 
Imho nicht, denn wenn die µC untereinander ein vielfaches von 31250 
sprechen sollen wäre es schon gut wenn alle Beteiligten den Takt sauber 
(oder wenigstens mit einheitlichem Fehler) hinbekommen würden. Ich hab 
nicht genau gekuckt, aber gibt es nicht auch einen ATmegaxx4 mit 32MHz?

Groetjes,
Peter

von Martin S. (led_martin)


Lesenswert?

Zur Geschwindigkeit, ob's mit SPI wirklich viel schneller wird, würde 
ich bezweifeln, die maximale Datenrate ist zwar höher, aber durch die 
fehlende Pufferung (im Gegensatz zum UART) verliert man auch Durchsatz. 
Wenn die Controller nicht zu weit voneinander entfernt sind, kann man 
mit der Baudrate aufs Maximum gehen, bei 16 MHz und umschalten auf 
doppelte Datenrate kommt man da auf 2 Megabaud, dann trudelt aber auch 
alle 80 Taktzyklen (Mit Parity alle 88) ein neues Byte ein, und will 
verarbeitet werden. Bei hohen Baudraten, und den sich daraus ergebenden 
kleinen Baudrate-Teilern, müssen die Controller-Taktfrequenzen schon 
passen. Bei Ausnutzung des Maximums also alle mit 16 MHz (32 MHz gibt 
es, meines Wissens, nicht bei den ATmegas, da müsste man zu einem 
ATXmega greifen, den es aber nicht in DIL gibt). Beim mischen von mit 16 
und mit 20 MHz betriebenen Controllern gingen maximal 500 Kilobaud 
(Teiler 4 beziehungsweise 5).

Mit freundlichen Grüßen - Martin

von Peter R. (2meter_peter)


Lesenswert?

Den richtigen µC finden:

Um den Entwurf 3 umzusetzten benötige ich mindestens einen Controller 
mit 2 UARTs, damit ist mein heißgeliebter 328er ausm Rennen. Ich schieße 
mich also gerade auf den 644 bzw 324 ein.

http://www.distrelec.de/de/Mikrocontroller-8-Bit-DIL-40-Atmel-ATMEGA644P-20PU/p/17325149?q=atmega644&page=2&origPos=1&origPageSize=50&simi=96.54

Ich hab mir mal das Kapitel USART ausm Datenblatt durchgelesen. Wenn ich 
das richtig verstanden habe dann gibt es in den ATmega grundszätzlich 
keinen Hardware FIFO Buffer so wie es den mal im 16550 
(http://en.wikipedia.org/wiki/16550_UART#The_16550_FIFO) gegeben hat. Es 
gibt diverse Interrups Trigger (TX copmplete, RX complete, Data Register 
empty) die jeweils eine entsprechenden Interrupt auslösen können. Das 
Buffen übernimmt dann ein Bascom-Modul.

Damit beschränkt sich der Vorteil gegenüber der TWI-Lösung (Entwurf 1) 
imho auf die einfachere Programmierung. Es wäre also doch noch mal eine 
Überlegung wert ob sich der I2C eignen würde, vorausgestzt die 
Programmierung hält sich in vertretbaren Grenzen. Interessanter wäre es 
schon.

Greetinx,
Peter

: Bearbeitet durch User
von Martin S. (led_martin)


Lesenswert?

Peter R. schrieb:
> ... gibt es in den ATmega grundszätzlich
> keinen Hardware FIFO Buffer ...

Das ist so nicht richtig, Die Sende-Seite ist 1-fach gepuffert, man kann 
also schon das nächste Byte schreiben, wärend das Aktuelle gesendet 
wird, und die Empfangs-Seite ist sogar 2-fach gepuffert. Diese Technik 
ist halt vor dem Programmierer verborgen, so daß man sich auch nicht 
darum kümmern muß, die Vorteile kann man aber trotzdem nutzen. So haben 
z.B. auch die Fehler-Flags ihr FIFO, sie gelten immer für das gerade 
anstehende Byte, weshalb im Datenblatt ja auch geraten wird, die 
Fehler-Flags zu lesen bevor man das Daten-Byte liest. Man kann also 
problemlos Start- an Stopp-Bit senden und empfangen.

Diese Puffer sind übrigens auch aktiv, wenn man die ATmega UARTs als 
Master-SPI betreibt, da kann man dann lückenlose Bitströme erzeugen, 
manchmal recht nützlich für irgendwelche Bitbanging-Sachen.

EDIT:

TWI würde ich für diese Anwendung nicht nehmen, da sind die maximalen 
Geschwindigkeiten deutlich geringer, und die Programmierung 
komplizierter.

Mit freundlichen Grüßen - Martin

: Bearbeitet durch User
von Ulrich P. (uprinz)


Lesenswert?

Ich bin zwar sehr lange aus der digitalen Musik raus, aber ich kenne 
mich mit I2C und anderen Bussen immer noch gut aus :)

Du musst bei Deiner Architektur davon ausgehen, dass viele Tasten 
gleichzeitig gedrückt werden, also viele Daten gleichzeitig versandt 
werden wollen.
I2C hat keine wirklich tauglichen Kollisionsbehandlungen! Damit wirst Du 
also einen recht heftigen Overhead an Software haben, die mit dem 
Erkennen und behandeln von Buskollisionen beschäftigt ist. Aber 
natürlich ist I2C Multi-Master fähig... Im realen Leben wäre dann aber 
doch eine art Interrupt-System und ein Master sinnvoller. D.h. jeder 
Slave setzt eine Interrupt Leitung und wird dann vom Master gepollt.

Die 2. Lösung wäre natürlich der UART als Ring und den dann ruhig mit 
1MBaud laufen lassen. Der Vorteil ist, dass Du jedem Block deines 
Systems einen festen Zeitslot in deinem Ring zuweisen kannst. So kannst 
Du Manuale und Pedale 10x so oft abfragen, wie Drawbars und andere nicht 
so Echtzeit gebundene I/Os.

1MBaud sind grob geschätzt 100kB/s also könntest du für 100 Tasten 1000 
mal pro Sekunde ein Byte übertragen, was ich für mehr als ausreichend 
halte. Du musste ja auch berücksichtigen, dass mit steigender Frequenz 
die Führung der Leitungen nicht einfacher wird.

Hmmm... Auch viele UARTs kann man in einem Bus zusammen schalten. RS485 
mit einem Master... Der sendet immer einen festen Startbefehl und die 
Slaves antworten dann immer an einer festen Zeitposition oder eben als 
Antwort auf ihre Adresse. Das wäre jedenfalls ein guter BUS, der auch 
dafür gedacht ist über ein paar Meter Kabel Daten zuverlässig zu 
übertragen. Nackter UART (also 5V Pegel) oder I2C sind nicht für das 
Verlassen der Heimatplatine gedacht. Und ATMEL und I2C sind auch keine 
zuverlässig Kombination... STM32 wäre noch eine Idee, zumal man mit 
einem CortexM3 schon eine Menge Vorberechung machen kann, CAN und 3..5 
UARTs gleich drin sind und er das gleiche kostet wie ein AVR... Nur halt 
10x so leistungsfähig. Die können dann auch UART und DMA kombinieren, 
oder Tasten-Anschläge per DMA sampeln und für ADSR aufbereiten...

Gruß
Ulrich

von Fragezeichen (Gast)


Lesenswert?

Habe mal einen Spieltisch einer Sakralorgel "Midifiziert". Es gab da 
einen fertigen Satz an Klaviatur- und Pedalscannern mit einem zenztralen 
Controller. Wenn es interesiert suche ich nochmal raus von wem das Zeug 
war.

PS: Der Spieltisch steht zum Verkauf. Bei Interesse einfach hier 
Antworten und ich melde mich per PN.

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Irgendwie sieht es aus als wolltest du die Midibox nachbauen.
www.ucapps.de
Einen Teil deines Projektes, und zwar die Zugriegel und Schalter hab ich 
mal mit der alten Midibox64 gebaut. Wichtig ist nur die Anpassung der 
Midi-Befehle.
Mittlerweile gibt es dort auch einen Keyboardscanner für 
Matrixtastaturen. Für ne orgel würde sich die Fatar TP/80 empfehlen. 
Bassklaviaturen mit 25 Tasten sind eher selten.

von Peter R. (2meter_peter)


Lesenswert?

Onboard Kommunikation:

nach dem ich mich jetzt mal ein paar Tage mit dem I2c, TWI und SPI 
Schnittstellen auseinandergesetzt habe bin ich wohl doch soweit das ich 
denke das nix davon für meine Anwendung wirklich zu gebrauchen ist. Es 
ist ne ganze Menge Handshake und anderer Overhead auf den Bussen 
notwendig das ich so eigentlich nicht machen wollte. Zwischendurch hatte 
ich auch ma überlegt ob sich was auf der Basis der RS232 mit 
zusätzlichen Hardware-Handshake Leitungen realisieren ließe und so ganz 
ist das auch noch nicht vom Tisch.

                                                  +-------+
                                                  |  µC   |
+----------------+                                |       |
|            RTS |------------------------------->| IRQ   |
|  Manual µC     |                                |       |
|(Peripherie µC) |            +-------+           |       |
|             TX |---RS232--->|  MUX  |---RS232-->| RX    |
|                |                    |<-select---|       |
|                |          +-------+             |       |
|             RX |<--RS232--| DEMUX |<----RS232---| TX    |
|                |                  !             |       |
|                |        +-------+               |       |
|            CTS |<-------| DEMUX |<-----select---|       |
|                |        !       !               |       |
!                !                                !       !

Damit könnte man eine Teil der ganzen "wer spricht wann mit wem" 
Geschichte in ein paar TTL ICs auslagern. Außerdem gäbes es dann wieder 
eine einheitliche "Schnittstelle" zum zentralen µC.

Derzeit beschäftige ich mich mit dem Atmega2560. Der ist zwar etwas 
unhandlich (TQFP100 Gehäuse) hat aber ne Menge drauf. Unter anderem hat 
er 4 UARTs und ne Menge (86) IO-Pinne,  damit könnte man für bis zu 3 
Peripeherie µC jeweils ein eigenes RS232 Paar nehmen (plus 1x Midi) und 
alles andere wie Display, Tasten, Memorykarte, Faderansteuerung etc aus 
dem zentalen µC machen. Den Chip könnte man ggf auf eine Adapterplatine 
setzten (gibt es sogar fertig), ich weiss nur noch nicht genau ob sich 
dafür auch mit Bascom Code schreiben lässt, aber das werd ich noch 
rausbekommen.


Eine andere Überlegung: Gleicher Ansatz wie Entwurf 3, aber die Midi 
Schnitte hängt nicht mehr am Midi µC sonder am letzten µC in der Kette.


Entwurf 3a:

+--------------------------+
| Hammond MX1              |---------- Audio Out
| Midi  Expander  Midi Out |---------- Midi out
|                 Midi-In  |--+
+--------------------------+  |
                              |
+--------------------------+  |
| µC Upper Manual       TX |--+
|                       RX |--+
+--------------------------+  |
                              |
+--------------------------+  |
| µC Lower Manual       TX |--+
|                       RX |--+
+--------------------------+  |
                              |
+--------------------------+  |
| µC Pedal              TX |--+
|                       RX |--+
+--------------------------+  |
                              |
+--------------------------+  |
| µC Aux  (Mem, Drawbar TX |--+
| Display, Tasten, etc) RX |------------ Midi in
+--------------------------+

Da ohnehin jeder der 3 Manualcontroler die Mididaten die er empfängt 
mitlesen UND interpretieren muss damit die Daten verschiendener 
Midi-Nachrichten nicht vermischt werden, kommen am letzten µC in der 
Kette schon gültige Midi Daten raus, die brauchen eigentlich nicht 
nochmal irgendwo gelesen und verarbeitet zu werden und könnten 
ungefiltert in den Midi-Expander (Sound Modul) gehen. Einziger Nachteil 
wäre das alles was in die Kiste an Mididaten reinkäme durch alle 
Controller laufen müsste bis es im Expander landet. Das wäre aber nur 
dann relevant wenn man die Orgel per Midi ansteuern will. Obwohl das 
nicht der primäre Verwendungszweck der ganzen Kiste sein soll würde ich 
mir diese Möglichkeit gerne offenhalten. Das sollte aber auch kein 
Problem sein, denn wenn von außen Midi reinkommt wird die Orgel 
üblicherweise nicht von Hand gespielt, obwohl es möglich und auch 
wahrscheinlich kein (Timing-)Problem wäre.


Greetinx,
Peter

von Sven (Gast)


Lesenswert?

jetzt ohne alles gelesen zu haben
Wenn du midi Controller bauen möchtest ist eventuell midibox 
http://www.ucapps.de/ das mittel deiner wahl

von Martin S. (led_martin)


Lesenswert?

Also die Lösung mit den Multiplexern würde ich nicht machen, da wird das 
mit dem Handshake nicht einfacher, und es braucht zusätzliche Logik, und 
IO-Pins. Dein letzter Vorschlag ist natürlich eine Möglichkeit, ist aber 
eine Einbahnstraße, gerade der 'µC Aux' wird da nicht glücklich werden, 
wo sollen z.B. die Daten für das Display herkommen, und zu dem, von mir 
vorgeschlagenen, Ring fehlt nur noch eine Leitung. Das Timing und 
Handshake wird bei dem Ring deutlich eifacher, wenn man eine 
Handshake-Leitung in engegengesetzter Richtung zu den Daten, auch wieder 
im Ring, verlegt. Dann kann der empfangende µC seinem Vorgänger 
Empfangsbereitschaft mitteilen, und eventuell noch den Empfang eines 
Paketes bestätigen, z.B. durch kurzes 'wackeln' an der Handshakeleitung. 
Das schöne an dem Ring-Konzept ist, daß immer nur 2 Controller 
miteinander klar kommen müssen, unabhängig davon, wie viele es insgesamt 
sind. Wenn man nicht ans Limit geht, mit der Auslastung, kann so ein 
Ring auch gut ohne Handshake betrieben werden.

Mit freundlichen Grüßen - Martin

von Ulrich P. (uprinz)


Lesenswert?

Also ich finde einen Ring durch viele UARTs hindurch nicht unbedingt 
einfach. Denn jeder Controller benötigt dann 2 UARTs und muss nicht nur 
seine eigenen Daten, sondern auch die aller Kollegen händisch durch sich 
hindurch kopieren.
Gerade weil aus mir unverständlichen Gründen immer AVRs genommen werden, 
ist das doppelt "teuer" denn der AVR kann kein DMA, also muss er jedes 
Byte von Hand schaufeln.

Nutzt man einen STM32, könnte man die Daten per DMA umkopieren, das ist 
aber weiterhin einfach überflüssig, denn das Manual A braucht keine 
Informationen vom Manual B oder vom Pedal.

Also gibt es doch nur zwei Probleme zu lösen:
Alles auf den Bus und das in geordneter Reihenfolge.

Lösung: Alle Systeme an einen RS485 Bus anschliessen. Teurer, aber 
einfacher ist es, einen Full-Duplex Bus zu bauen, also 4 Leitungen zu 
verlegen. Aber eigentlich sollte man auch einen Half-Duplex Bus leicht 
programmieren können. (Ein zusätzlicher GPI schaltet den Tranceiver auf 
Senden)

Das "Geordnet" ist auch einfach zu lösen, in dem Client-Platinen immer 
nur hören, bis sie ihre Adresse empfangen. Dann antworten sie, in dem 
sie neue Events senden, also gedrückte, oder los gelassene Tasten, 
geschobene Register oder gedrehte Pitches.

Das Problem dabei ist aber, dass man auf den Manualen mehr Events 
erzeugt, als auf den Pedalen, 10 Finger schaffen mehr als 2 Füße. Aber 
man will durch die Technik die Pedale nicht asymetrisch / zufällig 
verzögern. Also speichert jeder Client jedes Event in einem Puffer als 
FIFO und in jeder Abfragerunde wiird immer nur das älteste Event auf des 
Bus geantwortet.

Wie geht das einfach? Sogar der olle AVR kann 9-Bit UART. Der Master 
sendet das 9. Bit als 1, dann wissen alle Clients, dass jetzt eine 
Adresse kommt. Empfängt ein Client bei gesetzten Bit 9 seine Adresse, 
wird er aktiv und sendet seinen anstehenden Event, oder eben einen Code, 
der sagt "habe fertig".
Und zu allem Überfluss gibt es in vielen Controllern sogar einen 
Interrupt, wenn der im halbschalf seine Adresse am Bus erkannt hat. 
Damit kann man diesen Mechanismus sogar per Interrupt laufen lassen.

Wie ich oben schon geschrieben habe, kann man einen RS485 mit 1MBit 
laufen lassen. Das sind fast 100kByte/s. Bei Adresse, Tasten-Code, 
Aftertouch Wert, von jeweils 1 Byte, wäre das mit etwas Toleranz 100k/4 
als 25kHz Samplerate, bei 5 Platinen also 5kHz Abtastrate.

Man kann also 5000 Tastenevents mit jeweils Adresse, Tastecode und 
Zusatzwert pro Sekunde verarbeiten. Da kannst Du vermutlich die 
Pianoguys alle zusammen an die Manuale setzen...
Da der Master ja immer die Cliens mit einer Adresse abfragt, kann man 
auch noch optimieren, also beispielsweise die Manuale häufiger abfragen 
als die Pedale oder Register, in dem der Master die Adressen als 
1,2,1,2,1,2,3,1,2,1,2,4,1,2,1,2,3... Laufen lässt, also Pedale und 
Register nur alle 8 Durchläufe abfragt. Dazu programmiert man sich dann 
einfach eine Tabelle, die abgearbeitet wird.

Gruß
Ulrich

von Andreas R. (daybyter)


Lesenswert?

Meine erste Idee war ganz anders. Du hast ja bei nem echten Clone keine 
Anschlagdynamik, also würde im Prinzip ein Bit pro Taste und Pedal 
reichen. Wenn man das direkt per Memory-Mapping z.B. machen würde, wäre 
der Protokoll-Overhead gleich Null. Dann so ein 32 Bit Arm Controller, 
und man hätte alles an einer Stelle geregelt?

Andererseits bietet Anschlagdynamik halt den Vorteil, dass man 
vielleicht auch mal Piano-Sounds spielen möchte, bei denen die Dynamik 
schon essentiell wäre.

von Martin S. (led_martin)


Lesenswert?

Ulrich P. schrieb:
> Denn jeder Controller benötigt dann 2 UARTs

Das stimmt so nicht, da es ja nur eine Leitung ist, die zum folgenden 
Controller geht. Da reicht ein UART, TXD geht zum folgenden Controller, 
RXD zum Vorhergehenden. RS485 ist natürlich eleganter, aber auch etwas 
mehr Bauteileaufwand. Man kann aber auch UARTs zum Bus verschalten, TXD 
vom Master geht an alle anderen RXD, die TXDs der Untereinheiten kann 
man über ein AND mit entsprechender Anzahl Eingängen zusammenfassen, 
oder, wenn man die Ports per Software auf Eingang schaltet, wenn nicht 
gesendet wird, auch direkt zusammenschalten. Damit lässt sich dann nach 
dem selben Prinzip, wie bei Full-Duplex RS485 kommunizieren. Die 
Leitungen sollten halt nicht zu lang sein, da ist RS485 eindeutig im 
Vorteil.

Mit freundlichen Grüßen - Martin

von Ulrich P. (uprinz)


Lesenswert?

Hallo,

der RS485 kann auf 5V Pegel auch einfach mit einem sog. Wired OR 
zusammen gefasst werden. Dazu muss man statt der "teuren" RS485 keine 
"teuren" Logichips einsetzen, eine Diode oder besser ein Transistor tun 
es auch. Aber wenn man mit Diode und PullUp arbeitet kann man sich sehr 
viel Aufwand bei der Abstimmung einfangen, weil Dämpfgung, Takt, 
Einstrahlung... und so weiter... Der Grund halt, warum man 
Platinenübergreifend auch kein I2C einsetzen soll.
Der Preis von ~1€ für einen RS485 Tranceiver Chip ist im Vergleich zu 
dem Ärger, den ein wackeliger Bus erzeugen kann aber verschwindend 
gering.

Abgesehen davon macht ein standardisierter Bus das Projekt nachbaubar 
und man kann auch "abgesetzt" arbeiten, also die Pedal-Platine in das 
Pedalgehäuse verbauen und so mit nur 4 Leitungen anschließen, statt 
eines Arm dicken Kabelbaumes zum Zentralghäuse.

Gruß
Ulrich

von Peter R. (2meter_peter)


Lesenswert?

Vielen Dank erstmal an alle die sich hier beteiligen, ich hätte nicht 
gedacht das das Thema auf so viel Interesse stößt.

In Sachen STM32:
Wow, was ne Maschine!  Je nach dem welchen man sich da auskuckt steckt 
der einen AVR schon in die Tasche. Ich hab mich nur mal kurz mit dem 
CY8C29466-24PXI beschäftigt weil es den bei Reichelt gibt.
http://www.reichelt.de/CY-8C29466-24PXI/3/index.html?&ACTION=3&LA=446&ARTICLE=146530&artnr=CY+8C29466-24PXI&SEARCH=DIL
Aber Hut ab, der kann was. Allerdings heisst das für mich eine neue 
Entwicklungsumgebung (naja, das ginge ja noch) und C. Hmm, wie soll ich 
sagen, ich bin halt mit Basic aufgewachsen, meine Versuche in C sind 
bisher nicht wirklich vorzeigbar. Aber das kann ja noch kommen. Ist 
vorgemerkt für spätere Projekte, definitiv.

@ Martin Schlüter (led_martin)
Du hast Recht, 3a ist ne Einbahnstraße. Das wurde mir auch schon klar 
als ich das ausgearbeitet hatte, aber manchmal muss man auch mal eine 
Sache zu Ende denken die offensichtlich nicht ganz in die richtige 
Richtung geht. Was mich in der Hauptsache stört ist das jedes Byte das 
weiter unten in die Kette kommt mehrfach gesendet, gelesen, 
interpretiert, einsortiert, neu zusammengestellt, und wieder gesendet 
wird. Auch wenn es in mehreren Controllern gleichzeit passiert, schön 
ist das nicht.

@ Sven (Gast) und Michael X. (Firma: vyuxc) (der-michl)
Die uCApps (http://www.ucapps.de/) Lösungen hatte ich mir angesehen 
bevor ich beschlossen habe selbst was zu bauen. Doepfer 
(http://www.doepfer.de/home.htm) bietet auch das Ein oder Andere und 
auch die HOAX HX3 Lösung (http://shop.keyboardpartner.de/) habe ich mir 
angesehen. Alles sehr leistungsfähig, aber alles nicht das was ich haben 
möchte. Zu wenig bastel halt :-)

Atmega2560:
Der Controler meiner Wahl, zusammen mit 644ern für die Manuale und ggf 
den Drawbars. Beide lassen sich tadellos mit Bascom programmieren. Da 
der 644er genug IO Pins und wahrscheinlich auch genug Performance hat um 
beide Manuale zu scannen werde ich mir den 2.Controler dafür sparen. Das 
Pedal wir wohl einen eigenen Controler bekommen, allein schon deshalb 
weil ich keine Lust habe einen armdicken Tampen zu verlegen. Die 
Verbindung zwischen Orgel und Pedal solle maximal ein Patchkabel, besser 
noch ein einfaches Mono-Klinkenkabel sein, ma schaun. Für die Drawbars 
hab ich noch keine schöne Lösung.

Damit sieht das Konzept bisher so aus:

Entwurf 4:

+-----------------+                  +------------+      +----------+
| µC Upper Manual |<------8x Col-----| µC      TX |----->| RX       |
|                 |-------8x Row---->| Scan   (RX |<-----| TX)      |
+-----------------+                  | (644)      |      |          |
                                     |            |      |          |
+-----------------+                  |            |      |  µC Aux  |
| µC Lower Manual |<------8x Col-----|            |      |  (2650)  |
|                 |-------8x Row---->|            |      |          |
+-----------------+                  +------------+      |          |
                                                         |          |
+-----------------+                  +------------+      |          |
| µC Pedal        |--------25------->| µC      TX |----->| RX       |
|                 |                  | Scan   (RX |<-----| TX)      |
+-----------------+                  | (644)      |      |          |
                                     +------------+      |          |
                                                         |          |
+-----------------+                  +------------+      |          |
| 20 Drawbars     |---20x Spannung-->|         TX |----->| RX       |
|                 |<--20x Stellwert--|         RX |<-----| TX       |
+-----------------+                  | µC         |      |          |
                                     | Drawbars & |      |          |
                                     | Schalter   |      |          |
+-----------------+                  | (644 ?)    |      |          |
| 5x Schalter 0-1 |--------10------->|            |      |          |
| 1x Schlater 0-5 |<--6x Stellwert---|            |      |          |
+-----------------+                  +------------+      |          |
                                                         |          |
+-----------------+                                      |          |
|                 |                                      |          |
| Display         |<-------------8/4Bit + E + RS---------|          |
|                 |                                      |          |
+-----------------+                                      |          |
                                                         |          |
+-----------------+                                      |   Midi   |
|                 |                                      |          |
| Mem Card        |<--------------------?--------------->|          |
|                 |                                      |  T    R  |
+-----------------+                                      |  X    X  |
                                                         +----------+
                                                            |    ^
                                                            |    |
                        +--------------------------+        |    |
                        |                          |        |    |
                        |   Hammond MX1    Midi In +<-------+    |
    Audio Out <---------|  Midi Expander           |             |
                        |                 Midi out +--------+    |
                        |                          |        |    |
                        +--------------------------+        |    |
                                                            |    |
                                                            V    |
                                                     Midi out    Midi in

Scanner:

Die Keyboards sind als 8x8 Matrix mit Entkopplungsdioden geschaltet. 
Jede Taste hat 2 Kontakte, einen um den Ton zu erzeugen und einen 
weiteren der etwas später schließt um zu ermitteln wie schnell die Taste 
gedrückt wurde. Der 2. Schaltpunkt liegt aber auf meinen Manualen so 
tief unten das die Taste unangenehm spät reagiert wenn man die 
Anschladynamik mit auswerten will. Also ist der ganze Sumps mit der 
Anschlagdynamig gelaufen. Wenn ich ein anschlagdynamisches Gerät spielen 
will nehm ich ein anderes Keyboard (von denen sich mittlerweile ja 
einige angesammelt haben :-). Ich werd die zweiten Kontakte für später 
mal mit auf den µC legen, man kann ja nie wissen, aber das ist nicht 
Bestandteil dieses Projekts.

Bleibt also 1 Kontakt je Taste. Der µC fragt die 8 Zeilen (Row) 
nacheinander ab und bekommt auf 8 Spalten (Col) die Information welche 
Taste gedrückt ist. Die Signale für die Zeilen können am upper und lower 
Manual gleichzeitg anliegen, macht zusammen 8 Zeilen und 16 Spalten = 24 
Pinne. Der µC hält nach wie sich die Signale verändern und erzeugt 
daraus die jeweilige Differenz. Die Daten gehen denn als 1-Byte 
Nachrichten an den Aux. Aufbau: 1 Bit Taste gedrückt oder losgelassen + 
1 Bit upper/lower Manunal + 6 Bit für die Tasten 0-63. Das Pedal stellt 
25 Reedkontakte zur Verfügung. Die werde ich ungebremst Byte- bzw 
Portweise lesen. Verarbeitung und Weiterleitung an Aux wie bei den 
Manualen. Aufbau wie bei den Manualen, 1 Byte gedrückt/losgelassen + 
"00" + 5 Bit für die Pedaltasten 0-24, da steckt sogar noch ein wenig 
Luft für Spielereien drin.

cu,
Peter

von Andreas L. (andi84)


Lesenswert?

Wäre es nicht eventuell sinnvoller, die manuale mittels einfacher 
Schieberegister abzugrasen?
Das geht mit dem SPI-COntroller des µC (egal welcher), einen Load-Puls 
erzeugen und anschließend n Bits per SPI empfangen. Der SPI läuft beim 
AVR iirc mit max f_clock/2, also braucht es bei 16MHz min 
2*ceil(n_tasten/8)*8/f_ck, also ca 1µs pro 8 Tasten.
Anschließend liegen alle Tasten als Bitmap im Mastercontroller vor.

von Andreas R. (daybyter)


Lesenswert?

Armdicke Kabel? Bei den 66 Tasten meines c64 reicht ein kleines 
Flachbandkabel...

von Peter R. (2meter_peter)


Lesenswert?

@Andreas Lang (andi84)

ich glaube es lohnt nicht dafür extra ein Schieberegister zu nehmen. Ich 
kann 8 Tasten in ein Byte parallel einlesen, wesentlich scheller gehts 
imho nicht. Was man überlegen könnte ist für die Ansteuerung der 8 
Zeilen einen Demultiplexer (zB 74138) zu nehmen, damit könnte ich noch 5 
Pinne sparen, aber bis jetzt sieht es so aus als hätte ich genug Ports 
dafür auf dem 664er.

greetinx,
Peter

von Peter R. (2meter_peter)


Lesenswert?

@Andreas Rückert (daybyter)

naja ok, ich hab maßlos übertrieben, du hast mich erwischt :-)

Andererseits, welches genormte Kabel mit 26 Drähten gibt es? Ein Db25 
Kabel hat immerhin 25 Drähte + Masse, das würde ja schon passen, aber 
damit ist das Teil auch schon ausgereizt. Für ein Lautstärkepedal müsste 
ich dann das nächst stärkere (37 pol) oder ein zweites Kabel nehmen.

cu,
Peter

PS: ich musste echt nachzählen, aber der C64 hat tatsächlich 66 Tasten, 
lang lang ist's her....

von Martin S. (led_martin)


Lesenswert?

@Peter R. (2meter_peter):

Das neue Konzept gefällt mir gut, auch wenn der Ring damit gestorben 
ist, möchte ich das hier

Peter R. schrieb:
> Was mich in der Hauptsache stört ist das jedes Byte das
> weiter unten in die Kette kommt mehrfach gesendet, gelesen,
> interpretiert, einsortiert, neu zusammengestellt, und wieder gesendet
> wird. Auch wenn es in mehreren Controllern gleichzeit passiert, schön
> ist das nicht.

kommentieren, lesen ja noch Andere mit:
So schlimm ist das gar nicht wenn man es geschickt macht, eine 
Möglichkeit, die ich schon eingesetzt habe sieht so aus: Die Daten 
werden in Paketen übertragen, die klein genug sind, im Controller 
gepuffert zu werden. Wenn man mit Handshake arbeitet (Wie ich, weiter 
oben, geschrieben hatte), reicht ein Puffer, sinnvoll ist es aber 
mindestens zwei zu haben. Die Datenpakete bekommen einen kleinen Header, 
der mindestens die Zieladresse, und die Länge des Pakets (Falls nicht 
fix) enthält. Kommt ein Paket rein, wird die Adresse angeschaut, ist es 
für einen anderen Controller, wird es einfach weitergeschickt, ohne den 
Inhalt zu betrachten. Ist es für diesen Controller bestimmt, wird es 
nicht weitergesendet, und eventuell sofort verarbeitet. Bei 
weiterzusendenden Paketen kann man die Übertragung natürlich schon 
starten, bevor das ganze Paket empfangen wurde, wenn der folgende 
Controller empfangsbereit ist. Das weiteschicken der Daten erzeugt 
natürlich einen zusätzlichen Aufwand, der ist aber nicht hoch, und bei 
einem Bus müssen auch alle mitlesen. Bei Anwendungen, bei denen sich die 
Datenströme nicht am 'Master' bündeln, sondern eher 'Kreuz und Quer' 
gehen erreicht der Ring einen deutlich höheren Durchsatz als der Bus 
(Trifft bei Deiner Anwendung nicht zu). Zwischen den Paketen sollte man 
kurze Pausen machen, damit sich das System neu synchronisieren kann, 
wenn die Paketlänge nicht korrekt übertragen wurde.

Mit freundlichen Grüßen - Martin

von Peter R. (2meter_peter)


Lesenswert?

Ansteuerung der Drwabars / Motorfader

Die Orgel wird 20 Drwbars haben, je Manual 9 und für das Pedal 2. Ich 
habe mich für die 5k/60mm Motorfader von Alps 
(http://www.produktinfo.conrad.com/datenblaetter/425000-449999/442094-da-01-en-MOTORFADER_RS60N11M9_5KB.pdf) 
entschieden. Der mechanische Aufbau ist noch nicht ganz klar, entweder 
werden die Fader klassich wie im Mischpult unter der Abdeckplatte 
montiert und ragen mit den Schiebern durch die Platte, oder (was mir 
besser gefällt) ich baue eine echte Zugriegelmechanik drumherum, sehr 
hübsch aber mechanisch nicht ganz einfach.

Die Motorfader bestehen aus einem normalen Linearpoti, einem Motor der 
den Schieber bewegt und einem "Sensor" mit dem man feststellen kann ob 
der Schieber angefasst wird. Das Poti hat 5k-lin, der Motor wird mit 
6-11V Nennspannung angegeben.

Der Sensor ist technisch gesehn nur ein Draht. Dahinter verbirgt sich 
ein zusätzlicher Schleifer der isoliert von allen anderen Potentialen 
eine leitende Verbindung zum Schieber herstellt. Dazu gibt es passende 
leitfähige Knöpfe. Mit Hilfe einer Sensortastenschaltung kann man also 
festsellen wenn jemand den Fader anfasst um zu verhindern das der Motor 
dagegen ankämpfen muss. Ich bin aber nicht sicher ob ich das nutzen 
will; wird also erstmal zurückgestellt.

Der Motor ist ein normaler Bürstenmotor und treibt über eine Umlenkrolle 
und eine elastische "Zahnkette" direkt den Schieber an. Das geht 
ziemlich flott, ich schätze mal das er Motor auf den 60mm Schiebeweg 
keine 20 Umdrehungen macht, dafür tut er sich aber auch bis zu 800mA 
Anlaufstrom aufn Zahn.

Die Faderstellung lässt sich ziemlich einfach über den Widerstand 
ermitteln, Spannungsteiler 0-5V (0,2-4,8V) einfachster Bauweise, mit 
einem ADC einlesen, fertig.

Was muss also im Drawbar µC laufen ?
- Faderstellungen lesen, mit alten Werten vergleichen, bei Änderung zum
  AUX µC senden.
- Preset-Positionen vom AUX µC emfangen, Motoren ansteuern bis die
  Sollwerte erreicht sind.

Die Presets werden in Form von Ziffernfolgen (sowohl intern als auch 
Midi-seitig) übergeben, zB für ein Manual "88804002". Gut zu sehen das 
der gesamte Schiebeweg je Drawbar in gerademal 9 Werte aufgelöst wird. 
Der Controller muss also den Fader auf eine der 9 Positionen fahren und 
das möglichst flott und ohne viel Geräusche zu erzeugen. Wenns geht 
würde ich den Fader auch nicht bis in die Endpositionen fahren sondern 
nur bis kurz davor.

Die Frage stellt sich ob ich den Regelkreis im µC realisiere oder mit 
einer externen RC-Servo Schaltung. Dazu würde sich das übliche Pärchen 
aus BA6688L und BAL6686 anbieten. Der Nachteil ist jedoch das dazu nicht 
nur ne ganze Menge diskreter Bauteile nötig sind sondern vor allem das 
das Poti irgendwo mitten in der Schaltung hängt und wahrscheinlich keine 
verwertbare Spannung für den ADC liefern kann. Also vieleicht doch aus 
dem µC steuern und nur die H-Brücken extern, damit könnte man dann den 
Motor ggf auch "bremsen". Je Motor werden 2 Pinne (rechts, links, 
Leerlauf, bremsen) gebraucht, die hat der 664 erstmal nicht. Dazu kämen 
noch mal 20 ADC Eingänge, der 664 hat nur 16. Also denke ich wenn 
Regelkreis im µC dann direkt den 2650, andernfalls externe 
Servoelektronik und ADC Multiplexer.

Hat schon mal jemad versucht Motoren im Array zu betreiben ?

Bis denne,
Peter

von Ulrich P. (uprinz)


Lesenswert?

Also du nimmst teure Motorfader, die du mechanisch noch umarbeitest, 
bzw. in eine eigene Mechanik integrierst...
Warum?

Nimm kleine Stepper die Deine Mechanik bewegen. Lass die Stepper beim 
Einschalten der Orgel alle einmal an den Anschlag fahren, mit n+x 
Schritten in eine Richtung, danach fährst Du sie auf die zuletzt 
eingestellte Position zurück. Je nach Übersetzung durch Zahnstange unter 
dem Riegel, kannst Du die Stepper minimal bestromt lassen, um eine 
fühlbare Position zu haben.

Es gibt fertige Stepper Chips, denen gibt man noch Richtung und Schritt 
vor, dann führen sie diesen Schritt aus. damit kann man vielleicht die 
Richtung auf alle Stepper parallel legen und nur denen einen Schritt 
geben, die diesen auch ausführen sollen. Während diese dann den Schritt 
ausführen, kann man anderen schon einen Schritt in die andere Richtung 
vorgeben, so dass sie sich fast gleichzeitig bewegen.

Du brauchst eigentlich kein Poti, denn du könntest einen Dreh-Encoder an 
die Stepper-Achse anschließen, der einfach nur sagt, in welche Richtung 
der Riegel bewegt wird. Ich bin mir aber fast sicher, daß wenn man den 
Stepper minimal bestrom lässt, man anhand der Veränderung der Ströme in 
der Stepper-Schaltung schon erkennen kann, in welcher Richtung gegen die 
Haltekraft gearbeitet wird (und wie oft).
Vielleicht sollte man da einfach einen ATtiny pro Register einsetzen, 
das könnte am Ende günstiger sein als alle 
H-Brücken-Poti-ADC-Multiplexer...

Selbst, wenn Du den Motor-Fader nutzen willst, kann es sein, dass eine 
Kombi aus einem richtig kleinen ATtiny, ein paar FETs und einem 
ADC-Eingang, die preiswerteste Lösung ist.
Man kann beim AVR die Pinne ja auch in trinärer Logik nutzen:
Pin = Ausgang-Low: H-Brücke schaltet auf Links
Pin = Ausgang-High: H-Brücke schaltet auf Rechts
Pin = Eingang Hochohmig: H-Brücke aus.

Der ATTiny hätte auch den Vorteil, dass man die Fader später unabhängig 
mit zusätzlicher Intelligenz ausstatten kann, also z.B. das Anfassen 
nachrüsten kann. Da das ja lokale Intelligenz ist, muss man nicht jetzt 
schon 20 nicht ganz triviale Touch-Signale auf einem ohnehin schon 
überfrachteten ATmega vorsehen.

Und zuletzt: Wenn man daraus eine separate Motor-Unit macht, findet man 
vielleicht Leute, die bei der Bestellung mitmachen, weil sie selber eine 
Orgel bauen wollen, oder auch nur ein Mischpult.

Gruß
Ulrich

von Peter R. (2meter_peter)


Lesenswert?

[WARNING: slightly offtopic !]

@Martin Schlüter (led_martin)

Ich habe mal mit einem Spezi zusammen so was Ähnliches gebaut. Für 
unseren Modellflugverein wollten wir mal eine Landebahnbefeuerung bauen. 
Aufgebaut aus einzenlen Leuchten die auf den Boden gestellt und 
hintereinander verkabelt wurden. Eine der Aufgabenstellungen war das in 
jeder Leuchte die gleiche Software läuft damit man beim Aufbau nicht 
großartig sortieren muss. Konzept war das von PC aus die erste Leuchte 
in der Kette angesprochen wurde und alle weiteren Daten von Leuchte zu 
Leuchte weitergereicht wurden.

PC----Leuchte_1----Leuchte_2---....---Leuchte_n

Es gab einen Initialisierungbefehl mit dem jede Leuchte ihre Position in 
der Kette ermitteln konnte, danach konnte man jede Leuchte einzeln mit 
RGB Daten anzusprechen.

Aufgebaut war die Leuchte aus einem Atmega168er oder 328, die RS232 als 
Kette geschaltet wie beschrieben. Aufbau des Telegramms war 1 Byte 
Adresse (=Position in der Kette + MSB) + 3 Byte Farbdaten RGB (=0..127), 
da haben wir das auch so gelöst. Der Controller wartet auf ein Byte mit 
gesetztem MSB und prüft ob es seine Adresse ist. Falls ja werden 3 Byte 
empfangen und an die LED ausgegeben, falls nein wurde jedes Byte 
ungefiltet weitergesendet.

Die Adressvergabe in der Kette wurde mit einem Initialisierungsbefehl 
gemacht. An den ersten Controller wurde 0xFF,00 (="Deine Adresse sei 
00") gesendet. Der Controller hat sich die Adresse für sich selbst 
gemerkt, um 1 erhöht und die nächste Leuchte mit dem neuen Wert 
initialisiert (0xFF,01). Das ging so schnell das man die ganze Kette 
regelmäßig neu initialisieren konnte falls zwischendurch mal ein Bit 
verruscht war.

Nachdem das Konzept stand haben wir 2 Prototypen und eine Kette aus 
Dummys aufgebaut. Als dann klar war das es funktionieren wird haben wir 
das Projekt wieder beerdigt, nicht zuletzt aus Kostengründen :-)

Grüße aus dem Münsterland
Peter

: Bearbeitet durch User
von Eric B. (beric)


Lesenswert?

Peter R. schrieb:

> Andererseits, welches genormte Kabel mit 26 Drähten gibt es?

Warum brauchst du 26 Pins für das Pedal? Kannst du das nicht genau so 
wie die beide Manuale mit einem Matrix (2x8 oder 4x4) abfangen?
Mit einem 4-to-16 Demultiplexer reichen sogar 6 Pins!

Ich würde mir an deiner Stelle das Konzept mit den Schieberegistern noch 
mal anschauen. Auch wenn du meinst du hast momentan genügend Pins zur 
Verfügung; mit weniger Pins für alle Peripherie passt vielleicht das 
ganze System in einem einzelnen uC.

von Peter R. (2meter_peter)


Lesenswert?

@Ulrich P. (uprinz)

Zwei Gute Ideen von Dir, aber ich muss glaub ich erst mal was klären. 
Ich werde keine teueren Motorfader kaufen, ich habe sie bereits. Das und 
die Tatsache das ich billig an das Hammond Soundmodul gekommen bin hat 
mich erst dazu bewogen dieses Projekt zu starten.

Einzelcontroller:
Ausgehend von Entwurf 4 mit externer Servoelektronik ist der Drawbar µC 
eigentlich nur ein halbintelligenter Multiplxer/Demultiplexer. Bis auf 
das generieren und abspeichern der Differenzdaten ist er nur damit 
beschäftigt zu verteilen und einzusammeln. Desweiteren muss ich ohnehin 
für jeden Fader eine Elektronik bauen, ob nun klein und am Fader 
festgleötet oder (ggf zu mehrerer zusammengefasst) auf einer Platine mit 
Verkabelung zum Fader. Dann kann ich auch direkt was bauen das sich mit 
Daten ansprechen lässt und den Stellkreis beinhaltet. Zudem hab  ich 
hier noch rund 1m 328er rumliegen die nach passender Beschäfigung 
verlangen, es muss ja nicht unbedingt ein Tiny sein.

Für die Kommunikation könnte man wieder eine UART Kette aufbauen oder 
einen UART-Multiplexer (worauf ich wirklich mal Bock hätte). Das Timing 
ist eher unkritisch, wenn das ganze im 100ms Takt läuft ist das völlig 
ausreichend. Den großen Drawbar µC könnte man sich dann sparen, die 
Steuerung würde komplett aus dem AUX µC laufen und direkt auf die Kette 
der kleinen Drwabar µC zugreifen.


Entwurf 4a:
                                                          !          !
                                                          | AUX µC   |
+-----------------+   +-----------------+                 |          |
| Drawbar n       |---| Drawbar µC   TX |---------------->| RX       |
|                 |---|              RX |<---+            |          |
+-----------------+   +-----------------+    !            !          !
                                             .            .          .
                                             |            |          |
+-----------------+   +-----------------+    |            |          |
| Drawbar 2       |---| Drawbar µC   TX |----+            |          |
|                 |---|              RX |<---+            |          |
+-----------------+   +-----------------+    |            |          |
                                             |            |          |
+-----------------+   +-----------------+    |            |          |
| Drawbar 1       |---| Drawbar µC   TX |----+            |          |
|                 |---|              RX |<---+            |          |
+-----------------+   +-----------------+    |            |          |
                                             |            |          |
+-----------------+   +-----------------+    |            |          |
| Schalter        |---| Schalter µC  TX |----+            |          |
|                 |---|              RX |<----------------| TX       |
+-----------------+   +-----------------+                 !          !


Je mehr ich mir das ankucke umso besser gefällt es mir. Dabei würde 
wirklich mal ein universelles Motorfader Modul mit UART rauskommen das 
sich noch anderswo einsetzten ließe, zB um ein Mischpult zu 
automatisieren. Ich sehe schon kommen das ich den "Anpacksensor" auch 
noch mit da reinbaue.

Haptisches Feedback:
Super Idee! In der orginal Hammond Orgel ist es so das die Drawbars 
einen Kontaktbügel haben der auf 9 Busleitungen schleift: Die 
Postitionen kann man ganz gut fühlen kann wenn man den Schleifer bewegt. 
Ich könnte also den Fader ein wenig bremsen wenn er von einer Position 
weg gefahren wird oder auch ein wenig anschubsen damit er leichter auf 
die nächste Position rutscht. Ich weiss noch nicht genau wie der Fader 
das mechanisch verträgt, aber ich halte das ma im Auge, das kann man ja 
gut später noch softwaremäßig einstellen.


mit freundlichen Grüßen,
Peter

von Peter R. (2meter_peter)


Lesenswert?

Eric B. schrieb:

> Warum brauchst du 26 Pins für das Pedal? Kannst du das nicht genau so
> wie die beide Manuale mit einem Matrix (2x8 oder 4x4) abfangen?
> Mit einem 4-to-16 Demultiplexer reichen sogar 6 Pins!

Die Überlegung war ob ich die 25 Pedaltasten kabelmäßig in die Orgel 
führe oder nicht. Die beste Matrix für 25 Tasten ist eine 5x5 Matrix. 
Damit brauche ich aber immer noch 10 Drähte.

Daher der Entschluss dem Pedal einen eigene µC zu spendieren und (per 
RS485) an den AUX µC zu hängen. Da ich ohnehin schon einen 664er baue 
der eine 8x16 Matrix abfragt kann ich auf der gleichen Basis ohne 
allzuviel Mehraufwand auch 5x5 oder 1x25 oder eine beliebige Mischung 
dazwischen realisieren. Über einen ADC könnte ich noch einen Schweller 
(das Gaspedal einer Orgel) abfragen, es wäre sogar möglich noch ein paar 
Preset-Fusstaster wie bei einer Kirchenorgel zu integieren.

Ich denke das ein normales Patchkabel ausreicht, das wäre wenigstens 
einfach zu ersetzen wenn es mal kaputt oder verschütt ginge:
1  +12V (5V ?)
2  +12V (5V ?)
3  TX+
4  RX+
5  RX-
6  TX-
7  Ground
8  Ground
Schirm   Ground


> [...] mit weniger Pins für alle Peripherie passt vielleicht das
> ganze System in einem einzelnen uC.

Hatte ich auch schon mal überlegt. Aber im Moment sieht es für mich so 
aus das selbst der Atmega2560 damit überfordert wäre. Zumal ich ja noch 
ein paar mehr Ideen habe und das Teil ausbaufähig bleiben soll.

Greetinx,
Peter

von Ulrich P. (uprinz)


Lesenswert?

Hmm...

Also ich bin mir sicher, dass die RX-TX Kette als keine besonders gute 
Idee propagiert wurde... Aber manche Aufgabe muss man wohl erst einmal 
selber versuchen, bevor man denen glaubt, die es schon hinter sich haben 
:)

Aber da einem immer irgendwann die Busse ausgehen mal folgende von Peter 
R. schon skizzierte Idee:
Nimm für die Verkettung der Drawbars einfach SPI. Da verbindest Du MOSI 
immer mit MISO und alle SCKs auf eine Leitung. Dann muss eine 
Master-Platine (z.B. die mit MIDI, LCD, Power-Knopf, Audio PA...) für n 
Drawbars eben n Bytes senden mit Sollwert und erhält automatisch n bytes 
mit Istwert.

Der große Vorteil von SPI in solch einer Konstellation ist, dass Du die 
empfangenen Bytes nicht umkopieren musst, da das Schieberegister Ein- 
und Ausgang ist. Du schiebst einfach für 9 Drawbars 9 Bytes hinein, die 
dann übernommen werden. Gleichzeitig schreiben dann alle 9 DBs ihren 
Istwert zurück und es werden wieder 9 neue Sollwerte raus geschoben. Der 
Master liest jedes empfangene Byte zurück.

Man kann das ganze auch automatisch ausmessen, ohne die Anzahl Drabars 
hart zu programmieren. Da die Drawbars ja nur 9 Werte annehmen können, 
kann man 0xFF als Sync verwenden. Also schiebt man vom Master aus erst 
einmal so lange ein 0xFF durch den Bus, bis es wieder empfangen wird. 
Damit weiß man bescheid. Da das SPI im uC immer ein Interrupt auslöst, 
wenn ein Byte empfangen wurde, kann man auch da einfach mit zählen und 
weiß, an welcher Stelle der Verdrahtung man sitzt.

Die 0xFF Marke kann man, wie Peter schon beschrieb, auch einfach drin 
lassen.

Natürlich kann man das auch noch beliebig komplexer machen, also das 
Byte in Bits zerlegen und Sollwert, Sync und so weiter als Bit-Muster 
senden. So kann man auch prüfen, ob der Bus stabil ist. Wenn man die 
Bits in Einzelfunktionen aufdröselt, kann man auch Fader-Berührt 
hinzufügen.
Auch kann man auf die Art weitere Potis hinzufügen, also eine 
Piezo-Manual-Auflage für (gemeinsamen) Aftertouch oder Pitchbends.

Ach ja... Wenn man die Register-Bänke weiter auseinander legen möchte, 
dann kann man problemlos einen RS485 Tranceiver Baustein nehmen und 
diesen am SPI Bus Betreiben. Dabei braucht man dann einen Full-Duplex 
Chip für MOSI und MISO und einen fest auf RX geklemmten für SCK (am 
Master hängt der natürlich auf TX fest).

Das obige Beispiel funktioniert aber nur deswegen als Kette, weil der 
SPI dafür speziell ausgelegt ist, ein einzelnes Byte durch die ganze 
Kette zu tragen. Datenblöcke von 2 oder mehr Bytes würden wieder 
Overhead bedeuten, da dann erst einmal blockweise Empfangen und erneut 
gesendet werden müsste. Controller mit höherer Architekturbreite, also 
SAM3/9 oder STM32 haben auch gerne mal 16 oder 32 bit breite SPI 
Register das aäre aber deutlichh overseized :)

Langsam bekäme ich echt Lust zum mit basteln, aber ich habe nicht mal 
ein olles manual herum fliegen und der letzte Klavierunterricht ist auch 
30 jahre her...

von Andreas R. (daybyter)


Lesenswert?

Mal was anderes...

Hast Du das Projekt mal im musiker-board gepostet? Da gibt es bei den 
Tastendrückern sowohl ein Orgel- als auch ein Bastel-Subforum, wo auch 
solche Projekte besprochen werden.

von Rolf S. (audiorolf)


Lesenswert?

Peter R. schrieb:
> hat. Schließlich muss der ganze Sumps am Ende durch die
> Midi Schnittstelle, und

Da gab es doch jemanden hier mit einem Hochgeschwindigkeits - MIDI 
Protokoll. Das kann auch mehr Bits als nur 8 und damit Controller besser 
auflösen.

von Peter R. (2meter_peter)


Angehängte Dateien:

Lesenswert?

Motoransteuerung

Ich glaube ich brauche mal eure Hilfe: Die Ansteuerung der Fadermotoren 
soll aus einem Atmeg328(davon hab ich reichlich rumliegen) erfolgen. Ich 
würde 2 PWM-fähige Ausgänge nutzen und eine H-Brücke ansteuern. Aus 
meinen Modellbau Bastelerfahrungen (lange her) hätte ich mich jetzt für 
einen BAL6686 entschieden. Der ist aber wohl mittlerweile "out", man 
bekommt ihn nicht mehr, und er hätte den Nachteil gehabt das man damit, 
außer durch "Rückwärts" ansteuern, nicht bremsen kann.

Also bau ich die Brücke vieleicht diskret auf. Dazu würde ich bipolare 
Transistoren nehmen die 1A vertragen und als H-Brücke schalten (Bild 
H-Brücke_2), hier und da noch ne Freilauf Diode, fertig. Schöner wäre 
jedoch wenn es sowas als IC gäbe, von mir aus auch mit FETs.

Daher die Frage: Hat jemand ne Empfehlung zu dem Thema ?

Greetinx,
Peter

: Bearbeitet durch User
von Peter R. (2meter_peter)


Lesenswert?

Kurze Zwischenmeldung

hier gibt es eine H-Brücken Übersicht:
https://www.mikrocontroller.net/articles/H-Br%C3%BCcken_%C3%9Cbersicht
Ich glaube ein L6202 ist für mich das richtige.

Greetinx,
Peter

von Peter R. (2meter_peter)


Lesenswert?

Aktueller Stand

Nach dem ich mir noch das ein oder andere Detail überlegt habe ist dies 
nun der aktuelle Stand.

Upper und Lower Manual hängen an je einem Scan µC um eine möglichst hohe 
zeitliche Auflösung zu erreichen. Das Pedal hängt zusammen mit dem 
Schweller, der eine analoge Spannung erzeugt, und ggf einigen Fusstaster 
für den Abruf von Presets an einem (mehr oder weniger baugleichen) 
Scanner der im Pedalgehäuse sitzt. Die Verbindung zum Aux µC geschieht 
über RS485, zunächt einmal unidirektional. Wenn ich mir den Spass 
erlaube im Pedalgehäuse eine Anzeige zu integrieren dann auch 
bidirektional, an sonsten ist die TX Leitung seitens des Aux µC frei.

Die Drawbars erhalten je Motorfader einen eigenen Controller der über 
UART ansprechbar ist. Mit erstaunlich wenig Hardware 
(www.mikrocontroller.net/topic/25045) lässt sich darin sogar der 
"Anpacksensor" realisieren. Damit stellt der Drawbar µC eine 
wiederverwendbare Einheit dar.

Alle weiteren Schalter (Reverb, Vibrato, Percussion etc) hängen direkt 
am Aux µC. Ebenfalls direkt am Aux µC hängt das Diplay (wenn es eins 
gibt), das Keypad zum Abrufen und Speichern von Presets, die 
Schnittstelle zur Mem Karte und die Midischnittstelle(n).



Entwurf 5:


+-----------------+                   +------------+      +-----------+
| µC Upper Manual |<------8x Col------| µC      TX |----->| RX        |
|                 |-------8x Row----->| Scan       |      |           |
+-----------------+                   | (644)      |      |           |
                                      |            |      |           |
+-----------------+                   |            |      |  µC Aux   |
| µC Lower Manual |<------8x Col------|            |      |  (2650)   |
|                 |-------8x Row----->|            |      |           |
+-----------------+                   +------------+      |           |
                                                          |           |
                                                          |           |
                                                          |           |
+-----------------+   +------------+                      |           |
| Pedal           |---| µC      TX |--------------------->| RX        |
| 25x Konatkt     |   | Scan   (RX |<---------------------| TX)       |
+-----------------+   | (644)      |                      |           |
                      |            |                      |           |
+-----------------+   |            |                      |           |
| Schweller       |---|            |                      |           |
| 1x Spannung     |   |            |                      |           |
+-----------------+   |            |                      |           |
                      |            |                      |           |
+-----------------+   |            |                      |           |
| Presets         |---|            |                      |           |
| n Kontakte      |   |            |                      |           |
+-----------------+   +------------+                      |           |
                                                          |           |
                                                          |           |
                                                          |           |
+-----------------+   +-----------------+                 |           |
| Drawbar 1       |---| Drawbar µC   TX |---------------->| RX        |
| 1x Motorfader   |---| (328/168)    RX |<---+            |           |
+-----------------+   +-----------------+    |            |           |
                                             |            |           |
+-----------------+   +-----------------+    |            |           |
| Drawbar 2       |---| Drawbar µC   TX |----+            |           |
| 1x Motorfader   |---| (328/168)    RX |<---+            |           |
+-----------------+   +-----------------+    !            !           !
         .                                   .            .           .
         .                                   |            |           |
+-----------------+   +-----------------+    |            |           |
| Drawbar 20      |---| Drawbar µC   TX |----+            |           |
| 1x Motorfader   |---| (328/168)    RX |<----------------| TX        |
+-----------------+   +-----------------+                 |           |
                                                          |           |
                                                          |           |
                                                          |           |
+-----------------+                                       |           |
| Schalter        |-------------------------------------->|           |
| ca 10 Kontakte  |                                       |           |
+-----------------+                                       |           |
                                                          |           |
+-----------------+                                       |           |
| Keypad          |-------------------------------------->|           |
| n Kontakte      |                                       |           |
+-----------------+                                       |           |
                                                          |           |
+-----------------+                                       |           |
|                 |                                       |           |
| Display         |<-------------8/4Bit + E + RS----------|           |
|                 |                                       |           |
+-----------------+                                       |           |
                                                          |           |
+-----------------+                                       |   Midi    |
|                 |                                       |           |
| Mem Card        |<--------------------?---------------->|           |
|                 |                                       |  T  T  R  |
+-----------------+                                       |  X  X  X  |
                                                          +-----------+
                                                             |  |  ^
  Aux MIDI Out <---------------------------------------------+  |  |
                                                                |  |
                                                                |  |
                         +--------------------------+           |  |
                         |                          |           |  |
                         |   Hammond MX1    Midi In +<----------+  |
     Audio Out <---------|  Midi Expander           |              |
                         |                 Midi out +-----------+  |
                         |                          |           |  |
                         +--------------------------+           |  |
                                                                |  |
                                                                V  |
                                                             Midi  Midi
                                                             out   in


Erste Baustelle wir der Scan µC sein. Der Aufbau wird so sein das er je 
nach Bestückung die Manuale oder das Pedal versorgt. Testweiese wird er 
direkt die Midi Schnittslle bedienen, so lässt sich schon mal ne ganze 
Menge entwickeln und testen.

Greetinx,
Peter

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.