Więc masz:
R_x R_fixed
Vcc -----^v^v^----+----^v^v^------- Gnd
|
|
+--- V_sensed --- ADC input
Rx to jakiś nieznany opór (prawdopodobnie jakiś czujnik). I używasz teraz R_fixed na 0,1%, aby skutecznie obliczyć R_x, ale chcesz użyć tańszego rezystora stałego o niższej tolerancji, być może 1%. Czy robiąc to, chcesz wykonać jakąś kalibrację podczas produkcji, aby skorygować zwiększony błąd, prawda?
Skończyło się to umieszczeniem bajtu w pamięci EEPROM (lub innej nieulotnej pamięci), która działa jak „przesunięcie” w obliczeniach i jest to całkowicie wykonalne. Chodzi o to, że wykonanie kalibracji będzie kosztowało trochę czasu podczas produkcji. Aby wykonać kalibrację, potrzebujesz jednego z tych rezystorów 0,1% (nazwij to R_cal) o nominalnie porównywalnej wartości do 1% rezystora, aby zastąpić R_x w obwodzie. Mierząc V_sensed, możesz dokładniej wnioskować o wartości R_fixed (tj. Do około 0,2%).
Jeśli R_cal i R_fixed mają nominalnie tę samą wartość, można oczekiwać, że V_sensed będzie równy Vcc / 2. Zachowałbyś zmierzone odchylenie od Vcc / 2 jako bajt przesunięcia kalibracji i zawsze dodawałeś go do V_sensed, jak postrzegane przez ADC.
Pułapka, jak widzę, polega na tym, że jest mnóstwo pracy związanej z pomiarem, a następnie z przechowywaniem wartości. Inną rzeczą, którą należy rozważyć jako pułapkę, jest to, że temperatura może odgrywać rolę w powodowaniu odchylenia rezystancji od jej wartości nominalnej, więc będziesz potrzebować rozsądnie dobrze kontrolowanego środowiska kalibracyjnego z kontrolowaną temperaturą. Wreszcie nie zapomnij użyć skalibrowanego sprzętu pomiarowego, ponieważ jest to kolejne potencjalne źródło błędu addytywnego. Ostatnią pułapką, o której mogę myśleć, jest to, że bajt kalibracji powinien być przechowywany w jednostkach lsb twojego ADC (więc jeśli masz 12-bitowy ADC, jednostki bajtu przesunięcia kalibracji powinny mieć wartość „Vcc / 2 ^ 12 woltów”) .
Edytować
Jeśli używasz dwóch stałych rezystorów, aby podzielić duże napięcie na niższą skalę w następujący sposób:
R1_fixed R2_fixed
V_in -----^v^v^----+----^v^v^------- Gnd
|
|
+--- V_sensed --- ADC input
Ponownie edytowana sekcja
Więc teraz chcesz użyć precyzyjnego napięcia odniesienia (nazwij to V_cal), aby stymulować V_in podczas etapu kalibracji w produkcji. Teoretycznie masz to:
V_sensed = V_predicted = V_cal * R2_fixed / (R1_fixed + R2_fixed) = V_cal * slope_fixed
Ale w rzeczywistości masz:
V_sensed = V_measured = V_cal * R2_actual / (R1_actual + R2_actual) = V_cal * slope_actual
W rzeczywistości masz inne nachylenie funkcji przenoszenia w rzeczywistości, niż można by się spodziewać na podstawie wartości rezystora. Odchylenie od przewidywanej funkcji przenoszenia dzielnika będzie liniowe w stosunku do napięcia wejściowego i można bezpiecznie założyć, że 0 V da Ci 0 V poza, więc wykonanie jednego precyzyjnego pomiaru napięcia odniesienia powinno dostarczyć wystarczających informacji do scharakteryzowania tego współczynnika skali liniowej . Mianowicie:
V_measured / V_predicted = slope_fixed / slope_actual
slope_actual = slope_fixed * V_measured / V_predicted
I użyłbyś slope_actual jako swojej skalibrowanej wartości do określenia napięcia jako funkcji mierzonego napięcia.
poniżej dzięki uprzejmości @markrages
Aby uzyskać rzeczywistą czułość nachylenia na wartości rezystora, konieczne jest częściowe zróżnicowanie: