aboutsummaryrefslogtreecommitdiffstats
path: root/klippy
diff options
context:
space:
mode:
Diffstat (limited to 'klippy')
-rw-r--r--klippy/fan.py6
-rw-r--r--klippy/heater.py3
-rw-r--r--klippy/mcu.py10
3 files changed, 11 insertions, 8 deletions
diff --git a/klippy/fan.py b/klippy/fan.py
index 739af2f1..2f9fb7a5 100644
--- a/klippy/fan.py
+++ b/klippy/fan.py
@@ -5,6 +5,7 @@
# This file may be distributed under the terms of the GNU GPLv3 license.
FAN_MIN_TIME = 0.1
+PWM_CYCLE_TIME = 0.010
class PrinterFan:
def __init__(self, printer, config):
@@ -16,8 +17,9 @@ class PrinterFan:
self.kick_start_time = config.getfloat('kick_start_time', 0.1)
def build_config(self):
pin = self.config.get('pin')
- hard_pwm = self.config.getint('hard_pwm', 128)
- self.mcu_fan = self.printer.mcu.create_pwm(pin, hard_pwm, 0)
+ hard_pwm = self.config.getint('hard_pwm', 0)
+ self.mcu_fan = self.printer.mcu.create_pwm(
+ pin, PWM_CYCLE_TIME, hard_pwm, 0.)
# External commands
def set_speed(self, print_time, value):
value = max(0., min(1., value))
diff --git a/klippy/heater.py b/klippy/heater.py
index 77cb659f..66d2db91 100644
--- a/klippy/heater.py
+++ b/klippy/heater.py
@@ -16,6 +16,7 @@ Thermistors = {
SAMPLE_TIME = 0.001
SAMPLE_COUNT = 8
REPORT_TIME = 0.300
+PWM_CYCLE_TIME = 0.100
KELVIN_TO_CELCIUS = -273.15
MAX_HEAT_TIME = 5.0
AMBIENT_TEMP = 25.
@@ -55,7 +56,7 @@ class PrinterHeater:
heater_pin, MAX_HEAT_TIME)
else:
self.mcu_pwm = self.printer.mcu.create_pwm(
- heater_pin, 0, MAX_HEAT_TIME)
+ heater_pin, PWM_CYCLE_TIME, 0, MAX_HEAT_TIME)
self.mcu_adc = self.printer.mcu.create_adc(thermistor_pin)
min_adc = self.calc_adc(self.max_temp)
max_adc = self.calc_adc(self.min_temp)
diff --git a/klippy/mcu.py b/klippy/mcu.py
index 129024ba..38e34270 100644
--- a/klippy/mcu.py
+++ b/klippy/mcu.py
@@ -251,7 +251,7 @@ class MCU_digital_out:
class MCU_pwm:
PWM_MAX = 255.
- def __init__(self, mcu, pin, cycle_ticks, max_duration, hard_pwm=True):
+ def __init__(self, mcu, pin, cycle_ticks, max_duration, hard_pwm=False):
self._mcu = mcu
self._oid = mcu.create_oid()
self._last_clock = 0
@@ -510,14 +510,14 @@ class MCU:
def create_digital_out(self, pin, max_duration=2.):
max_duration = int(max_duration * self._mcu_freq)
return MCU_digital_out(self, pin, max_duration)
- def create_pwm(self, pin, hard_cycle_ticks, max_duration=2.):
+ def create_pwm(self, pin, cycle_time, hard_cycle_ticks=0, max_duration=2.):
max_duration = int(max_duration * self._mcu_freq)
if hard_cycle_ticks:
- return MCU_pwm(self, pin, hard_cycle_ticks, max_duration)
+ return MCU_pwm(self, pin, hard_cycle_ticks, max_duration, True)
if hard_cycle_ticks < 0:
return MCU_digital_out(self, pin, max_duration)
- cycle_ticks = int(self._mcu_freq / 10.)
- return MCU_pwm(self, pin, cycle_ticks, max_duration, hard_pwm=False)
+ cycle_ticks = int(cycle_time * self._mcu_freq)
+ return MCU_pwm(self, pin, cycle_ticks, max_duration, False)
def create_adc(self, pin):
return MCU_adc(self, pin)
# Clock syncing