Innholdsfortegnelse:

ATMega1284P Pedal for gitar- og musikkeffekter: 6 trinn (med bilder)
ATMega1284P Pedal for gitar- og musikkeffekter: 6 trinn (med bilder)

Video: ATMega1284P Pedal for gitar- og musikkeffekter: 6 trinn (med bilder)

Video: ATMega1284P Pedal for gitar- og musikkeffekter: 6 trinn (med bilder)
Video: World's First Wireless MIDI Controller for Acoustic Guitar - ACPAD 2024, Juli
Anonim
ATMega1284P gitar- og musikkeffektpedal
ATMega1284P gitar- og musikkeffektpedal

Jeg har portet Arduino Uno ATMega328 Pedalshield (som utviklet av Electrosmash og delvis basert på arbeid i Open Music Lab) til ATMega1284P som har åtte ganger mer RAM enn Uno (16kb versus 2kB). En ekstra uventet fordel er at Mega1284 -bygningen har en mye lavere støykomponent - i den grad at når jeg sammenligner Uno og Mega1284 med samme støttekrets, er det ikke urimelig å beskrive Uno som "støyende" og Mega1284 som " stille". Den større RAM betyr at en mye lengre forsinkelseseffekt kan oppnås - og det demonstreres av Arduino -skisseeksemplet som jeg har tatt med. Bakgrunnspustelyden ved bruk av Tremelo -effekten er også (nesten) fraværende med ATMega1284.

En sammenligning av tre Atmel AVR -mikroprosessorer, nemlig 328P som er Uno, 2560P som er Mega2560, og Mega1284 viser at sistnevnte har mest RAM av 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 Avbrudd 2 3 8 Analog In 6 8 16

Jeg begynte med å brød-gå ombord på Uno-baserte pedalSHIELD som i Electrosmash-spesifikasjonen, men jeg hadde ikke den samme RRO OpAmp som spesifisert. Som et resultat endte jeg opp med en krets som jeg anså for å gi akseptable resultater. Detaljene i denne Uno -versjonen er gitt i vedlegg 2.

Den samme kretsen ble deretter portet til ATMega1284 - overraskende bortsett fra de ikke -essensielle endringene, for eksempel å tildele bryterne og LED -en til en annen port, og tildele 12 000 kB i stedet for 2 000 kB RAM for forsinkelsesbufferen, bare en vesentlig endring måtte gjøres i kildekoden, nemlig å endre Timer1/PWM OC1A og OC1B -utgangene fra Port B på Uno til Port D (PD5 og PD4) på ATMega1284.

Jeg oppdaget senere de utmerkede modifikasjonene av electrosmash -kretsen av Paul Gallagher, og etter testing er dette kretsen jeg vil presentere her - men da også med modifikasjoner: substitusjon av Uno med Mega1284, ved bruk av en Texas Instruments TLC2272 som OpAmp, og på grunn av den utmerkede støyytelsen til Mega1284, kunne jeg også heve lavpassfilterfrekvensnivået.

Det er viktig å merke seg at selv om utviklingstavler for ATMega1284 er tilgjengelige (Github: MCUdude MightyCore), er det en enkel øvelse å kjøpe den blanke (bootloaderfrie) brikken (kjøp PDIP-versjonen som er brødbrett og stripebrett) vennlig), last deretter Mark Pendrith-gaffelen til Maniacbug Mighty-1284p Core Optiboot bootloader eller MCUdude Mightycore, ved å bruke en Uno som ISP-programmereren, og deretter laste skisser igjen via Uno til AtMega1284. Detaljer og lenker for denne prosessen er gitt i vedlegg 1.

Jeg vil anerkjenne de tre viktigste kildene som du kan få ytterligere informasjon fra, og vil gi lenker til nettstedene deres og slutten av denne artikkelen: Electrosmash, Open Music Labs og Tardate/Paul Gallagher

Trinn 1: Deleliste

ATMega1284P (PDIP 40 -pinners pakkeversjon) Arduino Uno R3 (brukes som en ISP for å overføre bagasjelasteren og skisser til ATMega1284) OpAmp TLC2272 (eller lignende RRIO (Rail to Rail Input and Output) OpAmp som MCP6002, LMC6482, TL972) Rød LED 16 MHz krystall 2 x 27 pF kondensatorer 5 x 6n8 kondensatorer 270 pF kondensator 4 x 100n kondensatorer 2 x 10uF 16v elektrolytiske kondensatorer 6 x 4k7 motstander 100k motstand 2 x 1M motstander 470 ohm motstand 1M2 motstand 100k Potensiometer 3 x trykknappbrytere (en av dem bør byttes ut med en 3-polet 2-veis fotbryter hvis effektboksen skal brukes til levende arbeid)

Trinn 2: Konstruksjon

Konstruksjon
Konstruksjon
Konstruksjon
Konstruksjon
Konstruksjon
Konstruksjon

Skjematisk 1 gir kretsen som brukes og Breadboard 1 er dens fysiske representasjon (Fritzing 1) med Foto 1 den faktiske brødbrettede kretsen i drift. Det kan være en fordel å ha et potensiometer som mikser for det tørre (lik inngangen) og det våte (etter behandling av MCU) -signalet, og Skjematisk 2, Breadboard 2 og Foto 2 (oppført i vedlegg 2) gir kretsdetaljer for en tidligere konstruert krets som inneholder en slik inngang til utgangsmikser. Se også på Open Music Labs StompBox for en annen mikserimplementering ved hjelp av fire OpAmps.

OpAmp inngangs- og utgangstrinn: Det er viktig at en RRO eller fortrinnsvis en RRIO OpAmp brukes på grunn av den store spenningssvingningen som kreves ved OpAmp -utgangen til ADC til ATMega1284. Delelisten inneholder en rekke alternative OpAmp -typer. 100k potensiometeret brukes til å justere inngangsforsterkningen til et nivå like under enhver forvrengning, og det kan også brukes til å justere inngangssensitiviteten for en annen inngangskilde enn en gitar, for eksempel en musikkspiller. OpAmp -utgangstrinnet har et RC -filter av høyere orden for å fjerne den digitalt genererte MCU -støyen fra lydstrømmen.

ADC Stage: ADC er konfigurert til å lese via et avbrudd hele tiden. Vær oppmerksom på at en 100nF kondensator bør kobles mellom AREF -pinnen på ATMega1284 og jord for å redusere støy ettersom en intern Vcc -kilde brukes som referansespenning - IKKE koble AREF -pinnen til +5 volt direkte!

DAC PWM Stage: Siden ATMega1284 ikke har sin egen DAC, genereres utgangsbølgeformene ved hjelp av en pulsbreddemodulering av et RC -filter. De to PWM -utgangene på PD4 og PD5 er satt som høye og lave byte på lydutgangen og blandet med de to motstandene (4k7 og 1M2) i et 1: 256 -forhold (lav byte og høy byte) - som genererer lydutgangen. Det kan være verdt å eksperimentere med andre motstandspar, for eksempel 3k9 1M ohm -paret som brukes av Open Music Labs i deres StompBox.

Trinn 3: Programvare

Programvaren er basert på elektrosmashskissene, og eksemplet inkludert (pedalshield1284delay.ino) er tilpasset fra deres Uno delay -skisse. Noen av bryterne og LED -en hadde blitt flyttet til andre porter vekk fra de som ble brukt av ISP -programmereren (SCLK, MISO, MOSI og Reset), forsinkelsesbufferen har blitt økt fra 2000 byte til 12000 byte, og PortD har blitt angitt som utgang for de to PWM -signalene. Selv med økningen i forsinkelsesbufferen bruker skissen fremdeles bare omtrent 70% av tilgjengelig 1284 RAM.

Andre eksempler som octaver eller tremolo fra electrosmash -nettstedet for pedalenSHIELD Uno kan tilpasses for bruk av Mega1284 ved å endre tre seksjoner i koden:

(1) Endre DDRB | = ((PWM_QTY << 1) | 0x02); til DDRD | = 0x30; // Endringen ovenfor er den eneste viktige kodeendringen // ved overføring fra AtMega328 til ATMega1284

(2) Endre #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) Endre 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);

Trykknappene 1 og 2 brukes i noen av skissene for å øke eller redusere en effekt. I forsinkelseseksemplet øker eller reduserer det forsinkelsestiden. Når skissen først lastes inn, starter den med maksimal forsinkelseseffekt. trykk ned -knappen - det tar omtrent 20 sekunder å telle ned helt til forsinkelsesposisjonen - og trykk og hold inne opp -knappen. Lytt til hvordan sveipeeffekten ved å holde inne knappen endrer effekten til en phaser, refreng og flens, samt forsinkelsen når knappen slippes.

For å endre forsinkelsen til en ekkoeffekt (legg til repetisjon), endre linjen:

DelayBuffer [DelayCounter] = ADC_high;

til

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

Fotbryteren skal være en trepolet toveisbryter og må kobles til som beskrevet på electrosmash -nettstedet.

Trinn 4: Lenker

Lenker
Lenker

(1) Elektrosmash:

(2) Open Music Labs:

(3) Paul Gallagher:

(4) 1284 oppstartslaster:

(5) ATmega1284 8 -biters AVR -mikrokontroller:

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

Trinn 5: Vedlegg 1 Programmering av ATMega1284P

Vedlegg 1 Programmering av ATMega1284P
Vedlegg 1 Programmering av ATMega1284P
Tillegg 1 Programmering av ATMega1284P
Tillegg 1 Programmering av ATMega1284P
Tillegg 1 Programmering av ATMega1284P
Tillegg 1 Programmering av ATMega1284P

Det er noen få nettsteder som gir en god forklaring på hvordan du kan programmere den blotte ATMega1284 -brikken for bruk med Arduino IDE. Prosessen er i hovedsak som følger: (1) Installer Mark Pendrith-gaffelen til Maniacbug Mighty-1284p Core Optiboot bootloader i Arduino IDE. (2) Fest ATMega1284 på et brødbrett med en minimumskonfigurasjon som er 16 MHz krystall, 2 x 22 pF kondensatorer som begrenser de to endene av krystallet, Koble de to jordpinnene sammen (pinne 11 og 31), og deretter til Arduino Uno -bakken, koble Vcc og AVcc sammen (pinne 10 og 30), og deretter til Uno +5v, og koble deretter tilbakestillingspinnen 9 til Uno D10 -pinnen, MISO -pinnen 7 til UNO D12, MOSI pin 8 til Uno D11, og SCLK pin 7 til Uno D13 pin. (3) Koble Uno til Arduino IDE og last skisseeksemplet Arduino som ISP på Uno. (4) Velg nå det 1284 "galne" mektige optiboot -kortet, og velg alternativet Burn bootloader. (5) Velg deretter 1284 forsinkelsesskissen som er gitt her som et eksempel, og last den opp ved å bruke alternativet Uno som programmerer i skisse -menyen.

Lenker som forklarer prosessen mer detaljert er:

Bruke ATmega1284 med Arduino IDEArduino Mightycore for store brødbrettvennlige AVRer Bygge en ATMega1284p prototype Arduino ATmega1284p bootloader

Trinn 6: Vedlegg 2 Arduino Uno PedalSHIELD Variation

Vedlegg 2 Arduino Uno PedalSHIELD Variasjon
Vedlegg 2 Arduino Uno PedalSHIELD Variasjon
Vedlegg 2 Arduino Uno PedalSHIELD Variasjon
Vedlegg 2 Arduino Uno PedalSHIELD Variasjon
Vedlegg 2 Arduino Uno PedalSHIELD Variasjon
Vedlegg 2 Arduino Uno PedalSHIELD Variasjon

Schematic3, Breadboard3 og Photo3 gir detaljer om den ikke-baserte kretsen som gikk før AtMega1284-bygget.

Det kan være en fordel å ha et potensiometer som mikser for det tørre (lik inngangen) og det våte (etter behandling av MCU) -signalet, og Skjematisk 2, Breadboard 2 og Foto 2 gir kretsdetaljene til en tidligere konstruert krets som inneholder en slik inngang til utgangsmikser. Se også på Open Music Labs StompBox for en annen mikserimplementering ved hjelp av fire OpAmps

Anbefalt: