- added
git-svn-id: http://moon:8086/svn/projects/HendiControl@26 fda53097-d464-4ada-af97-ba876c37ca34
This commit is contained in:
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 178 KiB |
@@ -0,0 +1,87 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
import spidev
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
|
||||||
|
# Open SPI bus
|
||||||
|
spi = spidev.SpiDev()
|
||||||
|
spi.open(0,0)
|
||||||
|
spi.max_speed_hz=100000
|
||||||
|
spi.mode = 0b01
|
||||||
|
|
||||||
|
def read_reg(addr):
|
||||||
|
reg = spi.xfer([addr, 0xFF]);
|
||||||
|
|
||||||
|
return reg[1]
|
||||||
|
|
||||||
|
def write_reg(addr, data):
|
||||||
|
spi.xfer([addr+0x80, data]);
|
||||||
|
|
||||||
|
def read_digits():
|
||||||
|
msb = read_reg(0x01)
|
||||||
|
lsb = read_reg(0x02)
|
||||||
|
digits = float(256*msb + lsb)/2
|
||||||
|
|
||||||
|
return digits
|
||||||
|
|
||||||
|
def calc_R(Rref, digits):
|
||||||
|
k = digits / 8192 / 4
|
||||||
|
R = k*Rref
|
||||||
|
|
||||||
|
return R
|
||||||
|
|
||||||
|
def vanDusenLut (R0, Tmin, Tmax, dT):
|
||||||
|
a = +3.90830e-03;
|
||||||
|
b = -5.77500e-07;
|
||||||
|
c = -4.18301e-12;
|
||||||
|
|
||||||
|
Rv = []
|
||||||
|
Tv = []
|
||||||
|
T = Tmin
|
||||||
|
while T <= Tmax:
|
||||||
|
R = R0*(1 + a*T + b*T**2)
|
||||||
|
|
||||||
|
if T < 0.0:
|
||||||
|
R += R0*c*(T - 100)*T**3;
|
||||||
|
|
||||||
|
Rv.append(R)
|
||||||
|
Tv.append(T)
|
||||||
|
T += dT
|
||||||
|
|
||||||
|
return Rv, Tv
|
||||||
|
|
||||||
|
def vanDusen_temp(Rmeas):
|
||||||
|
RLut, TLut = vanDusenLut(100, -150, +500, 1.0)
|
||||||
|
|
||||||
|
# Find candidate
|
||||||
|
i = 0
|
||||||
|
for R in RLut:
|
||||||
|
if R > Rmeas:
|
||||||
|
break
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
# Linear interpolation
|
||||||
|
R0 = RLut[i-1]
|
||||||
|
R1 = RLut[i]
|
||||||
|
T0 = TLut[i-1]
|
||||||
|
T1 = TLut[i]
|
||||||
|
|
||||||
|
dR = R1 - R0
|
||||||
|
dT = T1 - T0
|
||||||
|
|
||||||
|
k = (Rmeas-R0)/dR
|
||||||
|
T = T0 + dT*k
|
||||||
|
|
||||||
|
return T
|
||||||
|
|
||||||
|
# Main
|
||||||
|
write_reg(0x00, 0xe3)
|
||||||
|
digits = read_digits()
|
||||||
|
R = calc_R(430, digits)
|
||||||
|
T = vanDusen_temp(R)
|
||||||
|
print("R={:.3f} Ohm, T={:.2f} degC".format(R, T))
|
||||||
|
|
||||||
|
for i in range (0, 8):
|
||||||
|
print("Reg[0x{}]: 0x{:02X}".format(i, read_reg(i)))
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,44 @@
|
|||||||
|
## Copyright (C) 2018 Jens Ahrensfeld
|
||||||
|
##
|
||||||
|
## This program is free software; you can redistribute it and/or modify it
|
||||||
|
## under the terms of the GNU General Public License as published by
|
||||||
|
## the Free Software Foundation; either version 3 of the License, or
|
||||||
|
## (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This program is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
## GNU General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU General Public License
|
||||||
|
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
## -*- texinfo -*-
|
||||||
|
## @deftypefn {Function File} {@var{retval} =} vanDusen_eval (@var{input1}, @var{input2})
|
||||||
|
##
|
||||||
|
## @seealso{}
|
||||||
|
## @end deftypefn
|
||||||
|
|
||||||
|
## Author: Jens Ahrensfeld <ahrensfeld@w2ess001vm>
|
||||||
|
## Created: 2018-05-28
|
||||||
|
|
||||||
|
function [R, T] = vanDusen (R0, Tmin, Tmax, dT)
|
||||||
|
|
||||||
|
a = +3.90830e-03;
|
||||||
|
b = -5.77500e-07;
|
||||||
|
c = -4.18301e-12;
|
||||||
|
|
||||||
|
T = Tmin:dT:Tmax;
|
||||||
|
|
||||||
|
Rp0 = R0*(1 + a*T + b*T.^2);
|
||||||
|
Rm0 = Rp0 + R0*c*(T - 100).*T.^3;
|
||||||
|
|
||||||
|
for i=1:length(T)
|
||||||
|
if (T(i) < 0)
|
||||||
|
R(i) = Rm0(i);
|
||||||
|
else
|
||||||
|
R(i) = Rp0(i);
|
||||||
|
endif
|
||||||
|
end
|
||||||
|
|
||||||
|
endfunction
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
## Copyright (C) 2018 Jens Ahrensfeld
|
||||||
|
##
|
||||||
|
## This program is free software; you can redistribute it and/or modify it
|
||||||
|
## under the terms of the GNU General Public License as published by
|
||||||
|
## the Free Software Foundation; either version 3 of the License, or
|
||||||
|
## (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This program is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
## GNU General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU General Public License
|
||||||
|
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
## -*- texinfo -*-
|
||||||
|
## @deftypefn {Function File} {@var{retval} =} vanDusen_eval (@var{input1}, @var{input2})
|
||||||
|
##
|
||||||
|
## @seealso{}
|
||||||
|
## @end deftypefn
|
||||||
|
|
||||||
|
## Author: Jens Ahrensfeld <ahrensfeld@w2ess001vm>
|
||||||
|
## Created: 2018-05-28
|
||||||
|
|
||||||
|
function vanDusen_eval (R0, Tmin, Tmax, dT)
|
||||||
|
|
||||||
|
[R, T] = vanDusen(R0, Tmin, Tmax, dT);
|
||||||
|
|
||||||
|
plot(T, R); grid; xlabel('T/°C'); ylabel('RTD/ohms'); legend('van Dusen');
|
||||||
|
%plot(T, R, T, R0*(1+a_IEC*T), 'r', T, R0*(1+a_SAMA*T), 'g'); grid; xlabel('T/°C'); ylabel('RTD/ohms'); legend('van Dusen','a_{IEC}','a_{SAMA}');
|
||||||
|
|
||||||
|
|
||||||
|
endfunction
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
## Copyright (C) 2018 Jens Ahrensfeld
|
||||||
|
##
|
||||||
|
## This program is free software; you can redistribute it and/or modify it
|
||||||
|
## under the terms of the GNU General Public License as published by
|
||||||
|
## the Free Software Foundation; either version 3 of the License, or
|
||||||
|
## (at your option) any later version.
|
||||||
|
##
|
||||||
|
## This program is distributed in the hope that it will be useful,
|
||||||
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
## GNU General Public License for more details.
|
||||||
|
##
|
||||||
|
## You should have received a copy of the GNU General Public License
|
||||||
|
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
## -*- texinfo -*-
|
||||||
|
## @deftypefn {Function File} {@var{retval} =} vanDusen_eval (@var{input1}, @var{input2})
|
||||||
|
##
|
||||||
|
## @seealso{}
|
||||||
|
## @end deftypefn
|
||||||
|
|
||||||
|
## Author: Jens Ahrensfeld <ahrensfeld@w2ess001vm>
|
||||||
|
## Created: 2018-05-28
|
||||||
|
|
||||||
|
function T = vanDusen_temp(R)
|
||||||
|
|
||||||
|
[Rlut, Tlut] = vanDusen(100, -200, 700, 1.0);
|
||||||
|
|
||||||
|
for i=1:length(Rlut)
|
||||||
|
if Rlut(i) > R
|
||||||
|
break;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
% Linear interpolation
|
||||||
|
R0 = Rlut(i-1);
|
||||||
|
R1 = Rlut(i);
|
||||||
|
T0 = Tlut(i-1);
|
||||||
|
T1 = Tlut(i);
|
||||||
|
|
||||||
|
dR = R1 - R0;
|
||||||
|
dT = T1 - T0;
|
||||||
|
|
||||||
|
k = (R-R0)/dR;
|
||||||
|
T = T0 + dT*k;
|
||||||
|
|
||||||
|
endfunction
|
||||||
Reference in New Issue
Block a user