สารบัญ:

ATMega1284 Quad Opamp Effects Box: 4 ขั้นตอน (พร้อมรูปภาพ)
ATMega1284 Quad Opamp Effects Box: 4 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ATMega1284 Quad Opamp Effects Box: 4 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ATMega1284 Quad Opamp Effects Box: 4 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: 4 awesome application of op-amps in circuits 2024, กันยายน
Anonim
ATMega1284 Quad Opamp Effects Box
ATMega1284 Quad Opamp Effects Box

Stomp Shield สำหรับ Arduino จาก Open Music Labs ใช้ Arduino Uno และ opamps สี่ตัวเป็นกล่องเอฟเฟกต์กีตาร์ คล้ายกับคำสั่งก่อนหน้านี้ที่แสดงวิธีการพอร์ต Electrosmash Uno Pedalshield ฉันได้ย้ายกล่องเอฟเฟกต์กีตาร์ Open Music Labs ไปยัง ATMega1284P ซึ่งมี RAM มากกว่า Uno ถึงแปดเท่า (16kB เทียบกับ 2kB)

เมื่อเทียบกับคำสั่งก่อนหน้าโดยใช้หน่วยเอฟเฟกต์ ATMega1284 กล่องนี้มีข้อดีดังต่อไปนี้:

(1) มีเครื่องผสมซึ่งผสมสัญญาณที่ยังไม่ได้ประมวลผลกับสัญญาณที่ประมวลผลโดย MCU ซึ่งหมายความว่าคุณภาพของสัญญาณที่เอาท์พุตจะดีขึ้นมาก

(2) มันทำการประมวลผลเอาต์พุต 16 บิตสำหรับเอาต์พุต PWM สองตัวในขณะที่กล่องเอฟเฟกต์ก่อนหน้าใช้ 8 บิตสำหรับตัวอย่างบางส่วนเช่นเอฟเฟกต์การหน่วงเวลา

(3) มีโพเทนชิออมิเตอร์ป้อนกลับซึ่งสามารถนำไปใช้ในการปรับปรุงเอฟเฟกต์ได้ โดยเฉพาะอย่างยิ่งกับเอฟเฟกต์ Flanger/phaser คำติชมประมาณ 30 เปอร์เซ็นต์จะเพิ่มคุณภาพของเอฟเฟกต์ได้อย่างมาก

(4) ความถี่ตัวกรองความถี่ต่ำผ่านคือ 10 kHz เมื่อเทียบกับ 5 kHz ของกล่องเอฟเฟกต์ก่อนหน้า ซึ่งหมายความว่าสัญญาณที่เอาต์พุตนั้นฟังดู "คมชัดกว่า" มาก

(5) ใช้ทริกเกอร์ขัดจังหวะที่แตกต่างกันซึ่งอาจอธิบายระดับเสียงที่ต่ำกว่ามากที่แสดงโดยกล่องเอฟเฟกต์นี้

ฉันเริ่มต้นด้วยการใช้ Uno-based Open Music Labs Stompbox Shield และฉันประทับใจมากกับประสิทธิภาพของวงจรประมวลผลสัญญาณ OpAmp ทั้งสี่นี้ (แม้เมื่อใช้ Arduino Uno) ซึ่งฉันโอนไปยังแถบบอร์ดเพื่อการใช้งานถาวรมากขึ้น

จากนั้น วงจร opamp สี่วงจรและรหัส DSP เดียวกันก็ถูกย้ายไปยัง ATMega1284 อีกครั้ง นอกเหนือจากการเปลี่ยนแปลงที่ไม่จำเป็นอย่างน่าประหลาดใจ เช่น การกำหนดสวิตช์และ LED ให้กับพอร์ตอื่น และจัดสรร 7, 000 กิโลคำแทน 1, 000 กิโลเวิร์ดของ RAM สำหรับบัฟเฟอร์การหน่วงเวลา จำเป็นต้องทำการเปลี่ยนแปลงที่สำคัญเพียงสองประการในซอร์สโค้ด คือ เปลี่ยนเป็น ADC0 จาก ADC2 และเปลี่ยนเอาต์พุต Timer1/PWM OC1A และ OC1B จากพอร์ต B บน Uno เป็น Port D (PD5 และ PD4) บน ATMega1284

ดังที่ได้กล่าวไว้ก่อนหน้านี้ แม้ว่าจะมีบอร์ดพัฒนาสำหรับ ATMega1284 (Github: MCUdude MightyCore) ก็เป็นแบบฝึกหัดง่ายๆ ในการซื้อชิปเปล่า (ไม่มี bootloader) (ซื้อเวอร์ชัน PDIP ซึ่งเป็นมิตรกับบอร์ดและแถบ) จากนั้นโหลด Mark Pendrith fork ของ Maniacbug Mighty-1284p Core Optiboot bootloader หรือ MCUdude Mightycore โดยใช้ Uno เป็นโปรแกรมเมอร์ ISP แล้วโหลดภาพสเก็ตช์อีกครั้งผ่าน Uno ไปยัง AtMega1284 รายละเอียดและลิงก์สำหรับกระบวนการนี้มีให้ในภาคผนวก 1 ของคำแนะนำก่อนหน้า

ขั้นตอนที่ 1: รายการชิ้นส่วน

ส่วนรายการ
ส่วนรายการ
ส่วนรายการ
ส่วนรายการ

ATMega1284P (รุ่นแพ็คเกจ PDIP 40 พิน) Arduino Uno R3 (ใช้เป็น ISP เพื่อโอนบูตโหลดเดอร์และสเก็ตช์ไปยัง ATMega1284) OpAmp MCP6004 quad OpAmp (หรือ RRIO ที่คล้ายกัน (Rail to Rail Input and Output) OpAmp เช่น TLC2274) 1 x ไฟ LED สีแดง 1 x 16 MHz คริสตัล 2 x 27 pF ตัวเก็บประจุ ตัวเก็บประจุ 1 x 3n9 ตัวเก็บประจุ 1 x 1n2 ตัวเก็บประจุ 1 x 820pF ตัวเก็บประจุ 2 x 120 pF ตัวเก็บประจุ 4 x 100n ตัวเก็บประจุอิเล็กโทรไลต์ 3 x 10uF 16v 4 x 75k ตัวต้านทาน 4 x 3k9 ตัวต้านทาน 1 x 36k ตัวต้านทาน 1 x 24k ตัวต้านทาน 2 x 1M ตัวต้านทาน 1 x 470 โอห์ม ตัวต้านทาน 3 x 1k โพเทนชิโอมิเตอร์ 2 ตัว 50k (เชิงเส้น) โพเทนชิออมิเตอร์ 1 x 10k (เชิงเส้น) สวิตช์ปุ่มกด 3 x (ตัวใดตัวหนึ่งควรแทนที่ด้วย 3-pole 2- way footswitch ถ้ากล่องเอฟเฟกต์จะใช้สำหรับงานสด)

ขั้นตอนที่ 2: การก่อสร้าง

การก่อสร้าง
การก่อสร้าง

วงจร 1 แสดงวงจรที่ใช้และ Stripboard 1 คือการแสดงทางกายภาพ (Fritzing 1) โดยมีภาพที่ 1 เป็นวงจรที่ใช้บอร์ดจริง มีการเปลี่ยนแปลงวงจรเล็กๆ สามครั้ง: อคติ opamp ระดับครึ่งอุปทานที่ใช้ร่วมกันใช้สำหรับสามขั้นตอนของ OpAmp ตัวต้านทานแบบขนาน 3 x 75k และ 2 x 75k ohms ถูกแทนที่ด้วยตัวต้านทาน 24k และ 36k เดี่ยว และตัวเก็บประจุป้อนกลับเพิ่มขึ้นเป็น 120pF สำหรับ OpAmp ทั้งสองขั้นตอน ตัวควบคุมแบบหมุนถูกแทนที่ด้วยปุ่มกดสองปุ่มซึ่งใช้เพื่อเพิ่มหรือลดพารามิเตอร์เอฟเฟกต์ การเชื่อมต่อสามสายกับ ATMega1284 แสดงบนวงจรเป็น ADC ถึงพิน 40, PWMlow จากพิน 19 และ PWMhigh จากพิน 18 ปุ่มกดสามปุ่มเชื่อมต่อกับพิน 1, 36 และ 35 และต่อสายดินที่ปลายอีกด้านหนึ่ง LED เชื่อมต่อผ่านตัวต้านทาน 470 ถึงพิน 2

ขั้นตอนอินพุตและเอาต์พุตของ OpAmp: เป็นสิ่งสำคัญที่ต้องใช้ RRO หรือโดยเฉพาะอย่างยิ่ง RRIO OpAmp เนื่องจากการแกว่งของแรงดันไฟฟ้าขนาดใหญ่ที่เอาต์พุต OpAmp ไปยัง ADC ของ ATMega1284 รายการชิ้นส่วนประกอบด้วย OpAmp หลายประเภท โพเทนชิโอมิเตอร์ 50k ใช้เพื่อปรับระดับเกนอินพุทให้อยู่ในระดับที่ต่ำกว่าการบิดเบือน และยังใช้เพื่อปรับความไวของอินพุตสำหรับแหล่งอินพุตอื่นที่ไม่ใช่กีตาร์ เช่น เครื่องเล่นเพลง ขั้นตอนอินพุต OpAmp ที่สองและสเตจเอาต์พุต opamp แรกมีตัวกรอง RC ลำดับที่สูงกว่าเพื่อขจัดสัญญาณรบกวน MCU ที่สร้างแบบดิจิทัลออกจากสตรีมเสียง

เวที ADC: ADC ได้รับการกำหนดค่าให้อ่านผ่านการขัดจังหวะของตัวจับเวลา ควรเชื่อมต่อตัวเก็บประจุ 100nF ระหว่างพิน AREF ของ ATMega1284 และกราวด์เพื่อลดเสียงรบกวนเนื่องจากแหล่ง Vcc ภายในใช้เป็นแรงดันอ้างอิง - อย่าเชื่อมต่อพิน AREF กับ +5 โวลต์โดยตรง!

DAC PWM Stage: เนื่องจาก ATMega1284 ไม่มี DAC ของตัวเอง สัญญาณเสียงที่ส่งออกจึงถูกสร้างขึ้นโดยใช้การปรับความกว้างพัลส์ของตัวกรอง RC เอาต์พุต PWM สองตัวบน PD4 และ PD5 ถูกตั้งค่าเป็นไบต์สูงและต่ำของเอาต์พุตเสียง และผสมกับตัวต้านทานสองตัว (3k9 และ 1M) ในอัตราส่วน 1:256 (ไบต์ต่ำและไบต์สูง) ซึ่งจะสร้างเอาต์พุตเสียง.

ขั้นตอนที่ 3: ซอฟต์แวร์

ซอฟต์แวร์นี้ใช้ภาพสเก็ตช์คันเหยียบสต็อมป์บ็อกซ์ของ Open Music Labs และตัวอย่างสองตัวอย่างรวมอยู่ด้วย ได้แก่ เอฟเฟกต์ Flanger/phaser และเอฟเฟกต์การหน่วงเวลา อีกครั้งเช่นเดียวกับคำสั่งก่อนหน้านี้ สวิตช์และ LED ถูกย้ายไปยังพอร์ตอื่นนอกเหนือจากที่โปรแกรมเมอร์ ISP ใช้ (SCLK, MISO, MOSI และรีเซ็ต)

บัฟเฟอร์การหน่วงเวลาเพิ่มขึ้นจาก 1,000 คำเป็น 7000 คำ และตั้งค่า PortD เป็นเอาต์พุตสำหรับสัญญาณ PWM สองตัว แม้จะมีการเพิ่มบัฟเฟอร์การหน่วงเวลา ร่างก็ยังใช้เพียงประมาณ 75% ของ ATMega1284 16 kB RAM ที่มีอยู่

ตัวอย่างอื่นๆ เช่น tremolo จากเว็บไซต์ Open Music Labs สำหรับ pedalSHIELD Uno สามารถปรับให้ใช้กับ Mega1284 ได้โดยการเปลี่ยนไฟล์ส่วนหัว Stompshield.h:

(1) เปลี่ยน DDRB |= 0x06; // ตั้งค่าเอาต์พุต pwm (พิน 9, 10) เป็น outputtoDDRD |= 0x30;

และ

ADMUX = 0x62; // ซ้ายปรับ adc2, vcc ภายในอ้างอิงถึง ADMUX = 0x60; // left adjust, adc0, internal vcc as reference // การเปลี่ยนแปลงเหล่านี้เป็นการเปลี่ยนแปลงรหัสที่จำเป็นเท่านั้น // เมื่อย้ายจาก Uno ไปยัง ATMega1284

สำหรับสองตัวอย่างที่รวมอยู่ในนี้ ไฟล์ส่วนหัวจะรวมอยู่ในแบบร่าง - นั่นคือ ไม่จำเป็นต้องใช้ไฟล์ส่วนหัว

มีการใช้ปุ่มกด 1 และ 2 ในสเก็ตช์บางส่วนเพื่อเพิ่มหรือลดเอฟเฟกต์ ในตัวอย่างการหน่วงเวลา จะเพิ่มหรือลดเวลาหน่วง เมื่อโหลดภาพร่างครั้งแรก มันจะเริ่มต้นด้วยเอฟเฟกต์การหน่วงเวลาสูงสุด สำหรับภาพสเก็ตช์ของ Flanger Phaser ให้พยายามเพิ่มการควบคุมการป้อนกลับเพื่อให้ได้เอฟเฟกต์ที่ดียิ่งขึ้น

หากต้องการเปลี่ยนการหน่วงเวลาเป็นเอฟเฟกต์เสียงสะท้อน (เพิ่มการทำซ้ำ) ให้เปลี่ยนบรรทัด:

บัฟเฟอร์[ตำแหน่ง] = อินพุต; // เก็บตัวอย่างใหม่

ถึง

บัฟเฟอร์[ตำแหน่ง] = (อินพุต + บัฟเฟอร์[ตำแหน่ง])>>1; // ใช้สำหรับ echo effct

สวิตช์เท้าควรเป็นสวิตช์สองทางสามขั้ว

ขั้นตอนที่ 4: ลิงค์

Electrosmash

เปิดห้องทดลองดนตรี เพลง

ATMega Effect Pedal

แนะนำ: