Πίνακας περιεχομένων:

Πεντάλ ATMega1284P Κιθάρα και Μουσικά εφέ: 6 βήματα (με εικόνες)
Πεντάλ ATMega1284P Κιθάρα και Μουσικά εφέ: 6 βήματα (με εικόνες)

Βίντεο: Πεντάλ ATMega1284P Κιθάρα και Μουσικά εφέ: 6 βήματα (με εικόνες)

Βίντεο: Πεντάλ ATMega1284P Κιθάρα και Μουσικά εφέ: 6 βήματα (με εικόνες)
Βίντεο: Quick Tip! - Need a Wider Breadboard? 2024, Ιούλιος
Anonim
Πεντάλ ATMega1284P Κιθάρα και Μουσικά εφέ
Πεντάλ ATMega1284P Κιθάρα και Μουσικά εφέ

Έχω μεταφέρει το Arduino Uno ATMega328 Pedalshield (όπως αναπτύχθηκε από την Electrosmash και εν μέρει βασίζεται σε εργασίες στο Open Music Lab) στο ATMega1284P που έχει οκτώ φορές περισσότερη μνήμη RAM από το Uno (16kB έναντι 2kB). Ένα επιπλέον απροσδόκητο όφελος είναι ότι η κατασκευή Mega1284 έχει πολύ χαμηλότερο στοιχείο θορύβου - στο βαθμό που όταν συγκρίνω το Uno και το Mega1284 χρησιμοποιώντας το ίδιο κύκλωμα υποστήριξης, δεν είναι παράλογο να περιγράψουμε το Uno ως "θορυβώδες" και το Mega1284 ως " ησυχια". Η μεγαλύτερη RAM σημαίνει ότι μπορεί να επιτευχθεί πολύ μεγαλύτερη επίδραση καθυστέρησης - και αυτό αποδεικνύεται από το παράδειγμα σκίτσου Arduino που έχω συμπεριλάβει. Ο θόρυβος αναπνοής στο παρασκήνιο κατά τη χρήση του φαινομένου Tremelo επίσης (σχεδόν) απουσιάζει με το ATMega1284.

Μια σύγκριση τριών μικροεπεξεργαστών Atmel AVR, δηλαδή του 328P που είναι το Uno, του 2560P που είναι το Mega2560 και του Mega1284 δείχνει ότι ο τελευταίος έχει τη μεγαλύτερη μνήμη RAM από τους τρεις:

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 Διακοπές 2 3 8 Analog In 6 8 16

Ξεκίνησα με την επιβίβαση στο πεντάλ με βάση το Uno SHIELD όπως στην προδιαγραφή Electrosmash, αλλά δεν είχα το ίδιο RRO OpAmp όπως καθορίστηκε. Ως αποτέλεσμα κατέληξα σε ένα κύκλωμα το οποίο θεώρησα ότι δίνει αποδεκτά αποτελέσματα. Οι λεπτομέρειες αυτής της έκδοσης Uno δίνονται στο προσάρτημα 2.

Αυτό το ίδιο κύκλωμα μεταφέρθηκε στη συνέχεια στο ATMega1284 - εκπληκτικά εκτός από τις μη ουσιώδεις αλλαγές, όπως η εκχώρηση των διακοπτών και του LED σε διαφορετική θύρα και η κατανομή 12, 000 kB αντί για 2, 000 kB RAM για το buffer καθυστέρησης, μόνο έπρεπε να γίνει μια ουσιαστική αλλαγή στον πηγαίο κώδικα, δηλαδή αλλαγή των εξόδων Timer1/PWM OC1A και OC1B από τη θύρα B στο Uno στη θύρα D (PD5 και PD4) στο ATMega1284.

Αργότερα ανακάλυψα τις εξαιρετικές τροποποιήσεις στο κύκλωμα electrosmash από τον Paul Gallagher και μετά από δοκιμές, αυτό είναι το κύκλωμα που θα παρουσιάσω εδώ - αλλά στη συνέχεια και με τροποποιήσεις: αντικατάσταση του Uno με το Mega1284, χρησιμοποιώντας ένα Texas Instruments TLC2272 ως OpAmp, και λόγω της εξαιρετικής απόδοσης θορύβου του Mega1284, θα μπορούσα επίσης να αυξήσω το επίπεδο συχνότητας του φίλτρου χαμηλής διέλευσης.

Είναι σημαντικό να σημειωθεί ότι αν και διατίθενται πίνακες ανάπτυξης για το ATMega1284 (Github: MCUdude MightyCore), είναι μια εύκολη άσκηση η αγορά του γυμνού (χωρίς bootloader) τσιπ (αγοράστε την έκδοση PDIP που είναι σανίδα ψωμιού και λωρίδες) φιλικό), στη συνέχεια φορτώστε το πιρούνι Mark Pendrith του bootloader Maniacbug Mighty-1284p Core Optiboot ή το MCUdude Mightycore, χρησιμοποιώντας έναν Uno ως προγραμματιστή ISP και, στη συνέχεια, φορτώστε ξανά σκίτσα μέσω του Uno στο AtMega1284. Λεπτομέρειες και σύνδεσμοι για αυτήν τη διαδικασία δίνονται στο προσάρτημα 1.

Θα ήθελα να αναγνωρίσω τις τρεις πιο σημαντικές πηγές από τις οποίες μπορούν να ληφθούν περαιτέρω πληροφορίες και θα δοθούν σύνδεσμοι στους ιστότοπούς τους και στο τέλος αυτού του άρθρου: Electrosmash, Open Music Labs και Tardate/Paul Gallagher

Βήμα 1: Λίστα μερών

ATMega1284P (έκδοση πακέτου PDIP 40 ακίδων) Arduino Uno R3 (χρησιμοποιείται ως ISP για τη μεταφορά του φορτωτή εκκίνησης και σκίτσα στο ATMega1284) OpAmp TLC2272 (ή παρόμοιο RRIO (Rail to Rail Input and Output) OpAmp όπως MCP6002, LMC6482, TL Πυκνωτές κόκκινου LED 16 MHz κρυστάλλου 2 x 27 pF πυκνωτές 5 x 6n8 πυκνωτές 270 pF πυκνωτές 4 x 100n πυκνωτές 2 x 10uF ηλεκτρολυτικοί πυκνωτές 6 x 4k7 αντιστάσεις 100k αντίσταση 2 x 1M αντιστάσεις 470 ohm αντίσταση 1M2 αντίσταση 100k Ποτενσιόμετρο 3 x διακόπτες κουμπιών (ένας από αυτά θα πρέπει να αντικατασταθούν με 3-πόλο ποδικό διακόπτη δύο κατευθύνσεων εάν το κιβώτιο εφέ πρόκειται να χρησιμοποιηθεί για ζωντανή εργασία)

Βήμα 2: Κατασκευή

Κατασκευή
Κατασκευή
Κατασκευή
Κατασκευή
Κατασκευή
Κατασκευή

Το Σχήμα 1 δίνει το κύκλωμα που χρησιμοποιείται και το Breadboard 1 είναι η φυσική του αναπαράσταση (Fritzing 1) με τη φωτογραφία 1 το πραγματικό κύκλωμα με ψωμί σε λειτουργία. Μπορεί να είναι πλεονεκτικό να έχετε ένα ποτενσιόμετρο ως μίξερ για το σήμα ξηρού (ίσο με την είσοδο) και το υγρό (μετά από επεξεργασία από το MCU), και το Σχηματικό 2, το Breadboard 2 και η Φωτογραφία 2 (παρατίθεται στο Παράρτημα 2), δίνει λεπτομέρειες κυκλώματος ενός προηγουμένως κατασκευασμένου κυκλώματος το οποίο ενσωματώνει μια τέτοια είσοδο στο μίξερ εξόδου. Ανατρέξτε επίσης στο Open Music Labs StompBox για άλλη εφαρμογή μίξερ χρησιμοποιώντας τέσσερα OpAmps.

Στάδια εισόδου και εξόδου OpAmp: Είναι σημαντικό να χρησιμοποιείται RRO ή κατά προτίμηση RRIO OpAmp λόγω της μεγάλης ταλάντευσης τάσης που απαιτείται στην έξοδο OpAmp στο ADC του ATMega1284. Η λίστα μερών περιλαμβάνει έναν αριθμό εναλλακτικών τύπων OpAmp. Το ποτενσιόμετρο 100k χρησιμοποιείται για να ρυθμίσει το κέρδος εισόδου σε επίπεδο ακριβώς κάτω από οποιαδήποτε παραμόρφωση και μπορεί επίσης να χρησιμοποιηθεί για να ρυθμίσει την ευαισθησία εισόδου για μια πηγή εισόδου διαφορετική από μια κιθάρα όπως ένα πρόγραμμα αναπαραγωγής μουσικής. Το στάδιο εξόδου OpAmp έχει φίλτρο RC υψηλότερης τάξης για να αφαιρέσει τον ψηφιακά δημιουργούμενο θόρυβο MCU από τη ροή ήχου.

Στάδιο ADC: Το ADC έχει ρυθμιστεί ώστε να διαβάζει μέσω διακοπής όλη την ώρα. Σημειώστε ότι ένας πυκνωτής 100nF πρέπει να συνδεθεί μεταξύ του πείρου AREF του ATMega1284 και της γείωσης για να μειωθεί ο θόρυβος, καθώς μια εσωτερική πηγή Vcc χρησιμοποιείται ως τάση αναφοράς - ΜΗΝ συνδέετε τον πείρο AREF στα +5 volt απευθείας!

Στάδιο DAC PWM: Καθώς το ATMega1284 δεν έχει δικό του DAC, οι κυματομορφές εξόδου ήχου δημιουργούνται χρησιμοποιώντας μια διαμόρφωση πλάτους παλμού ενός φίλτρου RC. Οι δύο έξοδοι PWM σε PD4 και PD5 ορίζονται ως τα υψηλά και χαμηλά byte της εξόδου ήχου και αναμιγνύονται με τις δύο αντιστάσεις (4k7 και 1M2) σε αναλογία 1: 256 (χαμηλό byte και υψηλό byte) - που παράγει την έξοδο ήχου Το Mayσως αξίζει τον κόπο να πειραματιστείτε με άλλα ζεύγη αντιστάσεων όπως το ζεύγος 3k9 1M ohm που χρησιμοποιείται από τα Open Music Labs στο StompBox.

Βήμα 3: Λογισμικό

Το λογισμικό βασίζεται στα σκίτσα electrosmash και το παράδειγμα που περιλαμβάνεται (pedalshield1284delay.ino), έχει προσαρμοστεί από το σκίτσο καθυστέρησης Uno. Μερικοί από τους διακόπτες και τα LED είχαν μεταφερθεί σε άλλες θύρες μακριά από εκείνους που χρησιμοποιούσε ο προγραμματιστής ISP (SCLK, MISO, MOSI και Reset), το buffer καθυστέρησης έχει αυξηθεί από 2000 bytes σε 12000 bytes και το PortD έχει οριστεί ως έξοδο για τα δύο σήματα PWM. Ακόμα και με την αύξηση του buffer καθυστέρησης, το σκίτσο εξακολουθεί να χρησιμοποιεί μόνο περίπου το 70% της διαθέσιμης RAM 1284.

Άλλα παραδείγματα όπως το octaver ή το tremolo από την ιστοσελίδα electrosmash για το πεντάλ SHIELD Uno μπορούν να προσαρμοστούν για χρήση από το Mega1284 αλλάζοντας τρεις ενότητες στον κώδικα:

(1) Αλλαγή DDRB | = ((PWM_QTY << 1) | 0x02); σε DDRD | = 0x30; // Η παραπάνω αλλαγή είναι η ΜΟΝΟ βασική αλλαγή κώδικα // κατά τη μεταφορά από το AtMega328 στο ATMega1284

(2) Αλλαγή #define LED 13 #define FOOTSWITCH 12 #define TOGGLE 2 #define PUSHBUTTON_1 A5 #define PUSHBUTTON_2 A4

προς το

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

(3) Αλλαγή pinMode (FOOTSWITCH, INPUT_PULLUP). pinMode (TOGGLE, INPUT_PULLUP); pinMode (PUSHBUTTON_1, INPUT_PULLUP); pinMode (PUSHBUTTON_2, INPUT_PULLUP); pinMode (LED, OUTPUT)

προς το

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

Τα κουμπιά 1 και 2 χρησιμοποιούνται σε μερικά από τα σκίτσα για να αυξήσουν ή να μειώσουν ένα εφέ. Στο παράδειγμα καθυστέρησης αυξάνεται ή μειώνεται ο χρόνος καθυστέρησης. Όταν το σκίτσο φορτώνεται για πρώτη φορά ξεκινά με το μέγιστο εφέ καθυστέρησης. πατήστε το κουμπί κάτω - χρειάζονται περίπου 20 δευτερόλεπτα για να μετρήσετε αντίστροφα μέχρι τη θέση καθυστέρησης - και, στη συνέχεια, πατήστε παρατεταμένα το κουμπί επάνω. Ακούστε πώς το εφέ σάρωσης κρατώντας πατημένο το κουμπί αλλάζει το αποτέλεσμα σε αυτό ενός φασέρ, χορωδίας και φλαντζών, καθώς και την καθυστέρηση κατά την απελευθέρωση του κουμπιού.

Για να αλλάξετε την καθυστέρηση σε εφέ ηχώ (προσθέστε επανάληψη) αλλάξτε τη γραμμή:

DelayBuffer [DelayCounter] = ADC_high;

προς το

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

Ο ποδοδιακόπτης πρέπει να είναι τριπολικός διακόπτης δύο κατευθύνσεων και πρέπει να είναι συνδεδεμένος όπως περιγράφεται στον ιστότοπο του electrosmash.

Βήμα 4: Σύνδεσμοι

Συνδέσεις
Συνδέσεις

(1) Electrosmash:

(2) Ανοιχτά Εργαστήρια Μουσικής:

(3) Πολ Γκάλαχερ:

(4) 1284 Bootloader:

(5) Μικροελεγκτής ATmega1284 8bit AVR:

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

Βήμα 5: Προσάρτημα 1 Προγραμματισμός του ATMega1284P

Προσάρτημα 1 Προγραμματισμός του ATMega1284P
Προσάρτημα 1 Προγραμματισμός του ATMega1284P
Προσάρτημα 1 Προγραμματισμός του ATMega1284P
Προσάρτημα 1 Προγραμματισμός του ATMega1284P
Προσάρτημα 1 Προγραμματισμός του ATMega1284P
Προσάρτημα 1 Προγραμματισμός του ATMega1284P

Υπάρχουν μερικοί ιστότοποι που δίνουν μια καλή εξήγηση για τον τρόπο προγραμματισμού του γυμνού τσιπ ATMega1284 για χρήση με το Arduino IDE. Η διαδικασία είναι ουσιαστικά ως εξής: (1) Εγκαταστήστε το πιρούνι Mark Pendrith του bootloader Maniacbug Mighty-1284p Core Optiboot στο Arduino IDE. (2) Συνδέστε το ATMega1284 σε μια πλάκα ψωμιού με την ελάχιστη διαμόρφωσή του που είναι ένας κρύσταλλος 16 MHz, 2 x 22 pF πυκνωτές που αγκαλιάζουν τα δύο άκρα του κρυστάλλου, Συνδέστε τους δύο πείρους γείωσης μεταξύ τους (ακίδες 11 και 31) και στη συνέχεια στη γείωση Arduino Uno, συνδέστε το Vcc και το AVcc μαζί (ακίδες 10 και 30) και, στη συνέχεια, στο Uno +5v, στη συνέχεια συνδέστε τον ακροδέκτη επαναφοράς 9 στον πείρο Uno D10, τον πείρο MISO 7 στον UNO D12, The MOSI καρφίτσα 8 στο Uno D11 και το pin SCLK 7 στον πείρο Uno D13. (3) Συνδέστε το Uno στο Arduino IDE και φορτώστε το παράδειγμα σκίτσου Arduino ως ISP στο Uno. (4) Τώρα επιλέξτε τον ισχυρό πίνακα 1284 "μανιακός" και επιλέξτε την επιλογή Burn bootloader. (5) Στη συνέχεια, επιλέξτε το σκίτσο καθυστέρησης 1284 που δίνεται εδώ ως παράδειγμα και ανεβάστε το χρησιμοποιώντας την επιλογή Uno ως προγραμματιστή στο μενού σκίτσων.

Οι σύνδεσμοι που εξηγούν τη διαδικασία με περισσότερες λεπτομέρειες είναι:

Χρήση του ATmega1284 με το Arduino IDEArduino Mightycore για μεγάλα φιλικά προς το ψωμί AVRs Δημιουργία ενός πρωτοτύπου ATMega1284p Arduino ATmega1284p bootloader

Βήμα 6: Προσάρτημα 2 Arduino Uno PedalSHIELD Variation

Προσάρτημα 2 Arduino Uno PedalSHIELD Παραλλαγή
Προσάρτημα 2 Arduino Uno PedalSHIELD Παραλλαγή
Προσάρτημα 2 Arduino Uno PedalSHIELD Παραλλαγή
Προσάρτημα 2 Arduino Uno PedalSHIELD Παραλλαγή
Προσάρτημα 2 Arduino Uno PedalSHIELD Παραλλαγή
Προσάρτημα 2 Arduino Uno PedalSHIELD Παραλλαγή

Το Schematic3, το Breadboard3 και το Photo3 δίνουν λεπτομέρειες για το κύκλωμα με βάση το Uno που προηγήθηκε της κατασκευής AtMega1284.

Μπορεί να είναι πλεονεκτικό να έχετε ένα ποτενσιόμετρο ως μίξερ για το σήμα ξηρού (ίσο με την είσοδο) και το υγρό (μετά από επεξεργασία από το MCU), και το Σχήμα 2, το Breadboard 2 και η Φωτογραφία 2 δίνουν τις λεπτομέρειες του κυκλώματος ενός προηγουμένως κατασκευασμένου κυκλώματος που ενσωματώνει μια τέτοια είσοδο στο μίξερ εξόδου. Κοιτάξτε επίσης το Open Music Labs StompBox για άλλη εφαρμογή μίξερ χρησιμοποιώντας τέσσερα OpAmps

Συνιστάται: