การคำนวณขนาดขั้นสัญญาณ LSB และสัญญาณรบกวนของ ADC
เครื่องคำนวณความละเอียด ADC ช่วยให้ผู้ใช้งานสามารถประเมินประสิทธิภาพทางทฤษฎีของตัวแปลงสัญญาณอนาล็อกเป็นดิจิทัล (Analog-to-Digital Converter) ได้อย่างแม่นยำ โดยคำนวณค่าขนาดขั้นสัญญาณ LSB (Least Significant Bit) ระดับการควอนไทซ์ ค่าความคลาดเคลื่อน และอัตราส่วนสัญญาณต่อสัญญาณรบกวนในอุดมคติ
การทำงานของเครื่องมือนี้อ้างอิงตามแบบจำลองตัวควอนไทซ์ในอุดมคติ ซึ่งกำหนดให้การเปลี่ยนรหัสครั้งแรกเกิดขึ้นที่ครึ่งขั้นสัญญาณ (½ LSB) และคำนวณขนาดขั้นสัญญาณจากสูตร LSB = FSR ÷ 2^N ค่าที่ได้ทั้งหมดเป็นขีดจำกัดสูงสุดทางทฤษฎี เนื่องจากในระบบจริงจะมีค่าความคลาดเคลื่อนจากค่า INL/DNL ความคลาดเคลื่อนของออฟเซต อัตราขยาย การเลื่อนลอย และสัญญาณรบกวนจากแรงดันอ้างอิงรวมอยู่ด้วย
ในการใช้งานจริง ตัวแปลงสัญญาณจะมีช่วงอินพุตสองรูปแบบหลัก ซึ่งส่งผลต่อช่วงสเกลเต็ม (ช่วงสเกลเต็ม หรือ FSR) ดังนี้:
- Unipolar · 0 ถึง Vref: ช่วงแรงดันอินพุตจะวิ่งตั้งแต่ 0 ถึง Vref โดยมีช่วงสเกลเต็มเท่ากับแรงดันอ้างอิง (FSR = Vref)
- Bipolar · −Vref ถึง +Vref: ช่วงแรงดันอินพุตจะกว้างเป็นสองเท่า ตั้งแต่ −Vref ถึง +Vref ทำให้ช่วงสเกลเต็มเท่ากับสองเท่าของแรงดันอ้างอิง (FSR = 2 × Vref) โดยรหัส 0 จะตรงกับ −Vref รหัสกึ่งกลางจะตรงกับ 0 V และรหัสสูงสุดจะอยู่ต่ำกว่า +Vref อยู่หนึ่งขั้นสัญญาณ
สูตรและการแทนค่าคำนวณ
เครื่องมือจะแสดงขั้นตอนการคำนวณอย่างละเอียดโดยใช้ตัวเลขจริงที่ผู้ใช้ป้อนเข้าไปแทนที่ในตัวแปรของสูตรทางคณิตศาสตร์:
- ระดับสัญญาณ: ระดับสัญญาณ = 2^N
- ช่วงสเกลเต็ม (FSR): สำหรับ Unipolar จะใช้สูตร FSR = Vref ส่วน Bipolar จะใช้สูตร FSR = 2 × Vref
- ขนาดขั้นสัญญาณ LSB: LSB = FSR ÷ 2^N
- ค่าความคลาดเคลื่อนจากการควอนไทซ์สูงสุด: ±LSB ÷ 2
- สัญญาณรบกวนจากการควอนไทซ์ (rms): LSB ÷ √12
- SNR ในอุดมคติ (คลื่นไซน์แบบเต็มสเกล): SNR = 6.02 × N + 1.76 dB
- ช่วงไดนามิก: ช่วงไดนามิก = 6.02 × N dB
ตัวอย่างการคำนวณเมื่อโหลดค่าตัวอย่าง (12 บิต, แรงดันอ้างอิง 3.3 V, ช่วง Unipolar):
- ระดับการควอนไทซ์ = 2¹² = 4,096 ระดับ
- รหัสสูงสุด = 4,095
- LSB = 3.3 V ÷ 4,096 ≈ 805.6641 µV
- ค่าความคลาดเคลื่อนจากการควอนไทซ์สูงสุด = ±402.832 µV
- สัญญาณรบกวนจากการควอนไทซ์ ≈ 232.5752 µV rms
- SNR ในอุดมคติ ≈ 74.01 dB
- ช่วงไดนามิก ≈ 72.25 dB
การแปลงค่า ณ จุดวัดค่าและข้อจำกัดของแรงดันอินพุต
เครื่องมือรองรับการแปลงค่ากลับไปมาระหว่างแรงดันไฟฟ้าและรหัสเอาต์พุตดิจิทัล ณ จุดวัดค่าที่กำหนด:
- แรงดันไฟฟ้า → รหัส: สำหรับ Unipolar จะใช้สูตร code = round(Vin ÷ LSB) และสำหรับ Bipolar จะใช้สูตร code = round((Vin + Vref) ÷ LSB)
- รหัส → แรงดันไฟฟ้า: สำหรับ Unipolar จะใช้สูตร V = code × LSB และสำหรับ Bipolar จะใช้สูตร V = code × LSB − Vref
- ค่าความคลาดเคลื่อนจากการควอนไทซ์ ณ จุดวัด: คำนวณจาก แรงดันไฟฟ้าของรหัส − แรงดันไฟฟ้าอินพุต
ในกรณีที่แรงดันอินพุตอยู่นอกช่วงการทำงานของตัวแปลงสัญญาณ ระบบจะแสดงข้อความแจ้งเตือนการจำกัดค่า (Clipping) ดังนี้:
- อินพุตอยู่สูงกว่าขีดจำกัดแรงดันฝั่งสูง: ระบบจะแสดงคำเตือน "อินพุตอยู่สูงกว่าขีดจำกัดแรงดันฝั่งสูง: เอาต์พุตอิ่มตัวที่รหัสสูงสุด และค่าความคลาดเคลื่อนที่แสดงคือค่าส่วนต่างที่แท้จริง — ขอบเขต ±½ LSB จะไม่สามารถใช้ได้อีกต่อไป"
- อินพุตอยู่ต่ำกว่าขีดจำกัดแรงดันฝั่งต่ำ: ระบบจะแสดงคำเตือน "อินพุตอยู่ต่ำกว่าขีดจำกัดแรงดันฝั่งต่ำ: เอาต์พุตอิ่มตัวที่รหัส 0 และค่าความคลาดเคลื่อนที่แสดงคือค่าส่วนต่างที่แท้จริง — ขอบเขต ±½ LSB จะไม่สามารถใช้ได้อีกต่อไป"
- อินพุตอยู่กึ่งกลางสเกลพอดี: ระบบจะแสดงข้อความว่าอินพุตอยู่กึ่งกลางสเกลพอดี โดยครึ่งหนึ่งของช่วงสัญญาณจะจับคู่กับรหัสนั้นโดยไม่มีค่าความคลาดเคลื่อนจากการควอนไทซ์
การประเมินขนาดความละเอียดบิตที่ต้องการ
เมื่อผู้ใช้ระบุค่าแรงดันไฟฟ้าที่เล็กที่สุดที่ต้องการแยกแยะ เครื่องคำนวณจะประเมินขนาดบิตที่จำเป็นจากสูตร N ≥ log₂(FSR ÷ step) แล้วปัดเศษขึ้นเป็นจำนวนเต็ม
หากความละเอียดบิตที่เลือกในปัจจุบันเพียงพอ ระบบจะยืนยันว่าตัวแปลงสัญญาณนี้ครอบคลุมการเปลี่ยนแปลงเป้าหมายแล้ว แต่หากไม่เพียงพอ ระบบจะแจ้งว่าต้องใช้ความละเอียดอย่างน้อยกี่บิต และตัวแปลงสัญญาณปัจจุบันแยกแยะได้เพียงขั้นใด
ความเป็นส่วนตัวและการประมวลผลข้อมูล
ทุกตัวเลขที่คุณป้อนจะอยู่ภายในเบราว์เซอร์นี้เท่านั้น โดยไม่มีการอัปโหลดใดๆ ทั้งสิ้น การคำนวณทั้งหมดเกิดขึ้นภายในเครื่องคอมพิวเตอร์หรืออุปกรณ์ของผู้ใช้งานโดยตรง
คำถามที่พบบ่อย (FAQ)
ความละเอียด 12 บิต หมายถึงความแม่นยำ 12 บิตด้วยหรือไม่? ไม่ใช่ ความละเอียดเป็นเพียงความกว้างของรหัส หรือความละเอียดในการแบ่งช่วงสัญญาณเท่านั้น ส่วนความแม่นยำจะถูกจำกัดโดยค่า INL และความคลาดเคลื่อนของออฟเซต/อัตราขยายของตัวแปลงสัญญาณ รวมถึงค่าความคลาดเคลื่อนและสัญญาณรบกวนของแรงดันอ้างอิง ตลอดจนวงจรรอบข้าง ด้วยเหตุนี้ในเอกสารข้อมูล (datasheet) จึงระบุค่า ENOB เช่น SAR ขนาด 12 บิต โดยทั่วไปจะให้บิตใช้งานจริงอยู่ที่ 10–11 บิต ส่วนค่า SNR ในอุดมคติที่ 74 dB ที่แสดงที่นี่คือขีดจำกัดสูงสุดทางทฤษฎีที่ไม่มีตัวแปลงสัญญาณ 12 บิตจริงตัวใดไปถึง
อินพุตแบบ ±Vref ส่งผลต่อการคำนวณอย่างไร? ช่วงสัญญาณจะเพิ่มขึ้นเป็นสองเท่าคือ 2 × Vref ดังนั้นตัวแปลงสัญญาณตัวเดิมจะแยกแยะขั้นสัญญาณที่กว้างขึ้นเป็นสองเท่า: LSB = 2 × Vref ÷ 2^N โดยรหัสจะวิ่งจากแรงดันฝั่งลบไปจนถึงฝั่งบวก โดยรหัส 0 คือ −Vref รหัสกึ่งกลาง 2^(N−1) คือ 0 V และรหัสสูงสุดจะอยู่ต่ำกว่า +Vref อยู่หนึ่งขั้น หากคุณเลือกช่วงสัญญาณแบบ bipolar ด้านบน แรงดันศูนย์โวลต์จะตรงกับรหัสกึ่งกลางพอดี
ทำไมบางแหล่งข้อมูลจึงหารด้วย 2^N แต่บางแหล่งหารด้วย 2^N − 1? ทั้งสองเป็นแบบจำลองที่แตกต่างกันสองแบบของตัวแปลงสัญญาณเดียวกัน โดยเอกสารข้อมูลและทฤษฎีการควอนไทซ์แบบคลาสสิกจะกำหนดให้ LSB = FSR ÷ 2^N โดยมีการเปลี่ยนรหัสครั้งแรกที่ครึ่งขั้น ซึ่งเป็นแบบจำลองที่หน้านี้เลือกใช้ ส่วนรูปแบบ Vref ÷ (2^N − 1) เกิดจากการจับคู่รหัสสูงสุดให้ตรงกับ Vref พอดี ซึ่งมักพบในบทเรียนเกี่ยวกับไมโครคอนโทรลเลอร์ ที่ความละเอียด 12 บิต ทั้งสองแบบจะต่างกันประมาณ 0.02% ซึ่งต่ำกว่าค่าความคลาดเคลื่อนของแรงดันอ้างอิงจริงมาก เพียงแต่ไม่ควรนำทั้งสองแบบมาผสมกันเมื่อตรวจสอบตัวเลขจากแหล่งข้อมูลที่ต่างกัน
ควรทำอย่างไรเมื่อขนาดขั้นสัญญาณหยาบเกินไป? การสุ่มสัญญาณเกินพิกัด (Oversampling) และการหาค่าเฉลี่ยจะช่วยเพิ่มความละเอียดได้เมื่อสัญญาณมีสัญญาณรบกวนเล็กน้อย โดยการหาค่าเฉลี่ยของตัวอย่างที่มากกว่าเดิม 4× จะช่วยเพิ่มบิตใช้งานจริงได้ประมาณหนึ่งบิต และ 16× จะได้เพิ่มสองบิต ทั้งนี้มีเงื่อนไขว่าสัญญาณรบกวนต้องเป็นแบบ White Noise และไม่มีความสัมพันธ์กัน เนื่องจากสัญญาณที่สะอาดและนิ่งสนิทอย่างสมบูรณ์จะให้รหัสเดิมซ้ำๆ เท่านั้น นอกเหนือจากวิธีนี้ คุณจำเป็นต้องเปลี่ยนไปใช้ตัวแปลงสัญญาณที่มีจำนวนบิตมากขึ้น หรือเพิ่มวงจรขยายสัญญาณที่ปรับอัตราขยายได้ (programmable-gain stage) เพื่อให้สัญญาณครอบคลุมช่วงได้มากขึ้น