สารบัญ:

เล่นเพลงด้วย Arduino โดยใช้ ADC เป็น PWM บน Flyback Transformer หรือลำโพง: 4 ขั้นตอน
เล่นเพลงด้วย Arduino โดยใช้ ADC เป็น PWM บน Flyback Transformer หรือลำโพง: 4 ขั้นตอน

วีดีโอ: เล่นเพลงด้วย Arduino โดยใช้ ADC เป็น PWM บน Flyback Transformer หรือลำโพง: 4 ขั้นตอน

วีดีโอ: เล่นเพลงด้วย Arduino โดยใช้ ADC เป็น PWM บน Flyback Transformer หรือลำโพง: 4 ขั้นตอน
วีดีโอ: How to convert audio to PWM + plasma arc music 2024, พฤศจิกายน
Anonim
เล่นเพลงด้วย Arduino โดยใช้ ADC เป็น PWM บน Flyback Transformer หรือ Speaker
เล่นเพลงด้วย Arduino โดยใช้ ADC เป็น PWM บน Flyback Transformer หรือ Speaker
เล่นเพลงด้วย Arduino โดยใช้ ADC เป็น PWM บน Flyback Transformer หรือ Speaker
เล่นเพลงด้วย Arduino โดยใช้ ADC เป็น PWM บน Flyback Transformer หรือ Speaker
เล่นเพลงด้วย Arduino โดยใช้ ADC เป็น PWM บน Flyback Transformer หรือ Speaker
เล่นเพลงด้วย Arduino โดยใช้ ADC เป็น PWM บน Flyback Transformer หรือ Speaker
เล่นเพลงด้วย Arduino โดยใช้ ADC เป็น PWM บน Flyback Transformer หรือ Speaker
เล่นเพลงด้วย Arduino โดยใช้ ADC เป็น PWM บน Flyback Transformer หรือ Speaker

สวัสดีทุกคน, นี่เป็นส่วนที่สองของคำสั่งอื่นของฉัน (ซึ่งยากมาก) โดยพื้นฐานแล้ว ในโครงการนี้ ฉันใช้ ADC และ TIMERS บน Arduino ของฉันเพื่อแปลงสัญญาณเสียงเป็นสัญญาณ PWM

สิ่งนี้ง่ายกว่าคำสั่งสอนก่อนหน้าของฉันมาก นี่คือลิงค์ของ Instructable แรกของฉันหากคุณต้องการดู ลิงค์

เพื่อทำความเข้าใจทฤษฎีของสัญญาณเสียง, บิตเรต, ความลึกของบิต, อัตราการสุ่มตัวอย่าง คุณสามารถอ่านทฤษฎีในบทช่วยสอนล่าสุดของฉันเกี่ยวกับคำแนะนำได้ ลิงค์อยู่ด้านบนครับ

ขั้นตอนที่ 1: สิ่งที่เราต้องการสำหรับโครงการนี้ (ข้อกำหนด)

1. บอร์ด Arduino (เราใช้บอร์ดใดก็ได้ (328, 2560) เช่น Mega, Uno, Mini ฯลฯ แต่มีพินต่างกันเฉพาะ)

2. พีซีพร้อม Arduino Studio

3. เขียงหั่นขนมหรือ Perfboard

4. การต่อสายไฟ

5. TC4420 (ไดรเวอร์ Mosfet หรือสิ่งดังกล่าว)

6. Power Mosfet (ช่อง N หรือ P โปรดวางสายตามลำดับ) (ฉันใช้ N-channel แล้ว)

7. Speaker หรือ Flyback Transformer (ใช่ อ่านถูก!!)

8. พาวเวอร์ซัพพลายที่เหมาะสม (0-12V) (ฉันใช้ ATX Power Supply ของตัวเอง)

9. Heat Sink (ฉันได้กู้มาจากพีซีเครื่องเก่าของฉัน)

10. แอมพลิฟายเออร์ (แอมพลิฟายเออร์เพลงปกติ) หรือวงจรแอมพลิฟายเออร์

ขั้นตอนที่ 2: ทฤษฎี ADC ถึง PWM

ทฤษฎี ADC ถึง PWM
ทฤษฎี ADC ถึง PWM
ทฤษฎี ADC ถึง PWM
ทฤษฎี ADC ถึง PWM

ดังนั้นในโครงการนี้ ฉันได้ใช้ ADC ในตัวของ Arduino เพื่อสุ่มตัวอย่างข้อมูลของสัญญาณเสียง

ADC(Analog-to-Digital Converter) ตามที่ชื่อกำหนด ADC แปลงสัญญาณอนาล็อกเป็นดิจิตอลตัวอย่าง และสำหรับ Arduino ที่มีความลึกสูงสุด 10 บิต แต่สำหรับโปรเจ็กต์นี้ เราจะใช้การสุ่มตัวอย่างแบบ 8 บิต

ในขณะที่ใช้ ADC ของ Arduino เราต้องจำ ADC_reference Voltage

Arduino Uno นำเสนอ 1.1V, 5V (การอ้างอิงภายในซึ่งสามารถกำหนดเป็นโค้ดได้) หรือการอ้างอิงภายนอก (ซึ่งเราต้องใช้ภายนอกกับพิน AREF)

จากประสบการณ์ของฉัน ควรใช้แรงดันอ้างอิงขั้นต่ำ 2.0V เพื่อให้ได้ผลลัพธ์ที่ดีจาก ADC เนื่องจาก 1.1V ทำงานได้ไม่ดีอย่างน้อยสำหรับฉัน (ประสบการณ์ส่วนตัว)

*สำคัญ* *สำคัญ**สำคัญ**สำคัญ**สำคัญ*

เราจำเป็นต้องใช้สัญญาณเสียงที่ขยายจากแอมพลิฟายเออร์หรือวงจรแอมพลิฟายเออร์ที่มีแรงดันไฟสูงสุด (แรงดันสูงสุด) 5V

เพราะฉันตั้งค่าอ้างอิงแรงดันไฟฟ้าภายในเป็น 5V สำหรับโครงการของเรา และฉันกำลังใช้แอมพลิฟายเออร์สัญญาณโดยใช้แอมพลิฟายเออร์ปกติ (Music Amplifier) ซึ่งส่วนใหญ่มีอยู่ในครัวเรือนของเราหรือคุณสามารถสร้างสำหรับตัวคุณเอง

ดังนั้นตอนนี้ส่วนหลัก อัตราการสุ่มตัวอย่าง ซึ่งเป็นจำนวนตัวอย่างที่ ADC ของเราใช้ต่อวินาที มีอัตราการแปลงมาก ผลลัพธ์ที่ได้จะดีขึ้น คล้ายคลึงกันมากขึ้นจะเป็นคลื่นเอาต์พุตเมื่อเทียบกับอินพุต

ดังนั้น เราจะใช้อัตราการสุ่มตัวอย่าง 33.33Khz ในโครงการนี้ โดยการตั้งค่านาฬิกา ADC ที่ 500Khz เพื่อให้เข้าใจว่าเป็นอย่างไร เราต้องดูหน้ากำหนดเวลา ADC ในแผ่นข้อมูลของชิป Atmega(328p)

เราจะเห็นได้ว่าเราต้องการ 13.5 รอบนาฬิกา ADC เพื่อทำหนึ่งตัวอย่างให้สมบูรณ์ด้วยการสุ่มตัวอย่างอัตโนมัติ ด้วยความถี่ 500Khz หมายความว่า 1/500Khz=2uS สำหรับหนึ่งรอบ ADC ซึ่งหมายความว่าจำเป็นต้องใช้ 13.5*2uS=27uS เพื่อให้ตัวอย่างสมบูรณ์เมื่อใช้การสุ่มตัวอย่างอัตโนมัติ โดยให้ไมโครคอนโทรลเลอร์ 3uS มากขึ้น (เพื่อความปลอดภัย) ทำให้รวม 30uS ทั้งหมดสำหรับหนึ่งตัวอย่าง

ดังนั้น 1 ตัวอย่างที่ 30uS หมายถึง 1/30uS=33.33 KSamples/S

ในการตั้งค่าอัตราการสุ่มตัวอย่างซึ่งขึ้นอยู่กับ TIMER0 ของ Arduino เนื่องจากทริกเกอร์การสุ่มตัวอย่างอัตโนมัติของ ADC นั้นขึ้นอยู่กับสิ่งนั้นในกรณีของเรา ดังที่คุณเห็นในโค้ดและแผ่นข้อมูล เราได้สร้างค่า OCR0A=60(เหตุใด) ???)

เพราะตามสูตรที่ให้ไว้ในแผ่นข้อมูล

ความถี่(หรือที่นี่ อัตราตัวอย่าง)=ความถี่นาฬิกาของ Arduino/Prescaler*ค่าของ OCR0A (ในกรณีของเรา)

ความถี่หรืออัตราตัวอย่างที่เราต้องการ=33.33KHz

ความถี่สัญญาณนาฬิกา=16MHz

ค่าพรีสเกลเลอร์=8(ในกรณีของเรา)

ค่า OCR0A=เราต้องการค้นหา??

ซึ่งให้ OCR0A=60 ในโค้ด Arduino ของเราด้วย

TIMER1 ใช้สำหรับคลื่นพาหะของสัญญาณเสียง และฉันจะไม่พูดถึงรายละเอียดมากนัก

นั่นคือทฤษฎีสั้น ๆ ของแนวคิดของ ADC ถึง PWM กับ Arduino

ขั้นตอนที่ 3: แผนผัง

แผนผัง
แผนผัง

เชื่อมต่อส่วนประกอบทั้งหมดตามที่แสดงในแผนผัง ดังนั้นคุณมีสองตัวเลือกที่นี่:-

1. เชื่อมต่อลำโพง (เชื่อมต่อกับ 5V)

2. ต่อ Flyback Transformer (ต่อไฟ 12V)

ฉันได้ลองทั้งสองอย่าง และทั้งสองทำงานได้ดีทีเดียว

*สำคัญ* *สำคัญ**สำคัญ**สำคัญ**สำคัญ* เราจำเป็นต้องใช้สัญญาณเสียงที่ขยายจากแอมพลิฟายเออร์หรือวงจรแอมพลิฟายเออร์ที่มีแรงดันไฟสูงสุด (แรงดันไฟสูงสุด) 5V

ข้อจำกัดความรับผิดชอบ:-

*ฉันขอแนะนำให้ใช้ Flyback Transformer ด้วยความระมัดระวัง เนื่องจากอาจเกิดอันตรายได้เนื่องจากผลิตไฟฟ้าแรงสูง และไม่ต้องรับผิดต่อความเสียหายใดๆ ทั้งสิ้น*

ขั้นตอนที่ 4: การทดสอบขั้นสุดท้าย

อัปโหลดรหัสที่กำหนดไปยัง Arduino ของคุณและเชื่อมต่อสัญญาณขยายเข้ากับพิน A0

และอย่าลืมเชื่อมต่อหมุดกราวด์ทั้งหมดเข้ากับกราวด์ทั่วไป

และเพียงแค่สนุกกับการฟังเพลง

แนะนำ: