Universal Control Voltage Module

Aktuelle Funktionen:
  • MIDI2CV (bis 8 Kanäle)
  • MIDIMON
  • CV2CV (Quantizer)
  • CV2MIDI
  • Voltmeter

    Weitere mögliche Anwendungen:
  • Sequenzer
  • Appregiator
    ...
  • last update 06.07.2004
    Yeah, und hier ist es, mein erstes µController basiertes Modul, das einzigartige :-) Universal Control Voltage Module (UCVM). Es basiert auf einem Atmel AT90S8535. Die Hauptaufgabe dieses Moduls wird allerdings die MIDI2CV-Funktion sein, allerdings kann man damit noch mehr machen, und ich habe noch ein paar Extras eingebaut.

  • Acht CV- und acht GATE-Ausgänge: Das UCVM kann bis zu acht Stimmen gleichzeitig erzeugen und somit einen 8-Finger-Akkord direkt umsetzen. Man könnte sich auch andere Aufteilungen der CV-Ausgänge vorstellen, beispielsweise 4 Notenwerte und 4 anschlagdynamische Werte oder 7 Notenwerte und ein anschlagdynamischer Wert, oder 6 Notenwerte, ein anschlagdynamischer Wert und ein Aftertouch u.s.w. Was ich da im einzelnen noch programmieren werde, weiß ich noch nicht.

  • Zwei Analog-Eingänge: Der AT90S8535 verfügt über acht 10 bit ADCs und ich habe zwei davon als analoge Eingänge beschaltet. Bei der CV2CV (Quantizer) Funktion werden die Eingänge quantifiziert und als Noten(spannungs)werte an CV OUT 1 bereitgestellt. Bei der CV2MIDI Funktion wird das Ergebnis als MIDI-Message aufbereitet und ausgegeben (beispielsweise analoge Sequenzer könnten das benutzen oder man könnte sein altes Formant Keyboard als MIDI-Keyboard verwenden (und darauf hat die Welt gewartet :-)))

  • 4x20 Character Display und 3 Funktionstaster: Anzeige der laufenden Funktion / des Modul-Setups, welche mit den Funktionstastern angewählt bzw. konfiguriert wurde. Im Moment werden über F1 (roter Taster) die gewünschten Funktionen selektiert. Die F3-Taste dient dabei als ENTER-Key.

  • ISP Interface, um Controller Software Updates direkt im Modul ohne Programmer durchführen zu können. Seeeeehr nützlich bei 'experimenteller' Software-Entwicklung :-) Man hackt sich eine neue Funktion zusammen, kompiliert, stöpselt den Laptop oder PC in das Modul und macht 'nen Upload, fertig. Ohne ISP müßte man ja jedes Mal den Controller ausbauen, rein in den Programmer, wieder rein ins Modul, ooops, läuft nicht, alles nochmal... das kann's ja wohl nicht sein. - Schema Programmer Interface / Programmer Software. Dieses Interface kann man auch für Speicher-Downloads verwenden, beispielsweise falls man den UCVM als Sequenzer benutzen will und Tracks auf dem PC speichern möchte. Ist auch ein zukünftiges Projekt.
  • Zusammenbau und Hinweise zum Schaltplan

    Die Schaltung weist eigentlich keine Besonderheiten auf. Da ich nicht gerade der weltgrößte Elektroniker bin, bin ich einfach nur glücklich, daß alles zu funktionieren scheint. Die meisten Schaltungsteile habe ich mir aus dem WEB zusammengesammelt; falls irgendjemand etwas als 'seine' oder 'ihre' Errungenschaft erkennt, danke ich 'ihm' oder 'ihr' und hoffe, daß ich die entsprechenden Teile in der Dokumentation weiter verwenden kann. Falls nicht, nehme ichs raus.

    Achtung: Schemas anklicken heißt: DISCLAIMER am Seitenende wird anerkannt!!!

    Control Unit

    Ich habe natürlich mit dem ISP Interface angefangen, um alle neuen Funktionen testen zu können, ohne den Controller jesesmal auszubauen. Weiter ging es mit dem Display Interface, um Status-Werte oder Debugging-Infos von neuen Funktionen anzeigen zu können. Das Display Interface genügt dem HD44780 Lcd Display Standard incl. Backlight Funktion. Letzteres nutze ich allerdings derzeit nicht, da ein 4x20-Display mit Backlight zu teuer war (Ich habe es allerdings mit einem 2x16-Display getestet).

    Als nächstes kam der Test der Funktionstaster. Alles lief nach Plan. Dann habe ich den DAC aufgebaut. Ich habe den DAC08 verwendet, benutze ihn allerdings lediglich mit 6 Bit Auflösung. Später wurde mir klar, daß ich damit auf meine 5-Oktaven Umgebung mit einem Halbton / Bit festgelegt bin, aber für ein MIDI2CV-Modul ist das ok. Außerdem wollte ich nicht alles neu machen (und ich hatte implizit meinen Quantizer :-))
    Für ein einfaches Routing habe ich die entsprechenden Port-Pins möglichst direkt an den DAC angeschlossen, was allerdings dazu führte, daß ich in der Software eine Bit-Konvertierung machen muß.

    Danach habe ich die beiden ADCs getestet. Dazu schrieb ich eine kleine Funktion, welche die anstehenden Analogspannungen über den DAC wieder ausgab, und ich hatte meinen Quantizer :-) Als ich die Ausgangspannungen dann allerdings auf die Formant-VCOs gab, stellte ich fest, daß mein Formant-Keyboard wohl ein kleines CV-Problem in der oberen Hälfte des Keyboards haben muß, was ich ursprünglich durch VCO-Justierung kompensiert hatte, was aber jetzt nicht mehr paßte. Also mußte ich die VCOs erstmal rekalibirieren, hmpf!

    Zum Schluß habe ich mir dann MIDI I/O vorgeknöpft. Das war anfangs ziemlich schwierig und frustrierend, da sich MIDI und ich zum ersten Mal die Hand reichten. Erstmal schrieb ich den MIDIMON, um überhaupt zu sehen, ob was ankommt und wie das in HEX aussieht. Dann stöpselte ich meinen guten alten Elka EK22 rein und wurde von einer Flut von $FE-Bytes überrascht, was ich erstmal nicht einordnen konnte und für einen Fehler in der MIDI Hardware des UCVM hielt. Mit dem Oszi sah ich jedoch, daß diese Bytes tatsächlich vom EK22 kamen, und dann schaute ich erstmal in meine MIDI-Spezifikation, und tatsächlich: Das Byte hat eine Bedeutung, nämlich 'Active Sensing', was etwa 'Aktives rumfühlen' heißt. Aha, super, und was sollte darauf geantwortet werden? Sollte der Formant mit einem 'Hi, hier bin ich' antworten oder wollte der Elka mir damit irgend etwas sagen? Auf jeden Fall hat mir das meinen MIDIMON zugeschrotet, also raus damit per Software-Filter. Dann sah ich tatsächlich so etwas wie MIDI Messages, drei Bytes in Folge, welche mit einem $90 begannen, dann allerdings kam nur noch Müll. Ich machte ein paar Tests, Taste drücken, drei Byte, Taste loslassen, drei Byte, aber es kam nichts, was man hätte auswerten können. Aber halt: Die MIDI -Empfängerseite sendet ja kein Acknoledge nach einer empfangenen Message, also sendet der Sender alles in einem Stream. Ich hatte also wahrscheinlich ein Geschwindigkeitsproblem bzw. Empfangsregisterüberlauf. Ich überarbeitete die Emfangsroutine, und alles lief dann zufriedenstellend.

    GATE und CV Unit

    Beides arbeitet mit Analogspeicherung der vom DAC erzeugten Spannungen. Da nur ein DAC drin ist, habe ich die Spannungen mit zwei 4051 gemultiplext.

    Der erste 4051 tranferiert die stimmenabhängige GATE-Spannung (0 oder 5V) zu einem Kondensator, der die GATE-Spannung zwischenspeichert und über einen Spannungsfolger (1/4 TL064) und einen invertierenden Schmitt Trigger (1/6 40106) ausgibt. Da der Schmitt Trigger invertierend arbeitet, generiert die Software 0V für GATE ON und 5V für GATE OFF.

    Der zweite 4051 überträgt die stimmenabhängige CV zu einem Kondensator, dem ein Spannungsfolger (1/4 TL064) und ein simpler Portamento-Schaltkreis aus einem Portamento-Poti und einem weiteren Kondensator nachgeschaltet ist. Der Portamento-Stufe ist (genau!) ein Spannungsfolger und eine Spannungsaddierer-Stufe für den Nullabgleich und das Halbton-Feintuning nachgeschaltet. Dieser Stufe ist (unglaublich) ein weiterer Spannungsfolger zur Ausgabe nachgeschaltet.

    Der 200k-Trimmer zwischen Stufe 2 und 3 dient dem V/Oct abgleich. Das war nötig, um Bauteiletoleranzen auszugleichen.

    Schemas und Software Bitte Disclaimer am Seitenende beachten!

  • Schema Control Unit
  • Schema GATE und CV Bank
  • Schematic Programmer Interface / Programmer Software
  • UCVM Assembler Source
  • Erfahrungen bei der Arbeit mit dem Modul

    Falls ich nochmal ein solches oder ähnliches Modul designen sollte, würde ich doch das eine oder andere anders aufziehen. Aber das ist ja nun mal die Aufgabe eines Experimental-Moduls, zu lernen, wie man bestimmte Funktionen realisiert oder wie man sie verbessern oder vereinfachen könnte.
    Zuerst: Alle Funktionen arbeiten ordnungsgemäß, aber um das hinzukriegen, mußte ich doch die eine oder andere Hardware-Designschwäche durch Softwaretricks ausgleichen. Ein paar kleine Änderungen an der Hardware würden die Softwarentwicklung doch vereinfachen.

    Was sich nicht ausgleichen ließ war die 6-Bit-Auflösung des DACs. Das ist die minimale Auflösung, um die Ansprüche von 5 Oktaven befriedigen zu können, aber das heißt auch, daß man das Ding für nichts anderes verwenden kann (Skalierbarer Quantizer oder Feintuning). Ich habe halt mit Leiternahnen gegeizt, aber das nächste Mal würde ich doch eher eine 8 oder 10 Bit Auflösung anstreben, um flexibler sein zu können.

    Außerdem ist der ADC des AT90S8535 in der von mir gewählten Beschaltung nicht besonders präzise. Konstante Spannungen werden mit einer Abweichung von +/- 0x020 von Meßvorgang zu Meßvorgang digitalisiert. Ich vermute, daß das an der Verbindung von Vref+ an 5V Spannungsversorgung und RefGround an der allg. Masse liegt. Auch hier war ich zu faul, Gedanken in eine präzise Referenzspannung zu investieren. Die Präzision reicht allerdings für meine Zwecke (bisher).

    Noch zu erwähnen daß es nicht so günstig ist, die RXD und TXD Pins noch für andere Zwecke als serielles I/O zu verwenden. In meiner Schaltung dienen sie noch dem Display-Bus, was eine erhöhte Disziplin beim Programmieren des Gerätemanagements erforderlich machte (Ich hatte ein paar nette Unfälle auf dem Datenbus, he he...)

    Erstes Modul: Das Control Module mit 4x20 Character Display, Reset und Function Keys, die beiden Analogeingänge, ISP Interface, MIDI IN OUT THRU und die acht GATE Outputs.
    Vergrößern
    Vergrößern
    Zweites Modul: Das Voicemodul mit den acht analogen Ausgängen. Jede Stufe verfügt über einen Feintuning- und Portamento-Regler.

    Control Board mit µController, ISP und MIDI Interface, Funktionstasten, analoge Eingänge, Display Interface und DAC.

    GATE Board mit GATE Bank und vier der acht CV Output Stufen.

    Voice Board mit dem Rest der analogen Ausgänge.

    PCB - Printed Circuit Burger

    PCBurger und Pasta

    Abschlußtest...
    Bei Fragen oder Anmerkungen:
    Mail to: Carsten Tönsmann

    Home



    Disclaimer:
    Wichtiger Hinweis zu allen Links: Mit Urteil vom 12. Mai 1998 - 312 O 85/98 - "Haftung für Links" hat das Landgericht (LG) Hamburg entschieden, dass man durch die Anbringung eines Links, die Inhalte der gelinkten Seite ggf. mit zu verantworten hat. Dies kann - so das LG - nur dadurch verhindert werden, dass man sich ausdrücklich von diesen Inhalten distanziert. Hiermit distanzieren wir uns ausdrücklich von allen Inhalten aller gelinkten Seiten auf unserer Homepage und machen uns diese Inhalte nicht zu eigen. Diese Erklärung gilt für alle auf dieser Website angebrachten Links.

    Haftungsausschluss:
    Die bereitgestellten Informationen auf dieser Web Site wurden sorgfältig geprüft und werden regelmäßig aktualisiert. Jedoch kann keine Garantie dafür übernommen werden, dass alle Angaben zu jeder Zeit vollständig, richtig und in letzter Aktualität dargestellt sind. Dies gilt insbesondere für alle Verbindungen ("Links") zu anderen Web Sites, auf die direkt oder indirekt verwiesen wird. Alle Angaben können ohne vorherige Ankündigung ergänzt, entfernt oder geändert werden. Alle auf dieser Website genannten Produktnamen, Produktbezeichnungen und Logos sind eingetragene Warenzeichen und Eigentum der jeweiligen Rechteinhaber.

    Schematics:
    Sämtliche Schaltpläne, Skizzen, Baupläne und Funktionsbeschreibungen auf den Seiten von www.analog-monster.de/* sind - falls nicht anderweitig gekennzeichnet - Eigentum von Carsten Tönsmann und dürfen lediglich für private Zwecke genutzt werden. Jegliche Haftung ist ausgeschlossen.