Indholdsfortegnelse:

ATMega1284P guitar- og musikeffektpedal: 6 trin (med billeder)
ATMega1284P guitar- og musikeffektpedal: 6 trin (med billeder)

Video: ATMega1284P guitar- og musikeffektpedal: 6 trin (med billeder)

Video: ATMega1284P guitar- og musikeffektpedal: 6 trin (med billeder)
Video: Automatic Phrygian interlude in D, prototype Arduino polyphonic tonal aleatron 2024, Juli
Anonim
ATMega1284P guitar- og musikeffektpedal
ATMega1284P guitar- og musikeffektpedal

Jeg har portet Arduino Uno ATMega328 Pedalshield (som udviklet af Electrosmash og delvist baseret på arbejde i Open Music Lab) til ATMega1284P, som har otte gange mere RAM end Uno (16kB versus 2kB). En ekstra uventet fordel er, at Mega1284 -bygningen har en meget lavere støjkomponent - i det omfang, når jeg sammenligner Uno og Mega1284 ved hjælp af det samme understøttelseskredsløb, er det ikke urimeligt at beskrive Uno som "støjende" og Mega1284 som " rolige". Den større RAM betyder, at der kan opnås en meget længere forsinkelseseffekt - og det demonstreres af Arduino -skitseeksemplet, som jeg har inkluderet. Baggrunds vejrtrækningsstøj ved brug af Tremelo -effekten er også (næsten) fraværende med ATMega1284.

En sammenligning af tre Atmel AVR -mikroprocessorer, nemlig 328P, der er Uno, 2560P, der er Mega2560, og Mega1284 viser, at sidstnævnte har mest RAM af de tre:

Aspect 328P 1284P 2560P RAM 2k 16k 8k Flash 32k 128k 256k EEPROM 1k 4k 4k UART 1 2 4 IO Pins 23 32 86 Interrupts 2 3 8 Analog In 6 8 16

Jeg startede med at brød-boarde den ikke-baserede pedalSHIELD som i Electrosmash-specifikationen, men jeg havde ikke den samme RRO OpAmp som specificeret. Som et resultat endte jeg med et kredsløb, som jeg anså for at give acceptable resultater. Detaljerne i denne Uno -version er angivet i tillæg 2.

Det samme kredsløb blev derefter portet til ATMega1284 - overraskende bortset fra de ikke -væsentlige ændringer som f.eks. At tildele switches og LED til en anden port og tildele 12.000 kB i stedet for 2.000 kB RAM til forsinkelsesbufferen, kun en væsentlig ændring skulle foretages i kildekoden, nemlig ændring af Timer1/PWM OC1A og OC1B output fra Port B på Uno til Port D (PD5 og PD4) på ATMega1284.

Jeg opdagede senere de fremragende modifikationer af elektrosmash -kredsløbet af Paul Gallagher, og efter test er dette kredsløbet, jeg vil præsentere her - men derefter også med ændringer: udskiftning af Uno med Mega1284, ved hjælp af en Texas Instruments TLC2272 som OpAmp, og på grund af Mega1284's fremragende støjydelse kunne jeg også hæve lavpasfilterfrekvensniveauet.

Det er vigtigt at bemærke, at selvom udviklingsbrætter til ATMega1284 er tilgængelige (Github: MCUdude MightyCore), er det en let øvelse at købe den bare (bootloader-fri) chip (køb PDIP-versionen, som er brødbræt og strip-board) venlig), indlæs derefter Mark Pendrith-gaffelen på Maniacbug Mighty-1284p Core Optiboot-bootloaderen eller MCUdude Mightycore ved at bruge en Uno som ISP-programmør og derefter indlæse skitser igen via Uno til AtMega1284. Detaljer og links til denne proces er angivet i tillæg 1.

Jeg vil gerne anerkende de tre vigtigste kilder, hvorfra der kan fås yderligere oplysninger, og vil give links til deres websteder og slutningen af denne artikel: Electrosmash, Open Music Labs og Tardate/Paul Gallagher

Trin 1: Deleliste

ATMega1284P (PDIP 40 pin pakkeversion) Arduino Uno R3 (bruges som en ISP til at overføre bagagerummet og skitser til ATMega1284) OpAmp TLC2272 (eller lignende RRIO (Rail to Rail Input and Output) OpAmp såsom MCP6002, LMC6482, TL972) Rød LED 16 MHz krystal 2 x 27 pF kondensatorer 5 x 6n8 kondensatorer 270 pF kondensator 4 x 100n kondensatorer 2 x 10uF 16v elektrolytkondensatorer 6 x 4k7 modstande 100k modstand 2 x 1M modstande 470 ohm modstand 1M2 modstand 100k Potentiometer 3 x trykknapkontakter (en af dem skal erstattes med en 3-polet 2-vejs fodkontakt, hvis effektboksen skal bruges til levende arbejde)

Trin 2: Konstruktion

Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion
Konstruktion

Skematisk 1 viser det anvendte kredsløb, og Breadboard 1 er dets fysiske repræsentation (Fritzing 1) med Foto 1 det faktiske brødbrættede kredsløb i drift. Det kan være en fordel at have et potentiometer som en mixer til det tørre (lig med input) og det våde (efter behandling af MCU) signalet, og skematisk 2, brødbræt 2 og foto 2 (angivet i tillæg 2), giver kredsløbsdetaljer for et tidligere konstrueret kredsløb, der inkorporerer en sådan input til output mixer. Se også på Open Music Labs StompBox for en anden mixerimplementering ved hjælp af fire OpAmps.

OpAmp Input og Output Stages: Det er vigtigt, at der bruges en RRO eller fortrinsvis en RRIO OpAmp på grund af den store spændingssving, der kræves ved OpAmp -udgangen til ADC'en i ATMega1284. Delelisten indeholder en række alternative OpAmp -typer. 100k potentiometeret bruges til at justere inputforstærkningen til et niveau lige under enhver forvrængning, og det kan også bruges til at justere inputfølsomheden for en anden inputkilde end en guitar, f.eks. En musikafspiller. OpAmp -udgangstrinnet har et RC -filter af højere orden for at fjerne den digitalt genererede MCU -støj fra lydstrømmen.

ADC -fase: ADC'en er konfigureret til at læse via en afbrydelse hele tiden. Bemærk, at en 100nF kondensator skal tilsluttes mellem AREF -stiften på ATMega1284 og jord for at reducere støj, da en intern Vcc -kilde bruges som referencespænding - tilslut IKKE AREF -stiften til +5 volt direkte!

DAC PWM -fase: Da ATMega1284 ikke har sin egen DAC, genereres output -lydbølgeformer ved hjælp af en pulsbreddemodulation af et RC -filter. De to PWM -udgange på PD4 og PD5 er indstillet som lydens høje og lave byte og blandes med de to modstande (4k7 og 1M2) i et 1: 256 -forhold (lav byte og høj byte) - som genererer lydoutput. Det kan være værd at eksperimentere med andre modstandspar, f.eks. 3k9 1M ohm -parret, der bruges af Open Music Labs i deres StompBox.

Trin 3: Software

Softwaren er baseret på elektrosmashskitserne, og eksemplet inkluderet (pedalshield1284delay.ino) er blevet tilpasset fra deres Uno delay -skitse. Nogle af switcherne og LED'en var blevet flyttet til andre porte væk fra dem, der blev brugt af ISP -programmereren (SCLK, MISO, MOSI og Reset), forsinkelsesbufferen er blevet øget fra 2000 bytes til 12000 bytes, og PortD er blevet angivet som output for de to PWM -signaler. Selv med stigningen i forsinkelsesbufferen bruger skitsen stadig kun omkring 70% af den tilgængelige 1284 RAM.

Andre eksempler, såsom octaver eller tremolo fra electrosmash -webstedet til pedalenSHIELD Uno kan tilpasses til brug af Mega1284 ved at ændre tre sektioner i koden:

(1) Skift DDRB | = ((PWM_QTY << 1) | 0x02); til DDRD | = 0x30; // Ændringen ovenfor er den KUN vigtige kodeændring // ved port fra AtMega328 til ATMega1284

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

til

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

(3) Skift pinMode (FOOTSWITCH, INPUT_PULLUP); pinMode (TOGGLE, INPUT_PULLUP); pinMode (PUSHBUTTON_1, INPUT_PULLUP); pinMode (PUSHBUTTON_2, INPUT_PULLUP); pinMode (LED, OUTPUT)

til

pinMode (FOOTSWITCH, INPUT_PULLUP); pinMode (PUSHBUTTON_1, INPUT_PULLUP); pinMode (PUSHBUTTON_2, INPUT_PULLUP); pinMode (LED, OUTPUT);

Trykknapperne 1 og 2 bruges i nogle af skitserne til at øge eller reducere en effekt. I forsinkelseseksemplet øges eller formindskes forsinkelsestiden. Når skitsen først indlæses, starter den med den maksimale forsinkelseseffekt. tryk på ned -knappen - det tager cirka 20 sekunder at tælle ned helt til forsinkelsespositionen - og tryk derefter på op -knappen og hold den inde. Lyt til, hvordan sweep -effekten ved at holde knappen inde ændrer effekten til en phaser, chorus og flanging, samt forsinkelsen, når knappen slippes.

For at ændre forsinkelsen til en ekkoeffekt (tilføj gentagelse) skal du ændre linjen:

DelayBuffer [DelayCounter] = ADC_high;

til

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

Fodkontakten skal være en trepolet tovejskontakt og skal tilsluttes som beskrevet på electrosmash -webstedet.

Trin 4: Links

Links
Links

(1) Elektrosmash:

(2) Åbn Music Labs:

(3) Paul Gallagher:

(4) 1284 Bootloader:

(5) ATmega1284 8bit AVR mikrokontroller:

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

Trin 5: Tillæg 1 Programmering af ATMega1284P

Tillæg 1 Programmering af ATMega1284P
Tillæg 1 Programmering af ATMega1284P
Tillæg 1 Programmering af ATMega1284P
Tillæg 1 Programmering af ATMega1284P
Tillæg 1 Programmering af ATMega1284P
Tillæg 1 Programmering af ATMega1284P

Der er et par websteder, der giver en god forklaring på, hvordan man programmerer den blotte ATMega1284 -chip til brug med Arduino IDE. Processen er i det væsentlige som følger: (1) Installer Mark Pendrith-gaffelen på Maniacbug Mighty-1284p Core Optiboot bootloader i Arduino IDE. (2) Tilslut ATMega1284 på et brødbræt med en minimumskonfiguration, der er en 16 MHz krystal, 2 x 22 pF kondensatorer, der begrunder de to ender af krystallen, Tilslut de to jordstifter sammen (ben 11 og 31), og derefter til Arduino Uno -jorden, tilslut Vcc og AVcc sammen (ben 10 og 30) og derefter til Uno +5v, tilslut derefter nulstillingstappen 9 til Uno D10 -stiften, MISO -stiften 7 til UNO D12, MOSI pin 8 til Uno D11, og SCLK pin 7 til Uno D13 pin. (3) Tilslut Uno til Arduino IDE og indlæs skitseeksemplet Arduino som internetudbyder på Uno. (4) Vælg nu 1284 "maniac" mægtige optiboot board, og vælg indstillingen Burn bootloader. (5) Vælg derefter 1284 forsinkelsesskitsen, der er givet her som et eksempel, og upload den ved at bruge funktionen Uno som programmerer i skitsemenuen.

Links, der forklarer processen mere detaljeret, er:

Brug af ATmega1284 med Arduino IDEArduino Mightycore til store breadboard -venlige AVR'er Opbygning af en ATMega1284p prototype Arduino ATmega1284p bootloader

Trin 6: Tillæg 2 Arduino Uno PedalSHIELD Variation

Bilag 2 Arduino Uno PedalSHIELD Variation
Bilag 2 Arduino Uno PedalSHIELD Variation
Bilag 2 Arduino Uno PedalSHIELD Variation
Bilag 2 Arduino Uno PedalSHIELD Variation
Bilag 2 Arduino Uno PedalSHIELD Variation
Bilag 2 Arduino Uno PedalSHIELD Variation

Schematic3, Breadboard3 og Photo3 giver detaljer om det uno-baserede kredsløb, der gik forud for AtMega1284-opbygningen.

Det kan være en fordel at have et potentiometer som mixer til det tørre (lig med input) og det våde (efter behandling af MCU) signalet, og skematisk 2, Breadboard 2 og Foto 2 giver kredsløbets detaljer om et tidligere konstrueret kredsløb som inkorporerer en sådan input til output mixer. Se også på Open Music Labs StompBox for en anden mixerimplementering ved hjælp af fire OpAmps

Anbefalede: