สารบัญ:
- ขั้นตอนที่ 1: สิ่งที่เราต้องการสำหรับโครงการนี้ (ข้อกำหนด)
- ขั้นตอนที่ 2: ทฤษฎี ADC ถึง PWM
- ขั้นตอนที่ 3: แผนผัง
- ขั้นตอนที่ 4: การทดสอบขั้นสุดท้าย
วีดีโอ: เล่นเพลงด้วย Arduino โดยใช้ ADC เป็น PWM บน Flyback Transformer หรือลำโพง: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
สวัสดีทุกคน, นี่เป็นส่วนที่สองของคำสั่งอื่นของฉัน (ซึ่งยากมาก) โดยพื้นฐานแล้ว ในโครงการนี้ ฉันใช้ 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 ในตัวของ 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
และอย่าลืมเชื่อมต่อหมุดกราวด์ทั้งหมดเข้ากับกราวด์ทั่วไป
และเพียงแค่สนุกกับการฟังเพลง
แนะนำ:
ไดรเวอร์ Flyback Transformer สำหรับผู้เริ่มต้น: 11 ขั้นตอน (พร้อมรูปภาพ)
ไดรเวอร์ Flyback Transformer สำหรับผู้เริ่มต้น: แผนผังได้รับการอัปเดตด้วยทรานซิสเตอร์ที่ดีขึ้นและมีการป้องกันทรานซิสเตอร์ขั้นพื้นฐานในรูปแบบของตัวเก็บประจุและไดโอด "ก้าวต่อไป" หน้าตอนนี้มีวิธีวัดแรงดันแหลมที่โด่งดังเหล่านี้ด้วยโวลต์มิเตอร์
วิธีเบิร์น ATTiny85 โดยใช้ Arduino-Mega เป็น ISP: 5 ขั้นตอน
วิธีเบิร์น ATTiny85 โดยใช้ Arduino-Mega As ISP: ผู้ร่วมให้ข้อมูล - Sayan Wadadar, Chiranjib KunduProgramming ATTiny85 โดยใช้ Arduino MEGA2560 เป็น ISP ไม่กี่เดือนที่ผ่านมา ฉันพยายามย่อขนาดโปรเจ็กต์ Arduino โดยใช้ Attiny 85 ic เป็นครั้งแรกที่ฉันพยายามเขียนโปรแกรม 20u ATTiny 85 โดยใช้
Neopixel Ws2812 Rainbow LED เรืองแสงพร้อม M5stick-C - เรียกใช้ Rainbow บน Neopixel Ws2812 โดยใช้ M5stack M5stick C โดยใช้ Arduino IDE: 5 ขั้นตอน
Neopixel Ws2812 Rainbow LED เรืองแสงพร้อม M5stick-C | เรียกใช้ Rainbow บน Neopixel Ws2812 โดยใช้ M5stack M5stick C การใช้ Arduino IDE: สวัสดีทุกคนในคำแนะนำนี้ เราจะเรียนรู้วิธีใช้ neopixel ws2812 LED หรือแถบนำหรือเมทริกซ์นำหรือวงแหวน LED พร้อมบอร์ดพัฒนา m5stack m5stick-C พร้อม Arduino IDE และเราจะทำ ลายรุ้งกับมัน
เล่นเพลง (MP3) ด้วย Arduino โดยใช้ PWM บนลำโพงหรือ Flyback Transformer: 6 ขั้นตอน (พร้อมรูปภาพ)
เล่นเพลง (MP3) ด้วย Arduino โดยใช้ PWM บนลำโพงหรือ Flyback Transformer: สวัสดีทุกคน นี่เป็นคำสั่งแรกของฉัน ฉันหวังว่าคุณจะชอบมัน !! โดยทั่วไปในโครงการนี้ฉันได้ใช้การสื่อสารแบบอนุกรมระหว่าง Arduino และแล็ปท็อปของฉัน เพื่อส่งข้อมูลเพลงจากแล็ปท็อปของฉันไปยัง Arduino และการใช้ Arduino TIMERS เพื่อ
เล่นเพลงด้วย Arduino!: 5 ขั้นตอน (พร้อมรูปภาพ)
เล่นเพลงด้วย Arduino!: ในคำแนะนำนี้ฉันจะแสดงให้คุณเห็นว่าฉันเล่นเพลงโดยใช้ Arduino UNO และโมดูลการ์ด SD ได้อย่างไร เราจะใช้การสื่อสาร SPI เริ่มกันเลย