Inhoudsopgave:

ATMega1284 Quad Opamp-effectenbox - Ajarnpa
ATMega1284 Quad Opamp-effectenbox - Ajarnpa

Video: ATMega1284 Quad Opamp-effectenbox - Ajarnpa

Video: ATMega1284 Quad Opamp-effectenbox - Ajarnpa
Video: NPU: LM324B and LM2902B Next generation quad channel low-cost op amps 2024, Juli-
Anonim
ATMega1284 Quad Opamp-effectenbox
ATMega1284 Quad Opamp-effectenbox

Het Stomp Shield voor Arduino van Open Music Labs gebruikt een Arduino Uno en vier opamps als gitaareffectenbox. Net als bij de vorige instructable die laat zien hoe je de Electrosmash Uno Pedalshield kunt porten, heb ik ook de Open Music Labs Guitar Effects-box geporteerd naar de ATMega1284P die acht keer meer RAM heeft dan de Uno (16kB versus 2kB).

Vergeleken met de vorige instructable met behulp van de ATMega1284-effecteneenheid, heeft deze box de volgende voordelen:

(1) Het heeft een mixer die het onbewerkte signaal mengt met het door de MCU verwerkte signaal - dat betekent dat de kwaliteit van het signaal aan de uitgang veel verbeterd is.

(2) Het verwerkt 16-bits uitvoer voor de twee PWM-uitgangen, terwijl de vorige effectenbox 8 bits gebruikt voor sommige voorbeelden, zoals het vertragingseffect.

(3) Het heeft een feedback-potentiometer die kan worden gebruikt om de effecten te verbeteren - vooral bij het flanger/phaser-effect draagt ongeveer 30 procent feedback aanzienlijk bij aan de kwaliteit van het effect.

(4) De frequentie van het laagdoorlaatfilter is 10 kHz in vergelijking met de 5 kHz van de vorige effectenbox - dit betekent dat het signaal aan de uitgang aanzienlijk "knisperiger" klinkt.

(5) Het gebruikt een andere interrupt-trigger die het aanzienlijk lagere ruisniveau van deze effectenbox kan verklaren.

Ik begon met breadboarden op het op Uno gebaseerde Open Music Labs Stompbox Shield en ik was zo onder de indruk van de prestaties van dit vier OpAmp-signaalverwerkingscircuit (zelfs bij gebruik van een Arduino Uno), dat ik het naar stripboard heb overgebracht voor meer permanent gebruik.

Dezelfde vier opamp-circuits en DSP-code werden vervolgens geport naar de ATMega1284 - nogmaals, verrassend afgezien van de niet-essentiële veranderingen zoals het toewijzen van de schakelaars en LED aan een andere poort en het toewijzen van 7.000 kilowoorden in plaats van 1.000 kilo-woord RAM voor de vertragingsbuffer, hoefden er slechts twee essentiële wijzigingen in de broncode te worden aangebracht, namelijk het wijzigen van ADC0 van ADC2 naar ADC2 en 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.

Zoals eerder opgemerkt, hoewel ontwikkelborden voor de ATMega1284 beschikbaar zijn (Github: MCUdude MightyCore), is het een gemakkelijke oefening om de kale (bootloader-vrije) chip te kopen (koop de PDIP-versie die breadboard- en stripboard-vriendelijk is), 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 van de vorige instructable.

Stap 1: Onderdelenlijst

Onderdelen lijst
Onderdelen lijst
Onderdelen lijst
Onderdelen lijst

ATMega1284P (PDIP 40-pins pakketversie) Arduino Uno R3 (gebruikt als ISP om de bootloader en schetsen over te brengen naar de ATMega1284) OpAmp MCP6004 quad OpAmp (of vergelijkbare RRIO (Rail to Rail Input en Output) OpAmp zoals TLC2274) 1 x Rode LED 1 x 16 MHz kristal 2 x 27 pF condensatoren 1 x 3n9 condensator 1 x 1n2 condensator 1 x 820pF condensator 2 x 120 pF condensator 4 x 100n condensatoren 3 x 10uF 16v elektrolytische condensatoren 4 x 75k weerstanden 4 x 3k9 weerstanden 1 x 36k weerstand 1 x 24k weerstand 2 x 1M weerstanden 1 x 470 ohm weerstand 3 x 1k weerstanden 2 x 50k Potentiometers (lineair) 1 x 10k Potentiometer (lineair) 3 x drukknopschakelaars (een daarvan moet worden vervangen door een 3-polige 2- manier voetschakelaar als de effectenbox gebruikt gaat worden voor live werk)

Stap 2: constructie

Bouw
Bouw

Circuit 1 toont het gebruikte circuit en Stripboard 1 is de fysieke representatie (Fritzing 1) met Foto 1 het eigenlijke breadboard-circuit in werking. Er zijn drie kleine circuitwijzigingen doorgevoerd: de gedeelde opamp-bias op half-voedingsniveau wordt gebruikt voor drie OpAmp-trappen, de parallelle weerstanden van 3 x 75k en 2 x 75k ohm werden vervangen door enkele weerstanden van 24k en 36k en de feedbackcondensatoren werden verhoogd tot 120pF voor deze twee OpAmp-trappen. De draaiknop werd vervangen door twee drukknoppen die worden gebruikt om effectparameters te verhogen of te verlagen. De driedraads verbinding met de ATMega1284 wordt op het circuit weergegeven als ADC naar pin 40, PWMlow vanaf pin 19 en PWMhigh vanaf pin 18. De drie drukknoppen zijn aangesloten op pin 1, 36 en 35 en aan het andere uiteinde geaard. Een LED is via een 470-weerstand aangesloten op pin 2.

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 50k-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 tweede OpAmp-ingangstrap en de eerste opamp-uitgangstrap hebben een RC-filter van hogere orde om de digitaal gegenereerde MCU-ruis uit de audiostream te verwijderen.

ADC Stage: De ADC is geconfigureerd om te lezen via een timer-interrupt. 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 (3k9 en 1M) in een verhouding van 1:256 (lage byte en hoge byte) - die de audio-uitgang genereert.

Stap 3: Software

De software is gebaseerd op de Stompbox-pedaalschetsen van Open Music Labs, en er zijn twee voorbeelden bijgevoegd, namelijk een flanger/phaser-effect en een delay-effect. Nogmaals, net als bij de vorige instructable, waren de schakelaars en LED verplaatst naar andere poorten weg van die gebruikt door de ISP-programmeur (SCLK, MISO, MOSI en Reset).

De vertragingsbuffer is vergroot van 1000 woorden naar 7000 woorden en PortD is ingesteld als de uitgang voor de twee PWM-signalen. Zelfs met de toename van de vertragingsbuffer gebruikt de schets nog steeds slechts ongeveer 75% van de beschikbare ATMega1284 16 kB RAM.

Andere voorbeelden, zoals de tremolo van de Open Music Labs-website voor de pedalSHIELD Uno, kunnen worden aangepast voor gebruik door de Mega1284 door het include-headerbestand Stompshield.h te wijzigen:

(1) Wijzig DDRB |= 0x06; // stel pwm-uitgangen (pinnen 9, 10) in op outputtoDDRD |= 0x30;

en

ADMUX = 0x62; // links aanpassen, adc2, interne vcc als verwijzing naar ADMUX = 0x60; // links aanpassen, adc0, interne vcc als referentie // Deze wijzigingen zijn de ENIGE essentiële codewijzigingen // bij het overzetten van de Uno naar de ATMega1284

Voor de twee voorbeelden die hier zijn opgenomen, is het header-bestand opgenomen in de schets - d.w.z. er hoeven geen header-bestanden te worden gebruikt

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. Probeer voor de flanger-phaser-schets de feedbackcontrole te vergroten voor een verbeterd effect.

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

buffer [locatie] = invoer; // nieuw monster opslaan

tot

buffer [locatie] = (invoer + buffer [locatie])>>1; // Gebruik dit voor echo-effect

De voetschakelaar moet een driepolige wisselschakelaar zijn

Stap 4: Koppelingen

Electrosmash

Open Muzieklabs Muziek

ATMega-effectpedaal

Aanbevolen: