Ausgangssituation |
Der Drehgeber |
Speicher satt |
Rechenknecht |
Schaltpläne, Platine, Quellcode |
Ein Gehäuse für die Elektronik |
Innenaufbau |
Bedinungsanleitung |
Endprodukt |
Irgendwie muss ich mich nicht ausgelastet gefühlt haben, als ich mir gedacht habe, mal was wohnzimmertaugliches mit Elektronik auf die Beine zu stellen.
Es muss also nicht nur funktionieren,
sondern auch noch ein akzeptables Äußeres vorweisen, damit es im Wohnzimmer
geduldet wird.
Ich habe mir überlegt, eine Kiste zu bauen,
welches bei den Gesangsübungen meiner Frau die klavierspielende Nachbarin zumindest
zeitweise ersetzen kann.
Erstaunlicherweise wurde die Idee sofort positiv aufgenommen.
Die Kiste hat für mich den Vorteil, dass die fiesen Tonübungen dann problemlos
während meiner Arbeitszeit stattfinden können. So muss ich keine Gedanken
daran verschwenden, wie ich die beiden ausgliedern könnte
Am einfachsten ginge das mit einem popligen Cassettenrecorder. Aber dann muss man bei der Aufnahme leise sein und man man kann nicht so bequem die Stücke auswählen und auch die Abspielgeschwindigkeit nicht ohne Tonhöhenverschiebung ändern.
Natürlich könnte ich mir einen gebrauchten Sequenzer angeln. Aber die Teile können viel zu viel und sind von daher recht kompliziert zu bedienen. Siehe dieses Video über einen alten Sequenzer aus 1984.
Also wird das Teil selbst gestrickt.
Die Anforderungen: Aufnehmen, Abspielen, Vor-/Rückspulen. Und das für mindestens 100 Lieder. Das sollte doch zu machen sein!
Für die bequeme Bedienung brauche ich ein Display und ein paar Bedienknöpfe.
Für die ganze Einstellerei haben sich
Drehknöpfe bewährt. Allerdings
finde ich, dass die üblichen Drehgeber viel zu wenig Schritte pro Umdrehung
haben. Früher konnte ich an meinem Gurkenradio mit 'ner halben Umdrehung zwischen
Brüllen und Flüstern wählen. Bei meinem vergleichsweise sauteuren Autoradio
muss ich dreimal zugreifen, weil die Anatomie meines Handgelenks keine 360°
zuläßt.
Und wenn ich zu schnell drehe, ignoriert das Teil die Hälfte
der Pulse. Das muss besser gehen!
Ich wollte schon immer mal einen Stepper als Drehgeber missbrauchen. So ein Stepper wirkt als Generator wenn man ihn dreht. Und da er pro Umdrehung so 200-400 Schritte hat, hat man eine irre Auflösung - kein Vergleich zu den Drehgebern in den Autoradios. Von den 4 Kandidaten
hat sich der oben rechts als Favorit erwiesen, da er selbst bei langsamer Drehung noch ein ordentliches Signal liefert.
Die Auswertung war ein wenig abenteuerlich. Da so ein Stepper bei schnellem Drehen locker 50V raushaut, habe ich sein Signal einfach mit 2 Dioden kurzgeschlossen. Die Spannung ist dann entweder 0V, +0,7 oder -0,7V. Anfangs wollte ich einfach diese Spannung mit einem Komparator messen. In Wirklichkeit habe ich damit einen prima Empfänger für alles mögliche gehabt. Ein Fall für die Tonne...
Das ging gar nicht!
Also habe ich auf Lochraster ein wenig Grundlagenforschung betrieben.
Folgende Schaltung lieferte dann ein super Drehgebersignal:
Den 470K Widerstand braucht man nicht bei jedem Stepper - muss man ausprobieren.
Die Midi-Daten, welches das Piano liefert, sind ja sehr kompakt. Taste drücken: 3 Bytes, loslassen: nochmal 3 Bytes. Für die Zeitabstände kommen nochmal 2 Bytes hinzu - macht pro Note 10 Bytes. Da brauche ich keine Festplatte, um ein paar Lieder zu speichern.
Bei meinem Fotoapparat war eine 16MB SD-Karte dabei.
Platz für 4 Fotos. Herzlichen Dank! Aber zum Glück habe ich das
unbrauchbare Teil aufgehoben.
Auf 16 MB gehen nämlich 1,6 Millionen
Tastendrücke. Platz genug, um einen ganzen
Tag lang wie bekloppt auf dem Klavier rumzuhämmern
und alles millisekundengenau aufzuzeichnen!
Eine SD-Karte
lässt sich mit relativ wenig Aufwand (4 Leitungen plus Stromversorgung)
an einen Prozessor hängen. Gerade mal 6 Widerstände für 3 Spannungsteiler
waren nötig, da der Prozessor auf 5V und die Karte auf 3.3V läuft.
Und natürlich eine 3.3V Stromversorgung.
Hier der Probeaufbau;
Die SD-Karte braucht ja auch irgendwas, wo man sie reinstecken kann. Der Kontaktabstand passt zu den alten 5 1/4" Floppy-Steckern oder zu einem
Stück ISA-Slot. Es gibt auch Bastler, die eine Micro-SD-Karte kaufen und den beiliegenden Adapter fest einlöten.
Ich hatte das Glück, dass mein Kollege sein Autoradio geschrottet hat und ich den dort eingebauten Kartenslot raussägen konnte. Dabei sind Unmengen an Elektronik und Elektromechanik übrig geblieben - Benutzt habe ich bisher nur den Kartenslot.
Zu Testzwecken habe ich die Karte mal mit 'nem Muster vollgeschrieben. Leider hatte ich Mist bei der Sektoraddressierung gebaut, so dass immer Sektor 0 beschrieben wurde. Der hat nun 32000 Schreibzyklen auf dem Buckel. Obwohl ihn das nicht umgebracht hat, steckt nun eine nagelneue 1GB Karte im Slot, mit der man monatelang aufzeichnen kann.
Da ein FAT-Filesystem nicht mehr in den Programmspeicher passte, habe ich die Karte in einem eigenen Format benutzt. Grob sieht das so aus: Je Lied ein Infosektor und eine feste Anzahl von Datensektoren. Ist eine riesige Platzverschwendung, aber egal - Platz ist ja genug da! Über die RS232-Schnittstelle kann man die Daten zwischen PC und Recorder austauschen. Oder man muss die Karte im PC roh auslesen.
Die ganzen Probeplatinchen habe ich an ein STK500-Experimentierboard angeschlossen um mit der Softwareentwicklung zu beginnen.
Oben in der Mitte befindet sich das Midi-Interface: ein CD4011 mit 2
Widerständen und ein Optokoppler.
Unter der Stepper mit einem schön großen
Drehknopf.
Mit diesem
Drahtverhau konnte ich die
grundlegenden Routinen für die Stepper-Auswertung, Midi-Übertragung und das Lesen und
Schreiben auf SD-Karte testen. Als Prozessor habe ich eine Atmega8 reingesteckt - weil der grade
so rumlag.
Das Hirn der Schaltung ist inzwischen ein ATmega16 Prozessor,
da das Programm in den kleinen Bruder nicht mehr reinpasste.
Der hat 1K RAM - immer noch
recht knapp, wenn man bedenkt, dass man von der SD-Karte immer einen ganzen
Sektor mit 512 Bytes lesen/schreiben muss.
Für die bequeme Programmierung brauche ich ein echtzeitfähiges Multitasking-Betriebssystem. Schliesslich müssen Anzeige, Drehgeber, Tastenbehandlung und der Datenfluss zwischen SD-Karte und Midi-Schnittstelle unabhängig voneinander - aber quasi zugleich funktionieren.
Programme wie FreeRTOS leisten sowas. Aber das Teil war mir zu mächtig. Das meiste davon brauch ich nicht...
So ein Betriebssystem ist schnell und einfach gestrickt: Eine Interrupt-Routine speichert alle Register der laufenden Task, schaltet um auf die nächste Task und stellt deren Register wieder her.
Der ATmega16 hat nun aber 32 Register.
Pro Taskwechsel müssen also 32 Register gespeichert und gelesen
werden. Mit Umschaltung sind das rund 80 Befehle.
Wenn ich dann 5
Tasks laufen habe, werden also 400 Befehle abgearbeitet, bis jede Task mal dran war
- ohne das irgendwas produktives passiert ist.
Viel mehr als 400 Befehle hat wahrscheinlich der ganze Kram nicht, der in den Tasks abzuarbeiten ist. Das kommt mir irgendwie zu kopflastig vor.
Es gab ein Leben vor dem Multitasking. Also warum einfach, wenn es auch richtig kompliziert geht.
Alle Routinen sind nun so gestrickt, dass sie sich nach wenigen Befehlen beenden. In einer Hauptschleife
werden dann einfach alle gerade notwendigen Routinen nacheinander aufgerufen.
Dazu hat jede
Task eine Statusmaschine, die sich merkt, wie weit der Algorithmus beim letzten Durchlauf
gekommen ist. Wenn eine Wartezeit notwendig ist, wird ein Timerwert ausgelesen und die Routine
verlassen. Beim nächsten
Durchlauf wird dann getestet,
ob genügend Zeit verstrichen ist, sonst wird wieder direkt rausgesprungen.
Das war zugegebenermaßen 'ne leichte Gehirnverknoterei. Aber das Ergebnis ist verblüffend!
Es ist nirgends eine Verzögerung zu merken. Und es ist kein Problem, mal schnell 500 Lieder weiter zu springen.
Der Programmspeicher ist jetzt zu 88% voll. Viel mehr wäre also nicht reingegangen...
Schaltpläne hab ich als PDF-Datei und als original Protel-Dateien zusammen mit dem Quellcode der Software hier hinterlegt: 86_midirecorder.zip
Literaturhinweise stehen im Quellcode. Ein Timing-Diagramm für SD-Kartenzugriffe habe ich beigepackt.
Anfangs hatte ich eine SMD-Version des ATmega vorgesehen. Aber dann musste ich unzählige Durchkontaktierungen machen, da die Leiterbahnen so eng zusammen lagen. Ich war ehrlich erstaunt, dass die DIL40-Version letztendlich erheblich weniger Platz auf der Platine brauchte, weil die Leiterbahnführung viel entspannter war.
Als Wohnzimmergerät darf es natürlich nicht in einer Pappschachtel mit einem Knäul Kabeln daherkommen. Ich muss also ein schickes Gehäuse besorgen.
Was einem da von den Elektronikversendern geboten wird ist schon erschreckend. Was habe ich hässliche
ABS und PVC Kisten gesehen. Selbst die schick mit ein paar Alu-Profilen aufgemotzten Teile taugen
nur für's Labor.
Der ganze Kram ist entweder nicht wohnzimmertauglich oder nicht benutzerfreundlich.
Also selber machen.
Und zwar in schwarz-glänzender Optik - So wie ein Klavier. Wenn schon aufwändig - dann richtig.
Den Entwurf habe ich erstmal aus Pappe gebaut und mir genehmigen lassen.
Das Teil habe ich dann aus Sperrholz nachgebaut und komplett mit 2-Komponenten Spachtelmasse überzogen.
Dann wurde die Kiste nass geschliffen und wieder gespachtelt. Da mir das Gehäuse ein wenig zu instabil vorkam, habe ich alle Kanten mit Leisten verstärkt. Einige konnten mit der Leimzwinge angepresst werden, für andere war eine etwas eigenwillige Konstruktion nötig:
Irgendwie wurden die Oberflächen nicht richtig eben. Auf Rat eines Flugmodellbauers hab ich das Ding dann mal mit seinem Ein-Komponenten Spachtel bearbeitet - das ging schon viel besser. Anschließend habe ich einen 2-Komponenten Primer genommen und den Kasten satt Grau angestrichen und mit 800er Papier nass geschliffen. Das machte schon richtig was her. Dann probeweise schwarz angesprüht und wieder leicht angeschliffen. Ein irres Muster kam zum Vorschein:
Die Unregelmäßigkeit bedeutet: Das Teil ist nicht eben! Also nochmal das Ganze: Spachteln, schleifen, spritzen, anschleifen und auch wieder ärgern:
An allen Kanten war Feuchtigkeit ins Holz eingedrungen und hatte es aufquellen lassen. Da waren jetzt überall Striche in Faserrichtung zu sehen.
Schon wieder schleifen, Spachteln etc. - Aber jetzt hatte ich meine Ansprüche so weit runtergeschraubt, dass es mir gut genug war.
Die erste Schicht Glanzlack war dann auch schon beeindruckend.
Der Lack ist irre: nach 2 Minuten ist das Zeug trocken!
Innen sind nun diverse Klötzchen zum Anschrauben der ganzen Teile eingeleimt:
Beim hantieren mit dem Gehäuse musste ich feststellen, dass zwar der Lack wahnsinnig schnell trocknet - der Unterbau war aber wohl noch nicht gänzlich ausgehärtet. Jedenfalls hatte ich einen fetten Daumenabdruck auf der Oberseite.
Grmbl... Alles wieder abschleifen, spachteln, nochmal schleifen, spachteln, feinschleifen und endlich wieder lackieren. Zum feinschleifen habe ich abschließend 1200er Papier genommen - das ist so fein, damit kann man auch sein Uhrglas aufpolieren.
Hier noch ein paar schöne Schleifmuster, die einen für das frustige Gespachtele entschädigen:
Inzwischen habe ich das Teil als fertig
definiert - mir sieht's gut genug aus (perfekt ist wohl was anderes). Bilder dazu stehen weiter
unten...
Drinnen sieht das Gehäuse so aus:
Ein
paar Details:
Das untere
Flachbandkabel dient zum Programmieren
des ATmega. Die SD-Karte hängt noch lose in der Gegend rum und die Anzeige wird
einfach von einem Stück Fischer-Technik gegen die Front gedrückt.
Die
Midi-Buchse paßt exakt - schade nur, dass das Sperrholz so dick ist, dass das Gewinde
hinten nicht mehr rausschaut.
Gut, dass es Epoxidharz gibt.
Die Taster an der Frontseite sind natürlich auch zu kurz. Da habe ich allerdings Gewinde in die Frontplatte geschnitten : Den Taster schön eingefettet, 2K-Spachtelmasse ins Bohrloch und dann reingeschraubt. Hält prima.
Als Betriebsanzeige dient ein winziger Lichtpunkt an der Vorderseite. Dieser ist grün, wenn ein angeschlossenes Midi-Gerät erkannt wurde, sonst rot.
Der edel aussehende Leuchtpunkt ist Stück Glasfaser (1mm Durchmesser), welches einfach in ein Loch in der Frontplatte geklebt wurde. Die Glasfaser endet in einem Optokoppler - was in diesem Fall ein durchbohrter Holzklotz ist:
Links geht das Glasfaserkabel rein,
rechts steckt eine eine Duo-Led drin.
Die Bedienung des Gerätes
ist so simpel, dass ich es meiner
Frau nur einmal vorführen mußte. Auch die Kinder kommen prima damit zurecht. Man kann
1000 Lieder speichern,und jedem einen Namen geben. Beim Abspielen läßt sich die Geschwindigkeit
einstellen und man kann in den Stücken vor- und zurückspulen.
Zusätzlich
lassen sich Midi-Kanal und Midi-Instrument auswählen.
Auch eine Datenaustausch
(via RS232) zum PC ist eingebaut - allerdings habe ich noch keine Software
für den PC geschrieben, die mit dem Recorder kommuniziert.
Macht ja
nix. Bisher hat die noch keiner vermisst...
Das Gerät sieht bei mir nun ungefähr so aus:
Hm, gar nicht so einfach, ein schwarzes Gerät schön zu fotografieren. Hier noch zwei Versuche:
Und das Schöne ist:
Dieses Gerät wurde im Wohnzimmer akzeptiert! Gibt also ein prima
Kommentieren | Startseite |
Diese Seiten sind darauf optimiert mit möglichst jedem Browser zu funktionieren.
Aber der Seitenquelltext (strg-U) sieht auch interessant aus, zumindest wenn man ihn mit einem Monospace Font in sehr kleiner Schriftgröße betrachtet.