diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2017-03-08 20:00:27 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2017-03-08 20:23:09 -0500 |
commit | bcaf818c0e2bc6b92a579318b9ac97911d0104bf (patch) | |
tree | 50ce5f15e290ea56a9d1658f9ef834bff64af9a7 /klippy | |
parent | 37bac916e7dd7159fe731f313859e31e743f7f23 (diff) | |
download | kutter-bcaf818c0e2bc6b92a579318b9ac97911d0104bf.tar.gz kutter-bcaf818c0e2bc6b92a579318b9ac97911d0104bf.tar.xz kutter-bcaf818c0e2bc6b92a579318b9ac97911d0104bf.zip |
fan: Default to using software PWM
Not all hardware has PWM support and there is no compelling reason to
use hardware PWM for fans. Change the default to use software PWM.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy')
-rw-r--r-- | klippy/fan.py | 6 | ||||
-rw-r--r-- | klippy/heater.py | 3 | ||||
-rw-r--r-- | klippy/mcu.py | 10 |
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 |