Temp: change TEMP_EWMA to integer.

This allows to use EWMA_ALPHA in an #if clause, which is needed
for the next commit.

Review changes by Traumflug: made changes to comments more
complete, added rounding ("+ 500") and also adjusted Configtool
for the change.
This commit is contained in:
wurstnase 2016-06-23 19:03:05 +02:00 committed by Markus Hitter
parent 29cb2e801a
commit 66f06d20a2
8 changed files with 36 additions and 58 deletions

View File

@ -208,17 +208,18 @@
#define TEMP_RESIDENCY_TIME 60
/** \def TEMP_EWMA
Smooth noisy temperature sensors. Good hardware shouldn't be noisy. Set to
1.0 for unfiltered data (and a 140 bytes smaller binary).
1000 for unfiltered data (and a 140 bytes smaller binary).
Instrument Engineer's Handbook, 4th ed, Vol 2 p126 says values of
0.05 to 0.1 are typical. Smaller is smoother but slower adjusting, larger is
50 to 100 are typical. Smaller is smoother but slower adjusting, larger is
quicker but rougher. If you need to use this, set the PID parameter to zero
(M132 S0) to make the PID loop insensitive to noise.
Valid range: 0.001 to 1.0
Valid range: 1 to 1000
*/
#define TEMP_EWMA 1.0
#define TEMP_EWMA 1000
/** \def REPORT_TARGET_TEMPS
With this enabled, M105 commands will return the current temperatures along

View File

@ -208,17 +208,18 @@
#define TEMP_RESIDENCY_TIME 60
/** \def TEMP_EWMA
Smooth noisy temperature sensors. Good hardware shouldn't be noisy. Set to
1.0 for unfiltered data (and a 140 bytes smaller binary).
1000 for unfiltered data (and a 140 bytes smaller binary).
Instrument Engineer's Handbook, 4th ed, Vol 2 p126 says values of
0.05 to 0.1 are typical. Smaller is smoother but slower adjusting, larger is
50 to 100 are typical. Smaller is smoother but slower adjusting, larger is
quicker but rougher. If you need to use this, set the PID parameter to zero
(M132 S0) to make the PID loop insensitive to noise.
Valid range: 0.001 to 1.0
Valid range: 1 to 1000
*/
#define TEMP_EWMA 1.0
#define TEMP_EWMA 1000
/** \def REPORT_TARGET_TEMPS
With this enabled, M105 commands will return the current temperatures along

View File

@ -208,17 +208,18 @@
#define TEMP_RESIDENCY_TIME 60
/** \def TEMP_EWMA
Smooth noisy temperature sensors. Good hardware shouldn't be noisy. Set to
1.0 for unfiltered data (and a 140 bytes smaller binary).
1000 for unfiltered data (and a 140 bytes smaller binary).
Instrument Engineer's Handbook, 4th ed, Vol 2 p126 says values of
0.05 to 0.1 are typical. Smaller is smoother but slower adjusting, larger is
50 to 100 are typical. Smaller is smoother but slower adjusting, larger is
quicker but rougher. If you need to use this, set the PID parameter to zero
(M132 S0) to make the PID loop insensitive to noise.
Valid range: 0.001 to 1.0
Valid range: 1 to 1000
*/
#define TEMP_EWMA 1.0
#define TEMP_EWMA 1000
/** \def REPORT_TARGET_TEMPS
With this enabled, M105 commands will return the current temperatures along

View File

@ -208,17 +208,18 @@
#define TEMP_RESIDENCY_TIME 60
/** \def TEMP_EWMA
Smooth noisy temperature sensors. Good hardware shouldn't be noisy. Set to
1.0 for unfiltered data (and a 140 bytes smaller binary).
1000 for unfiltered data (and a 140 bytes smaller binary).
Instrument Engineer's Handbook, 4th ed, Vol 2 p126 says values of
0.05 to 0.1 are typical. Smaller is smoother but slower adjusting, larger is
50 to 100 are typical. Smaller is smoother but slower adjusting, larger is
quicker but rougher. If you need to use this, set the PID parameter to zero
(M132 S0) to make the PID loop insensitive to noise.
Valid range: 0.001 to 1.0
Valid range: 1 to 1000
*/
#define TEMP_EWMA 1.0
#define TEMP_EWMA 1000
/** \def REPORT_TARGET_TEMPS
With this enabled, M105 commands will return the current temperatures along

View File

@ -145,39 +145,12 @@ class MiscellaneousPage(wx.Panel, Page):
sz.Add(tc, pos = (7, 5))
k = 'TEMP_EWMA'
tc = self.addTextCtrl(k, labelWidth, self.onTextCtrlEWMA)
tc = self.addTextCtrl(k, labelWidth, self.onTextCtrlInteger)
sz.Add(tc, pos = (8, 5))
self.SetSizer(sz)
self.enableAll(False)
def onTextCtrlEWMA(self, evt):
self.assertModified(True)
tc = evt.GetEventObject()
name = tc.GetName()
w = tc.GetValue().strip()
if w == "":
valid = True
else:
m = reFloat.match(w)
if m:
v = float(w)
if v < 0.1 or v > 1.0:
valid = False
else:
valid = True
else:
valid = False
self.setFieldValidity(name, valid)
if valid:
tc.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW))
else:
tc.SetBackgroundColour("pink")
tc.Refresh()
evt.Skip()
def setHeaters(self, hlist):
k = 'DC_EXTRUDER'
v = self.choices[k].GetSelection()

View File

@ -208,17 +208,18 @@
#define TEMP_RESIDENCY_TIME 60
/** \def TEMP_EWMA
Smooth noisy temperature sensors. Good hardware shouldn't be noisy. Set to
1.0 for unfiltered data (and a 140 bytes smaller binary).
1000 for unfiltered data (and a 140 bytes smaller binary).
Instrument Engineer's Handbook, 4th ed, Vol 2 p126 says values of
0.05 to 0.1 are typical. Smaller is smoother but slower adjusting, larger is
50 to 100 are typical. Smaller is smoother but slower adjusting, larger is
quicker but rougher. If you need to use this, set the PID parameter to zero
(M132 S0) to make the PID loop insensitive to noise.
Valid range: 0.001 to 1.0
Valid range: 1 to 1000
*/
#define TEMP_EWMA 1.0
#define TEMP_EWMA 1000
/** \def REPORT_TARGET_TEMPS
With this enabled, M105 commands will return the current temperatures along

8
temp.c
View File

@ -86,16 +86,16 @@ static struct {
Default alpha constant for the Exponentially Weighted Moving Average (EWMA)
for smoothing noisy sensors. Instrument Engineer's Handbook, 4th ed,
Vol 2 p126 says values of 0.05 to 0.1 are typical.
Vol 2 p126 says values of 50 to 100 are typical.
Setting it to 1.0 turns EWMA off.
This is scaled by factor 1000. Setting it to 1000 turns EWMA off.
*/
#ifndef TEMP_EWMA
#define TEMP_EWMA 1.0
#define TEMP_EWMA 1000
#endif
#define EWMA_SCALE 1024L
#define EWMA_ALPHA ((uint32_t)(TEMP_EWMA * EWMA_SCALE))
#define EWMA_ALPHA ((TEMP_EWMA * EWMA_SCALE + 500) / 1000)
// If EWMA is used, continuously update analog reading for more data points.
#define TEMP_READ_CONTINUOUS (EWMA_ALPHA < EWMA_SCALE)

View File

@ -405,18 +405,18 @@
*/
#define TEMP_RESIDENCY_TIME 60
/**
TEMP_EWMA: Smooth noisy temperature sensors. Good hardware shouldn't be
noisy. Set to 1.0 for unfiltered data (and a 140 bytes smaller binary).
/** \def TEMP_EWMA
Smooth noisy temperature sensors. Good hardware shouldn't be noisy. Set to
1000 for unfiltered data (and a 140 bytes smaller binary).
Instrument Engineer's Handbook, 4th ed, Vol 2 p126 says values of
0.05 to 0.1 are typical. Smaller is smoother but slower adjusting, larger is
50 to 100 are typical. Smaller is smoother but slower adjusting, larger is
quicker but rougher. If you need to use this, set the PID parameter to zero
(M132 S0) to make the PID loop insensitive to noise.
Valid range: 0.001 to 1.0
Valid range: 1 to 1000
*/
#define TEMP_EWMA 1.0
#define TEMP_EWMA 1000
/** \def TEMP_MAX6675 TEMP_THERMISTOR TEMP_AD595 TEMP_PT100 TEMP_INTERCOM
\def TEMP_MCP3008