INHOUDSOPGAWE:

ATMega1284P pedaal vir kitaar en musiek -effekte: 6 stappe (met foto's)
ATMega1284P pedaal vir kitaar en musiek -effekte: 6 stappe (met foto's)

Video: ATMega1284P pedaal vir kitaar en musiek -effekte: 6 stappe (met foto's)

Video: ATMega1284P pedaal vir kitaar en musiek -effekte: 6 stappe (met foto's)
Video: MEAU - Dat heb jij gedaan (Official video) 2024, Julie
Anonim
ATMega1284P pedaal vir kitaar en musiek -effekte
ATMega1284P pedaal vir kitaar en musiek -effekte

Ek het die Arduino Uno ATMega328 Pedalshield oorgedra (soos ontwikkel deur Electrosmash en gedeeltelik gebaseer op werk by die Open Music Lab) na die ATMega1284P wat agt keer meer RAM het as die Uno (16kB versus 2kB). 'N Bykomende onverwagte voordeel is dat die Mega1284 -gebou 'n baie laer geluidskomponent het - in die mate dat as ek die Uno en die Mega1284 met dieselfde ondersteuningskring vergelyk, dit nie onredelik is om die Uno as "raserig" te beskryf nie en die Mega1284 as " stil ". Die groter RAM beteken dat 'n baie langer vertragingseffek verkry kan word - en dit word bewys deur die Arduino -sketsvoorbeeld wat ek ingesluit het. Die asemhalingsgeluid op die agtergrond by die gebruik van die Tremelo -effek is ook (byna) afwesig met die ATMega1284.

'N Vergelyking van drie Atmel AVR -mikroverwerkers, naamlik die 328P wat die Uno is, die 2560P wat die Mega2560 is, en die Mega1284 toon dat laasgenoemde die meeste RAM van die drie het:

Aspek 328P 1284P 2560P RAM 2k 16k 8k Flash 32k 128k 256k EEPROM 1k 4k 4k UART 1 2 4 IO -penne 23 32 86 Onderbrekings 2 3 8 Analoog In 6 8 16

Ek het begin met die aanboord van die Uno-gebaseerde pedalSHIELD soos in die Electrosmash-spesifikasie, maar ek het nie dieselfde RRO OpAmp as gespesifiseer nie. As gevolg hiervan beland ek met 'n stroombaan wat ek beskou het as aanvaarbare resultate. Die besonderhede van hierdie Uno -weergawe word in bylaag 2 gegee.

Dieselfde stroombaan is daarna na die ATMega1284 oorgedra - verrassend, afgesien van die nie -noodsaaklike veranderinge, soos om die skakelaars en LED aan 'n ander poort toe te ken, en slegs 12 000 kB in plaas van 2 000 kB RAM toe te ken vir die vertragingsbuffer 'n wesenlike verandering in die bronkode moes aangebring word, naamlik die verandering van die Timer1/PWM OC1A- en OC1B -uitsette vanaf poort B op die Uno na poort D (PD5 en PD4) op die ATMega1284.

Ek het later die uitstekende modifikasies van die elektrosmash -stroombaan deur Paul Gallagher ontdek, en na die toets is dit die stroombaan wat ek hier sal aanbied - maar dan ook met wysigings: vervanging van die Uno met die Mega1284, met behulp van 'n Texas Instruments TLC2272 as die OpAmp, en As gevolg van die uitstekende geraasprestasie van die Mega1284, kan ek ook die laagdeurlaatfilterfrekwensie vlak verhoog.

Dit is belangrik om daarop te let dat alhoewel ontwikkelingsborde vir die ATMega1284 beskikbaar is (Github: MCUdude MightyCore), dit 'n maklike oefening is om die kaal (selflaaivrye) skyfie te koop (koop die PDIP-weergawe wat broodbord en strookbord is) laai dan die Mark Pendrith-vurk van die Maniacbug Mighty-1284p Core Optiboot bootloader of die MCUdude Mightycore, deur 'n Uno as die ISP-programmeerder te gebruik, en laai dan weer sketse via die Uno na die AtMega1284. Besonderhede en skakels vir hierdie proses word in bylaag 1 gegee.

Ek wil erkenning gee aan die drie belangrikste bronne waaruit verdere inligting verkry kan word, en ek sal skakels na hul webwerwe en die einde van hierdie artikel gee: Electrosmash, Open Music Labs en Tardate/Paul Gallagher

Stap 1: Onderdele lys

ATMega1284P (PDIP 40 -pins pakket weergawe) Arduino Uno R3 (gebruik as 'n ISP om die laaiplader en sketse oor te dra na die ATMega1284) OpAmp TLC2272 (of soortgelyke RRIO (Rail to Rail Input and Output) OpAmp soos MCP6002, LMC6482, TL972) Rooi LED 16 MHz kristal 2 x 27 pF kondensateurs 5 x 6n8 kondensators 270 pF kondensator 4 x 100n kondensators 2 x 10uF 16v elektrolitiese kondensators 6 x 4k7 weerstande 100k weerstand 2 x 1M weerstande 470 ohm weerstand 1M2 weerstand 100k Potensiometer 3 x drukknopskakelaars (een van hulle moet vervang word met 'n 3-polige tweerigting-voetschakelaar as die effekkas vir lewendige werk gebruik gaan word)

Stap 2: Konstruksie

Konstruksie
Konstruksie
Konstruksie
Konstruksie
Konstruksie
Konstruksie

Skematiese 1 gee die stroombaan wat gebruik word en Breadboard 1 is die fisiese voorstelling daarvan (Fritzing 1) met Foto 1 die werklike broodbord in werking. Dit kan voordelig wees om 'n potensiometer as 'n menger te hê vir die droë (gelyk aan die inset) en die nat (na verwerking deur die MCU) sein, en skematiese 2, broodpan 2 en foto 2 (gelys in aanhangsel 2) gee die kringbesonderhede van 'n voorheen gekonstrueerde stroombaan wat so 'n ingang tot uitsetmenger bevat. Kyk ook na die Open Music Labs StompBox vir nog 'n mengerimplementering met behulp van vier OpAmps.

OpAmp In- en Output Fases: Dit is belangrik dat 'n RRO of verkieslik 'n RRIO OpAmp gebruik word vanweë die groot spanningswaai wat nodig is by die OpAmp -uitset na die ADC van die ATMega1284. Die onderdele -lys bevat 'n aantal alternatiewe OpAmp -tipes. Die 100k potensiometer word gebruik om die invoerversterking aan te pas op 'n vlak net onder enige vervorming, en dit kan ook gebruik word om die insetgevoeligheid vir 'n ander invoerbron as 'n kitaar soos 'n musiekspeler aan te pas. Die OpAmp -uitvoerfase het 'n hoër -orde RC -filter om die digitaal gegenereerde MCU -geraas uit die klankstroom te verwyder.

ADC -fase: Die ADC is die hele tyd opgestel om deur 'n onderbreking te lees. Let daarop dat 'n 100nF -kondensator tussen die AREF -pen van die ATMega1284 en die aarde gekoppel moet word om geraas te verminder, aangesien 'n interne Vcc -bron as 'n verwysingsspanning gebruik word - moenie die AREF -pen direk aan +5 volt koppel nie!

DAC PWM -fase: Aangesien die ATMega1284 nie sy eie DAC het nie, word die uitvoer -klankgolfvorms gegenereer met behulp van 'n polswydte -modulasie van 'n RC -filter. Die twee PWM -uitsette op PD4 en PD5 word as die hoë en lae grepe van die klankuitset gestel en gemeng met die twee weerstande (4k7 en 1M2) in 'n 1: 256 -verhouding (lae byte en hoë byte) - wat die klankuitset genereer. Dit kan die moeite werd wees om met ander weerstandspare te eksperimenteer, soos die 3k9 1M ohm -paar wat Open Music Labs in hul StompBox gebruik.

Stap 3: sagteware

Die sagteware is gebaseer op die elektrosmash -sketse, en die voorbeeld (pedalshield1284delay.ino) is aangepas uit hul Uno -vertragingskets. Sommige skakelaars en LED's is na ander hawens verskuif, weg van die wat deur die ISP -programmeerder gebruik word (SCLK, MISO, MOSI en Reset), die vertragingsbuffer is verhoog van 2000 grepe tot 12000 grepe en PortD is ingestel as die uitset vir die twee PWM seine. Selfs met die toename in die vertragingsbuffer, gebruik die skets nog steeds slegs ongeveer 70% van die beskikbare 1284 RAM.

Ander voorbeelde soos die octaver of tremolo van die electrosmash -webwerf vir die pedalSHIELD Uno kan aangepas word vir gebruik deur die Mega1284 deur drie afdelings in die kode te verander:

(1) Verander DDRB | = ((PWM_QTY << 1) | 0x02); na DDRD | = 0x30; // Die verandering hierbo is die ENIGSTE noodsaaklike kodeverandering // wanneer dit van die AtMega328 na die ATMega1284 oorgedra word

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

aan

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

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

aan

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

Die drukknoppies 1 en 2 word in sommige sketse gebruik om 'n effek te verhoog of te verminder. In die vertragingsvoorbeeld vergroot of verminder dit die vertragingstyd. As die skets die eerste keer gelaai word, begin dit met die maksimum vertragingseffek. druk op die afknoppie - dit neem ongeveer 20 sekondes om af te tel tot by die vertraagde posisie - en hou dan die omhoogknoppie ingedruk. Luister hoe die sweep -effek van die hou van die knoppie die effek verander na die van 'n phaser, refrein en flens, asook die vertraging wanneer die knoppie losgemaak word.

Om die vertraging na 'n eggo -effek te verander (voeg herhaling by) verander die reël:

DelayBuffer [DelayCounter] = ADC_high;

aan

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

Die voetschakelaar moet 'n drie -polige tweerigtingskakelaar wees en moet verbind word soos beskryf op die electrosmash -webwerf.

Stap 4: Skakels

Skakels
Skakels

(1) Elektrosmash:

(2) Open Music Labs:

(3) Paul Gallagher:

(4) 1284 selflaaiprogram:

(5) ATmega1284 8bit AVR -mikrobeheerder:

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

Stap 5: Bylaag 1 Die programmering van die ATMega1284P

Bylaag 1 Die programmering van die ATMega1284P
Bylaag 1 Die programmering van die ATMega1284P
Bylaag 1 Die programmering van die ATMega1284P
Bylaag 1 Die programmering van die ATMega1284P
Bylaag 1 Die programmering van die ATMega1284P
Bylaag 1 Die programmering van die ATMega1284P

Daar is 'n paar webwerwe wat 'n goeie verduideliking gee oor hoe om die blote ATMega1284 -chip te programmeer vir gebruik met die Arduino IDE. Die proses is in wese soos volg: (1) Installeer die Mark Pendrith-vurk van die Maniacbug Mighty-1284p Core Optiboot-laaiprogram in die Arduino IDE. (2) Draai die ATMega1284 op 'n broodbord met 'n minimum konfigurasie van 16 MHz kristal, 2 x 22 pF kapasitors wat die twee ente van die kristal aansluit, verbind die twee grondpenne (penne 11 en 31) en dan Koppel die Vcc en AVcc aan die Arduino Uno -grond (penne 10 en 30) en dan aan die Uno +5v, en koppel dan die resetpen 9 aan die Uno D10 -pen, die MISO -pen 7 aan die UNO D12, The MOSI pen 8 aan die Uno D11, en die SCLK -pen 7 aan die Uno D13 -pen. (3) Koppel die Uno aan die Arduino IDE en laai die sketsvoorbeeld Arduino as ISP op die Uno. (4) Kies nou die 1284 "maniak" magtige optiboot -bord en kies die opsie Burn bootloader. (5) Kies dan die 1284 vertragingskets wat hier gegee word as 'n voorbeeld en laai dit op met die opsie Uno as programmeerder in die sketse -kieslys.

Skakels wat die proses in meer besonderhede verduidelik, is:

Gebruik die ATmega1284 met die Arduino IDEArduino Mightycore vir groot broodbordvriendelike AVR's Bou van 'n ATMega1284p prototipe Arduino ATmega1284p selflaaiprogram

Stap 6: Bylaag 2 Arduino Uno PedalSHIELD Variasie

Bylaag 2 Arduino Uno PedalSHIELD Variasie
Bylaag 2 Arduino Uno PedalSHIELD Variasie
Bylaag 2 Arduino Uno PedalSHIELD Variasie
Bylaag 2 Arduino Uno PedalSHIELD Variasie
Bylaag 2 Arduino Uno PedalSHIELD Variasie
Bylaag 2 Arduino Uno PedalSHIELD Variasie

Schematic3, Breadboard3 en Photo3 gee besonderhede van die Uno-gebaseerde stroombaan wat die AtMega1284-bou voorafgegaan het.

Dit kan voordelig wees om 'n potensiometer as 'n menger te hê vir die droë (gelyk aan die inset) en die nat (na verwerking deur die MCU) sein, en Skema 2, Breadboard 2 en Foto 2 gee die stroombaanbesonderhede van 'n voorheen gekonstrueerde stroombaan wat so 'n ingang tot uitvoer -menger bevat. Kyk ook na die Open Music Labs StompBox vir nog 'n mengerimplementering met behulp van vier OpAmps

Aanbeveel: