Paste:ar hela mitt octave-script med data i för den som vill testa:
Kod:
Ri_dataset = [1200 57,
1100 70,
1050 80,
1000 96,
950 120,
900 150,
840 200,
800 250,
780 300,
750 350,
730 400,
720 450,
710 500,
690 600,
670 700,
650 800,
640 900,
632 1000];
Ri = Ri_dataset(Begin_range:end,2);
Ti = Ri_dataset(Begin_range:end,1);
Ri_intp = 40:1:650;
Ti_intp = newtonInterpolation(Ri, Ti, Ri_intp);
#plot(Ri_intp, Ti_intp);
plot(Ri_intp, Ti_intp, 'r-', Ri, Ti, 'g-*');
axis([0 max(Ri_intp) 500 1300]);
function y = newtonInterpolation(X,Y,x)
% interpolate values y at points x using data vectors X and Y
n = length(X);
% build coefficient table
D = diag(Y);
for m = 1:n
for i = 1:n-m
j = i+m;
D(i,j) = (D(i+1,j)-D(i,j-1))/(X(j)-X(i));
end
end
% return final value
y = Y(1)*ones(size(x));
for k = 2:n
s = D(1,k);
for i = 1:k-1
s = s.*(x-X(i)*ones(size(x)));
end
y = y+s;
end
end
Det jag försöker uppnå är att få en vettig mappning av temperatur kontra resistans över en bit yttriumdopad zirconiumoxid med platinaelektroder runt (bränslecell eller lambdasond till bil, samma teknik). Formen på kurvan är viktig för att kunna använda resistansvärdet för att temperaturreglera till en exakt temperatur, dels måste jag veta hurpass långt ifrån önskad temp jag är för att kunna kompensera min process i de lägen reglerloopen inte hinner med.