ชื่อโปรเจกต์: สร้าง 4-Bit Digital to Analog Convertor โดยใช้ Arduino UNO
ฟิสิกส์ของกำแพงดิจิทัล: 4-Bit DAC
Arduino Uno ไม่มีเอาต์พุตแบบ analog ที่แท้จริง analogWrite() ไม่ได้เปลี่ยนแรงดันขา pin เป็น 3V อย่างน่าอัศจรรย์แต่อย่างใด; มันเพียงแค่เปิดและปิด 5V อย่างรวดเร็ว (PWM) ซึ่งไร้ประโยชน์สำหรับวงจรประมวลผลเสียงหรือวิทยุที่ละเอียดอ่อน! โปรเจกต์ 4-Bit Digital to Analog Converter (DAC) บังคับให้คุณต้องสร้างวงจร "Analog" ทั้งหมดจากภายนอก! คุณจะต้องใช้ C++ binary arrays ดิบๆ เพื่อขับแรงดันไฟฟ้าปริมาณมากผ่านกำแพงของ physical resistors ที่บัดกรีขึ้นมาเอง

การสร้าง R-2R Ladder Topology
DAC ทำงานโดยการแบ่งแยกกระแสไฟฟ้าทางกายภาพ
- ระบบ 4-bit หมายความว่าเราต้องใช้ Digital Arduino Pins 4 ขาพอดี (
D8, D9, D10, D11) - เราจัดเรียง Resistors จำนวนมากบน breadboard ให้เป็นชุดแบบคำนวณได้
- คุณต้องใช้ Resistors สองค่าพอดี (
Rและ2R): เช่น 1K Ohm และ 2K Ohm - Resistors ถูกสร้างขึ้นในรูปแบบ "Ladder" กฎทางฟิสิกส์ที่สำคัญในที่นี้คือการแบ่งแรงดัน (voltage splitting) pin ที่มีนัยสำคัญที่สุด (
D11) ให้แรงดัน2.5Vไปยังเอาต์พุตสุดท้ายD10ให้1.25VและD9ให้0.625V
การสังเคราะห์ Raw Output Matrix
โปรแกรมเมอร์ควบคุมแรงดันไฟฟ้าได้ถึง 16 ระดับที่แตกต่างกัน (ตั้งแต่ 0b0000 ถึง 0b1111)!
- หาก Arduino เขียน:
0000= เอาต์พุตเป็น0.0Vที่ราบเรียบสมบูรณ์ - หาก Arduino เขียน:
1000(เฉพาะ D11 เป็น HIGH) = เอาต์พุตคือ2.5Vพอดี - หาก Arduino เขียน:
1111(ทั้ง 4 Pins เป็น HIGH!) = เอาต์พุตสูงสุดที่5.0V - ข้อผิดพลาดในการประมวลผล: คุณไม่สามารถใช้คำสั่ง
digitalWrite()สี่คำสั่งที่ทำงานช้าๆ ได้ มันจะสร้างสัญญาณไฟฟ้าที่ไม่สม่ำเสมอและอันตรายในขณะที่ processor ทำงานทีละ pin - คุณต้องใช้ raw bitmasking กับ ATmega core registers!
PORTB = (PORTB & 0xF0) | 0x05;(สั่งให้ pins แสดงค่า decimal5ทันทีทั่วทั้งโครงข่าย resistor ใน clock cycle เดียว!)
ข้อกำหนดทางอิเล็กทรอนิกส์สำหรับ Synthesizer
- Arduino Uno/Nano (สำหรับการ hack
PORTBhardware register โดยตรง!) - Resistors ความแม่นยำสูงอย่างน้อยแปดตัว! (เช่น Resistors 10k สี่ตัว และ Resistors 20k สี่ตัว กฎทางฟิสิกส์จะล้มเหลวโดยสิ้นเชิงหากค่าความคลาดเคลื่อน (tolerances) หละหลวม +/- 10%!)
- Digital Multimeter (สำคัญอย่างยิ่งสำหรับการวัดสายเอาต์พุตสุดท้ายโดยตรง เพื่อพิสูจน์ว่าคุณได้สร้างสัญญาณ
2.5Vที่สมบูรณ์แบบโดยไม่ใช้ PWM!)