Yani:
R_x R_fixed
Vcc -----^v^v^----+----^v^v^------- Gnd
|
|
+--- V_sensed --- ADC input
Rx bilinmeyen bir dirençtir (muhtemelen bir çeşit sensör). Ve R_x'i etkili bir şekilde hesaplamak için şu anda% 0.1'de R_fixed kullanıyorsunuz, ancak belki de% 1 daha düşük toleranslı daha ucuz bir sabit direnç kullanmak istiyorsunuz. Bunu yaparken, artan hatayı düzeltmek için üretim sırasında bir tür kalibrasyon yapmak istersiniz, doğru mu?
Bunu yapmanın yolu, hesaplamanızda bir "ofset" görevi gören EEPROM'a (veya başka bir kalıcı belleğe) bir bayt koymaktır ve bunu yapmak mükemmel bir şeydir. Mesele şu ki, kalibrasyon aktivitesini yapmak için üretim sırasında size biraz zaman harcayacak. Kalibrasyonu yapmak için, R_x devresinin yerine geçmek için% 1 direncinize nominal olarak karşılaştırılabilir değerdeki% 0,1 dirençlerden birine (R_cal olarak adlandırın) ihtiyacınız olacaktır. V_sensed'ı ölçerek, R_fixed'in değerini daha kesin bir şekilde çıkarabilirsiniz (yani% 0,2 gibi).
R_cal ve R_fixed nominal olarak aynı değerse, V_sensed'ın Vcc / 2'ye eşit olmasını beklersiniz. Vcc / 2'den ölçülen sapmayı bir kalibrasyon ofset baytı olarak saklar ve her zaman ADC'niz tarafından algılanan şekilde V_sensed'a eklersiniz.
Gördüğüm gibi, tuzak, ölçümü yapmak ve daha sonra değeri depolamakla ilgili bir sürü çalışma olması. Bir tuzak olarak düşünülmesi gereken bir başka şey, sıcaklığın nominal değerinden sapma direncine neden olmada rol oynayabileceğidir, bu nedenle makul derecede iyi sıcaklık kontrollü bir kalibrasyon ortamı isteyeceksiniz. Son olarak, başka bir potansiyel hata hatası kaynağı olduğu için kalibre edilmiş ölçüm ekipmanı kullanmayı unutmayın. Düşünebileceğim son bir tuzak, kalibrasyon baytının ADC'nizin lsb birimlerinde saklanması gerektiğidir (bu nedenle 12 bitlik bir ADC'niz varsa, kalibrasyon ofset baytı birimleri "Vcc / 2 ^ 12 Volt" olmalıdır) .
Düzenle
Büyük bir voltajı aşağıdaki gibi daha düşük bir ölçeğe bölmek için iki sabit direnç kullanıyorsanız:
R1_fixed R2_fixed
V_in -----^v^v^----+----^v^v^------- Gnd
|
|
+--- V_sensed --- ADC input
Bölüm yeniden düzenlendi
Şimdi üretimdeki bir kalibrasyon adımı sırasında V_in'i uyarmak için hassas bir voltaj referansı (V_cal olarak adlandırın) kullanmak istiyorsunuz. Orada sahip olduğunuz teoride:
V_sensed = V_predicted = V_cal * R2_fixed / (R1_fixed + R2_fixed) = V_cal * slope_fixed
Ama gerçekte sahip olduğunuz şey:
V_sensed = V_measured = V_cal * R2_actual / (R1_actual + R2_actual) = V_cal * slope_actual
Gerçekte, gerçekte direnç değerlerinden tahmin edebileceğinizden farklı bir aktarım işlevi eğimine sahipsiniz. Öngörülen bölücü aktarım işlevinden sapma, giriş voltajına göre doğrusal olacaktır ve 0V girişinin size 0V çıkış vereceğini güvenli bir şekilde kabul edebilirsiniz, bu nedenle bir hassas voltaj referans ölçümü yapmak, bu doğrusal ölçek faktörünü karakterize etmek için size yeterli bilgi vermelidir. . Yani:
V_measured / V_predicted = slope_fixed / slope_actual
slope_actual = slope_fixed * V_measured / V_predicted
Ve ölçülen voltajın bir fonksiyonu olarak voltajı belirlemek için kalibre değeriniz olarak slope_actual kullanırsınız.
@markrages'in izniyle
Direnç değerlerine gerçek eğim hassasiyetini elde etmek için kısmi farklılaşma gerekir: