kopia lustrzana https://github.com/jamesgao/kiln_controller
Update from actual testing
rodzic
8dd97524e9
commit
3cb20a019b
|
@ -1,6 +1,7 @@
|
|||
import manager
|
||||
import thermo
|
||||
import sys
|
||||
import time
|
||||
|
||||
if __name__ == "__main__":
|
||||
start_time = None
|
||||
|
@ -9,6 +10,8 @@ if __name__ == "__main__":
|
|||
schedule = [[2*60*60, 176], [4*60*60, 620], [6*60*60, 1013], [6*60*60+20*60, 1013]]
|
||||
mon = thermo.Monitor()
|
||||
mon.start()
|
||||
time.sleep(1)
|
||||
#schedule = [[20, 176], [40, 620], [60, 1013]]
|
||||
kiln = manager.KilnController(schedule, mon, start_time=start_time, simulate=False)
|
||||
kiln.run()
|
||||
kiln.run()
|
||||
mon.stop()
|
||||
|
|
|
@ -17,7 +17,7 @@ class KilnController(object):
|
|||
if simulate:
|
||||
self.schedule.insert(0, [0, 15])
|
||||
else:
|
||||
self.schedule.insert(0, [0, self.monitor.temperature])
|
||||
self.schedule.insert(0, [0, 15])
|
||||
|
||||
@property
|
||||
def elapsed(self):
|
||||
|
@ -34,13 +34,12 @@ class KilnController(object):
|
|||
#find epoch
|
||||
for i in range(len(self.schedule)-1):
|
||||
if self.schedule[i][0] < ts < self.schedule[i+1][0]:
|
||||
print "In epoch %d"%i
|
||||
time0, temp0 = self.schedule[i]
|
||||
time1, temp1 = self.schedule[i+1]
|
||||
frac = (ts - time0) / (time1 - time0)
|
||||
setpoint = frac * (temp1 - temp0) + temp0
|
||||
self.pid.setPoint(setpoint)
|
||||
|
||||
print "In epoch %d, elapsed time %f, temperature %f"%(i, ts, setpoint)
|
||||
if self.simulate:
|
||||
temp = setpoint + random.gauss(-20, 15)
|
||||
else:
|
||||
|
@ -49,7 +48,7 @@ class KilnController(object):
|
|||
pid_out = self.pid.update(temp)
|
||||
if pid_out < 0: pid_out = 0
|
||||
if pid_out > 1: pid_out = 1
|
||||
self.regulator.set(pid_out)
|
||||
self.regulator.set(pid_out, block=True)
|
||||
|
||||
time.sleep(self.interval - (time.time()-now))
|
||||
except:
|
||||
|
|
|
@ -16,7 +16,7 @@ class Stepper(threading.Thread):
|
|||
[0,0,1,1],
|
||||
[1,0,0,1]]
|
||||
|
||||
def __init__(self, pin1=5, pin2=6, pin3=13, pin4=19, timeout=5):
|
||||
def __init__(self, pin1=5, pin2=6, pin3=13, pin4=19, timeout=1):
|
||||
self.queue = Queue.Queue()
|
||||
self.finished = threading.Event()
|
||||
|
||||
|
@ -137,7 +137,7 @@ class StepperSim(object):
|
|||
|
||||
|
||||
class Regulator(object):
|
||||
def __init__(self, maxsteps=4500, minsteps=2400, speed=150, ignite_pin=None, simulate=False):
|
||||
def __init__(self, maxsteps=4500, minsteps=2480, speed=150, ignite_pin=None, simulate=False):
|
||||
"""Set up a stepper-controlled regulator. Implement some safety measures
|
||||
to make sure everything gets shut off at the end
|
||||
|
||||
|
@ -180,7 +180,7 @@ class Regulator(object):
|
|||
time.sleep(delay)
|
||||
if self.ignite_pin is not None:
|
||||
GPIO.output(self.ignite_pin, False)
|
||||
self.stepper.step(self.min - start, self.speed)
|
||||
self.stepper.step(self.min - start, self.speed, block=True)
|
||||
self.current = self.min
|
||||
print "Done!"
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue