Skip to content
Snippets Groups Projects
Commit a71e35d3 authored by wactbprot's avatar wactbprot
Browse files

se2 pt100 calib 2017

parent cf51a652
No related branches found
No related tags found
No related merge requests found
File added
a <- abbrevList(doc)
doc <- refreshResult(doc)
t.ms.b <- getConstVal(a$cmv$Time, "amt")
t.h <- (t.ms.b - t.ms.b[1])/1000/3600
t.ptb <- getConstVal(a$cmv$Temperature, "mkt50")
par(mfrow=c(1,1))
ch <- c(101:110, 201:204)
ch.N <- length(ch)
corr.sd <- rep(NA, ch.N)
corr.mean <- rep(NA, ch.N)
corr.max <- rep(NA, ch.N)
corr.min <- rep(NA, ch.N)
ch.name <- rep(NA,ch.N)
ch.axes <- rep(NA,ch.N)
for( i in 1:ch.N){
ch.name[i] <- paste0("keithleych",ch[i])
ch.axes[i] <- paste0("ch_",ch[i])
T.CH <- getSubList(a$cmv$Temperature, ch.name[i])
t.ch <- getConstVal(NA, NA, T.CH)
corr <- t.ptb - t.ch
corr.sd[i] <- sd(corr)
corr.mean[i] <- mean(corr)
corr.max[i] <- max(corr)
corr.min[i] <- min(corr)
doc$Calibration$Result$Values$Temperature <-
setCcl(doc$Calibration$Result$Values$Temperature,
paste0("corr_", ch.name[i]),
"K",
corr.mean[i])
if(i == 1){
plot(t.h
, corr
, ylim=c(-0.25,0.1)
, main=cdb$id
, xlab = "t in h"
, ylab="k"
, pch=i
)
}else{
points(t.h, corr, col = i, pch=i)
}
}
grid()
legend(15,0.05, ch.axes, pch=1:ch.N, col=1:ch.N, bg="white")
File added
File added
k.2011 <- c(
-0.088,
-0.079,
-0.094,
-0.120,
-0.189,
-0.126,
-0.146,
-0.018,
-0.136,
-0.117,
-0.139,
-0.149,
-0.126,
-0.277)
\ No newline at end of file
k.2013 <- c(
-0.083,
-0.075,
-0.089,
-0.114,
-0.185,
-0.126,
-0.139,
-0.009,
-0.129,
-0.113,
-0.127,
-0.142,
-0.122,
-0.268)
\ No newline at end of file
k.2015 <- c(
-0.079,
-0.068,
-0.083,
0.04,
-0.147,
-0.124,
-0.133,
-0.002,
-0.121,
-0.107,
-0.122,
-0.181,
-0.118,
-0.225)
\ No newline at end of file
\documentclass[titlepage=true,twoside]{vl-report}
\usepackage{amssymb}
\usepackage{hyperref}
\usepackage{longtable}
\usepackage{graphicx}
\usepackage{fancyvrb}
\usepackage{verbatimbox}
\usepackage{url}
\usepackage{ltablex}
\usepackage{amsbsy}
\usepackage[multiple]{footmisc}
\usepackage{listings}
\usepackage{color}
\definecolor{middlegray}{rgb}{0.5,0.5,0.5}
\definecolor{lightgray}{rgb}{0.8,0.8,0.8}
\definecolor{orange}{rgb}{0.8,0.3,0.3}
\definecolor{yac}{rgb}{0.6,0.6,0.1}
\lstset{
basicstyle=\scriptsize\ttfamily,
keywordstyle=\bfseries\ttfamily\color{orange},
stringstyle=\color{green}\ttfamily,
commentstyle=\color{middlegray}\ttfamily,
emph={square},
emphstyle=\color{blue}\texttt,
emph={[2]root,base},
emphstyle={[2]\color{yac}\texttt},
showstringspaces=false,
flexiblecolumns=false,
tabsize=2,
numbers=left,
numberstyle=\tiny,
numberblanklines=false,
stepnumber=1,
numbersep=10pt,
xleftmargin=15pt
}
\newcommand{\rinline}[1]{SOMETHING WRONG WITH knitr}
% Für serifenlose Schrift:
\renewcommand{\familydefault}{\sfdefault}
\usepackage[cmbright,cmbrightmath]{tpslifonts}
%%%%%%%%%%%%%%%%%%%%%%%%%%
\MakeShortVerb{\|} %ermöglicht:
% ------------------------------------------------------------------
\usepackage{lmodern}
\IfFileExists{luximono.sty}%
{%
\usepackage[scaled]{luximono}%
}
{%
\IfFileExists{beramono.sty}%
{%
\usepackage[scaled]{beramono}%
}{}
}
\usepackage{listings,xcolor}
\lstset{%
basicstyle=\ttfamily\tiny,
showspaces=false,
showstringspaces=false,
breaklines=true,
backgroundcolor=\color{white},
breakautoindent=true,
captionpos=t,
%numbers=left,
numberstyle=\tiny,
numbersep=0.8em,
xleftmargin=1em,
columns=flexible,
}
\definecolor{lightgray}{rgb}{.9,.9,.9}
\definecolor{darkgray}{rgb}{.4,.4,.4}
\definecolor{purple}{rgb}{0.65, 0.12, 0.82}
\lstdefinelanguage{JavaScript}{
keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break},
keywordstyle=\color{blue}\bfseries,
ndkeywords={class, export, boolean, throw, implements, import, this},
ndkeywordstyle=\color{darkblue}\bfseries,
identifierstyle=\color{darkblue},
sensitive=false,
comment=[l]{//},
morecomment=[s]{/*}{*/},
commentstyle=\color{purple}\ttfamily,
stringstyle=\color{black}\ttfamily,
morestring=[b]',
morestring=[b]"
}
% \usepackage[font=small,labelfont=bf,justification=raggedright,%
% singlelinecheck=false]{caption}
% ------------------------------------------------------------------
\markright{QS 3/17}
\title{QS 3/17}
\author{Kalibrierung der Temperatursensoren von SE2 \\
\normalsize Physikalisch-Technische Bundesanstalt\\
\normalsize Labor für Vakuummetrologie -- AG 7.54}
\date{\normalsize 06.03.2017}
\begin{document}
\maketitle
\begin{table*}[h]
\begin{tabular}{@{}ll@{}}
\centering
Gegenstand: & 14 Pt100 Sensoren\\
& Temperaturauslesegerät \\
&\\
Hersteller: &LKM/ Keithley\\
&\\
Typ: & Pt100/DMM 2700\\
&\\
Seriennummer:& 1040274\\
&\\
Prüfmittelnummer: &7.5-4015\\
&\\
Datum der Kalibrierungen: &20.02.2017\\
\end{tabular}
\label{sensor}
\end{table*}
QS\,3/17 beschreibt die Rekalibrierung der Temperatursensoren des
Primärnormals SE2 nach Ablauf der regulären Kalibrierfrist.
Als Prüfnormal wurde das 2016 beschaffte MKT50 (PN 7.5-4039, KS: 74123PTB16)
benutzt. Es wurde 5/2016 mit Hilfe der Fixpunkte von H$_2$O und GaAs kalibriert.
\section*{Ablauf}
Die Messreihen wurden im klimatisierten Raum FOE024 aufgenommen.
Zusammen mit dem Messfühler des Temperaturnormals waren die zu kalibrierenden
Temperaturfühler in einen Cu-Zylinder (s. Abbildung \ref{cuz}) eingelassen und von
einem Kunststoffgehäuse umgeben.
\begin{figure}[ht]
\centering
\includegraphics[width=0.99\textwidth]{000_Pruefzylinder_Cu.pdf}
\caption{Cu-Zylinder}
\label{cuz}
\end{figure}
Der Kanal 1 des MKT50 wurde mit Hilfe, eines auf
|ssmp|\footnote{\url{a75436.berlin.ptb.de/vaclab/ssmp}}
basierenden Messprogramms ausgelesen. Die Erfassung der Anzeige der
Keithley Kanäle erfolgte ebenfalls mit diesem System.
Die Rohdaten sind über die Labordatenbank im Dokument |cal-2015-mkt50-ik-4015_0001|
unter |Calibration.Measurement| zugänglich.
Die Anzeigen der Kanäle |101|, |102|,$\dots$ |110|,|201|,$\dots$ |204|
(nachfolgend abgekürzt mit
$T_{1,2\dots 10}$ bzw. $T_i$) tragen dort das Prefix |keithley_ch|. Ein
Messpunkt im Kalibrierdokument stellt den Mittelwert aus 5
Einzelmessungen und der daraus gebildeten Standardabweichung der Einzelwerte
dar. |mkt50| gibt den vom Temperaturnormal angezeigten Wert (referenziert als
$T_{PTB}$) wieder.
\section*{Auswertung}
Zur Auswertung bzw. zur Ermittlung der Sensorkorrekturen $k_i$ wird der
arithmetische Mittelwert der Differenzen $T_{PTB} - T_{i}$
gebildet. $k_i$ muss zur Korrektur eines Anzeigewertes addiert
werden:
\begin{equation}
\label{eq:k}
T_{korr,i} = T_i + k_i \rightarrow T_i +\frac{1}{N}\sum_{j=1}^N( T_{PTB} - T_{i})_j \rightarrow T_{PTB}
\end{equation}
In nachfolgender Rechnung wird die Messreihe vom 20.02.2017 ausgewertet und
die Ergebnisse in den |Calibration.Result|-Abschnitt des Dokuments
geschrieben.
%% begin.rcode
%% library(R4CouchDB)
%% library(vacLabTools)
%% cdb <- cdbIni()
%% cdb$DBName <- "vl_db"
%% cdb$id <- "cal-2017-mkt50-ik-4015_0001"
%% doc <- cdbGetDoc(cdb)$res
%% source("ausw.r")
%% if(!FALSE){
%% cdb$dataList <- doc
%% cdbUpdateDoc(cdb)$res
%% }
%% end.rcode
\section*{Unsicherheit der Kalibrierung}
Folgende Unsicherheiten sind beim vorliegenden Kalibrierverfahren zu
berücksichtigen:
%% begin.rcode
% # Unsicherheit des Temperaturnormals (KS-Angabe ist 5mK)
% # hizu kommt Langzeitstabilität Abschätzung: 2.5mK/a
% u1 <- 0.0025 + 0.0025# K
% # Digitalisierung
% u2 <- 2.9e-5 # K
% # Unsicherheit durch Temperaturgradienten über dem Cu-Zylinder
% # abgeschätzt aus dem Mittelwert der Variation der
% u3 <- mean(corr.max - corr.min) # K
% u3
% # Temperaturabhängigkeit der Korrektur (vernachlässigbar)
% # bzw in u3 enthalten
% u4 <- 0 # K
% # Langzeitstabilität auf
% # Grundlage von vergangenen Messungen
% k.2017 <- corr.mean
% source("k.2011.r")
% source("k.2013.r")
% source("k.2015.r")
% plot( k.2017, col=1, pch=1, ylim=c(-0.3, 0.2))
% points( k.2011, col=2, pch=2)
% points( k.2013, col=3, pch=3)
% points( k.2015, col=4, pch=4)
% legend(2,-0.1,c("2017","2011","2013","2015"), col=1:4, pch=1:4)
% text(1:ch.N, k.2017 + 0.1, ch.axes, srt=45)
% grid()
% # Abschätzung: mittlere Standardabw. der Diff. der vergang. Jahre
% m.sd <- apply(cbind(k.2011,k.2013,k.2015, k.2017),1,sd)
% u5 <- mean(m.sd)
% # abline(h=c(-u5/2,u5/2), lty=2)
% # experimentelle Streuung wird abgesch. zu
% u6 <- 0.02 # K
% u6
%% end.rcode
Die Gesamtunsicherheit der Kalibrierung der Sensoren ergibt sich durch
quadratische Addition der Einzelbeiträge:
\begin{equation}
\label{eq:u}
u_c = \sqrt{u_1^2+u_2^2+u_3^2+u_4^2+u_5^2 +u_6^2}
\end{equation}
Man erhält eine erweiterte Gesamtunsicherheit von:
%% begin.rcode
% k <- 2
% round(k * sqrt(u1^2 + u2^2 + u3^2 +u4^2 +u5^2 +u6^2), digit=2)
%% end.rcode
\section*{Einarbeitung}
Die Korrekturfaktoren $k_i$ der einzelnen Sensoren sind im |Results|-Abschnittes des genannten
Kalibrierdokuments gespeichert. Damit diese im SE2-Messprogramm
wirksam werden, muss entsprechende Konfigurationsdatei angepasst werden.
Dies wurde am/von\\
\vspace{1cm}
Datum:|____________________|\\
\vspace{2cm}
Bearbeiter:|____________________|\\
erledigt.
\section*{Rekalibrierung}
Das Messsystem sollte nach 24 Monaten rekalibriert werden.
\vspace{1.5cm}
\emph{Thomas Bock\\
Labor für Vakuummetrologie\\
AG: 7.54}
\vspace{1.5cm}
\end{document}
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment