Inhaltsverzeichnis:

ATMega1284 Quad Opamp Effektbox - Gunook
ATMega1284 Quad Opamp Effektbox - Gunook

Video: ATMega1284 Quad Opamp Effektbox - Gunook

Video: ATMega1284 Quad Opamp Effektbox - Gunook
Video: The Ultimate Op-Amp Comparison - Bandwidth, Slew Rate, Frequency Response, CMRR & More! 2024, Juli
Anonim
ATMega1284 Quad-Opamp-Effektbox
ATMega1284 Quad-Opamp-Effektbox

Das Stomp Shield für Arduino von Open Music Labs verwendet einen Arduino Uno und vier Operationsverstärker als Gitarreneffektbox. Ähnlich wie in der vorherigen Anleitung, die zeigt, wie das Electrosmash Uno Pedalshield portiert wird, habe ich auch die Open Music Labs Guitar Effects-Box auf den ATMega1284P portiert, der achtmal mehr RAM hat als der Uno (16kB gegenüber 2kB).

Im Vergleich zum vorherigen anweisbaren mit der ATMega1284-Effekteinheit hat diese Box die folgenden Vorteile:

(1) Es hat einen Mischer, der das unbearbeitete Signal mit dem von der MCU verarbeiteten Signal mischt - das bedeutet, dass die Qualität des Signals am Ausgang erheblich verbessert wird.

(2) Es führt eine 16-Bit-Ausgabeverarbeitung für die beiden PWM-Ausgänge durch, während die vorherige Effektbox für einige der Beispiele wie den Verzögerungseffekt 8 Bit verwendet.

(3) Es verfügt über ein Feedback-Potentiometer, mit dem die Effekte verstärkt werden können - insbesondere beim Flanger/Phaser-Effekt tragen etwa 30 Prozent Feedback erheblich zur Qualität des Effekts bei.

(4) Die Tiefpassfilterfrequenz beträgt 10 kHz im Vergleich zu den 5 kHz der bisherigen Effektbox - das Signal am Ausgang klingt also deutlich "knackiger".

(5) Es verwendet einen anderen Interrupt-Trigger, der den erheblich niedrigeren Rauschpegel erklären kann, der von dieser Effektbox angezeigt wird.

Ich begann mit dem Breadboarding des Uno-basierten Open Music Labs Stompbox Shield und war von der Leistung dieser vier OpAmp-Signalverarbeitungsschaltungen (auch bei Verwendung eines Arduino Uno) so beeindruckt, dass ich sie für eine dauerhaftere Verwendung auf Stripboard übertragen habe.

Dieselben vier Opamp-Schaltungen und der gleiche DSP-Code wurden dann auf den ATMega1284 portiert – wiederum überraschenderweise abgesehen von den nicht wesentlichen Änderungen wie der Zuweisung der Schalter und der LED zu einem anderen Port und der Zuweisung von 7.000 Kilowörtern anstelle von 1.000 Kilowort RAM für den Verzögerungspuffer mussten nur zwei wesentliche Änderungen im Quellcode vorgenommen werden, nämlich die Änderung von ADC2 auf ADC0 und die Änderung der Timer1/PWM OC1A- und OC1B-Ausgänge von Port B auf dem Uno auf Port D (PD5 und PD4) auf dem ATMega1284.

Wie bereits erwähnt, sind zwar Entwicklungsboards für den ATMega1284 verfügbar (Github: MCUdude MightyCore), es ist jedoch eine einfache Übung, den nackten (Bootloader-freien) Chip zu kaufen (kaufen Sie die PDIP-Version, die für Steckbretter und Stripboards geeignet ist)., laden Sie dann den Mark Pendrith-Fork des Maniacbug Mighty-1284p Core Optiboot Bootloaders oder den MCUdude Mightycore, indem Sie einen Uno als ISP-Programmierer verwenden, und laden Sie dann Skizzen erneut über den Uno auf den AtMega1284. Details und Links für diesen Prozess sind in Anhang 1 des vorherigen instructable angegeben.

Schritt 1: Teileliste

Liste der Einzelteile
Liste der Einzelteile
Liste der Einzelteile
Liste der Einzelteile

ATMega1284P (PDIP 40-Pin-Gehäuseversion) Arduino Uno R3 (wird als ISP verwendet, um den Bootloader und die Skizzen auf den ATMega1284 zu übertragen) OpAmp MCP6004 Quad-OpAmp (oder ähnlicher RRIO (Rail to Rail Input and Output) OpAmp wie TLC2274) 1 x Rote LED 1 x 16 MHz Quarz 2 x 27 pF Kondensatoren 1 x 3n9 Kondensator 1 x 1n2 Kondensator 1 x 820pF Kondensator 2 x 120 pF Kondensator 4 x 100n Kondensatoren 3 x 10uF 16v Elektrolytkondensatoren 4 x 75k Widerstände 4 x 3k9 Widerstände 1 x 36k Widerstand 1 x 24k-Widerstand 2 x 1M-Widerstand 1 x 470 Ohm-Widerstand 3 x 1k-Widerstand 2 x 50k-Potentiometer (linear) 1 x 10k-Potentiometer (linear) 3 x Drucktaster (einer davon sollte durch einen 3-poligen 2- Way-Fußschalter, wenn die Effektbox für Live-Arbeiten verwendet wird)

Schritt 2: Konstruktion

Konstruktion
Konstruktion

Schaltung 1 zeigt die verwendete Schaltung und Stripboard 1 ist ihre physikalische Darstellung (Fritzing 1) mit Foto 1 die eigentliche Steckplatinenschaltung im Betrieb. Drei kleine Änderungen an der Schaltung wurden vorgenommen: Die gemeinsame Vorspannung des Operationsverstärkers auf halbem Versorgungspegel wird für drei OpAmp-Stufen verwendet, die Parallelwiderstände 3 x 75k und 2 x 75k Ohm wurden durch einzelne 24k- und 36k-Widerstände ersetzt und die Rückkopplungskondensatoren wurden auf. erhöht 120pF für diese beiden OpAmp-Stufen. Der Drehregler wurde durch zwei Druckknöpfe ersetzt, die zum Erhöhen oder Verringern von Effektparametern verwendet werden. Die Dreidrahtverbindung zum ATMega1284 wird auf der Schaltung als ADC an Pin 40, PWMlow von Pin 19 und PWMhigh von Pin 18 dargestellt. Die drei Drucktaster sind mit den Pins 1, 36 und 35 verbunden und am anderen Ende geerdet. An Pin 2 ist eine LED über einen 470er Widerstand angeschlossen.

OpAmp-Eingangs- und -Ausgangsstufen: Es ist wichtig, dass ein RRO oder vorzugsweise ein RRIO-OpAmp verwendet wird, da am OpAmp-Ausgang zum ADC des ATMega1284 ein großer Spannungshub erforderlich ist. Die Teileliste enthält eine Reihe alternativer OpAmp-Typen. Das 50k-Potentiometer wird verwendet, um die Eingangsverstärkung auf einen Pegel knapp unterhalb der Verzerrung einzustellen, und es kann auch verwendet werden, um die Eingangsempfindlichkeit für eine andere Eingangsquelle als eine Gitarre wie einen Musikplayer einzustellen. Die zweite OpAmp-Eingangsstufe und die erste OpAmp-Ausgangsstufe verfügen über einen RC-Filter höherer Ordnung, um das digital erzeugte MCU-Rauschen aus dem Audiostream zu entfernen.

ADC-Stufe: Der ADC ist so konfiguriert, dass er über einen Timer-Interrupt liest. Zwischen dem AREF-Pin des ATMega1284 und Masse sollte ein 100nF-Kondensator angeschlossen werden, um das Rauschen zu reduzieren, da eine interne Vcc-Quelle als Referenzspannung verwendet wird - verbinden Sie den AREF-Pin NICHT direkt mit +5 Volt!

DAC PWM-Stufe: Da der ATMega1284 über keinen eigenen DAC verfügt, werden die ausgegebenen Audiowellenformen mithilfe einer Pulsweitenmodulation eines RC-Filters erzeugt. Die beiden PWM-Ausgänge an PD4 und PD5 werden als High- und Low-Byte des Audio-Ausgangs gesetzt und mit den beiden Widerständen (3k9 und 1M) im Verhältnis 1:256 (Low-Byte und High-Byte) gemischt - wodurch der Audio-Ausgang erzeugt wird.

Schritt 3: Software

Die Software basiert auf den Stompbox-Pedal-Skizzen von Open Music Labs, und zwei Beispiele sind enthalten, nämlich ein Flanger/Phaser-Effekt und ein Delay-Effekt. Wieder wie bei der vorherigen Anleitung wurden die Schalter und die LED auf andere Ports verschoben, die von denen des ISP-Programmierers (SCLK, MISO, MOSI und Reset) entfernt sind.

Der Verzögerungspuffer wurde von 1000 Wörtern auf 7000 Wörter erhöht und PortD als Ausgang für die beiden PWM-Signale eingestellt. Selbst mit der Erhöhung des Delay-Puffers verwendet der Sketch immer noch nur etwa 75% des verfügbaren ATMega1284 16 kB RAM.

Andere Beispiele wie das Tremolo von der Open Music Labs-Website für das pedalSHIELD Uno können für die Verwendung durch den Mega1284 angepasst werden, indem die Include-Header-Datei Stompshield.h geändert wird:

(1) DDRB ändern |= 0x06; // PWM-Ausgänge (Pins 9, 10) auf outputtoDDRD setzen |= 0x30;

und

ADMUX = 0x62; // links anpassen, adc2, interner vcc als Referenz auf ADMUX = 0x60; // left adjust, adc0, internal vcc als Referenz // Diese Änderungen sind die EINZIGEN wesentlichen Codeänderungen // beim Portieren vom Uno auf den ATMega1284

Bei den beiden hier enthaltenen Beispielen ist die Header-Datei in der Skizze enthalten - d.h. es müssen keine Header-Dateien verwendet werden

Die Drucktasten 1 und 2 werden in einigen Skizzen verwendet, um einen Effekt zu verstärken oder zu verringern. Im Verzögerungsbeispiel erhöht oder verringert es die Verzögerungszeit. Wenn die Skizze zum ersten Mal geladen wird, beginnt sie mit dem maximalen Verzögerungseffekt. Versuchen Sie für die Flanger-Phaser-Skizze, den Feedback-Regler für einen verbesserten Effekt zu erhöhen.

Um die Verzögerung in einen Echoeffekt zu ändern (Wiederholung hinzufügen), ändern Sie die Zeile:

Puffer[Speicherort] = Eingabe; // neues Sample speichern

zu

Puffer[Speicherort] = (Eingabe + Puffer[Speicherort])>>1; // Verwenden Sie dies für Echo-Effekt

Der Fußschalter sollte ein dreipoliger Zweiwegeschalter sein

Schritt 4: Links

Elektrosmash

Offene Musiklabore Musik

ATMega Effektpedal