Forum: Mikrocontroller und Digitale Elektronik Motorfader Midi


von Fabian F. (fabiii9)


Lesenswert?

Hallo zusammen,

ich habe ein paar Fragen zu meinem neuen Bauprojekt.

(1) Ich suche einen Mikrocontroller mit dem ich viele Potis abfragen 
kann (viele ADC-Eingänge).

(2) Oder ist es möglich diese Bausteine an meinen Atmega8 zu hängen und 
dann darüber die Potis abfragen. (Es werden um die 20 Potis abgefragt.)
Wo finde ich Literatur über das einlesen mit solchen Chips?
http://www.reichelt.de/ICs-TLC-TSA-/TLC-549-CP/3//index.html?ACTION=3&GROUPID=5480&ARTICLE=39797&SHOW=1&OFFSET=16&;

(3)Ich habe Motorfader. Mit dem Mikrocontroller möchte ich den fader 
abfragen und das passende Midievent ControlChange senden.
Das habe ich schon hinbekommen.
Motorfader: 
http://www.reichelt.de/Schiebepotis/RS60N11M9-LIN5K/3//index.html?ACTION=3&GROUPID=3713&ARTICLE=73883&SHOW=1&OFFSET=16&;

(4) Wie kann ich aber das Midi-Out vom PC auswerten und in 
"Motorbewegung" umwandeln.
Der Fader soll dann an die entsprechende Position fahren. (Midi sendet: 
0-127
0 = Fader steht ganz unten; 127: Fader steht ganz oben.

Das sind viele Fragen.

Würde mich um jede Antwort freuen, um einfach mal abzuschätzen wie 
schwer realisierbar es ist.

Vielen Dank
Gruß
Fabi

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Fabian Müller schrieb:
> Hallo zusammen,
>
> ich habe ein paar Fragen zu meinem neuen Bauprojekt.
>
> (1) Ich suche einen Mikrocontroller mit dem ich viele Potis abfragen
> kann (viele ADC-Eingänge).

Wenn diese Limitierung nicht wäre, welchen µC hättest du denn sonst 
genommen? Sprich: mit welchem µC (bzw. µC-Familie) kannst du umgehen?

> (2) Oder ist es möglich diese Bausteine an meinen Atmega8 zu hängen

Ist auch möglich.


> Wo finde ich Literatur über das einlesen mit solchen Chips?

Da wirst du wahrscheinlich nicht viel finden, weil es eigentlich recht 
trivial ist. Der IC, den du ansprechen möchtest, dem schaltest du den CS 
Pin auf 0 (damit fühlt sich dieser Baustein angesprochen), und mit jedem 
Puls auf der Clock Leitung taktet der IC das nächste Bit raus.

Im Grunde ist das nichts anderes, wie das Einlesen von Daten von einem 
Schieberegister. Nur mit Bedienung einer CS (Chip Select) Leitung.


Man könnte auch, wenn du mit deiner µC-Familie auf du und du stehst, 
eine Lösung ins Auge fassen, in der sich einer deiner gewohnten µC um 
ein paar derartige Motorfader kümmert und ein Master-µC den anderen 
Anweisungen gibt, was zu tun ist.
Der Haupt-µC fragt dann einen der anderen: "auf welchem Wert steht 
deiner Fader Nummero 2 gerade?", bzw: "fahre den Fader Nummero 3 auf 
Position 123".

Ich bin zwar kein Fan von Multiprozessor-Lösungen, aber in diesem Fall 
wäre das eine einfache Sache. Zumal du ja nicht nur Pins für die ADC 
brauchst, sondern ja auch noch den Motor jedes einzelnen Faders 
ansteuern können musst, was dann wunderbar in die jeweiligen 
Satelliten-µC passen würde.


Apropos Motor:
> (3)Ich habe Motorfader. Mit dem Mikrocontroller möchte ich den fader
> abfragen und das passende Midievent ControlChange senden.
> Das habe ich schon hinbekommen.

Schön.

> (4) Wie kann ich aber das Midi-Out vom PC auswerten und in
> "Motorbewegung" umwandeln.

Kannst du denn einen Fadermotor prinzipiell erst mal zum Drehen bringen?

> Der Fader soll dann an die entsprechende Position fahren. (Midi sendet:
> 0-127
> 0 = Fader steht ganz unten; 127: Fader steht ganz oben.

Das ist dann ganz einfach.
Dein MIDI sagt dir, du sollst den Fader auf 78 stellen. Der ADC teilt 
dir aber mit, dass der Fader gerade auf 56 steht. Also muss der Motor so 
eingeschaltet werden, dass der Wert größer wird (also entweder rechts 
rum drehen oder links rum drehen, je nachdem wodurch der Wert größer 
wird). Ein paar Hunderstelsekunden später stellt dein Programm fest, 
dass der Fader momentan bei 58 steht, also immer noch zu wenig für die 
Vorgabe von 78. Also lässt du den Motort weiterdrehen. Solange, bis der 
Wert, den du vom ADC kriegst mit dem übereinstimmt, den du vom MIDI 
gekriegt hast.

Voraussetzung ist natürlich, dass du so einen Motor erst mal überhaupt 
zum Drehen kriegst. Ab dann ist es nur noch ein Vergleich: Wo soll der 
Fader stehen? Wo steht er tatsächlich? Wie rum muss daher der Motor 
drehen?

: Bearbeitet durch User
von Fabian F. (fabiii9)


Lesenswert?

Hallo,
erstmal vielen Dank für deine Antwort !!!

Karl Heinz schrieb:
> Im Grunde ist das nichts anderes, wie das Einlesen von Daten von einem
> Schieberegister. Nur mit Bedienung einer CS (Chip Select) Leitung.

Ist es möglich diese Chips in Reihe zu schalten?

Karl Heinz schrieb:

> Wenn diese Limitierung nicht wäre, welchen µC hättest du denn sonst
> genommen? Sprich: mit welchem µC (bzw. µC-Familie) kannst du umgehen?

Ich würde am liebsten einen Atmega8 oder Atmega32 nehmen.

Karl Heinz schrieb:
> Kannst du denn einen Fadermotor prinzipiell erst mal zum Drehen bringen?

Was ist eigentlich in so einem Motorfader?
Ein Schrittmotor?
Dann brauche ich einen L297 und L298. oder?


Vielen Dank
Gruß
Fabi

von Zwanzig Euro (Gast)


Lesenswert?

Karl Heinz schrieb:
> Dein MIDI sagt dir, du sollst den Fader auf 78 stellen. Der ADC teilt
> dir aber mit, dass der Fader gerade auf 56 steht. Also muss der Motor so
> eingeschaltet werden, dass der Wert größer wird (also entweder rechts
> rum drehen oder links rum drehen, je nachdem wodurch der Wert größer
> wird). Ein paar Hunderstelsekunden später stellt dein Programm fest,
> dass der Fader momentan bei 58 steht, also immer noch zu wenig für die
> Vorgabe von 78. Also lässt du den Motort weiterdrehen. Solange, bis der
> Wert, den du vom ADC kriegst mit dem übereinstimmt, den du vom MIDI
> gekriegt hast.

ganz so einfach ist es leider nicht. rechtzeitiges abbremsen ist gefragt 
sonst fährt er übers ziel hinaus. und zittert lezendlich nahe der 
zielposition. Pid reglung ist das Zauberwort. dann sollte man den motor 
abschalten wenn der fader festgehalten wird.

Fabian Müller schrieb:
> Was ist eigentlich in so einem Motorfader?
> Ein Schrittmotor?

leider nicht ganz normaler dc motor ohne getriebe. nur ganz wenige 
Motorumdrehungen schieben den Fader von 0auf 100%

von Karl H. (kbuchegg)


Lesenswert?

Zwanzig Euro schrieb:

> ganz so einfach ist es leider nicht. rechtzeitiges abbremsen ist gefragt
> sonst fährt er übers ziel hinaus. und zittert lezendlich nahe der
> zielposition. Pid reglung ist das Zauberwort. dann sollte man den motor
> abschalten wenn der fader festgehalten wird.

Ich wollte es für den Anfang nicht zu kompliziert machen.
Der TO sieht mir so aus, als ob er noch ganz andere, viel simplere 
Probleme hat.

von Rolf Magnus (Gast)


Lesenswert?

Fabian Müller schrieb:
> Karl Heinz schrieb:
>> Kannst du denn einen Fadermotor prinzipiell erst mal zum Drehen bringen?
>
> Was ist eigentlich in so einem Motorfader?
> Ein Schrittmotor?

Soweit ich das dem Datenblatt entnehmen kann, ein einfacher 
Gleichstrommotor. Im Prinzip ist die Steuerung dann ähnlich wie bei 
einem Modellbau-Servo. Du hast ein Poti, das du mit dem Motor so 
verstellen mußt, daß es an einer bestimmten Position steht. Nur mußt du 
nach Erreichen der Position diese nicht halten, sondern einfach den 
Motor abschalten.

Fabian Müller schrieb:
> Karl Heinz schrieb:
>> Im Grunde ist das nichts anderes, wie das Einlesen von Daten von einem
>> Schieberegister. Nur mit Bedienung einer CS (Chip Select) Leitung.
>
> Ist es möglich diese Chips in Reihe zu schalten?

Wenn du mit "in Reihe" eigentlich parallel meinst, dann ja. Dafür ist 
der CS-Anschluss ja da.

von Tim (Gast)


Lesenswert?

Hier http://www.ucapps.de wird Dir geholfen. Dann musst du das Rad nicht 
neu erfinden :)

von RomanK (Gast)


Lesenswert?

Hallo Tim,

den Tipp hat er schin mal erhalten, aber offensichtlich ignoriert.

Gruss

Roman

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Sehr viele Analogeingänge kann man recht einfach mit Analogmultiplexern 
abfragen. Nimm am besten den ATMega32, der hat neben den 8 ADC Eingängen 
auch noch genügend Steuerleitungen frei. An jeden ADC Eingang kommt der 
Ausgang eines Multiplexers, wie z.B. dem CD4051. Dieser hat 8 Eingänge, 
die mittels eines 3-bit Portes separat auf den gemeinsamen Ausgang 
geschaltet werden können (wie ein Schalter mit 8 Stellungen).
Die MC Software setzt die Steuerleitungen A,B und C, die auf alle 
Multiplexer gehen, auf z.B. 000 und liest dann an den 8 ADC Eingängen 
die Werte von den 8 Multiplexern in Stellung 0. Dann werden die 
Steuerleitungen auf 001 gesetzt und die Werte dafür gelesen, usw.
Insgesamt 64 Werte würden sich so mit den 8 ADC Eingängen und 8 
Multiplexern lesen lassen. Falls das noch nicht reicht, gibt es auch 
z.B. den CD4067 mit 16 Eingängen und 4 Steuerleitungen.

von Fabian F. (fabiii9)


Lesenswert?

Hallo,
also ersteinmal vielen Dank!!!!

Werde dann mit der Planung mal anfangen.
habt mir schon sehr geholfen.
Habe dann nur noch eine Frage.

Rolf Magnus schrieb:
> Soweit ich das dem Datenblatt entnehmen kann, ein einfacher
> Gleichstrommotor. Im Prinzip ist die Steuerung dann ähnlich wie bei
> einem Modellbau-Servo. Du hast ein Poti, das du mit dem Motor so
> verstellen mußt, daß es an einer bestimmten Position steht. Nur mußt du
> nach Erreichen der Position diese nicht halten, sondern einfach den
> Motor abschalten.

Muss ich dann PWM machen oder kann ich auch einfach den Motor für eine 
bestimmte Zeit anschalten.
Das heißt einfach den Pin auf 1 für eine bestimmt Zeit setzen und danach 
wieder auf 0 setzen.
Die Zeit kann man ja ausrechnen, indem man die Aktuelle Position des 
Motors weiß und die Position wo er hin soll und die Zeit wie lang er 
braucht um ein "Schritt" zu machen.
Geht das???

Vielen Dank
Gruß
FAbi

von Dominik S. (dasd)


Lesenswert?

Fabian Müller schrieb:
> Muss ich dann PWM machen oder kann ich auch einfach den Motor für eine
> bestimmte Zeit anschalten.
> Das heißt einfach den Pin auf 1 für eine bestimmt Zeit setzen und danach
> wieder auf 0 setzen.

PWM musst du nicht machen. Wenn du den Motor aber auch mit weniger als 
"Vollgas" bewegen willst könnte es nicht schaden ;)
Dazu musst du eben mal probieren wie schnell sich der Fader bei Vollgas 
bewegt.

> Die Zeit kann man ja ausrechnen, indem man die Aktuelle Position des
> Motors weiß und die Position wo er hin soll und die Zeit wie lang er
> braucht um ein "Schritt" zu machen.
> Geht das???

Er macht ja keine "Schritte".
Das wird so wohl nicht sehr genau werden.
Siehe oben!

Für's erste:
Anschalten, Position abfragen, warten, Position abfragen, warten, ..., 
wenn Position == Sollposition abschalten

Für den sinnvollen Betrieb:
PI(D)-Regel-Algorithmus implementieren (klingt schlimmer als es ist).

von Tim (Gast)


Lesenswert?

Fabian Müller schrieb:
> Das heißt einfach den Pin auf 1 für eine bestimmt Zeit setzen und danach
> wieder auf 0 setzen.
> Die Zeit kann man ja ausrechnen, indem man die Aktuelle Position des
> Motors weiß und die Position wo er hin soll und die Zeit wie lang er
> braucht um ein "Schritt" zu machen.
> Geht das???

Theoretisch ja. Praktisch nein!
Deine Fader werden nicht zu 100% baugelich sein. Dazu kommt der 
natürliche Verschleiß, temperaturabhängige Schwergängigkeit der Fader, 
Umwelteinflüsse,...
Und was passiert, wenn der Fader mit den Fingern gehalten wird, und ein 
MIDI-Event einen Fader bewegen will?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Tim schrieb:
> Und was passiert, wenn der Fader mit den Fingern gehalten wird, und ein
> MIDI-Event einen Fader bewegen will?

Ein 'kluger' Algorithmus könnte sich merken, ob der Fader bereits fertig 
gefahren war und dann anhand einer Änderung des AD Signals auf einen 
User Eingriff schliessen und den Motor freigeben. Wenn man den Fader 
während des Fahrens festhält, wird ein PID Regler erstmal Stoff geben 
und mit verstärkter Kraft den Sollwert anfahren wollen, das könnte man 
aber auch begrenzen und als Usereingriff werten. Könnte Spass machen, so 
etwas zu programmieren.

von Tim (Gast)


Lesenswert?

Matthias Sch. schrieb:
> Könnte Spass machen, so
> etwas zu programmieren.

Ich weiß :) Und nachdem der TO meinen Link zu µcapps ignoriert, und er 
es anscheinend besser weiß, klinke ich mich hier aus.
Generation Arduino eben...

von Rolf Magnus (Gast)


Lesenswert?

Matthias Sch. schrieb:
> Tim schrieb:
>> Und was passiert, wenn der Fader mit den Fingern gehalten wird, und ein
>> MIDI-Event einen Fader bewegen will?
>
> Ein 'kluger' Algorithmus könnte sich merken, ob der Fader bereits fertig
> gefahren war und dann anhand einer Änderung des AD Signals auf einen
> User Eingriff schliessen und den Motor freigeben.

Die elegantere Variante ist touch sense.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Rolf Magnus schrieb:
> Die elegantere Variante ist touch sense.

Genau, könnte auch sinnvoll sein. Deswegen auch der Konjunktiv in meinem 
Vorschlag - und die Bemerkung, das es Spass machen könnte, sowas zu 
programmieren. Da hängt viel mehr dran als nur der Motor- und 
Einregelmechanismus, sondern auch ein gutes Bedienkonzept, dann man 
möchte sicher auch mal speichern und so.
Das alte Neumannpult, das wir im Theater hatten, hatte z.B. gar keine 
Motorfader, sondern LED Zeilen daneben. Die konnte man dann mit dem 
Fader 'einfangen' und bewegen. Auch nicht schlecht, aber Motorfader 
wären uns damals lieber gewesen.

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.