جدول المحتويات:

دواسة ATMega1284P جيتار وتأثيرات موسيقية: 6 خطوات (مع صور)
دواسة ATMega1284P جيتار وتأثيرات موسيقية: 6 خطوات (مع صور)

فيديو: دواسة ATMega1284P جيتار وتأثيرات موسيقية: 6 خطوات (مع صور)

فيديو: دواسة ATMega1284P جيتار وتأثيرات موسيقية: 6 خطوات (مع صور)
فيديو: AVR microcontroller,Serial Peripheral Interface–SPI 2024, يوليو
Anonim
دواسة مؤثرات الجيتار والموسيقى ATMega1284P
دواسة مؤثرات الجيتار والموسيقى ATMega1284P

لقد قمت بنقل Arduino Uno ATMega328 Pedalshield (كما تم تطويره بواسطة Electrosmash ويعتمد جزئيًا على العمل في Open Music Lab) إلى ATMega1284P الذي يحتوي على ثمانية أضعاف ذاكرة الوصول العشوائي (RAM) من Uno (16 كيلو بايت مقابل 2 كيلو بايت). ميزة إضافية غير متوقعة هي أن بنية Mega1284 تحتوي على مكون ضوضاء أقل بكثير - لدرجة أنه عندما أقارن بين Uno و Mega1284 باستخدام نفس دائرة الدعم ، فليس من غير المعقول وصف Uno بأنه "صاخب" و Mega1284 كـ " هادئ". تعني ذاكرة الوصول العشوائي الأكبر أنه يمكن الحصول على تأثير تأخير أطول بكثير - وهذا موضح من خلال مثال رسم Arduino الذي قمت بتضمينه. ضجيج التنفس في الخلفية عند استخدام تأثير Tremelo غائب أيضًا (تقريبًا) مع ATMega1284.

مقارنة بين ثلاثة معالجات Atmel AVR وهي 328P وهو Uno و 2560P وهو Mega2560 و Mega1284 يظهر أن الأخير لديه أكبر عدد من ذاكرة الوصول العشوائي الثلاثة:

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 التناظرية في 6 8 16

لقد بدأت بركوب الدواسة المستندة إلى UnoSHIELD كما هو الحال في مواصفات Electrosmash ولكن لم يكن لدي نفس RRO OpAmp كما هو محدد. ونتيجة لذلك ، انتهى بي الأمر بدائرة اعتبرت أنها تعطي نتائج مقبولة. ترد تفاصيل إصدار Uno هذا في الملحق 2.

تم نقل هذه الدائرة نفسها بعد ذلك إلى ATMega1284 - بشكل مدهش بصرف النظر عن التغييرات غير الأساسية مثل تعيين المفاتيح و LED إلى منفذ مختلف ، وتخصيص 12000 كيلو بايت بدلاً من 2000 كيلو بايت من ذاكرة الوصول العشوائي للتأخير المؤقت ، فقط يجب إجراء تغيير أساسي واحد في الكود المصدري ، وهو تغيير مخرجات Timer1 / PWM OC1A و OC1B من المنفذ B على Uno إلى المنفذ D (PD5 و PD4) على ATMega1284.

اكتشفت لاحقًا التعديلات الممتازة التي أدخلتها على دائرة electrosmash بواسطة Paul Gallagher وبعد الاختبار ، هذه هي الدائرة التي سأقدمها هنا - ولكن أيضًا مع التعديلات: استبدال Uno بـ Mega1284 ، باستخدام Texas Instruments TLC2272 مثل OpAmp ، و نظرًا لأداء الضوضاء الممتاز في Mega1284 ، يمكنني أيضًا رفع مستوى تردد مرشح التمرير المنخفض.

من المهم أن نلاحظ أنه على الرغم من توفر لوحات التطوير الخاصة بـ ATMega1284 (Github: MCUdude MightyCore) ، فمن السهل شراء الشريحة العارية (الخالية من أداة تحميل التشغيل) (قم بشراء إصدار PDIP وهو لوح الخبز واللوحة الشريطية ودية) ، ثم قم بتحميل شوكة Mark Pendrith الخاصة بمحمل الإقلاع 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 (يستخدم كمزود خدمة الإنترنت لنقل محمل التمهيد والرسومات إلى ATMega1284) OpAmp TLC2272 (أو ما شابه RRIO (Rail to Rail Input and Output) OpAmp مثل MCP6002، LMC6482، TL972) LED أحمر 16 ميجاهرتز كريستال 2 × 27 pF مكثفات 5 × 6n8 مكثفات 270 pF مكثف 4 × 100n مكثفات 2 × 10 فائق التوهج 16 فولت مكثفات إلكتروليتية 6 × 4k7 مقاومات 100k المقاوم 2 × 1M مقاومات 470 أوم المقاوم 1M2 المقاوم 100k مقياس الجهد 3 × مفاتيح زر الضغط (واحد يجب استبدالها بمفتاح 3 أقطاب ثنائي الاتجاه إذا كان سيتم استخدام مربع التأثيرات للعمل المباشر)

الخطوة الثانية: البناء

بناء
بناء
بناء
بناء
بناء
بناء

يعطي التخطيط 1 الدائرة المستخدمة واللوحة 1 هي تمثيلها المادي (فريتزينج 1) مع الصورة 1 الدائرة الفعلية المغطاة بالخبز قيد التشغيل. قد يكون من المفيد أن يكون لديك مقياس جهد كخلاط للإشارة الجافة (مساوية للإدخال) والرطب (بعد المعالجة بواسطة MCU) ، ويعطي التخطيطي 2 واللوحة 2 والصورة 2 (المدرجة في الملحق 2) تفاصيل الدائرة لدائرة تم إنشاؤها مسبقًا والتي تتضمن مثل هذا الإدخال لخلاط الخرج. انظر أيضًا إلى Open Music Labs StompBox لتنفيذ أداة مزج أخرى باستخدام أربعة OpAmps.

مراحل الإدخال والإخراج OpAmp: من المهم أن يتم استخدام RRO أو يفضل RRIO OpAmp بسبب تأرجح الجهد الكبير المطلوب عند خرج OpAmp إلى ADC الخاص بـ ATMega1284. تحتوي قائمة الأجزاء على عدد من أنواع OpAmp البديلة. يتم استخدام مقياس الجهد 100 كيلو لضبط كسب الإدخال إلى مستوى أقل بقليل من أي تشويه ، ويمكن استخدامه أيضًا لضبط حساسية الإدخال لمصدر إدخال بخلاف الجيتار مثل مشغل الموسيقى. تحتوي مرحلة الإخراج OpAmp على مرشح RC ذو رتبة أعلى لإزالة ضوضاء MCU المولدة رقميًا من دفق الصوت.

مرحلة ADC: تم تكوين ADC للقراءة عبر مقاطعة طوال الوقت. لاحظ أنه يجب توصيل مكثف 100nF بين دبوس AREF في ATMega1284 والأرض لتقليل الضوضاء حيث يتم استخدام مصدر Vcc داخلي كجهد مرجعي - لا تقم بتوصيل دبوس AREF بـ +5 فولت مباشرة!

مرحلة DAC PWM: نظرًا لأن ATMega1284 لا يحتوي على DAC الخاص به ، يتم إنشاء أشكال الموجة الصوتية الناتجة باستخدام تعديل عرض النبضة لمرشح RC. يتم تعيين مخرجي PWM في PD4 و PD5 على أنهما البايت المرتفع والمنخفض لإخراج الصوت ويتم خلطهما بالمقاومين (4k7 و 1 M2) بنسبة 1: 256 (بايت منخفض وبايت عالي) - مما ينتج عنه إخراج الصوت. قد يكون من المفيد تجربة أزواج المقاومة الأخرى مثل زوج 3k9 1M أوم المستخدم بواسطة Open Music Labs في StompBox.

الخطوة 3: البرمجيات

يعتمد البرنامج على رسومات electrosmash ، وقد تم تكييف المثال المضمن (pedalshield1284delay.ino) من رسم التأخير Uno الخاص بهم. تم نقل بعض المفاتيح و LED إلى منافذ أخرى بعيدًا عن تلك المستخدمة من قبل مبرمج ISP (SCLK و MISO و MOSI و Reset) ، وتمت زيادة المخزن المؤقت للتأخير من 2000 بايت إلى 12000 بايت ، وتم تعيين PortD على أنه خرج لإشارات PWM. حتى مع زيادة المخزن المؤقت للتأخير ، لا يزال الرسم يستخدم حوالي 70 ٪ فقط من ذاكرة الوصول العشوائي المتاحة 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 ، الإخراج)

إلى

pinMode (FOOTSWITCH ، INPUT_PULLUP) ؛ pinMode (PUSHBUTTON_1 ، INPUT_PULLUP) ، pinMode (PUSHBUTTON_2 ، INPUT_PULLUP) ، pinMode (LED ، الإخراج) ؛

يتم استخدام الأزرار الانضغاطية 1 و 2 في بعض الرسومات لزيادة التأثير أو تقليله. في مثال التأخير ، يزيد أو ينقص وقت التأخير. عند تحميل الرسم التخطيطي لأول مرة ، يبدأ بأقصى تأثير تأخير. اضغط على الزر السفلي - يستغرق الأمر حوالي 20 ثانية للعد التنازلي وصولاً إلى وضع التأخير - ثم اضغط مع الاستمرار على الزر العلوي. استمع إلى كيف أن تأثير المسح للضغط على الزر يغير التأثير إلى تأثير الجوقة والكورس والتشفيه ، بالإضافة إلى التأخير عند تحرير الزر.

لتغيير التأخير إلى تأثير صدى (إضافة التكرار) ، قم بتغيير السطر:

DelayBuffer [DelayCounter] = ADC_high ،

إلى

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

يجب أن يكون مفتاح القدم عبارة عن مفتاح ثلاثي الأقطاب ثنائي الاتجاه ويجب أن يكون متصلاً كما هو موضح في موقع ويب electrosmash.

الخطوة 4: الروابط

الروابط
الروابط

(1) Electrosmash:

(2) افتح مختبرات الموسيقى:

(3) بول غالاغر:

(4) محمل الإقلاع 1284:

(5) متحكم ATmega1284 8 بت AVR:

ElectrosmashOpenlabs Music Paul Gallagher1284 Bootloader 11284 Bootloader 2ATmega1284 8bit AVR متحكم دقيق

الخطوة 5: الملحق 1 برمجة ATMega1284P

الملحق 1 برمجة ATMega1284P
الملحق 1 برمجة ATMega1284P
الملحق 1 برمجة ATMega1284P
الملحق 1 برمجة ATMega1284P
الملحق 1 برمجة ATMega1284P
الملحق 1 برمجة ATMega1284P

هناك عدد قليل من مواقع الويب التي تقدم شرحًا جيدًا حول كيفية برمجة شريحة ATMega1284 العارية للاستخدام مع Arduino IDE. العملية هي في الأساس كما يلي: (1) قم بتثبيت مفترق Mark Pendrith الخاص بمحمل إقلاع Maniacbug Mighty-1284p Core Optiboot في Arduino IDE. (2) قم بتوصيل ATMega1284 على لوح التجارب بأدنى تكوين له وهو بلورة 16 ميجاهرتز ، ومكثفات 2 × 22 pF التي تؤسس طرفي البلورة ، وقم بتوصيل المسامير الأرضية معًا (المسامير 11 و 31) ، ثم بأرض Arduino Uno ، قم بتوصيل Vcc و AVcc معًا (الطرفان 10 و 30) ، ثم بـ Uno + 5v ، ثم قم بتوصيل دبوس إعادة الضبط 9 إلى Uno D10 pin ، و MISO pin 7 بـ UNO D12 ، و MOSI دبوس 8 في Uno D11 ، ودبوس SCLK 7 إلى دبوس Uno D13. (3) قم بتوصيل Uno بـ Arduino IDE وقم بتحميل مثال الرسم Arduino كـ ISP على Uno. (4) حدد الآن لوحة optiboot القوية 1284 "maniac" ، واختر خيار Burn bootloader. (5) ثم حدد مخطط التأخير 1284 الموضح هنا كمثال وقم بتحميله باستخدام خيار Uno كمبرمج في قائمة الرسومات.

الروابط التي تشرح العملية بمزيد من التفصيل هي:

استخدام ATmega1284 مع Arduino IDErduino Mightycore للحصول على AVRs صديق اللوح الكبير بناء نموذج أولي ATMega1284p

الخطوة 6: الملحق 2 Arduino Uno PedalSHIELD Variation

التذييل 2 Arduino Uno PedalSHIELD Variation
التذييل 2 Arduino Uno PedalSHIELD Variation
التذييل 2 Arduino Uno PedalSHIELD Variation
التذييل 2 Arduino Uno PedalSHIELD Variation
التذييل 2 Arduino Uno PedalSHIELD Variation
التذييل 2 Arduino Uno PedalSHIELD Variation

يعطي Schematic3 و Breadboard3 و Photo3 تفاصيل الدائرة المستندة إلى Uno التي سبقت بناء AtMega1284.

قد يكون من المفيد أن يكون لديك مقياس جهد كخلاط للإشارة الجافة (مساوية للإدخال) والرطب (بعد المعالجة بواسطة MCU) ، ويعطي Schematic 2 و Breadboard 2 و Photo 2 تفاصيل الدائرة لدائرة تم إنشاؤها مسبقًا الذي يدمج مثل هذا الإدخال إلى خلاط الإخراج. انظر أيضًا إلى Open Music Labs StompBox لتنفيذ أداة مزج أخرى باستخدام أربعة OpAmps

موصى به: