ดังนั้นคุณจะได้รับ:
R_x R_fixed
Vcc -----^v^v^----+----^v^v^------- Gnd
|
|
+--- V_sensed --- ADC input
Rx เป็นความต้านทานที่ไม่รู้จัก (อาจเป็นเซ็นเซอร์บางชนิด) และคุณกำลังใช้ R_fixed ที่ 0.1% ในขณะนี้เพื่อคำนวณ R_x อย่างมีประสิทธิภาพ แต่คุณต้องการใช้ตัวต้านทานคงที่ที่ถูกกว่าโดยมีความอดทนน้อยกว่า 1% ในการทำเช่นนั้นคุณต้องการทำการสอบเทียบบางประเภทระหว่างการผลิตเพื่อแก้ไขข้อผิดพลาดที่เพิ่มขึ้นใช่ไหม?
วิธีที่คุณทำเช่นนี้คือการใส่ไบต์ใน EEPROM (หรือหน่วยความจำแบบไม่ลบเลือน) ที่ทำหน้าที่เป็น "ออฟเซ็ต" ในการคำนวณของคุณและมันเป็นสิ่งที่ทำงานได้อย่างสมบูรณ์ สิ่งที่จะทำให้คุณเสียเวลาในระหว่างการผลิตเพื่อทำกิจกรรมการสอบเทียบ ในการทำการสอบเทียบคุณจะต้องมีตัวต้านทาน 0.1% ตัวใดตัวหนึ่ง (เรียกว่า R_cal) ที่มีมูลค่าเทียบเท่ากับตัวต้านทาน 1% ของคุณเพื่อทดแทนวงจรสำหรับ R_x การวัด V_sensed คุณสามารถอนุมานค่าของ R_fixed ได้อย่างแม่นยำมากขึ้น (เช่นบางอย่างเช่น 0.2%)
ถ้า R_cal และ R_fixed เป็นค่าเดียวกันคุณคาดหวังว่า V_sensed จะเท่ากับ Vcc / 2 คุณจะเก็บค่าเบี่ยงเบนที่วัดได้จาก Vcc / 2 เป็นไบต์ออฟเซ็ตการปรับเทียบและเพิ่มไว้ใน V_sensed ตามการรับรู้ของ ADC
หลุมพรางที่ผมเห็นก็คือมีงานเกี่ยวข้องในการวัดและเก็บค่า อีกสิ่งที่ควรพิจารณาในฐานะหลุมพรางคืออุณหภูมิสามารถมีบทบาทในการทำให้เกิดความต้านทานต่อการเบี่ยงเบนจากค่าเล็กน้อยดังนั้นคุณจะต้องการสภาพแวดล้อมการสอบเทียบที่ควบคุมอุณหภูมิได้ดีพอสมควร ในที่สุดอย่าลืมใช้อุปกรณ์การวัดที่สอบเทียบเนื่องจากเป็นข้อผิดพลาดเพิ่มเติมที่เป็นไปได้อีกประการหนึ่ง ข้อผิดพลาดสุดท้ายที่ฉันคิดได้คือไบต์การสอบเทียบควรถูกเก็บไว้ในหน่วยของ lsb ของ ADC ของคุณ (ดังนั้นถ้าคุณมี ADC ขนาด 12 บิตหน่วยของการปรับเทียบออฟเซ็ตควรเป็น "Vcc / 2 ^ 12 Volts") .
แก้ไข
หากคุณใช้ตัวต้านทานคงที่สองตัวเพื่อแบ่งแรงดันไฟฟ้าขนาดใหญ่ลงไปที่ระดับล่างดังนี้:
R1_fixed R2_fixed
V_in -----^v^v^----+----^v^v^------- Gnd
|
|
+--- V_sensed --- ADC input
มาตราที่แก้ไขใหม่
ดังนั้นตอนนี้คุณต้องการใช้การอ้างอิงแรงดันไฟฟ้าที่มีความแม่นยำ (เรียกว่า V_cal) เพื่อกระตุ้น V_in ในระหว่างขั้นตอนการสอบเทียบในการผลิต สิ่งที่คุณมีอยู่ในทฤษฎี:
V_sensed = V_predicted = V_cal * R2_fixed / (R1_fixed + R2_fixed) = V_cal * slope_fixed
แต่สิ่งที่คุณมีในความเป็นจริงคือ:
V_sensed = V_measured = V_cal * R2_actual / (R1_actual + R2_actual) = V_cal * slope_actual
ในความเป็นจริงคุณมีความชันของฟังก์ชั่นการถ่ายโอนที่แตกต่างกันในความเป็นจริงมากกว่าที่คุณคาดการณ์จากค่าตัวต้านทาน ความเบี่ยงเบนจากฟังก์ชันถ่ายโอนตัวหารที่ทำนายไว้จะเป็นแบบเชิงเส้นเทียบกับแรงดันไฟฟ้าขาเข้าและคุณสามารถสรุปได้อย่างปลอดภัยว่า 0V ในจะให้คุณ 0V ออกดังนั้นการวัดแรงดันอ้างอิงความแม่นยำหนึ่งค่าควรให้ข้อมูลเพียงพอ . กล่าวคือ:
V_measured / V_predicted = slope_fixed / slope_actual
slope_actual = slope_fixed * V_measured / V_predicted
และคุณจะใช้ slope_actual เป็นค่าสอบเทียบของคุณเพื่อกำหนดแรงดันเป็นฟังก์ชันของแรงดันไฟฟ้าที่วัดได้
ด้านล่างมารยาทของ @markrages
ในการรับค่าความชันของความชันที่แท้จริงกับค่าตัวต้านทานต้องใช้การแยกส่วนบางส่วน: