- improved controller
- plant: added duty cycle to heater control git-svn-id: http://moon:8086/svn/projects/HendiControl@271 fda53097-d464-4ada-af97-ba876c37ca34
This commit is contained in:
+23
-11
@@ -11,6 +11,9 @@ class Plant(APlant):
|
||||
self.tempsensor = Max31865()
|
||||
self.P = 0
|
||||
self.isOn = False
|
||||
self.cycleTime = 10
|
||||
self.dutyCycle = 1
|
||||
self.cycleCounter = 0
|
||||
|
||||
def activate(self, enable=True):
|
||||
if enable == True:
|
||||
@@ -20,20 +23,29 @@ class Plant(APlant):
|
||||
self.heater.setSwitch(enable)
|
||||
self.heater.remoteEnable(enable)
|
||||
|
||||
def process(self):
|
||||
pass
|
||||
def process(self, dt=1):
|
||||
isOn = self.isOn
|
||||
self.cycleCounter += dt
|
||||
if self.cycleCounter >= self.cycleTime:
|
||||
self.cycleCounter -= self.cycleTime
|
||||
isOn = 0
|
||||
|
||||
if self.cycleCounter >= (self.cycleTime * (1-self.dutyCycle)):
|
||||
if not isOn:
|
||||
isOn = 1
|
||||
|
||||
if self.isOn != isOn:
|
||||
if isOn:
|
||||
self.heater.setSwitch(True)
|
||||
else:
|
||||
self.heater.setSwitch(False)
|
||||
|
||||
self.isOn = isOn
|
||||
|
||||
def setPower(self, power_w):
|
||||
self.P = power_w
|
||||
self.heater.setPowerWatts(power_w)
|
||||
if power_w < 250:
|
||||
if self.isOn:
|
||||
self.heater.setSwitch(False)
|
||||
self.isOn = False
|
||||
elif power_w >= 500:
|
||||
if not self.isOn:
|
||||
self.heater.setSwitch(True)
|
||||
self.isOn = True
|
||||
self.heater.setPowerWatts(max(500, power_w))
|
||||
self.dutyCycle = min(1, power_w / 500)
|
||||
|
||||
def getPower(self):
|
||||
return self.heater.getPowerWatts()
|
||||
|
||||
Reference in New Issue
Block a user