more robust calculation for heater resistivity
and check is is in the allowed range 10 .. 100 Ohm Change-Id: If485480c0974d953165c37f7354dc2818f68b30b
This commit is contained in:
parent
416cdd5a88
commit
9e6699dd1e
@ -294,6 +294,7 @@ class HeaterOutput(HasInput, Writable):
|
||||
volt = 0.0 # target voltage
|
||||
_last_target = None
|
||||
_volt_target = None
|
||||
_resistivity = 10
|
||||
|
||||
def read_limit(self):
|
||||
return self.query('DEV::HTR:VLIM') ** 2 / self.resistivity
|
||||
@ -329,10 +330,15 @@ class HeaterOutput(HasInput, Writable):
|
||||
res = volt / current
|
||||
tol = res * max(max(0.0003, abs(volt - self._volt_target)) / volt, 0.0001 / current, 0.0001)
|
||||
if abs(res - self.resistivity) > tol + 0.07 and self._last_target:
|
||||
self.write_resistivity(round(res, 1))
|
||||
if self.controlled_by == 0:
|
||||
self._volt_target = math.sqrt(self._last_target * self.resistivity)
|
||||
self.change('DEV::HTR:SIG:VOLT', self._volt_target, tolerance=2e-4)
|
||||
res = round(res, 1)
|
||||
if self._resistivity != res and 10 <= res <= 100:
|
||||
# we want twice the same value before changing
|
||||
self._resistivity = res
|
||||
else:
|
||||
self.write_resistivity(res)
|
||||
if self.controlled_by == 0:
|
||||
self._volt_target = math.sqrt(self._last_target * self.resistivity)
|
||||
self.change('DEV::HTR:SIG:VOLT', self._volt_target, tolerance=2e-4)
|
||||
return volt * current
|
||||
|
||||
def read_target(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user