Inhoudsopgave:

ATMega1284P gitaar- en muziekeffectpedaal - Ajarnpa
ATMega1284P gitaar- en muziekeffectpedaal - Ajarnpa

Video: ATMega1284P gitaar- en muziekeffectpedaal - Ajarnpa

Video: ATMega1284P gitaar- en muziekeffectpedaal - Ajarnpa
Video: Math! game for Sam Coupe 2024, Juli-
Anonim
ATMega1284P Gitaar- en muziekeffectpedaal
ATMega1284P Gitaar- en muziekeffectpedaal

Ik heb de Arduino Uno ATMega328 Pedalshield (zoals ontwikkeld door Electrosmash en deels gebaseerd op werk bij het Open Music Lab) geport naar de ATMega1284P die acht keer meer RAM heeft dan de Uno (16kB versus 2kB). Een bijkomend onverwacht voordeel is dat de Mega1284-build een veel lagere ruiscomponent heeft - in de mate dat wanneer ik de Uno en de Mega1284 vergelijk met dezelfde ondersteuningscircuits, het niet onredelijk is om de Uno te beschrijven als "luidruchtig" en de Mega1284 als " stil". Het grotere RAM betekent dat een veel langer vertragingseffect kan worden verkregen - en dat wordt aangetoond door het Arduino-schetsvoorbeeld dat ik heb bijgevoegd. Het achtergrondgeluid bij het gebruik van het Tremelo-effect is ook (vrijwel) afwezig bij de ATMega1284.

Een vergelijking van drie Atmel AVR-microprocessors, namelijk de 328P die de Uno is, de 2560P die de Mega2560 is, en de Mega1284 laat zien dat de laatste het meeste RAM van de drie heeft:

Aspect 328P 1284P 2560P RAM 2k 16k 8k Flash 32k 128k 256k EEPROM 1k 4k 4k UART 1 2 4 IO-pinnen 23 32 86 Onderbrekingen 2 3 8 Analoog in 6 8 16

Ik begon met breadboarden op de op Uno gebaseerde pedalSHIELD zoals in de Electrosmash-specificatie, maar ik had niet dezelfde RRO OpAmp als gespecificeerd. Het resultaat was dat ik een circuit kreeg dat naar mijn mening acceptabele resultaten opleverde. De details van deze Uno-versie staan in bijlage 2.

Ditzelfde circuit werd vervolgens geport naar de ATMega1284 - verrassend afgezien van de niet-essentiële veranderingen zoals het toewijzen van de schakelaars en LED aan een andere poort, en het toewijzen van 12.000 kB in plaats van 2.000 kB RAM voor de vertragingsbuffer, alleen er moest één essentiële wijziging in de broncode worden aangebracht, namelijk het wijzigen van de Timer1/PWM OC1A- en OC1B-uitgangen van poort B op de Uno naar poort D (PD5 en PD4) op de ATMega1284.

Later ontdekte ik de uitstekende aanpassingen aan het electrosmash-circuit door Paul Gallagher en na het testen is dit het circuit dat ik hier zal presenteren - maar dan ook met aanpassingen: vervanging van de Uno door de Mega1284, met behulp van een Texas Instruments TLC2272 als de OpAmp, en vanwege de uitstekende ruisprestaties van de Mega1284, kon ik ook het frequentieniveau van het laagdoorlaatfilter verhogen.

Het is belangrijk op te merken dat hoewel ontwikkelborden voor de ATMega1284 beschikbaar zijn (Github: MCUdude MightyCore), het een gemakkelijke oefening is om de kale (bootloader-vrije) chip te kopen (koop de PDIP-versie die breadboard en stripboard is) vriendelijk), laad vervolgens de Mark Pendrith-vork van de Maniacbug Mighty-1284p Core Optiboot-bootloader of de MCUdude Mightycore, door een Uno als ISP-programmeur te gebruiken, en laad vervolgens schetsen opnieuw via de Uno naar de AtMega1284. Details en links voor dit proces worden gegeven in bijlage 1.

Ik wil graag de drie belangrijkste bronnen vermelden waaruit verdere informatie kan worden verkregen en zal links naar hun websites en het einde van dit artikel geven: Electrosmash, Open Music Labs en Tardate/Paul Gallagher

Stap 1: Onderdelenlijst

ATMega1284P (PDIP 40-pins pakketversie) Arduino Uno R3 (gebruikt als ISP om de bootloader en schetsen over te brengen naar de ATMega1284) OpAmp TLC2272 (of vergelijkbare RRIO (Rail to Rail Input en Output) OpAmp zoals MCP6002, LMC6482, TL972) Rode LED 16 MHz kristal 2 x 27 pF condensatoren 5 x 6n8 condensatoren 270 pF condensator 4 x 100n condensatoren 2 x 10uF 16v elektrolytische condensatoren 6 x 4k7 weerstanden 100k weerstand 2 x 1M weerstanden 470 ohm weerstand 1M2 weerstand 100k Potentiometer 3 x drukknopschakelaars (een van hen moet worden vervangen door een 3-polige 2-weg voetschakelaar als de effectenbox wordt gebruikt voor live-werk)

Stap 2: constructie

Bouw
Bouw
Bouw
Bouw
Bouw
Bouw

Schema 1 geeft het gebruikte circuit weer en Breadboard 1 is de fysieke representatie (Fritzing 1) met Foto 1 het eigenlijke breadboard-circuit in werking. Het kan voordelig zijn om een potentiometer als mixer te hebben voor het droge (gelijk aan de ingang) en het natte (na verwerking door de MCU) signaal, en Schema 2, Breadboard 2 en Foto 2 (vermeld in Bijlage 2) geeft de circuitdetails van een eerder geconstrueerd circuit dat een dergelijke input-to-output-mixer bevat. Kijk ook naar de StompBox van Open Music Labs voor een andere mixerimplementatie met vier OpAmps.

OpAmp-ingangs- en uitgangstrappen: Het is belangrijk dat een RRO of bij voorkeur een RRIO OpAmp wordt gebruikt vanwege de grote spanningsschommeling die vereist is bij de OpAmp-uitgang naar de ADC van de ATMega1284. De onderdelenlijst bevat een aantal alternatieve OpAmp-types. De 100k-potentiometer wordt gebruikt om de ingangsversterking aan te passen tot een niveau net onder elke vervorming, en kan ook worden gebruikt om de ingangsgevoeligheid aan te passen voor een andere ingangsbron dan een gitaar, zoals een muziekspeler. De OpAmp-uitgangstrap heeft een RC-filter van hogere orde om de digitaal gegenereerde MCU-ruis uit de audiostream te verwijderen.

ADC Stage: De ADC is geconfigureerd om de hele tijd via een interrupt te lezen. Merk op dat een 100nF-condensator moet worden aangesloten tussen de AREF-pin van de ATMega1284 en aarde om ruis te verminderen, aangezien een interne Vcc-bron wordt gebruikt als referentiespanning - sluit de AREF-pin NIET rechtstreeks aan op +5 volt!

DAC PWM Stage: Aangezien de ATMega1284 geen eigen DAC heeft, worden de audio-uitgangsgolfvormen gegenereerd met behulp van een pulsbreedtemodulatie van een RC-filter. De twee PWM-uitgangen op PD4 en PD5 zijn ingesteld als de hoge en lage bytes van de audio-uitgang en gemengd met de twee weerstanden (4k7 en 1M2) in een verhouding van 1:256 (lage byte en hoge byte) - die de audio-uitgang genereert. Het kan de moeite waard zijn om te experimenteren met andere weerstandsparen, zoals het 3k9 1M ohm-paar dat door Open Music Labs in hun StompBox wordt gebruikt.

Stap 3: Software

De software is gebaseerd op de electrosmash-schetsen en het bijgevoegde voorbeeld (pedalshield1284delay.ino) is aangepast van hun Uno-delayschets. Sommige schakelaars en LED's waren verplaatst naar andere poorten die niet door de ISP-programmeur werden gebruikt (SCLK, MISO, MOSI en Reset), de vertragingsbuffer is verhoogd van 2000 bytes naar 12000 bytes en PortD is ingesteld als de uitgang voor de twee PWM-signalen. Zelfs met de toename van de vertragingsbuffer gebruikt de sketch nog steeds slechts ongeveer 70% van de beschikbare 1284 RAM.

Andere voorbeelden zoals de octaver of tremolo van de electrosmash-website voor de pedalSHIELD Uno kunnen worden aangepast voor gebruik door de Mega1284 door drie secties in de code te wijzigen:

(1) Wijzig DDRB |= ((PWM_QTY << 1) | 0x02); naar DDRD |= 0x30;// De bovenstaande wijziging is de ENIGE essentiële codewijziging // bij het overzetten van de AtMega328 naar de ATMega1284

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

tot

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

(3) Wijzig pinMode (FOOTSWITCH, INPUT_PULLUP); pinMode (TOGGLE, INPUT_PULLUP); pinMode (PUSHBUTTON_1, INPUT_PULLUP); pinMode (PUSHBUTTON_2, INPUT_PULLUP); pinMode (LED, UITGANG)

tot

pinMode (VOETSCHAKELAAR, INPUT_PULLUP); pinMode (PUSHBUTTON_1, INPUT_PULLUP); pinMode (PUSHBUTTON_2, INPUT_PULLUP); pinMode (LED, UITGANG);

De drukknoppen 1 en 2 worden in sommige schetsen gebruikt om een effect te vergroten of te verkleinen. In het vertragingsvoorbeeld verhoogt of verlaagt het de vertragingstijd. Wanneer de schets voor het eerst wordt geladen, begint deze met het maximale vertragingseffect. druk op de omlaag-knop - het duurt ongeveer 20 seconden om helemaal af te tellen tot de vertragings-uit-positie - en houd vervolgens de omhoog-knop ingedrukt. Luister hoe het sweep-effect van het ingedrukt houden van de knop het effect verandert in dat van een phaser, refrein en flanging, evenals de vertraging wanneer de knop wordt losgelaten.

Om de vertraging in een echo-effect te veranderen (herhaling toevoegen), verander de regel:

DelayBuffer [DelayCounter] = ADC_high;

tot

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

De voetschakelaar moet een driepolige wisselschakelaar zijn en moet worden aangesloten zoals beschreven op de electrosmash-website.

Stap 4: Koppelingen

Links
Links

(1) Elektrosmash:

(2) Open muzieklabs:

(3) Paul Gallagher:

(4) 1284 Bootloader:

(5) ATmega1284 8bit AVR-microcontroller:

ElectrosmashOpenlabs MusicPaul Gallagher1284 Bootloader 11284 Bootloader 2ATmega1284 8bit AVR-microcontroller

Stap 5: Bijlage 1 Programmeren van de ATMega1284P

Bijlage 1 Programmeren van de ATMega1284P
Bijlage 1 Programmeren van de ATMega1284P
Bijlage 1 Programmeren van de ATMega1284P
Bijlage 1 Programmeren van de ATMega1284P
Bijlage 1 Programmeren van de ATMega1284P
Bijlage 1 Programmeren van de ATMega1284P

Er zijn een paar websites die een goede uitleg geven over het programmeren van de kale ATMega1284-chip voor gebruik met de Arduino IDE. Het proces is in wezen als volgt: (1) Installeer de Mark Pendrith-vork van de Maniacbug Mighty-1284p Core Optiboot-bootloader in de Arduino IDE. (2) Sluit de ATMega1284 aan op een breadboard met de minimale configuratie die een 16 MHz-kristal is, 2 x 22 pF-condensatoren die de twee uiteinden van het kristal aarden, verbind de twee aardingspinnen met elkaar (pinnen 11 en 31), en dan naar de Arduino Uno-aarde, verbind de Vcc en AVcc met elkaar (pinnen 10 en 30), en vervolgens met de Uno +5v, sluit vervolgens de resetpin 9 aan op de Uno D10-pin, de MISO-pin 7 op de UNO D12, de MOSI pin 8 naar de Uno D11, en de SCLK pin 7 naar de Uno D13 pin. (3) Sluit de Uno aan op de Arduino IDE en laad het schetsvoorbeeld Arduino als ISP op de Uno. (4) Selecteer nu het 1284 "maniak" machtige optiboot board, en kies de Burn bootloader optie. (5) Selecteer vervolgens de 1284 vertragingsschets die hier als voorbeeld wordt gegeven en upload deze door de optie Uno als programmeur in het schetsenmenu te gebruiken.

Links die het proces in meer detail uitleggen zijn:

De ATmega1284 gebruiken met de Arduino IDArduino Mightycore voor grote breadboard-vriendelijke AVR'sEen ATMega1284p-prototype bouwenArduino ATmega1284p-bootloader

Stap 6: Bijlage 2 Arduino Uno PedalSHIELD Variatie

Bijlage 2 Arduino Uno PedalSHIELD-variatie
Bijlage 2 Arduino Uno PedalSHIELD-variatie
Bijlage 2 Arduino Uno PedalSHIELD-variatie
Bijlage 2 Arduino Uno PedalSHIELD-variatie
Bijlage 2 Arduino Uno PedalSHIELD-variatie
Bijlage 2 Arduino Uno PedalSHIELD-variatie

Schematic3, Breadboard3 en Photo3 geven details van het Uno-gebaseerde circuit dat voorafging aan de AtMega1284-build.

Het kan voordelig zijn om een potentiometer als mixer te hebben voor het droge (gelijk aan de ingang) en het natte (na verwerking door de MCU) signaal, en Schema 2, Breadboard 2 en Foto 2 geven de circuitdetails van een eerder gebouwd circuit die een dergelijke invoer-naar-uitvoermixer bevat. Kijk ook naar de StompBox van Open Music Labs voor een andere mixerimplementatie met vier OpAmps

Aanbevolen: