Jadi Anda punya:
R_x R_fixed
Vcc -----^v^v^----+----^v^v^------- Gnd
|
|
+--- V_sensed --- ADC input
Rx adalah beberapa resistensi yang tidak diketahui (mungkin semacam sensor). Dan Anda menggunakan R_fixed pada 0,1% sekarang untuk menghitung R_x secara efektif, tetapi Anda ingin menggunakan resistor tetap yang lebih murah dengan toleransi yang lebih rendah, mungkin 1%. Dengan melakukan itu Anda ingin melakukan semacam kalibrasi selama produksi untuk memperbaiki kesalahan yang meningkat, benarkah itu?
Cara Anda akhirnya melakukan ini adalah meletakkan byte di EEPROM (atau memori non-volatile lainnya) yang bertindak sebagai "offset" dalam perhitungan Anda, dan itu adalah hal yang sangat layak untuk dilakukan. Masalahnya adalah Anda perlu waktu selama produksi untuk melakukan aktivitas kalibrasi. Untuk melakukan kalibrasi, Anda akan memerlukan salah satu dari 0,1% resistor (sebut saja R_cal) dengan nilai yang sebanding dengan resistor 1% Anda untuk menggantikan ke dalam rangkaian untuk R_x. Mengukur V_sensed, Anda dapat menyimpulkan lebih tepatnya nilai R_fixed (yaitu untuk sesuatu seperti 0,2%).
Jika R_cal dan R_fixed secara nominal bernilai sama, Anda akan berharap V_sensed sama dengan Vcc / 2. Anda akan menyimpan deviasi terukur dari Vcc / 2 sebagai byte offset kalibrasi, dan selalu menambahkannya ke V_sensed seperti yang dirasakan oleh ADC Anda.
Jebakan, seperti yang saya lihat, adalah bahwa ada banyak pekerjaan yang terlibat dalam melakukan pengukuran dan kemudian menyimpan nilai. Hal lain yang perlu dipertimbangkan sebagai jebakan adalah bahwa suhu dapat berperan dalam menyebabkan resistensi untuk menyimpang dari nilai nominalnya, sehingga Anda akan menginginkan lingkungan kalibrasi yang terkontrol suhu yang cukup baik. Akhirnya jangan lupa untuk menggunakan peralatan pengukuran yang dikalibrasi, karena itu sumber potensial kesalahan aditif lainnya. Satu perangkap terakhir yang dapat saya pikirkan adalah bahwa byte kalibrasi harus disimpan dalam satuan lsb dari ADC Anda (jadi jika Anda memiliki 12-bit ADC, satuan byte offset kalibrasi harus "Vcc / 2 ^ 12 Volts") .
Edit
Jika Anda menggunakan dua resistor tetap untuk membagi tegangan besar ke skala yang lebih rendah sebagai berikut:
R1_fixed R2_fixed
V_in -----^v^v^----+----^v^v^------- Gnd
|
|
+--- V_sensed --- ADC input
Bagian yang diedit ulang
Jadi sekarang Anda ingin menggunakan referensi tegangan presisi (sebut saja V_cal) untuk merangsang V_in selama langkah kalibrasi dalam produksi. Apa yang Anda punya di sana dalam teori:
V_sensed = V_predicted = V_cal * R2_fixed / (R1_fixed + R2_fixed) = V_cal * slope_fixed
Tetapi yang Anda miliki dalam kenyataan adalah:
V_sensed = V_measured = V_cal * R2_actual / (R1_actual + R2_actual) = V_cal * slope_actual
Akibatnya Anda memiliki kemiringan fungsi transfer yang berbeda dalam kenyataannya dari apa yang Anda prediksi dari nilai-nilai resistor. Penyimpangan dari fungsi transfer pembagi yang diprediksi akan menjadi linier sehubungan dengan tegangan input, dan Anda dapat dengan aman berasumsi bahwa 0V di akan memberikan Anda 0V, sehingga membuat satu pengukuran referensi tegangan presisi akan memberi Anda informasi yang cukup untuk mengkarakterisasi faktor skala linier ini. . Yaitu:
V_measured / V_predicted = slope_fixed / slope_actual
slope_actual = slope_fixed * V_measured / V_predicted
Dan Anda akan menggunakan slope_actual sebagai nilai kalibrasi Anda untuk menentukan tegangan sebagai fungsi dari tegangan yang diukur.
di bawah ini adalah milik @markrages
Untuk mendapatkan sensitivitas kemiringan aktual terhadap nilai-nilai resistor memerlukan diferensiasi parsial: