ADC แบบเรียงซ้อนเพื่อให้ได้ความละเอียดสูงขึ้น


11

สมมติว่าฉันมี ADC 12 บิตคู่หนึ่งฉันสามารถจินตนาการได้ว่าพวกเขาสามารถต่อเรียงเพื่อรับ <= 24- บิตเอาต์พุต

ฉันคิดได้ง่ายๆว่าใช้หนึ่งสำหรับช่วงบวกและอีกอันสำหรับช่วงลบแม้ว่าอาจจะมีการบิดเบือนในภูมิภาคข้าม (สมมติว่าเราสามารถเพิกเฉยได้คือบิตข้อผิดพลาดเล็กน้อยหรืออาจวาง ADC ที่ 3 เพื่อวัดค่าประมาณ 0 โวลต์)

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

ความคิดเห็นและข้อเสนอแนะใด ๆ ยินดีต้อนรับ

ฉันสันนิษฐานว่าชิป quad 8 บิต (หรือ 12 บิตคู่) ราคาไม่แพงแล้วชิป 24 บิตเดียว


2
ใช่เป็นไปได้ในทางทฤษฎีและในกรณีจริง 0.01% ที่ชิ้นส่วนมี "จำนวนบิตที่ได้ผล" เท่ากับ "จำนวนข้อมูลบิต" พร้อมรายละเอียดส่วนที่เหลือซึ่งรวมถึงความแม่นยำเพิ่มขึ้นอีก 5 คำสั่ง ซึ่งไม่เป็นความจริงสำหรับ 99.99% ของชิ้นส่วน

4
ถ้าคุณใช้อันหนึ่งสำหรับแรงดันบวกและอีกอันสำหรับแรงดันลบนั่นจะทำให้คุณได้13บิตเท่านั้น การต่อเรียงพวกมันจะต้องใช้ DAC และเครื่องขยายเสียง คุณแปลงสัญญาณโดยตรงเขียนค่าลงใน DAC และลบเอาต์พุต DAC จากสัญญาณอินพุต จากนั้นคุณขยายสัญญาณด้วยและป้อนลงใน ADC ตัวที่สอง 212
Connor Wolf

คำตอบ:


11

มีคำถามมากมายในคำถามของคุณ ดังนั้นขอพาพวกเขาทีละคน

สมมติว่าฉันมี ADC 12 บิตคู่หนึ่งฉันสามารถจินตนาการได้ว่าพวกเขาสามารถต่อเรียงเพื่อรับ <= 24- บิตเอาต์พุต ฉันคิดได้ง่ายๆว่าใช้หนึ่งสำหรับช่วงบวกและอีกอันสำหรับช่วงลบแม้ว่าอาจจะมีการบิดเบือนในภูมิภาคข้าม (สมมติว่าเราสามารถเพิกเฉยได้คือบิตข้อผิดพลาดเล็กน้อยหรืออาจวาง ADC ที่ 3 เพื่อวัดค่าประมาณ 0 โวลต์)

ไม่จริง - คุณจะได้รับความละเอียด 13 บิต หนึ่งสามารถอธิบายการทำงานของตัวแปลง 12 บิตเป็นการตัดสินใจว่าแรงดันอินพุตของ 4096 bins (2 ^ 12) เป็นอย่างไร ADC 12 บิตสองตัวจะให้ 8192 ถังขยะหรือความละเอียด 13 บิต

ตัวเลือกอื่นที่ฉันคิดคือใช้ ADC ความเร็วสูงเดียวและสลับแรงดันอ้างอิงเพื่อให้ได้ความละเอียดสูงกว่าด้วยความเร็วต่ำ

ที่จริงแล้วนี่คือวิธีที่Successive Approxation Converterทำงาน โดยทั่วไปตัวแปลงหนึ่งบิต (หรือที่รู้จักกันในชื่อ Comparator) นั้นใช้กับตัวแปลงสัญญาณดิจิตอลเป็นอะนาล็อกที่สร้างแรงดันอ้างอิงที่แตกต่างกันตามอัลกอริทึมการประมาณต่อเนื่องเพื่อให้ได้ตัวอย่างดิจิทัลของแรงดันไฟฟ้า โปรดทราบว่าตัวแปลง SAR เป็นที่นิยมมากและ ADC ส่วนใหญ่ใน uC เป็นประเภท SAR

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

ที่จริงแล้วมันคล้ายกับขั้นตอนการทำงานของADC อย่างไรก็ตามแทนที่จะเปลี่ยนการอ้างอิงของ ADC รองข้อผิดพลาดตกค้างหลังจากขั้นตอนแรกจะถูกขยายและประมวลผลโดย ADC ขั้นต่อไป

ความคิดเห็นและข้อเสนอแนะใด ๆ ยินดีต้อนรับ ฉันสันนิษฐานว่าชิป quad 8 บิต (หรือ 12 บิตคู่) ราคาไม่แพงแล้วชิป 24 บิตเดียว

ที่จริงแล้วมีเหตุผลว่าการมีตัวแปลง 24 บิตไม่ใช่เรื่องง่ายเหมือนกับการจัดเรียงในตัวแปลง 8 บิตแบบสี่บิตบางตัว มีมากไปกว่านั้น ฉันคิดว่าความเข้าใจผิดที่สำคัญที่นี่คือการคิดว่าสามารถเพิ่มจำนวนบิต เพื่อดูว่าทำไมจึงเป็นสิ่งที่ผิดมันจะดีกว่าที่จะคิดว่า ADC เป็นวงจรที่กำลังตัดสินใจว่าแรงดันไฟฟ้าอินพุต "ถัง" อยู่ที่ใด จำนวนของถังขยะเท่ากับ 2 ^ (จำนวนบิต) ดังนั้นตัวแปลง 8 บิตจะมี 256 bins (2 ^ 8) ตัวแปลง 24 บิตจะมีถังขยะมากกว่า 16 ล้าน (2 ^ 24) ดังนั้นเพื่อให้มีจำนวนของถังขยะเท่ากันกับในตัวแปลง 24 บิตหนึ่งจะต้องการตัวแปลงมากกว่า 65,000 8 บิตมากกว่า 65,000 (จริง ๆ แล้ว 2 ^ 16)

หากต้องการดำเนินการต่อด้วยการเปรียบเทียบถังขยะ - สมมติว่า ADC ของคุณมีขนาดเต็ม 1V ดังนั้นตัวแปลง 8-bit "bin" คือ 1V / 256 = ~ 3.9mV ในกรณีของตัวแปลง 24 บิตจะเป็น 1V / (2 ^ 24) = ~ 59.6nV โดยสังเขปเป็นที่ชัดเจนว่า "การตัดสินใจ" ถ้าแรงดันไฟฟ้าเป็นของถังขยะขนาดเล็กยาก อันที่จริงกรณีนี้เกิดจากเสียงรบกวนและความไม่เป็นวงจรต่างๆ ดังนั้นไม่เพียงต้องการตัวแปลง 8 บิตมากกว่า 65,000 ตัวเพื่อให้ได้ความละเอียด 24 บิต แต่ตัวแปลง 8 บิตเหล่านั้นจะต้องสามารถแก้ไขเป็นถังขยะขนาด 24 บิต (ตัวแปลง 8 บิตปกติของคุณจะไม่ดีพอเพราะมัน สามารถแก้ไข ~ 3.9mV bin ไม่ใช่ 59.6nV bin)


ช่วงที่ตัวแปลง 8 บิตใช้งานได้คือ 256 * 59.6nV = 15.26uV ฉันไม่เคยทำให้พวกเขาอ้างอิงแรงดันไฟฟ้าที่ต่ำและแม่นยำ :)
ฮันส์

14

การแยกช่วงอินพุตของคุณจะทำให้คุณได้รับ 13 บิตไม่ใช่ 24 สมมติว่าคุณมีช่วงอินพุตตั้งแต่ -4.096V ถึง + 4.096V จากนั้น ADC แบบ 12 บิตจะมีความละเอียด 2mV: 2 12 x 2mV = 8.192V (ช่วงจาก -4.096V ถึง + 4.096V) หากคุณบวกครึ่งหนึ่งคุณจะได้ความละเอียด 1mV เนื่องจากช่วงของคุณลดลงครึ่งหนึ่ง: 2 12 x 1mV = 4.096V นั่นคือ 2 12ระดับเหนือ 0V และอีก 2 12ด้านล่าง ร่วมกัน 2 12 + 2 12 = 2 13ดังนั้นมันจึงเพิ่ม 1 บิตไม่ใช่ 121212121212 1213

เกี่ยวกับการเปลี่ยนแรงดันอ้างอิง ฉันจะยกตัวอย่างอื่น สมมติว่าคุณมี ADC 1 บิตและต้องการรับ 12 บิตโดยเปลี่ยนการอ้างอิง หนึ่งบิตจะให้ 1 ถ้าอินพุตมากกว่าและศูนย์เป็นอย่างอื่น สมมติว่าการอ้างอิงของคุณคือ 1V จากนั้นเกณฑ์คือ 0.5V หากคุณเปลี่ยนการอ้างอิงเป็น 0.9V คุณจะมีขีด จำกัด ใหม่ที่ 0.45V ดังนั้นคุณจึงสามารถแยกแยะได้ 3 ระดับ เฮ้สิ่งนี้อาจใช้ได้ฉันสามารถทำ 12 บิตด้วย ADC 1 บิตแล้วก็อาจเป็น 24 บิตด้วย ADC 12 บิต! ถือไว้! ไม่เร็วมาก! คุณสามารถทำได้ แต่ส่วนประกอบของ ADC 1 บิตของคุณจะต้องเป็นเกรด 12 บิต นั่นคือเพื่อความแม่นยำของการอ้างอิงและตัวเปรียบเทียบ เช่นเดียวกัน ADC แบบ 12 บิตจะสามารถทำ 24 บิตได้หากความแม่นยำของ ADC นั้นแม่นยำเพียงพอและความแม่นยำของแรงดันอ้างอิงที่แตกต่างกันนั้นเป็นเกรด 24 บิต ดังนั้นในทางปฏิบัติคุณจะไม่ได้รับมาก VREF2

ไม่มีสิ่งใดเป็นอาหารกลางวันฟรี

แก้ไข
ดูเหมือนจะมีความเข้าใจผิดเกี่ยวกับ oversampling และความจริงที่ว่ามีอยู่ 1 บิต ADCs เสียงซึ่งสามารถให้ความละเอียด 16 บิต
หากอินพุตของคุณเป็นระดับ DC คงที่ให้พูด 0.2V ในช่วงอินพุต 1V เอาต์พุตของคุณจะเหมือนกันเสมอ ด้วย ADC แบบ 1 บิตนี่จะเป็นศูนย์สำหรับตัวอย่างของเรา (ระดับการอ้างอิงน้อยกว่าครึ่ง) ตอนนี้จะเป็นเช่นนั้นไม่ว่าคุณจะสุ่มตัวอย่างที่ 1 ตัวอย่างต่อวินาทีหรือ 1,000 การหาค่าเฉลี่ยจะไม่เปลี่ยนแปลงสิ่งนี้ ทำไมมันถึงใช้งานร่วมกับ ADC ของเสียงได้เพราะแรงดันไฟฟ้าแปรผันตลอดเวลา (เสียงรบกวน) ซึ่งตาม Einstein (สัมพัทธภาพคุณรู้ ;-)) เหมือนกันกับการรักษาแรงดันไฟฟ้าให้คงที่และการอ้างอิงที่แตกต่างกัน และจากนั้นคุณได้รับการอ่านที่แตกต่างกันในขณะที่การสุ่มตัวอย่างมากเกินไปซึ่งคุณสามารถเฉลี่ยเพื่อให้ได้ระดับที่แท้จริงของคุณโดยประมาณ
เสียงจะต้องแข็งแรงพอที่จะผ่านเกณฑ์ของ ADC และจะต้องมีข้อ จำกัด บางอย่างเช่นการแจกแจงแบบเกาส์ (เสียงสีขาว) ในตัวอย่าง 1 บิตมันไม่ทำงานเพราะระดับเสียงรบกวนต่ำเกินไป


อ่านเพิ่มเติม:
แอปพลิเคชัน Atmel บันทึก AVR121: การปรับปรุงความละเอียดของ ADC โดยการสุ่มตัวอย่าง


ฉันไม่แน่ใจว่าฉันเข้าใจความคิดของคุณในเรื่องนั้น แน่นอนถ้าคุณแยก + และ - คุณสามารถสุ่มตัวอย่างที่ 0v ถึง + 4.096v ที่ 12 bits และ 0v ถึง -4.096v ที่ 12 bits ทำให้มีจำนวน 24 บิตตลอดช่วงเต็มรูปแบบใช่หรือไม่
Majenko

1
@ MattJenkins มันจะเหมือนกับสัญญาณบิต ลองคิดดู ถ้าฉันสุ่มตัวอย่าง 0-10V ด้วย 12 บิตและ 0 - (- 10V) ด้วย 12 บิตฉันต้องใช้เพียงหนึ่งบิตเพื่อบอกว่าสัญญาณเป็นลบหรือบวก
Kortuk

สิ่งนี้เป็นจริง - ดังนั้นแม้ว่าคุณจะได้ตัวอย่างเป็น 24 บิต แต่คุณสามารถได้รับความละเอียดเดียวกันโดยมีเพียง 13 บิต
Majenko

8V2V=228V1V=23

@ MattJenkins คุณสามารถใช้การเข้ารหัสร้อน 1 ครั้งและรับ 1024 บิตแทน 10 ความจริงทางกายภาพคือวิศวกรสามารถทำทุกอย่างที่เขาต้องการเพียงแค่บอกลูกค้าว่าคุณใช้งาน 3dB ไม่ใช่แค่ 10kW
Kortuk

3

ใช่ในทางทฤษฎีคุณสามารถทำสิ่งที่คุณต้องการ แต่ถ้าคุณมีอุปกรณ์ที่ไม่สมจริงทั้งหมดที่มีให้สำหรับคุณ

ความคิดเห็นอื่น ๆ อีกหลายประการเกี่ยวกับความแม่นยำที่ จำกัด นั้นถูกต้องอนิจจา

พิจารณา. วัดแรงดันไฟฟ้าด้วย ADC 12 บิตแล้วพูด 111111000010 คุณรู้ว่าค่าจริงอยู่ที่ไหนสักแห่งในช่วง 1 บิต +/- 0.5 บิตทั้งสองด้านของค่านี้

หาก ADC ของคุณมีความถูกต้องถึง 24 บิต แต่ให้เพียง 12 บิตก็จะรายงานว่า vaklue อยู่ภายใน +/- ครึ่งบิตของ 111111000010 000000000000 ถ้าเป็นกรณีนี้คุณสามารถใช้ ADC 12 บิตพร้อม +/- ช่วง 1/2 บิตอยู่ที่ 111111000010000000000000 และอ่านผลลัพธ์ นี่จะให้ความแตกต่างกับสัญญาณจริงและค่า aDC ตามที่ต้องการ QED

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

ในขณะที่คุณต้องการ

111111000010 หมายถึง 111111000010 000000000000

อาจหมายถึง 111111000010 000101101010 หรืออะไรก็ตาม

ดังนั้นถ้าคุณใช้ ADC ตัวที่ 2 และวัด 12 บิตและ ASSUME ที่ต่ำกว่าว่าพวกมันสัมพันธ์กับขอบเขต 12 บิตที่แน่นอนพวกเขาจะสัมพันธ์กับค่าที่ผิดพลาดข้างต้น เนื่องจากค่านี้เป็นข้อผิดพลาดแบบสุ่มคุณจะเพิ่ม 12 บิตต่ำใหม่ให้เป็น 12 บิตของสัญญาณรบกวนแบบสุ่ม แม่นยำ + สุ่ม = สุ่มใหม่

ตัวอย่าง

ใช้สองคอนเวอร์เตอร์ที่สามารถวัดช่วงและให้ผลลัพธ์ใน 1 จาก 10 ขั้นตอน หากปรับสัดส่วนเป็น 100 โวลต์ FS จะให้ ge 0 10 20 30 40 50 60 70 80 90

หากปรับสเกลเต็มให้เต็ม 10 โวลต์พวกมันจะให้ 1 2 3 4 5 6 7 8 9

คุณตัดสินใจใช้ตัวแปลงสองตัวนี้เพื่อวัดช่วง 100 โวลต์ที่มีความแม่นยำ 1 โวลต์

Converter 1 ส่งคืน 70V จากนั้นคุณวัดแรงดันไฟฟ้าที่สัมพันธ์กับ 70V และรับ -3V ดังนั้นคุณจึงสรุปว่ามูลค่าที่แท้จริงคือ + 70V - 3V = 67V

อย่างไรก็ตามผลลัพธ์ 70V ในความเป็นจริงอาจเป็นใด ๆ ของ 65 66 67 68 69 70 71 72 73 74

เฉพาะเมื่อตัวแปลงที่ 1 ถูกต้อง 1V ใน 100 แม้ว่าจะแสดงขั้นตอน 10V ใน 100V คุณสามารถบรรลุสิ่งที่คุณต้องการ

ผลลัพธ์ที่แท้จริงคือ 67V +/- 5 volt = อะไรก็ได้จาก 62V ถึง 72V ดังนั้นคุณจะไม่ดีไปกว่าเมื่อก่อน ศูนย์ของคุณย้ายไปแล้ว แต่อาจอยู่ในตำแหน่งสุ่ม

คุณจะสามารถได้รับการปรับปรุงเล็กน้อยด้วยวิธีนี้เนื่องจากโดยทั่วไปแล้วตัวแปลงอาจจะแม่นยำมากกว่าบิตที่ส่งคืน (คุณหวังว่า) ดังนั้นตัวแปลงที่สองของคุณจึงใช้สิ่งนี้


ระบบที่ใช้งานจริงได้ถูกกล่าวถึงด้วยการละเลยที่สำคัญอย่างหนึ่ง หากคุณสุ่มตัวอย่างสัญญาณ N ครั้งและคุณเพิ่ม + / _ ครึ่งหนึ่งของเสียงรบกวนแบบเกาส์เซียนคุณจะกระจายสัญญาณ "ตลอดช่วงที่เป็นไปได้" และค่าเฉลี่ยจะเป็นค่า log (N) ที่แม่นยำกว่าเดิม รูปแบบนี้มีเบ็ดตกปลาและคุณสมบัติและคุณไม่สามารถรับจำนวนบิตเพิ่มเติมได้ตามอำเภอใจ แต่มันมีการปรับปรุงบางอย่าง


ในกรณีแรกข้างต้นฉันพูดถึง a12 บิต ADC ด้วยความแม่นยำ 24 บิต คุณสามารถบรรลุสิ่งที่จัดเรียงโดยใช้ ADC ขนาด 12 บิตและอ่านค่าที่สันนิษฐานด้วย 24 บิตเช่นตัวแปลงเดลตาซิกมา หากสัญญาณมีความเสถียรเพียงพอที่จะยังคงอยู่ในช่วงบิตเดียวกันคุณสามารถใช้ ADC ตัวที่ 2 เพื่ออ่านสัญญาณ 12 บิตที่สองที่เขียนสัญญาณนี้ได้

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


อืมม หนึ่งคะแนน ลงหนึ่งคะแนน ให้สิ่งที่ผ่านไปสำหรับคำตอบตกลงที่นี่ [tm] :-) ฉันสนใจที่จะรู้ว่าใครคิดว่าคำตอบนี้น่ากลัวมากที่จะทำบุญลงคะแนนและทำไม?
รัสเซลแม็คมาฮอน

1

มีบางสิ่งที่เรียกว่าการสุ่มตัวอย่างแบบซุปเปอร์ซึ่งสามารถใช้เพื่อเพิ่มความละเอียดของ ADC หลายประเภท

มันทำงานโดยการเพิ่มเสียงให้กับสัญญาณ แม้ว่าเสียงจะลดความละเอียดลงไป แต่ก็มีความจำเป็นที่จะต้องแยกข้อมูลออกเป็นหลายบิต (ฉันไม่ใช่นักประมวลผลสัญญาณ - นี่เป็นวิธีที่ฉันเข้าใจ) เสียงของคุณอาจเป็นเพียง 1 หรือ 2 บิต แต่ต้องอยู่ที่นั่น ถ้าคุณใช้ตัวอย่าง 12 บิตหนึ่งตัวคุณมี 12 บิต ถ้าคุณนำ 4 ตัวอย่างมารวมเข้าด้วยกันแล้วหารสองคุณจะได้ตัวอย่าง 13 บิต (บิตเพิ่มเติมแต่ละอันต้องใช้ 4 ตัวอย่างเนื่องจาก Nyquist)

วิธีง่ายๆในการทำเช่นนี้คือการเพิ่มสัญญาณรบกวนให้กับแรงดันอ้างอิง ฉันใช้สิ่งนี้เพื่อเพิ่ม ADC 12 บิตใน dsPIC33F ถึง 16 บิตสำหรับความละเอียดที่สูงขึ้น ก่อนหน้านี้ฉันตั้งค่าตัวจับเวลาแบบอะซิงโครนัสที่ความถี่สูงและใช้ DMA เพื่อจัดลำดับหมายเลข PRNG ลงในการจับภาพเอาต์พุตซึ่งให้กำเนิดเสียงที่ค่อนข้างสะอาด เอาต์พุตเสียงรบกวนสร้างแรงดันอ้างอิงประมาณ 0.1% (ตัวแบ่ง 1k-1Meg) เสียงดังรบกวนสองทิศทางการจมและการจัดหา ฉันใช้ DMA ของ dsPIC33F เพื่อสุ่มตัวอย่างคิวดังนั้นสิ่งนี้สามารถทำได้ด้วยการแทรกแซงของ CPU เพียงเล็กน้อย แน่นอนว่าอัตราตัวอย่างสูงสุดลดลงเหลือประมาณ 1/32 ของอัตราปกติ แต่นี่ไม่ใช่ปัญหาสำหรับแอปพลิเคชันของฉัน

เนื่องจากเสียงไม่ได้กระจายอย่างสม่ำเสมอฉันจะทำการสอบเทียบอินพุตทุกหน่วยที่จัดส่งแม้ว่าความแตกต่างน่าจะเป็นเพียง 1 หรือ 2 LSB


คุณจะรู้ได้อย่างไรว่าเสียงที่คุณเพิ่มมีคลื่นความถี่ที่เหมาะสม (เป็นเสียงสีขาว)? คุณจะตัดสินใจเกี่ยวกับแอมพลิจูดได้อย่างไร? หากเสียงของคุณไม่ดีแล้วคุณจะมีความละเอียดมากขึ้น แต่ไม่แม่นยำมากขึ้น
Federico Russo

@ เฟเดริโกแน่นอน - สำหรับฉันมันเป็นการลองผิดลองถูก สามารถจำลองสัญญาณรบกวนสีขาวโดยใช้ PRNG และตัวอย่างเพียง 32 ตัวอย่างก็ทำงานได้ดีพอ ถ้าฉันเป็นวิศวกรอิเล็กทรอนิกส์จริง ๆ ฉันจะรู้วิธีการทำอย่างถูกต้อง
โทมัสโอ

นี่คือบทความที่ Analog Devices ที่อาจช่วยอธิบายสิ่งนี้: analog.com/library/analogdialogue/archives/40-02/adc_noise.html
DarenW

@ThomasO ฉันใช้เทคนิคนี้กับเทอร์มิสเตอร์เพื่อเพิ่มความแม่นยำ 8 บิต แม้ว่าจะไม่มีเสียงรบกวนเราก็ใช้ความร้อน
Kortuk

@ DarenW มันดูคุ้นเคย - ฉันคิดว่ามันเป็นที่ที่ฉันได้รับความคิดของฉัน
โทมัสโอ

1

การใช้เครื่องขยายเสียงแบบรวมคุณสามารถรวมเอาท์พุท DAC สองตัว คุณสามารถใช้ R1 = 100k, R2 = R3 = 100 โอห์ม วิธีนี้ผลลัพธ์จะเป็น Vout = - (V1 + V2 / 1000) คุณจะต้องใช้แหล่งจ่ายไฟคู่และถ้าคุณต้องการมันไม่กลับด้านคุณต้องใส่แอมพลิฟายเออร์ inverting อีกตัวด้วย gain = 1 สมมุติว่าคุณมี DAC 12 บิตพร้อมเอาต์พุต 2 ตัวและการอ้างอิง 4.096V จากนั้น (หากคุณมีแอมพลิฟายเออร์ inverting ครั้งที่สอง) การเพิ่มขึ้นหนึ่งครั้งจาก DAC 1 จะเพิ่มเอาต์พุตด้วย 1uV และการเพิ่มขึ้นหนึ่งครั้งจาก DAC 2 จะเพิ่มเอาต์พุตด้วย 1mV นั่นไม่ใช่ทั้งหมด 24 บิต ประมาณ 22 บิต ในทางทฤษฎีคุณสามารถเลือก R1 ให้ใหญ่กว่า R2 และ R3 ถึง 4096 เท่าและรับ 24 บิต แต่คุณจะไม่ได้ผลลัพธ์ที่ดีกว่า คุณจะมีปัญหาเสียงรบกวนมากมายในช่วง microvolts แม้ว่าคุณจะเลือก opamp ที่มีเสียงรบกวนต่ำ

อัปเดต ฉันแม้ว่าจะเป็นคำถามเกี่ยวกับ DAC เพราะฉันกำลังค้นหา DAC นี่คือวิธีที่คุณใช้หลักการที่คล้ายกันกับ ADC แทนที่จะรวมกันคุณต้องลบผลลัพธ์ ADC1 แล้วคูณด้วย 1,000 ก่อนที่จะวัดด้วย ADC2

ความละเอียด ADC สองเท่า

การแก้ไข - ADC3 ควรอยู่บน VGnd (Vref / 2) ไม่ใช่ Vref เพื่อให้ตรงกับสูตรผลลัพธ์

แทนที่จะเป็น AZ431 คุณสามารถใช้การอ้างอิง 2.5V อื่น ๆ หรือการอ้างอิงแบบปรับได้อื่น ๆ ด้วย passives ที่เหมาะสมเพื่อรับ 4.096V การอ้างอิงอุณหภูมิที่น้อยลงทำให้ได้ผลลัพธ์ที่ดีขึ้น นอกจากนี้ยังต้องมีเสียงรบกวนต่ำ โปรดทราบว่าเนื่องจากอาจไม่แม่นยำเพียงพอ มันจะดีถ้าใส่ trimpot แบบมัลติเทิร์น 500 โอห์มระหว่าง R7 และ R8 พร้อมที่ปัดน้ำฝนไปยังอินพุตอ้างอิงและปรับแต่งสำหรับ Vref = 4.096V นอกจากนี้ยังต้องใช้ trimpot (2) ระหว่าง R1 และ R2 พร้อมที่ปัดน้ำฝนไปยังอินพุตบวก U1 ปรับแต่งมันสำหรับ 2.048V บน VGnd U1 เป็นเพียงเสียงรบกวนต่ำ (BTW AZ431 แย่มากสำหรับงานฉันใส่เพราะฉันมีสัญลักษณ์)

มันสำคัญมากสำหรับ U2, U3 และ U4 ที่จะเป็นแอมป์สับออฟเซ็ตศูนย์ U2 มีความสำคัญมากกว่าเพราะคูณด้วย 100 ทุก 1 microvolt ได้ถึง 100 microvolts ถ้าคุณใช้ OP07 และคุณได้ศูนย์อย่างถูกต้องและอุณหภูมิเปลี่ยนแปลงด้วย 10 องศาจากนั้นคุณจะได้รับ 13 uV offset ซึ่งแปลเป็น 1.3 mV ในเอาต์พุตของ U4 นั่นคือ 13 mV ในเอาท์พุท ADC ซึ่งทำให้ ADC2 ไร้ประโยชน์เกือบ

นอกจากนี้ U3 จะต้องสามารถเข้าถึง 6.048V - นั่นคือ VGnd (2.048V) + 2xVinmax (2x2V = 4V) นั่นเป็นความคิดทั้งหมดของการมีแหล่งจ่ายไฟ Vcc = + 12V Vcc สามารถต่ำได้ถึง 6.5V เมื่อใช้ MAX44252 เนื่องจาก MAX44252 เป็นแหล่งจ่ายไฟเชิงลบของ rail to rail สามารถข้ามได้และ Vss ของ opamp สามารถเชื่อมต่อกับกราวด์ นั่นเป็นความจริงสำหรับ opamp ใด ๆ ที่สามารถส่งเสียงต่ำได้ถึง 48mV

MAX44252มีแรงดันออฟเซ็ต 2-4uV (ทั่วไป) และ 1 ถึง 5 nV อุณหภูมิดริฟท์ มันคือ$ 2.64 ใน digikeyในปริมาณ 1 และเป็น quadopamp ดังนั้นมีเพียงหนึ่งชิปเท่านั้นที่จะทำงาน

มันทำงานอย่างไร? ตัวอย่างเช่น 10 บิต DAC ความละเอียดคือ 4.096 / 1024 = 4mV สัญญาณอินพุตต้องสัมพันธ์กับ VGnd ซึ่งเป็นครึ่งหนึ่งของ Vref ADC1 วัดแรงดันไฟฟ้าขาเข้าตามปกติ จากนั้นส่งออกค่าผ่าน DAC1 ความแตกต่างระหว่าง Vin และ DAC1 คือข้อผิดพลาดที่คุณต้องขยายการวัดและเพิ่มลงในผลลัพธ์ ADC1 U2 ขยายความแตกต่าง Vin - DAC1 เทียบกับ DAC1 โดยได้รับ 100 U4 ขยายความแตกต่างนั้น 10 และลบ DAC1 เมื่อเทียบกับ VGnd นั่นทำให้ ADC2 = (Vin - DAC1) * 1,000 สัมพันธ์กับ VGnd กล่าวอีกนัยหนึ่งถ้าคุณมี 1.234567V บน Vin เทียบกับ VGndADC1 จะวัดมูลค่า 821เนื่องจากความละเอียดคือ 4mV และ (2.048 + 1.234567) /0.004 = 820.64175 ดังนั้นค่า DAC จะถูกตั้งค่าเป็น 309 ซึ่งเป็น 309 * 0.004V = 1.236V ตอนนี้ ADC2 จะได้รับ 1.234567-1.236 = -0.001433 * 1000 = -1.433V เทียบกับ VGnd (นึกคิด) นั่นคือ 2.048-1.433 = โหมดทั่วไป 0.615V 0.615V / 0.004 = 153.75 ดังนั้นค่า ADC2 = 154. การคำนวณค่าในไมโครโวลต์ง่ายกว่าเพื่อหลีกเลี่ยงการใช้โฟลต ในการแปลง ADC2 ใน mV เราต้องคูณค่าด้วย 4: VADC1 = 821 * 4 = 3284mV ในการแปลงเป็น uV เราต้องคูณด้วย 1,000 หรือนั่นคือค่า ADC1 คูณด้วย 4,000 821 * 4000 = 3284000 ดังนั้นแรงดันไฟฟ้า ADC1 ที่เกี่ยวกับ VGnd คือ 3284000-2048000 = 1236000uV ADC2 นั้นถูกคูณด้วย 1,000 ดังนั้นเราต้องคูณด้วย 4: VADC2 = 154 * 4 = 616 เพื่อให้ได้แรงดันเทียบกับ VGnd เราต้องลบ VGnd: 616-2048 = -1432uV เราใช้ VGnd = 2048uV ที่นี่เพราะเรามีกำลังขยาย 1,000,000 ตอนนี้เราเพิ่ม VADC1 และ VADC2: 1236000 + (-1432) = 1234568uV หรือ 1.234568V

แน่นอนว่าเป็นแค่ความฝันเพราะเมื่อคุณจัดการกับ microvolts จะมีปัญหาที่น่ากลัวทุกชนิด - เสียง opamp, ตัวต้านทานเสียง, แรงดันออฟเซ็ต, แรงดันออฟเซ็ต, อุณหภูมิลดลง, เกิดข้อผิดพลาด ... แต่ถ้าคุณใช้ชิ้นส่วนที่เหมาะสม คุณเป็นโมฆะโดยทางโปรแกรมและแก้ไขผลประโยชน์ที่คุณอาจได้รับผลดีพอสมควร แน่นอนคุณไม่สามารถคาดหวังว่าจะเห็นการป้อนข้อมูลที่มั่นคงเพื่อหลักสุดท้าย บางทีคุณอาจจำกัดความละเอียดไว้ที่ 10uV (หารผลลัพธ์ด้วย 10) นอกจากนี้การคูณด้วย 4 สามารถทำได้โดยรวมผลลัพธ์ 4 ลำดับเพื่อหาค่าเฉลี่ย

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


คำถามถามเกี่ยวกับAD C. คุณพูดคุยเกี่ยวกับDA C.
ศรัทธาหายไปเล็กน้อยใน SE

ฉันขอโทษ. ฉันค้นหา DAC และฉันพบคำถามนี้ ฉันเขียนโดยไม่อ่านอย่างระมัดระวัง ฉันจะชดเชยแนะนำวิธีการใช้หลักการเดียวกันกับ ADC
NickSoft

ฉันลบ downvote ของฉันเนื่องจากโพสต์ของคุณเกี่ยวข้องกับคำถาม แต่ฉันไม่คิดว่าวิธีนี้สามารถใช้งานได้จริง ฉันกลัวว่าจะมีความไม่ถูกต้องมากเกินไป
สลัวขาดศรัทธาใน

แน่นอนมันจะทำงาน อย่างไรก็ตามความแม่นยำขึ้นอยู่กับชิ้นส่วนที่ใช้ มีแอมป์ชอปเปอร์ที่มีค่าชดเชย 0.1uV และดริฟท์ 1-5nV / degC พวกเขายังมี nanovolts เสียงรบกวน 0.1-10Hz pp เมื่อรวมกับการอ้างอิงที่ดีจะทำให้ได้ผลลัพธ์ที่เสถียรสูงถึง 10s ของ uV แต่สิ่งนี้สามารถทำงานกับชิ้นส่วนที่ถูกกว่าได้หากคุณต้องการได้ตัวเลขพิเศษ ตัวอย่างเช่น 10 บิต ADC อยู่กับการอ้างอิง 4.096V มีความละเอียด 4mV ฉันคิดว่าด้วยวงจรนี้มันสามารถปรับปรุงเป็นความละเอียด 0.1uV ได้อย่างง่ายดาย (อาจมีการอ้างอิงที่ดีกว่า) นั่นคือ +/- 20,000 การนับ แน่นอนว่าจะต้องมีการปรับเทียบซอฟต์แวร์เพื่อชดเชยและรับ
NickSoft

นั่นคือทฤษฎีทั้งหมด ความจริงที่ว่าการอ่าน ADC2 ของคุณขึ้นอยู่กับการตั้งค่า DAC ของคุณ (และออฟเซ็ต opamp แต่นี่ไม่ใช่แม้แต่ส่วนที่สำคัญที่สุด) ซึ่งขึ้นอยู่กับการอ่าน ADC1 ของคุณ (และสิ่งเหล่านี้มีความอดทน) จะนำไปสู่ ไม่สามารถแม้แต่รับประกันการทำงานแบบ monotonic ของระบบของคุณ (แม้ว่าคุณจะอยู่ในขอบเขตของความถูกต้องที่คำนวณได้ของคุณ)
สลัวขาดศรัทธาใน

0

ล.โอก.2(มาก)บิตมากขึ้นของความละเอียด

แก้ไข: ดูความคิดเห็นสำหรับการแก้ไขคณิตศาสตร์ของฉัน


นั่นคือสิ่งที่ฉันคิดเช่นกัน แต่ให้พิจารณาสิ่งนี้: ช่วงอินพุต 1V, อินพุต 0.2V, ADC 1 บิต ไม่ว่าคุณจะสุ่มตัวอย่างสูงแค่ไหนคุณจะอ่าน 0 โดยเฉลี่ย = 0 ไม่ใช่ 0.2
stevenvh

การสุ่มตัวอย่างแบบนี้จะต้องใช้ "สัญญาณรบกวน" บนสัญญาณ ในฐานะที่เป็น stevenvh ชี้ให้เห็น บางครั้งสัญญาณของตัวเองมี "เสียง" เพียงพอที่จะทำสิ่งนี้ให้สำเร็จโดยไม่มีอะไรใหม่ บางครั้งคุณจำเป็นต้องฉีดสัญญาณรบกวนความถี่สูงเข้าไปในสัญญาณ - แต่เสียงจะถูกกรองออกในการประมวลผลภายหลังที่คุณทำหลังจากนั้น

ถูกต้อง "ขึ้นอยู่กับลักษณะของสัญญาณของคุณ" คำถามไม่ได้บอกว่าถ้าเขาอ่านอุณหภูมิจากเทอร์มิสเตอร์ติดกาวด้านข้างของอิฐตะกั่วหรือถ้าเขาสุ่มตัวอย่างเอาท์พุทมิกเซอร์สำหรับ SDR ดังนั้นเขาจึงมีทางเลือกอื่น หากใครสามารถให้ตัวชี้ไปยังคุณสมบัติทางคณิตศาสตร์ที่แน่นอนสัญญาณจำเป็นสำหรับการ oversampling ให้ถูกต้องฉันจะสนใจจริงๆ btw (และดูเหมือนว่ามันจะเป็นการเพิ่มเติมที่มีประโยชน์แทนขออภัยการแก้ไขซึ่งเป็นเพียงมือที่หยักเล็กน้อยกว่าคำแถลงเดิมของฉัน)
Jay Kominek

ล.โอก.2(aล.โอเสื้อ)-2

ความสนใจหลักของฉันคือสัญญาณเสียงดังนั้นฉันจึงคิดว่าเมื่อตัวแปลง 24 บิตค่อนข้างแพงและไม่มีตัวแปลงเหล่านั้นอยู่จำนวนมาก ขอบคุณทุกคนสำหรับคำอธิบายในเชิงลึก ตอนแรกมันฟังดูแล้วใช่มั้ย :)
พัฒนาฝีมือดี
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.