kopia lustrzana https://github.com/botheredbybees/kilnController
Update oven.py
Added proportional output funtionality by turning the oven (SSR) on for a portion of the time_step determined by the pid loop output. So, if time_step = 1, and the pid loop is calling for .3 heat, the SSR will be on for .3 seconds, and off for .7 seconds. I did this by adding an additional sleep. Previously, the SSR would be on whenever pid > 0.pull/1/head
rodzic
0f598a2469
commit
35eb7d3346
15
lib/oven.py
15
lib/oven.py
|
@ -101,6 +101,7 @@ class Oven (threading.Thread):
|
|||
def run(self):
|
||||
temperature_count = 0
|
||||
last_temp = 0
|
||||
pid = 0
|
||||
while True:
|
||||
self.door = self.get_door_state()
|
||||
|
||||
|
@ -133,7 +134,7 @@ class Oven (threading.Thread):
|
|||
else:
|
||||
temperature_count = 0
|
||||
|
||||
self.set_heat(pid > 0)
|
||||
self.set_heat(pid)
|
||||
|
||||
#if self.profile.is_rising(self.runtime):
|
||||
# self.set_cool(False)
|
||||
|
@ -152,17 +153,23 @@ class Oven (threading.Thread):
|
|||
|
||||
#Capture the last temperature value
|
||||
last_temp = self.temp_sensor.temperature
|
||||
|
||||
time.sleep(self.time_step)
|
||||
if pid > 0:
|
||||
time.sleep(self.time_step * (1 - pid))
|
||||
else:
|
||||
time.sleep(self.time_step)
|
||||
|
||||
def set_heat(self, value):
|
||||
if value:
|
||||
if value > 0:
|
||||
self.heat = 1.0
|
||||
if gpio_available:
|
||||
if config.heater_invert:
|
||||
GPIO.output(config.gpio_heat, GPIO.LOW)
|
||||
time.sleep(self.time_step * value)
|
||||
GPIO.output(config.gpio_heat, GPIO.HIGH)
|
||||
else:
|
||||
GPIO.output(config.gpio_heat, GPIO.HIGH)
|
||||
time.sleep(self.time_step * value)
|
||||
GPIO.output(config.gpio_heat, GPIO.LOW)
|
||||
else:
|
||||
self.heat = 0.0
|
||||
if gpio_available:
|
||||
|
|
Ładowanie…
Reference in New Issue