Output

Damit die tollen Töne, die in den vorherigen Modulen erzeugt wurden, abschließend gemeinsam vereint werden können, gibt es ein Module welches einen 8-Kanal Audio-Summierier enthält. Um das Mischerlebnis zu verbessern stehen dem Summierier ein VU-Meter und ein VCA, welcher unter anderem von einem Mikrocontroller gesteuert werden kann, zur Seite.

Aufgabenstellung

Die Module-Gruppe \textit{4} hat die Aufgabe die Ausgabe-Signale der anderen Module zu addieren, damit diese gebündelt wiedergeben werden können. Es soll ein Addierer mit mindestens 5 Kanälen sein. Die Umsetzung dieses Moduls findet sich in Abschnitt Output – Summierer/VU-Meter. Um noch eine Platine mit Mikrocontroller einzubringen, gibt es ein Modul mit einem Mikrocontrollergesteuerten-VCA in AbschnittOutput – VCA/μC.

Blockschaltbild

In Abbildung 1 ist ein Übersichts-Blockschaltbild der VCA/µC und Summierer/VU-Meter Output-Module dargestellt. Das VCA-Modul ist dazu da die Mischverhältnisse der Signal dynamisch aufwertend zu beeinflussen und Parameter anderer Module zu steuern. Die grundlegende Output-Funktionalität des Zusammenführens wird durch den Summierenden Verstärker abgebildet.
Aus diesem Blockschaltbild geht hervor, dass 8 Signale anderer Module hier eingespeist werden können. Pegel von 4 Signalen können dabei durch den VCA durch externe Steuerspannungen (Engl. control voltages kurz CVs) oder durch den Mikrocontroller angepasst werden. Aufgrund des modularen Ansatzes gibt es diverse Verknüpfungsmöglichkeiten der verschiedenen Ein- und Ausgänge.

Abbildung 1: Blockschaltbild für das Summierer/VU-Meter und das μC/VCA Modul.(Abb. erzeugt mitapp.diagrams.net)

Output – Summierer/VU-Meter

Dokumentation und Arbeitsentwicklung

Abbildung 2: Detail-Blockschaltbild für den Summierer/VU-Meter(Abb. erzeugt mitapp.diagrams.net)

Die Grundanforderung an das Ausgangsmodul ist es 5 Signale von anderen Modulen addierend zusammenzuführen.
Es wurde mit dem Sammeln von Ideen gestartet. Eine summierende Operationsverstärkerschaltung war dann auch schnell in LTspice simuliert. Diese sollte am besten nicht invertierend sein und eine variable Verstärkung bieten. Dies wird durch einen in Reihe geschaltenen und erneut invertierenden und Potentiometer-gesteuerten Verstärker realisiert. Die genauen Verfeinerungen finden sich in der Schaltungsbeschreibung in Abschnitt Schaltplan.
Die Schaltung auch auf Abbildung 4 wurde dann testweise auf einem Steckbrett aufgebaut. Dort wurden neben dem Funktionstest auch experimentell die stabilisierenden Feedback-Kondensatoren C5 und C6 angepasst. Außerdem zeigte sich der Operationsverstärker vom Typ TL074 in dem getesteten Aufbau als Rauschärmer als der Typ NE5532. Aus diesem Grund wird nun der JFET-Operationsverstärker TL074 verwendet.
Der resultierende Aufbau ist auf der Abbildung 2 dargestellt.

Schaltplan

Abbildung 3: Simulation des Summierers (eigene Aufnahme aus LTSpice)
Abbildung 4: Schematic für den 8-Kanal-Addierer (eigene Aufnahme aus Eagle)

Die Signale sollen addiert werden. Die erste Idee war ein nicht-invertiernder Operationsverstärker mit summierender Eingangsbeschaltung. Dies funktioniert auch, doch soll auch eine Verstärkung bis runter zu dem Faktor 0 ermöglicht werden. Deshalb wird nun ein invertierender Verstärker mit dem Verstärkungsverhalten

verwendet. Aus in diesem Fall eher ästhetischen Gründen wird noch ein weiterer Invertierender Verstärker hinzugefügt, um ein nicht-invertierendes, summierendes Verhalten zu erhalten.

Dieses Verhalten zeigt sich erfreulicherweise auch in der Simulation beispielhaft mit einem 10V-PkP-Sinus-Signal (auf Abb. 3 in Grün) und einem 5V-PkP-Rechteck-Signal (auf Abb. 4 in Blau). Es ergibt sich, wie nach

zu erwarten, eine Spitzenspannung von 7.5V bei einem Widerstandsverhältnis von

Zur Enkopplung von Gleichspannungsanteilen von Gleichspannungsanteilen gibt es am Eingang und am Ausgang des Summier-Verstärkers jeweils einen Kondensator C1 beziehungsweise C2. Wie in dem Buch [12, S. 639] erwähnt, müssen diese Kondensatoren etwas größer sein, da sich die Zeitkonstante für kleine Frequenzen aus dem Kondensator und allen parallelgeschaltenen Eingangswiederständen ergibt. Um unerwünschte Schwingungen an den Operationsverstärkern zu unterdrücken, befinden sich parallel zu deren Feedback-Pfaden Filterkondensatoren. Diese wurden ausgehen von 100pF experimentell mit einem Kompromiss zur Rechteck-Übertragungsfähigkeit unter Einsatz eines Steckbrettaufbaus auf einen Wert von 22pF für C5 beziehungsweise `C6 bestimmt.

Der Verstärkungsfaktor des zweiten Operationsverstärkers beziehungsweise der Gain des 8-Kanal-Summierer-Blocks auf Abb. 4 lässt sich durch ein Potentiometer, welches `R11 als variablen Feedback-Widerstand ersetzen wird, einstellen.

Abbildung 5: VU-Meter Komparatoren mit Filter (Aufnahme aus Eagle)

Die Schaltung auf Abbildung 5 ist stark an das Beispiel aus dem Buch [12, S. 669] angelehnt. Zur Pegelanpassung zwischen dem Summierer und der hier gezeigten Filterschaltung wurde ein Potentiometer eingefügt.
Diese Filterschaltung besteht aus einem aktiven Gleichrichter und Begrenzungs-Dioden und zwei verschieden aggressiven Filtern. Der Tiefpassfilter mit der niedrigeren Grenzfrequenz liefert Durschnittswerte und der Tiefpass mit der höheren Grenzfrequenz liefert Spitzwerte. Mit einem Jumper soll man zwischen diesen beiden Signalen umschalten können.
Die Auswertung und Darstellung dieser Signale erfolgt mittels einer Komparatorkaskade, welche einen LED-Bargraph durch die entsprechend gewählten Widerständen des Vergleichspannungsspannungsteilers mit logarithmischem Verhalten ansteuert.
Für solche eine logarithmische Komparatorkaskade gibt es auch integrierte Lösungen wie den LM3915. Hier soll allerdings eine diskrete Lösung zum Einsatz kommen.
Hauptsächlich um die LED-Vorwiederstände und auch um deren Verlustleistung einzusparen, kommt wie in dem Vorbild eine Konstantstrom-Versorgung zum Einsatz (siehe Abbildung 6, welche auf die hier verwendeten 12V angepasst wurde.

Abbildung 6: Schematic für die LED-Konstantstromquelle (eigene Aufnahme aus Eagle)

Layout

Das Layout wurde unter Berücksichtigung der Fertigungsvoraussetzungen des Projektlabors mit dem Programm Eagle designed. Die Dimensionen 80mm x 100mm entsprechen dabei einer halben Europlatine. Unter anderem aus Platzgründen sind die Klinken-Buchsen und das Potentiometer nicht direkt auf er Platine vorgesehen, sondern werden über Stecker an die Frontplatte angebunden. Zur besseren Übersichtlichkeit wurden für das Bild die Top- und Bottom-Groundplanes noch nicht ausgefüllt.

Abbildung 7: Layout der Platine des Addierers/VU-Meters (Aufnahme aus Eagle)

Output – VCA/μC

Dokumentation und Arbeitsentwicklung

Abbildung 8: Detail-Blockschaltbild für dasμC/VCA Modul.(Abb. erzeugt mitapp.diagrams.net)

In dem zweiten Output-Modul sollen ein spannungsgesteuerter Verstärker mit 4 Kanälen (Engl. voltage controlled amplifier kurz VCA} und ein STM32 Mikrocontroller zum Einsatz kommen.

Überlegungen: Um die Verstärkungen des VCAs mit dem STM32 einzeln einstellen zu können, müssen vier unabhängige, variable steuerbare analoge Spannungen erzeugt werden. Der hier verwendete STM32L476RGT6 besitzt leider nur zwei Digital-Analog-Umsetzer (kurz DACs), deshalb brauchte es in diesem Fall eine andere Idee. Da die maximal gewünschte Frequenz der zu erzeugenden Steuerspannungen 100Hz beträgt, und sich mit diesem Mikrocontroller PWM-Signale mit einer Auflösung von 10-Bit mit einer maximalen Frequenz von 78.2kHz erzeugen lassen, schien dies mit einem vertretbaren Filteraufwand realistisch. Das Filtern wurde simuliert und kurz auf einem Steckbrett getestet. Zuerst wurde ein RC-Tiefpass erster Ordnung mit einer Grenzfrequenz um die 1000Hz probiert. Der Rippel war allerdings zu hoch. Mit einem Sallen-Key Tiefpassfilter zweiter Ordnung mit einer Grenzfrequenz von 1.5kHz wie auf Abbildung 12 sah es, wie unter dieser Abbildung weiter beschrieben, ausreichend gut aus.
Im nächsten Schritt wurde mit der Software-Entwicklung für den Mikrocontroller begonnen. Es wurden hauptsächlich das Datenblatt und Tutorials von DeepBlue studiert.

Software-Grundgerüst: Die Grundkonfiguration des STM32-Mikrocontrollers wurde mit der Konfigurationssoftware STM32CubeMX von STMicroelectronics vorgenommen. Zuerst wurde ein PWM-Kanal so zum Laufen gebracht, dass sein Dutycycle einem Array mit einer anpassbaren Signalvorgabe folgt. Mit einem Encoder kann man dann das Signal einstellen. Das derzeitige Display-Layout kann man auf Abbildung 9 betrachten.

Abbildung 9: CV-Steuerungs-Display

Die Timer für die PWM-Kanäle und die DMA-Trigger für die vier CV-Kanäle konnten gerade so untergebracht werden. Alle vier Ausgangskanäle laufen grob und die Grundfunktionalität auf dem Display ist auch schon gegeben. Es bedarf allerdings noch einigen Verfeinerungen und Routinen um Signal-Arrays mit variabler Amplitude und verstellbarer Frequenz zur Laufzeit zu erzeugen.

Schaltplan

Abbildung 10: STM32 Modul (Aufnahme aus Eagle)

Auf Abbildung 10 ist die Beschaltung des STM32-Moduls zu sehen. Für die Encoder 1-4 gibt es jeweils zwei Pulseingänge und einen Tastereingang. Für all diese Eingänge wird der integrierte Pull-Up-Widerstand genutzt und wenn die Encoder schalten, dann wird der jeweilige Pin auf das Ground-Potential gezogen.
Um mit den Encodern Zählerwerte einzustellen, könnte man zum Beispiel die Pulsleitungen schnell abtasten und dann die Zählerstände entsprechend anpassen. Es werden hier allerdings ein paar Extra-Funktionen der Timer des STM32L476RGT6 verwendet. Die Timer 1-4 werden alle in einem Encoder-Modus genutzt. Die Timer werden so konfiguriert, dass sie automatisch und CPU-unabhängig die Zähler hoch- oder runterzählen, wobei auch noch einstellbare Überläufe berücksichtigt werden. Die Zählerstände können dann ganz in Ruhe zu einem beliebigen Zeitpunkt ausgelesen werden. Zur Umsetzung dieser Funktionalität wurde ein Tutorial von der Webseite DeepBlue zu Rate gezogen.
Das monochrome 0.96″ Display vom Typ SSD1306 wird über den I2C-Bus angebunden und bei der Ansteuerung wird eine Bibliothek von Github verwendet.
Um die Steuerspannungen zu erzeugen, werden die Dutycycles, also die An-Teile der Perioden, eines PWM-Signals mit einer bei dem Mikrocontroller maximalen Frequenz von 78.2kHz ensprechend der gewünschenten Signalform moduliert. Damit die Grundfrequenzen dieser Signale, welche später mit Tiefpassfiltern herausgefiltert werden, die gewüschten Signalenformen darstellen, müssen die Dutycycles für die jeweils nächste Periode schnell eingestellt werden. Dies wird hier unter Einsatz von Timern und direct memory access units kurz DMA-units realisiert. Die Timer lösen periodisch ein Event aus, welche die DMA-units veranlasst den Wert für den nächsten Dutycycle von einem Array im Arbeitsspeicher in das Outputcompare-Register des PWM-Kanals schreibt. Das Outputcompare-Register bestimmt dann den nächsten Dutycycle. Bei dieser Umsetzung kam auch ein Tutorial von DeepBlue helfend zum Einsatz.

Abbildung 11: Filter von PWM zu CV (Aufnahme aus Eagle)

Um die PWM-Modulation aus dem CV-Signal herauszufiltern, wird pro CV-Kanal ein Sallen-Key-Tiefpassfilter zweiter Ordnung verwendet. Zur Berechnung der Bauteilgrößen wurde das Matlab-Skript in Listing 1 erstellt. Die Formeln wurden von der Übertragungsfunktion HTP im Elektronik-Skript abgeleitet. Es wurden die Bauteilgrößen für eine Grenzfrequenz von 1.5kHz berechnet und dann an die nächsten E12-Werte angepasst. Die resultierende Grenzfrequenz für die Bauteile in Abb. 11 beträgt 1.525kHz.

image
Listing 1: Matlab-Script zur Berechnung der Sallen-Key-Bauteilgrößen
Abbildung 12: Simulation von 50% PWM zu CV (Aufnahme aus Plecs)

Auf der Abbildung 12 ist bei eine Tiefpassfilter erster Ordnung mit einer Grenzfrequenz von 1.5kHz noch ein deutlicher Rippel zu erkennen. Der in Abb. 11 gezeigte Sallen-Key Tiefpassfilter mit der gleichen Grenzfrequenz sorgt für eine Reduzierung des Rippels auf 1.1mV. Das der Dutycycle von 50% zu der halben CV-Zielspannung von 2.5V führt, zeigt sich auch.

Abbildung 13: Simulation einem Rechteck zu CV (Aufnahme aus Plecs)

Im nächsten Schritt wurde geprüft, wie schlimm ein Rechteck von 100Hz, welches die maximal angestrebte CV-Ausgangsfrequenz ist, durch den Tiefpassfilter verzerrt wird. Auf Abbildung 13 lässt sich erkennen, dass bei dem Tiefpassfilter zweiter Ordnung leichtes Überschwingen zu erkennen ist.

Layout

Abbildung 14: Pegelanpassung CV für VCA (Aufnahme aus Eagle)

Damit eingehende Steuerspannungen, die von 0V bis 5V erwartet werden und von -10V bis 10V toleriert werden, gibt es vier mal die Anpassungsstufe, die auf Abbildung 14 dargestellt ist. Direkt hinter dem Eingang werden die negativen Signalanteile über eine Schottky-Diode mit geringem Vorwärtsspannungsabfall von UF=0,24V laut Datenblatt abgeschnitten. Um Spannungen über 5V zu begrenzen folgt danach eine Zener-Diode, die in Kombination mit dem Vorwiderstand die Spannungen auf maximal 5.1V limitiert. Es folgt ein dem Emitter folgenden NPN-Transistor in Kollektorschaltung, um die Zener-Begrenzung vom dem Operationsverstärker zu entkoppeln. Nach diesem Spannungsfolger kommt also ein invertierender Verstärker, welcher mit einer Verstärkung von

Abbildung 15: Simulation der Pegelanpasung CV für VCA (Aufnahme aus LTspice)
Abbildung 16: VCA 2164 (Aufnahme aus Eagle)
Abbildung 17: Layout der VCA/μC-Platine

Platine

Abbildung 18: Oberseite der VCA/μC-Platine70
Abbildung 19: Unterseite der VCA/μC-Platine

Durch einen unbemerkten Klick mit der mittleren Maustaste in Eagle hat sich leider ein IC auf die Unterseite der Platine auf Abbildung 19 verirrt.
Erfreulicherweise biete die Kupferfläche für den 3.3 V Spannungsregler unten links auf der Abbildung ausreichende Kühlung, sodass sich diese unter Betrieb noch anfassen lässt.

Zusammenfassung

Abbildung 20: Frontpanel des VCA/μC-Moduls

Das VCA/µC-Modul sollte einen die Dynamik bereichernde Komponente darstellen. Dies ist gelungen. Es kann die Lautstärke durch den IN-zu-OUT-Pfad konstant oder nach den Signalformen Sinus, Rechteck, Dreieck, Sägezahn angepasst werden. Durch die mikrocontrollergesteuerte Plattform ist auch eine Erweiterung um verschiedenste Signalformen denkbar.

Insbesondere für die Signalerzeugung wurde die STM32-Mikrocontroller-Welt besser kennengelernt.