Exemplo n.º 1
0
 def __init__(self, config):
     #	get configs
     self.control_mode = config.get('control_mode')
     self.min_temp = config.getfloat('min_temp', minval=10)
     self.max_temp = config.getfloat('max_temp', above=self.min_temp)
     self.max_delta = config.getfloat('max_delta', 2.0, above=0.)
     self.danger_temp = config.getfloat('danger_temp',
                                        self.max_temp + 5,
                                        above=self.max_temp)
     #	setup sensor
     self.printer = config.get_printer()
     self.reactor = self.printer.get_reactor()
     self.gcode = self.printer.lookup_object('gcode')
     self.sensor = self.printer.lookup_object('heater').setup_sensor(config)
     self.sensor.setup_minmax(self.min_temp, self.max_temp)
     #	cooling or heating
     if self.control_mode == 'cooling':
         self.fan = fan.PrinterFan(config, default_shutdown_speed=0.)
         self.sensor.setup_callback(self.cooling_callback)
     elif self.control_mode == 'heating':
         #	implement later
         #	must fit heater verify workflow
         pass
     else:
         logging.error("chamber: unsupported control_mode" +
                       self.control_mode)
         raise
     #	set dict
     self.temps = {"target": 0, "actual": 0}
     self.gcode.register_command(
         'M141', self.cmd_M141, desc="M141 S30 - Set chamber target to 30C")
     #	remove me
     dbg = threading.Thread(target=self.debug_console, args=())
Exemplo n.º 2
0
 def load_config(self):
     self.fileconfig = ConfigParser.RawConfigParser()
     res = self.fileconfig.read(self.conffile)
     if not res:
         raise ConfigParser.Error("Unable to open config file %s" %
                                  (self.conffile, ))
     if self.bglogger is not None:
         ConfigLogger(self.fileconfig, self.bglogger)
     self.mcu = mcu.MCU(self, ConfigWrapper(self, 'mcu'))
     if self.debugoutput is not None:
         self.mcu.connect_file(self.debugoutput, self.dictionary)
     if self.fileconfig.has_section('extruder'):
         self.objects['extruder'] = extruder.PrinterExtruder(
             self, ConfigWrapper(self, 'extruder'))
     if self.fileconfig.has_section('fan'):
         self.objects['fan'] = fan.PrinterFan(self,
                                              ConfigWrapper(self, 'fan'))
     if self.fileconfig.has_section('heater_bed'):
         self.objects['heater_bed'] = heater.PrinterHeater(
             self, ConfigWrapper(self, 'heater_bed'))
     self.objects['toolhead'] = toolhead.ToolHead(
         self, ConfigWrapper(self, 'printer'))
     # Validate that there are no undefined parameters in the config file
     valid_sections = dict([(s, 1) for s, o in self.all_config_options])
     for section in self.fileconfig.sections():
         section = section.lower()
         if section not in valid_sections:
             raise ConfigParser.Error("Unknown config file section '%s'" %
                                      (section, ))
         for option in self.fileconfig.options(section):
             option = option.lower()
             if (section, option) not in self.all_config_options:
                 raise ConfigParser.Error(
                     "Unknown option '%s' in section '%s'" %
                     (option, section))
Exemplo n.º 3
0
 def __init__(self, config):
     self.printer = config.get_printer()
     self.heater_name = config.get("heater")
     self.heater_temp = config.getfloat("heater_temp")
     self.fan = fan.PrinterFan(config, default_shutdown_speed=1.)
     self.mcu = self.fan.mcu_fan.get_mcu()
     self.fan_speed = config.getfloat("fan_speed", 1., minval=0., maxval=1.)
Exemplo n.º 4
0
 def __init__(self, config):
     self.name = config.get_name().split()[1]
     self.printer = config.get_printer()
     self.fan = fan.PrinterFan(config, default_shutdown_speed=1.)
     self.min_temp = config.getfloat('min_temp', minval=KELVIN_TO_CELCIUS)
     self.max_temp = config.getfloat('max_temp', above=self.min_temp)
     self.sensor = self.printer.lookup_object('heater').setup_sensor(config)
     self.sensor.setup_minmax(self.min_temp, self.max_temp)
     self.sensor.setup_callback(self.temperature_callback)
     self.printer.lookup_object('heater').register_sensor(config, self)
     self.speed_delay = self.sensor.get_report_time_delta()
     self.max_speed = config.getfloat('max_speed', 1., above=0., maxval=1.)
     self.min_speed = config.getfloat('min_speed', 0.3, above=0., maxval=1.)
     self.last_temp = 0.
     self.last_temp_time = 0.
     self.target_temp = config.getfloat(
         'target_temp',
         40. if self.max_temp > 40. else self.max_temp,
         minval=self.min_temp,
         maxval=self.max_temp)
     algos = {'watermark': ControlBangBang, 'pid': ControlPID}
     algo = config.getchoice('control', algos)
     self.control = algo(self, config)
     self.next_speed_time = 0.
     self.last_speed_value = 0.
Exemplo n.º 5
0
 def __init__(self, config):
     self.printer = config.get_printer()
     self.heater_name = config.get("heater", "extruder0")
     self.heater_temp = config.getfloat("heater_temp", 50.0)
     self.fan = fan.PrinterFan(config)
     self.mcu = self.fan.mcu_fan.get_mcu()
     self.fan_speed = config.getfloat("fan_speed", 1., minval=0., maxval=1.)
     self.fan.set_shutdown_speed(1.)
Exemplo n.º 6
0
 def __init__(self, config):
     self.printer = config.get_printer()
     self.printer.register_event_handler("klippy:ready", self.handle_ready)
     self.heater_name = config.get("heater", "extruder")
     self.heater_temp = config.getfloat("heater_temp", 50.0)
     self.heaters = []
     self.fan = fan.PrinterFan(config, default_shutdown_speed=1.)
     self.mcu = self.fan.mcu_fan.get_mcu()
     self.fan_speed = config.getfloat("fan_speed", 1., minval=0., maxval=1.)
Exemplo n.º 7
0
 def __init__(self, config):
     self.printer = config.get_printer()
     self.heater_name = config.get("heater", "extruder0")
     self.heater_temp = config.getfloat("heater_temp", 50.0)
     self.fan = fan.PrinterFan(config)
     self.mcu = self.fan.mcu_fan.get_mcu()
     max_power = self.fan.max_power
     self.fan_speed = config.getfloat("fan_speed",
                                      max_power,
                                      minval=0.,
                                      maxval=max_power)
     self.fan.mcu_fan.setup_start_value(0., max_power)
Exemplo n.º 8
0
    def __init__(self, printer, config):
        self.activation_temp = float(config.get('activation_temp'))

        target_extruder = config.get('target_extruder')
        if not target_extruder or target_extruder == 'extruder':
            target_extruder = 'extruder0'

        self.fan = fan.PrinterFan(printer, config)
        self.heater = printer.objects.get('extruder0').get_heater()
        self.toolhead = printer.objects.get('toolhead')

        printer.reactor.register_timer(self.check_temp, printer.reactor.NOW)
Exemplo n.º 9
0
 def __init__(self, config):
     self.printer = config.get_printer()
     self.printer.register_event_handler("klippy:ready", self.handle_ready)
     self.steppers = []
     self.fan = fan.PrinterFan(config)
     self.mcu = self.fan.mcu_fan.get_mcu()
     self.max_power = config.getfloat('max_power', 1., minval=0., maxval=1.)
     self.idle_speed = config.getfloat('idle_speed',
                                       self.max_power,
                                       minval=0.,
                                       maxval=self.max_power)
     self.idle_timeout = config.getint("idle_timeout", 30, minval=0)
     self.heater_name = config.get("heater", "extruder")
     self.last_on = self.idle_timeout
Exemplo n.º 10
0
 def __init__(self, config):
     self.name = config.get_name()
     self.printer = config.get_printer()
     self.fan = fan.PrinterFan(config)
     self.mcu = self.fan.mcu_fan.get_mcu()
     self.fan_speed = config.getfloat('fan_speed', 1., minval=0., maxval=1.)
     min_temp = config.getfloat('min_temp', minval=KELVIN_TO_CELCIUS)
     max_temp = config.getfloat('max_temp', above=min_temp)
     self.temp = config.getfloat('temp',
                                 40. if max_temp > 40. else max_temp,
                                 minval=min_temp,
                                 maxval=max_temp)
     self.fan.set_shutdown_speed(1.)
     self.last_temp = KELVIN_TO_CELCIUS
     self.sensor = self.printer.lookup_object('heater').setup_sensor(config)
     self.sensor.setup_minmax(min_temp, max_temp)
     self.sensor.setup_callback(self.temperature_callback)
 def __init__(self, config):
     #	get configs
     self.control_mode = config.get('control_mode')
     self.min_temp = config.getfloat('min_temp', minval=10)
     self.max_temp = config.getfloat('max_temp', above=self.min_temp)
     self.danger_temp = config.getfloat('danger_temp', self.max_temp + 5, above=self.max_temp)
     self.max_speed = config.getfloat('max_speed', 1., above=0., maxval=1.)
     self.min_speed = config.getfloat('min_speed', 0, maxval=1.)
     #	setup sensor
     self.printer = config.get_printer()
     self.reactor = self.printer.get_reactor()
     self.gcode = self.printer.lookup_object('gcode')
     self.sensor = self.printer.lookup_object('heater').setup_sensor(config)
     self.sensor.setup_minmax(self.min_temp, self.max_temp)
     self.speed_delay = self.sensor.get_report_time_delta()
     #   temp vars
     self.last_temp = 0.
     self.last_temp_time = 0.
     self.target_temp_conf = config.getfloat(
         'target_temp', 0. if self.max_temp > 40. else self.max_temp,
         minval=self.min_temp, maxval=self.max_temp)
     self.target_temp = self.target_temp_conf
     self.next_speed_time = 0.
     self.last_speed_value = 0.
     #	cooling or heating
     if self.control_mode == 'cooling':
         self.fan = fan.PrinterFan(config, default_shutdown_speed=self.min_speed)
         # self.sensor.setup_callback(self.cooling_callback)
         algos = {'watermark': ControlCoolingBangBang, 'pid': ControlCoolingPID}
         algo = config.getchoice('control', algos)
         self.control = algo(self, config)
         self.sensor.setup_callback(self.temperature_callback)
     elif self.control_mode == 'heating':
         #	implement later
         #	must fit heater verify workflow
         pass
     else:
         logging.error("chamber: unsupported control_mode" + self.control_mode)
         raise
     #	set dict
     self.gcode.register_command('M141', self.cmd_M141,
                                 desc="M141 S30 - Set chamber target to 30C")
Exemplo n.º 12
0
 def load_config(self):
     self.fileconfig = ConfigParser.RawConfigParser()
     res = self.fileconfig.read(self.conffile)
     if not res:
         raise ConfigParser.Error("Unable to open config file %s" %
                                  (self.conffile, ))
     if self.debugoutput is None:
         ConfigLogger(self.fileconfig)
     self.mcu = mcu.MCU(self, ConfigWrapper(self, 'mcu'))
     if self.fileconfig.has_section('fan'):
         self.objects['fan'] = fan.PrinterFan(self,
                                              ConfigWrapper(self, 'fan'))
     if self.fileconfig.has_section('extruder'):
         self.objects['extruder'] = extruder.PrinterExtruder(
             self, ConfigWrapper(self, 'extruder'))
     if self.fileconfig.has_section('heater_bed'):
         self.objects['heater_bed'] = heater.PrinterHeater(
             self, ConfigWrapper(self, 'heater_bed'))
     self.objects['toolhead'] = toolhead.ToolHead(
         self, ConfigWrapper(self, 'printer'))
Exemplo n.º 13
0
 def __init__(self, config):
     self.printer = config.get_printer()
     self.printer.register_event_handler("klippy:ready", self.handle_ready)
     self.stepper_names = []
     self.stepper_enable = self.printer.load_object(config,
                                                    'stepper_enable')
     self.printer.load_object(config, 'heaters')
     self.heaters = []
     self.fan = fan.PrinterFan(config)
     self.mcu = self.fan.mcu_fan.get_mcu()
     self.fan_speed = config.getfloat('fan_speed',
                                      default=1.,
                                      minval=0.,
                                      maxval=1.)
     self.idle_speed = config.getfloat('idle_speed',
                                       default=self.fan_speed,
                                       minval=0.,
                                       maxval=1.)
     self.idle_timeout = config.getint("idle_timeout", default=30, minval=0)
     self.heater_name = config.get("heater", "extruder")
     self.last_on = self.idle_timeout
Exemplo n.º 14
0
 def __init__(self, config):
     self.name = config.get_name().split()[1]
     self.printer = config.get_printer()
     self.fan = fan.PrinterFan(config, default_shutdown_speed=1.)
     self.gcode = self.printer.lookup_object('gcode')
     self.min_temp = config.getfloat('min_temp', minval=KELVIN_TO_CELSIUS)
     self.max_temp = config.getfloat('max_temp', above=self.min_temp)
     pheaters = self.printer.try_load_module(config, 'heaters')
     self.sensor = pheaters.setup_sensor(config)
     self.sensor.setup_minmax(self.min_temp, self.max_temp)
     self.sensor.setup_callback(self.temperature_callback)
     pheaters.register_sensor(config, self)
     self.speed_delay = self.sensor.get_report_time_delta()
     self.max_speed = config.getfloat('max_speed', 1., above=0., maxval=1.)
     self.min_speed = config.getfloat('min_speed',
                                      0.3,
                                      minval=0.,
                                      maxval=1.)
     self.last_temp = 0.
     self.last_temp_time = 0.
     self.target_temp_conf = config.getfloat(
         'target_temp',
         40. if self.max_temp > 40. else self.max_temp,
         minval=self.min_temp,
         maxval=self.max_temp)
     self.target_temp = self.target_temp_conf
     algos = {'watermark': ControlBangBang, 'pid': ControlPID}
     algo = config.getchoice('control', algos)
     self.control = algo(self, config)
     self.next_speed_time = 0.
     self.last_speed_value = 0.
     self.gcode.register_mux_command(
         "SET_TEMPERATURE_FAN_TARGET",
         "TEMPERATURE_FAN",
         self.name,
         self.cmd_SET_TEMPERATURE_FAN_TARGET_TEMP,
         desc=self.cmd_SET_TEMPERATURE_FAN_TARGET_TEMP_help)