Table des matières:

ATMega1284P Pédale d'effets pour guitare et musique : 6 étapes (avec photos)
ATMega1284P Pédale d'effets pour guitare et musique : 6 étapes (avec photos)

Vidéo: ATMega1284P Pédale d'effets pour guitare et musique : 6 étapes (avec photos)

Vidéo: ATMega1284P Pédale d'effets pour guitare et musique : 6 étapes (avec photos)
Vidéo: Демонстрация педали гитарных эффектов Fulltone Octafuzz 2024, Juillet
Anonim
ATMega1284P Pédale d'effets pour guitare et musique
ATMega1284P Pédale d'effets pour guitare et musique

J'ai porté l'Arduino Uno ATMega328 Pedalshield (tel que développé par Electrosmash et en partie basé sur les travaux de l'Open Music Lab) sur l'ATMega1284P qui a huit fois plus de RAM que l'Uno (16 Ko contre 2 Ko). Un avantage inattendu supplémentaire est que la construction Mega1284 a une composante de bruit beaucoup plus faible - dans la mesure où lorsque je compare l'Uno et le Mega1284 en utilisant le même circuit de support, il n'est pas déraisonnable de décrire l'Uno comme "bruyant" et le Mega1284 comme " calmer". La RAM plus grande signifie qu'un effet de délai beaucoup plus long peut être obtenu - et cela est démontré par l'exemple de croquis Arduino que j'ai inclus. Le bruit de fond de respiration lors de l'utilisation de l'effet Tremelo est également (presque) absent avec l'ATMega1284.

Une comparaison de trois microprocesseurs Atmel AVR à savoir le 328P qui est le Uno, le 2560P qui est le Mega2560 et le Mega1284 montre que ce dernier a le plus de RAM des trois:

Aspect 328P 1284P 2560P RAM 2k 16k 8k Flash 32k 128k 256k EEPROM 1k 4k 4k UART 1 2 4 Broches IO 23 32 86 Interruptions 2 3 8 Entrée analogique 6 8 16

J'ai commencé par tester le pedalSHIELD basé sur Uno comme dans la spécification Electrosmash, mais je n'avais pas le même RRO OpAmp que celui spécifié. En conséquence, je me suis retrouvé avec un circuit que j'ai considéré comme donnant des résultats acceptables. Les détails de cette version Uno sont donnés en annexe 2.

Ce même circuit a ensuite été porté sur l'ATMega1284 - de manière surprenante, mis à part les changements non essentiels tels que l'affectation des commutateurs et des LED à un port différent et l'allocation de 12 000 Ko au lieu de 2 000 Ko de RAM pour le tampon de retard, seulement une modification essentielle a dû être apportée au code source, à savoir changer les sorties Timer1/PWM OC1A et OC1B du port B sur l'Uno vers le port D (PD5 et PD4) sur l'ATMega1284.

J'ai découvert plus tard les excellentes modifications apportées au circuit electrosmash par Paul Gallagher et après test, c'est le circuit que je vais présenter ici - mais aussi avec des modifications: substitution de l'Uno par le Mega1284, en utilisant un Texas Instruments TLC2272 comme OpAmp, et en raison des excellentes performances sonores du Mega1284, j'ai également pu augmenter le niveau de fréquence du filtre passe-bas.

Il est important de noter que bien que des cartes de développement pour l'ATMega1284 soient disponibles (Github: MCUdude MightyCore), c'est un exercice facile d'acheter la puce nue (sans chargeur de démarrage) (acheter la version PDIP qui est une planche à pain et une friendly), puis chargez le fork Mark Pendrith du chargeur de démarrage Maniacbug Mighty-1284p Core Optiboot ou du MCUdude Mightycore, en utilisant un Uno comme programmeur ISP, puis chargez à nouveau les croquis via Uno vers l'AtMega1284. Les détails et les liens de ce processus sont donnés en annexe 1.

Je tiens à remercier les trois sources les plus importantes à partir desquelles de plus amples informations peuvent être obtenues et je donnerai des liens vers leurs sites Web et la fin de cet article: Electrosmash, Open Music Labs et Tardate/Paul Gallagher

Étape 1: Liste des pièces

ATMega1284P (version de paquet PDIP 40 broches) Arduino Uno R3 (utilisé comme FAI pour transférer le chargeur de démarrage et les croquis vers l'ATMega1284) OpAmp TLC2272 (ou similaire RRIO (Rail to Rail Input and Output) OpAmp tel que MCP6002, LMC6482, TL972) LED rouge cristal 16 MHz 2 condensateurs 27 pF 5 condensateurs 6n8 condensateur 270 pF 4 condensateurs 100n 2 condensateurs électrolytiques 10uF 16v 6 résistances 4k7 résistance 100k 2 résistances 1M résistance 470 ohm résistance 1M2 100k Potentiomètre 3 x boutons poussoirs (un d'entre eux doivent être remplacés par un commutateur au pied 3 pôles à 2 voies si la boîte d'effets doit être utilisée pour le travail en direct)

Étape 2: Construction

Construction
Construction
Construction
Construction
Construction
Construction

Le schéma 1 donne le circuit utilisé et la planche à pain 1 est sa représentation physique (Fritzing 1) avec la photo 1 le circuit réel de la planche à pain en fonctionnement. Il peut être avantageux d'avoir un potentiomètre comme mélangeur pour le signal sec (égal à l'entrée) et le signal humide (après traitement par le MCU), et le schéma 2, la planche à pain 2 et la photo 2 (listés en annexe 2), donne le détails de circuit d'un circuit précédemment construit qui incorpore un tel mélangeur d'entrée à sortie. Regardez également la StompBox d'Open Music Labs pour une autre implémentation de mélangeur utilisant quatre OpAmps.

Étages d'entrée et de sortie OpAmp: Il est important qu'un RRO ou de préférence un RRIO OpAmp soit utilisé en raison de la grande oscillation de tension requise à la sortie OpAmp vers l'ADC de l'ATMega1284. La liste des pièces contient un certain nombre de types OpAmp alternatifs. Le potentiomètre 100k est utilisé pour régler le gain d'entrée à un niveau juste en dessous de toute distorsion, et il peut également être utilisé pour régler la sensibilité d'entrée pour une source d'entrée autre qu'une guitare telle qu'un lecteur de musique. L'étage de sortie OpAmp dispose d'un filtre RC d'ordre supérieur pour supprimer le bruit MCU généré numériquement du flux audio.

ADC Stage: L'ADC est configuré pour lire via une interruption tout le temps. Notez qu'un condensateur de 100 nF doit être connecté entre la broche AREF de l'ATMega1284 et la terre pour réduire le bruit car une source Vcc interne est utilisée comme tension de référence - ne connectez PAS la broche AREF au +5 volts directement !

Etage DAC PWM: comme l'ATMega1284 ne possède pas son propre DAC, les formes d'onde audio de sortie sont générées à l'aide d'une modulation de largeur d'impulsion d'un filtre RC. Les deux sorties PWM sur PD4 et PD5 sont définies comme les octets haut et bas de la sortie audio et mélangées avec les deux résistances (4k7 et 1M2) dans un rapport 1:256 (octet bas et octet haut) - ce qui génère la sortie audio. Il peut être intéressant d'expérimenter avec d'autres paires de résistances telles que la paire 3k9 1M ohm utilisée par Open Music Labs dans leur StompBox.

Étape 3: Logiciel

Le logiciel est basé sur les croquis d'electrosmash, et l'exemple inclus (pedalshield1284delay.ino), a été adapté de leur croquis de délai Uno. Certains des commutateurs et LED ont été déplacés vers d'autres ports loin de ceux utilisés par le programmeur du FAI (SCLK, MISO, MOSI et Reset), le tampon de délai a été augmenté de 2000 octets à 12000 octets, et PortD a été défini comme le sortie pour les deux signaux PWM. Même avec l'augmentation du tampon de retard, l'esquisse n'utilise toujours qu'environ 70% des 1284 RAM disponibles.

D'autres exemples tels que l'octaver ou le trémolo du site electrosmash pour le pedalSHIELD Uno peuvent être adaptés pour être utilisés par le Mega1284 en changeant trois sections dans le code:

(1) Changer DDRB |= ((PWM_QTY << 1) | 0x02); vers DDRD |= 0x30;// Le changement ci-dessus est le SEUL changement de code essentiel // lors du portage de l'AtMega328 vers l'ATMega1284

(2) Changer #define LED 13 #define FOOTSWITCH 12 #define BASCULER 2 #define PUSHBUTTON_1 A5 #define PUSHBUTTON_2 A4

à

#définir LED PB0 #définir POUSSOIR PB1 #définir BOUTON POUSSOIR_1 A5 #définir BOUTON POUSSOIR_2 A4

(3) Changer le mode de broche (COMMUTATEUR AU PIED, INPUT_PULLUP); pinMode(TOGGLE, INPUT_PULLUP); pinMode(PUSHBUTTON_1, INPUT_PULLUP); pinMode(PUSHBUTTON_2, INPUT_PULLUP); pinMode (LED, SORTIE)

à

pinMode (COMMUTATEUR AU PIED, INPUT_PULLUP); pinMode(PUSHBUTTON_1, INPUT_PULLUP); pinMode(PUSHBUTTON_2, INPUT_PULLUP); pinMode (LED, SORTIE);

Les boutons poussoirs 1 et 2 sont utilisés dans certains croquis pour augmenter ou diminuer un effet. Dans l'exemple du retard, il augmente ou diminue le temps de retard. Lorsque l'esquisse est chargée pour la première fois, elle démarre avec l'effet de retard maximal. appuyez sur le bouton bas - il faut environ 20 secondes pour décompter jusqu'à la position d'arrêt différé - puis appuyez et maintenez enfoncé le bouton haut. Écoutez comment l'effet de balayage en maintenant enfoncé le bouton change l'effet en celui d'un phaser, chorus et flanger, ainsi que le délai lorsque le bouton est relâché.

Pour changer le délai en effet d'écho (ajouter une répétition), changez la ligne:

DelayBuffer[DelayCounter] = ADC_high;

à

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

L'interrupteur au pied doit être un interrupteur bidirectionnel à trois pôles et doit être connecté comme décrit sur le site Web d'electrosmash.

Étape 4: Liens

Liens
Liens

(1) Électrosmash:

(2) Laboratoires musicaux ouverts:

(3) Paul Gallagher:

(4) 1284 Chargeur de démarrage:

(5) Microcontrôleur AVR 8 bits ATmega1284:

ElectrosmashOpenlabs MusicPaul Gallagher1284 Bootloader 11284 Bootloader 2ATmega1284 8bit AVR Microcontrôleur

Étape 5: Annexe 1 Programmation de l'ATMega1284P

Annexe 1 Programmation de l'ATMega1284P
Annexe 1 Programmation de l'ATMega1284P
Annexe 1 Programmation de l'ATMega1284P
Annexe 1 Programmation de l'ATMega1284P
Annexe 1 Programmation de l'ATMega1284P
Annexe 1 Programmation de l'ATMega1284P

Il existe quelques sites Web qui expliquent bien comment programmer la puce ATMega1284 nue pour une utilisation avec l'IDE Arduino. Le processus est essentiellement le suivant: (1) Installez le fork Mark Pendrith du chargeur de démarrage Maniacbug Mighty-1284p Core Optiboot dans l'IDE Arduino. (2) Câblez l'ATMega1284 sur une maquette avec sa configuration minimale qui est un cristal de 16 MHz, 2 condensateurs de 22 pF qui mettent à la terre les deux extrémités du cristal, connectez les deux broches de terre ensemble (broches 11 et 31), puis à la masse Arduino Uno, connectez le Vcc et l'AVcc ensemble (broches 10 et 30), puis à l'Uno +5v, puis connectez la broche de réinitialisation 9 à la broche Uno D10, la broche MISO 7 à l'UNO D12, le MOSI broche 8 à la Uno D11 et la broche SCLK 7 à la broche Uno D13. (3) Connectez l'Uno à l'IDE Arduino et chargez l'exemple d'esquisse Arduino en tant que FAI sur l'Uno. (4) Sélectionnez maintenant la puissante carte optiboot 1284 "maniac" et choisissez l'option Burn bootloader. (5) Sélectionnez ensuite l'esquisse de retard 1284 donnée ici à titre d'exemple et téléchargez-la en utilisant l'option Uno comme programmeur dans le menu des esquisses.

Les liens qui expliquent le processus plus en détail sont:

Utilisation de l'ATmega1284 avec l'Arduino IDEArduino Mightycore pour les grands AVR compatibles avec les planches à painConstruire un prototype ATMega1284p Chargeur de démarrage Arduino ATmega1284p

Étape 6: Annexe 2 Arduino Uno PedalSHIELD Variation

Annexe 2 Variation du PedalSHIELD Arduino Uno
Annexe 2 Variation du PedalSHIELD Arduino Uno
Annexe 2 Variation du PedalSHIELD Arduino Uno
Annexe 2 Variation du PedalSHIELD Arduino Uno
Annexe 2 Variation du PedalSHIELD Arduino Uno
Annexe 2 Variation du PedalSHIELD Arduino Uno

Schematic3, Breadboard3 et Photo3 donnent des détails sur le circuit basé sur Uno qui a précédé la construction AtMega1284.

Il peut être avantageux d'avoir un potentiomètre comme mélangeur pour le signal sec (égal à l'entrée) et le signal humide (après traitement par le MCU), et le schéma 2, la planche à pain 2 et la photo 2 donnent les détails du circuit d'un circuit précédemment construit qui intègre un tel mélangeur d'entrée à sortie. Regardez également l'Open Music Labs StompBox pour une autre implémentation de mélangeur utilisant quatre OpAmps

Conseillé: