Inhaltsverzeichnis:

ATMega1284P Gitarre und Musikeffektpedal - Gunook
ATMega1284P Gitarre und Musikeffektpedal - Gunook

Video: ATMega1284P Gitarre und Musikeffektpedal - Gunook

Video: ATMega1284P Gitarre und Musikeffektpedal - Gunook
Video: Great Guitar Effects Pedals for DJs: How to Use Them 2024, Juli
Anonim
ATMega1284P Gitarren- und Musikeffektpedal
ATMega1284P Gitarren- und Musikeffektpedal

Ich habe das Arduino Uno ATMega328 Pedalshield (wie von Electrosmash entwickelt und teilweise basierend auf Arbeiten im Open Music Lab) auf das ATMega1284P portiert, das achtmal mehr RAM hat als das Uno (16kB gegenüber 2kB). Ein zusätzlicher unerwarteter Vorteil ist, dass der Mega1284-Build eine viel geringere Rauschkomponente hat - insofern, als ich den Uno und den Mega1284 mit derselben Unterstützungsschaltung vergleiche, ist es nicht unvernünftig, den Uno als "geräuschvoll" und den Mega1284 als " ruhig". Der größere RAM bedeutet, dass ein viel längerer Verzögerungseffekt erzielt werden kann - und das zeigt das Arduino-Skizzenbeispiel, das ich beigefügt habe. Auch das Hintergrund-Atemgeräusch beim Einsatz des Tremelo-Effekts fehlt beim ATMega1284 (fast).

Ein Vergleich von drei Atmel AVR-Mikroprozessoren, nämlich dem 328P, dem Uno, dem 2560P, dem Mega2560, und dem Mega1284, zeigt, dass letzterer den meisten RAM der drei hat:

Seitenverhältnis 328P 1284P 2560P RAM 2k 16k 8k Flash 32k 128k 256k EEPROM 1k 4k 4k UART 1 2 4 E/A-Pins 23 32 86 Interrupts 2 3 8 Analog In 6 8 16

Ich begann mit dem Breadboarden des Uno-basierten pedalSHIELD wie in der Electrosmash-Spezifikation, aber ich hatte nicht den gleichen RRO-OpAmp wie angegeben. Als Ergebnis hatte ich eine Schaltung, die meiner Meinung nach akzeptable Ergebnisse lieferte. Die Details dieser Uno-Version sind in Anhang 2 aufgeführt.

Dieselbe Schaltung wurde dann auf den ATMega1284 portiert - überraschenderweise abgesehen von den nicht wesentlichen Änderungen wie der Zuweisung der Switches und der LED zu einem anderen Port und der Zuweisung von 12.000 kB statt 2.000 kB RAM nur für den Verzögerungspuffer eine wesentliche Änderung musste im Quellcode vorgenommen werden, nämlich 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.

Später entdeckte ich die hervorragenden Modifikationen der Electrosmash-Schaltung von Paul Gallagher und nach dem Testen werde ich diese Schaltung hier vorstellen - aber dann auch mit Modifikationen: Ersatz des Uno durch den Mega1284, unter Verwendung eines Texas Instruments TLC2272 als OpAmp, und Aufgrund der hervorragenden Rauschleistung des Mega1284 konnte ich auch die Frequenz des Tiefpassfilters anheben.

Es ist wichtig zu beachten, dass, obwohl Entwicklungsboards für den ATMega1284 verfügbar sind (Github: MCUdude MightyCore), es eine einfache Übung ist, den nackten (Bootloader-freien) Chip zu kaufen (kaufen Sie die PDIP-Version, die ein Steckbrett und ein Strip-Board ist). freundlich), dann laden Sie 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 Sketche erneut über den Uno auf den AtMega1284. Details und Links zu diesem Verfahren sind in Anhang 1 angegeben.

Ich möchte die drei wichtigsten Quellen erwähnen, aus denen weitere Informationen bezogen werden können, und werde Links zu ihren Websites und dem Ende dieses Artikels geben: Electrosmash, Open Music Labs und Tardate/Paul Gallagher

Schritt 1: Teileliste

ATMega1284P (PDIP 40-Pin-Paketversion) Arduino Uno R3 (wird als ISP verwendet, um den Bootloader und die Skizzen auf den ATMega1284 zu übertragen) OpAmp TLC2272 (oder ähnlicher RRIO (Rail to Rail Input and Output) OpAmp wie MCP6002, LMC6482, TL972) Rote LED 16 MHz Quarz 2 x 27 pF Kondensatoren 5 x 6n8 Kondensatoren 270 pF Kondensator 4 x 100n Kondensatoren 2 x 10uF 16v Elektrolytkondensatoren 6 x 4k7 Widerstände 100k Widerstand 2 x 1M Widerstände 470 Ohm Widerstand 1M2 Widerstand 100k Potentiometer 3 x Drucktaster (ein davon sollten durch einen 3-poligen 2-Wege-Fußschalter ersetzt werden, wenn die Effektbox für Live-Arbeiten verwendet wird)

Schritt 2: Konstruktion

Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion

Schema 1 gibt die verwendete Schaltung an und Breadboard 1 ist ihre physikalische Darstellung (Fritzing 1) mit Foto 1 die eigentliche Bread-Board-Schaltung im Betrieb. Es kann von Vorteil sein, ein Potentiometer als Mischer für das trockene (entspricht dem Eingang) und das nasse (nach der Verarbeitung durch die MCU) Signal zu haben, und Schema 2, Steckbrett 2 und Foto 2 (aufgeführt in Anhang 2) gibt die Schaltungsdetails einer zuvor konstruierten Schaltung, die einen solchen Eingangs-Ausgangs-Mischer enthält. Sehen Sie sich auch die StompBox von Open Music Labs an, um eine andere Mixer-Implementierung mit vier OpAmps zu finden.

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 100k-Potentiometer wird verwendet, um die Eingangsverstärkung auf einen Pegel knapp unter jeder Verzerrung einzustellen, und es kann auch verwendet werden, um die Eingangsempfindlichkeit für eine andere Eingangsquelle als eine Gitarre, wie z. B. einen Musikplayer, einzustellen. Die OpAmp-Ausgangsstufe verfügt ü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 die ganze Zeit über einen Interrupt liest. Beachten Sie, dass zwischen dem AREF-Pin des ATMega1284 und Masse ein 100nF-Kondensator angeschlossen werden sollte, 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 (4k7 und 1M2) im Verhältnis 1:256 (Low-Byte und High-Byte) gemischt - wodurch der Audio-Ausgang erzeugt wird. Es kann sich lohnen, mit anderen Widerstandspaaren wie dem 3k9 1M Ohm-Paar zu experimentieren, das von Open Music Labs in ihrer StompBox verwendet wird.

Schritt 3: Software

Die Software basiert auf den Electrosmash-Skizzen, und das mitgelieferte Beispiel (pedalshield1284delay.ino) wurde von ihrem Uno-Delay-Sketch übernommen. Einige der Schalter und LEDs wurden auf andere Ports verschoben, die nicht von den vom ISP-Programmierer verwendeten (SCLK, MISO, MOSI und Reset) entfernt wurden, der Verzögerungspuffer wurde von 2000 Byte auf 12000 Byte erhöht und PortD wurde als Ausgang für die beiden PWM-Signale. Selbst mit der Erhöhung des Verzögerungspuffers verwendet der Sketch nur noch etwa 70% des verfügbaren 1284-RAM.

Andere Beispiele wie Octaver oder Tremolo von der Electrosmash-Website für das pedalSHIELD Uno können durch Änderung von drei Abschnitten im Code für die Verwendung durch den Mega1284 angepasst werden:

(1) DDRB ändern |= ((PWM_QTY << 1) | 0x02); to DDRD |= 0x30; // Die obige Änderung ist die EINZIGE wesentliche Codeänderung // beim Portieren vom AtMega328 auf den ATMega1284

(2) Ändern #define LED 13 #define FOOTSWITCH 12 #define TOGGLE 2 #define PUSHBUTTON_1 A5 #define PUSHBUTTON_2 A4

zu

#define LED PB0 #define FUSSSCHALTER PB1 #define PUSHBUTTON_1 A5 #define PUSHBUTTON_2 A4

(3) PinMode ändern (FUSSSCHALTER, INPUT_PULLUP); pinMode (TOGGLE, INPUT_PULLUP); pinMode (PUSHBUTTON_1, INPUT_PULLUP); pinMode (PUSHBUTTON_2, INPUT_PULLUP); PinMode (LED, AUSGANG)

zu

pinMode (FUSSSCHALTER, INPUT_PULLUP); pinMode (PUSHBUTTON_1, INPUT_PULLUP); pinMode (PUSHBUTTON_2, INPUT_PULLUP); PinMode (LED, AUSGANG);

Die Taster 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. Drücken Sie die Abwärtstaste - es dauert etwa 20 Sekunden, bis die Verzögerung bis zur Ausschaltposition heruntergezählt wird - und drücken und halten Sie dann die Aufwärtstaste. Hören Sie, wie der Sweep-Effekt beim Halten der Taste den Effekt in Phaser, Chorus und Flanging ändert, sowie die Verzögerung beim Loslassen der Taste.

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

DelayBuffer[DelayCounter] = ADC_high;

zu

DelayBuffer[DelayCounter] = (ADC_high + (DelayBuffer[DelayCounter]))>>1;

Der Fußschalter sollte ein dreipoliger Zweiwegeschalter sein und muss wie auf der Electrosmash-Website beschrieben angeschlossen werden.

Schritt 4: Links

Links
Links

(1) Elektrosmash:

(2) Offene Musiklabore:

(3) Paul Gallagher:

(4) 1284 Bootloader:

(5) ATmega1284 8bit AVR Mikrocontroller:

ElectrosmashOpenlabs MusicPaul Gallagher1284 Bootloader 11284 Bootloader 2ATmega1284 8bit AVR Mikrocontroller

Schritt 5: Anhang 1 Programmierung des ATMega1284P

Anhang 1 Programmierung des ATMega1284P
Anhang 1 Programmierung des ATMega1284P
Anhang 1 Programmierung des ATMega1284P
Anhang 1 Programmierung des ATMega1284P
Anhang 1 Programmierung des ATMega1284P
Anhang 1 Programmierung des ATMega1284P

Es gibt einige Websites, die eine gute Erklärung zur Programmierung des nackten ATMega1284-Chips für die Verwendung mit der Arduino IDE bieten. Der Vorgang ist im Wesentlichen wie folgt: (1) Installieren Sie den Mark Pendrith-Fork des Maniacbug Mighty-1284p Core Optiboot Bootloaders in der Arduino IDE. (2) Verdrahten Sie den ATMega1284 auf einem Steckbrett mit seiner minimalen Konfiguration, die aus einem 16-MHz-Quarz besteht, 2 x 22 pF-Kondensatoren, die die beiden Enden des Quarzes erden. Verbinden Sie die beiden Erdungsstifte miteinander (Stifte 11 und 31) und dann an die Arduino Uno-Masse, verbinden Sie Vcc und AVcc miteinander (Pins 10 und 30) und dann mit Uno +5v, dann verbinden Sie den Reset-Pin 9 mit dem Uno D10-Pin, den MISO-Pin 7 mit dem UNO D12, The MOSI Pin 8 an den Uno D11 und den SCLK Pin 7 an den Uno D13 Pin. (3) Verbinden Sie das Uno mit der Arduino IDE und laden Sie das Skizzenbeispiel Arduino als ISP auf das Uno. (4) Wählen Sie nun das 1284 "maniac" mächtige optiboot Board aus und wählen Sie die Burn Bootloader Option. (5) Wählen Sie dann die hier als Beispiel angegebene 1284 Delay-Skizze aus und laden Sie sie hoch, indem Sie die Option Uno als Programmierer im Sketches-Menü verwenden.

Links, die den Vorgang näher erläutern, sind:

Verwendung des ATmega1284 mit dem Arduino IDEArduino Mightycore für große Breadboard-freundliche AVRsErstellen eines ATMega1284p-PrototypsArduino ATmega1284p Bootloader

Schritt 6: Anhang 2 Arduino Uno PedalSHIELD-Variante

Anhang 2 Arduino Uno PedalSHIELD-Variante
Anhang 2 Arduino Uno PedalSHIELD-Variante
Anhang 2 Arduino Uno PedalSHIELD-Variante
Anhang 2 Arduino Uno PedalSHIELD-Variante
Anhang 2 Arduino Uno PedalSHIELD-Variante
Anhang 2 Arduino Uno PedalSHIELD-Variante

Schematic3, Breadboard3 und Photo3 geben Details der Uno-basierten Schaltung, die dem AtMega1284-Build vorausging.

Es kann von Vorteil sein, ein Potentiometer als Mischer für das trockene (entspricht dem Eingang) und das nasse (nach der Verarbeitung durch die MCU) Signal zu haben, und Schema 2, Steckbrett 2 und Foto 2 geben die Schaltungsdetails einer zuvor gebauten Schaltung an die einen solchen Input-Output-Mixer enthält. Sehen Sie sich auch die StompBox von Open Music Labs an, um eine andere Mixer-Implementierung mit vier OpAmps zu finden

Empfohlen: