Fix thermistor tables, which also fixes a build failure.

Now we don't have tables for default or gen7 electronics, but
two default tables for a single vs. two different thermistors.
This seems to be more logical.
This commit is contained in:
Markus Hitter 2012-03-23 02:21:10 +01:00
parent 0d607fd620
commit 7b909fcf82
11 changed files with 197 additions and 134 deletions

View File

@ -1,41 +0,0 @@
// default thermistor lookup table
// Thermistor lookup table, generated with --num-temps=50 and trimmed in lower temperature ranges.
// You may be able to improve the accuracy of this table in various ways.
// 1. Measure the actual resistance of the resistor. It's "nominally" 4.7K, but that's ± 5%.
// 2. Measure the actual beta of your thermistor:http://reprap.org/wiki/MeasuringThermistorBeta
// 3. Generate more table entries than you need, then trim down the ones in uninteresting ranges. (done)
// In either case you'll have to regenerate this table, which requires python, which is difficult to install on windows.
// Since you'll have to do some testing to determine the correct temperature for your application anyway, you
// may decide that the effort isn't worth it. Who cares if it's reporting the "right" temperature as long as it's
// keeping the temperature steady enough to print, right?
// ./createTemperatureLookup.py --r0=100000 --t0=25 --r1=0 --r2=4700 --beta=4066 --max-adc=1023
// r0: 100000
// t0: 25
// r1: 0
// r2: 4700
// beta: 4066
// max adc: 1023
#define NUMTEMPS 20
// {ADC, temp*4 }, // temp
uint16_t temptable[NUMTEMPS][2] PROGMEM = {
{1, 3364}, // 841.027617469 C
{21, 1329}, // 332.486789769 C
{41, 1104}, // 276.102666373 C
{61, 987}, // 246.756060004 C
{81, 909}, // 227.268080588 C
{101, 851}, // 212.78847342 C
{121, 805}, // 201.30176775 C
{141, 767}, // 191.787692666 C
{161, 734}, // 183.662212795 C
{181, 706}, // 176.561442671 C
{201, 680}, // 170.244089549 C
{221, 658}, // 164.542298163 C
{241, 637}, // 159.33475843 C
{321, 567}, // 141.921298995 C
{381, 524}, // 131.166509425 C
{581, 406}, // 101.561865389 C
{781, 291}, // 72.9710018071 C
{881, 219}, // 54.8051659223 C
{981, 93}, // 23.4825243529 C
{1010, 1} // 0.498606463441 C
};

View File

@ -1,34 +1,46 @@
// default thermistor lookup table
// Thermistor lookup table for two different thermistors.
// How many thermistor tables we have
/*
This table doesn't depend on the type of electronics, but on the type of
thermistor(s) you use. You want one table for each thermistor type you use.
*/
// How many thermistor tables we have.
#define NUMTABLES 2
#define THERMISTOR_EXTRUDER 0
#define THERMISTOR_BED 1
// Names for our tables, so you can use them in config.h.
// Table numbering starts at 0.
#define THERMISTOR_EXTRUDER 0
#define THERMISTOR_BED 1
// Thermistor lookup table, generated with --num-temps=50 and trimmed in lower temperature ranges.
// You may be able to improve the accuracy of this table in various ways.
// 1. Measure the actual resistance of the resistor. It's "nominally" 4.7K, but that's ± 5%.
// 2. Measure the actual beta of your thermistor:http://reprap.org/wiki/MeasuringThermistorBeta
// 3. Generate more table entries than you need, then trim down the ones in uninteresting ranges. (done)
// In either case you'll have to regenerate this table, which requires python, which is difficult to install on windows.
// Since you'll have to do some testing to determine the correct temperature for your application anyway, you
// may decide that the effort isn't worth it. Who cares if it's reporting the "right" temperature as long as it's
// keeping the temperature steady enough to print, right?
/*
You may be able to improve the accuracy of this table in various ways.
1. Measure the actual resistance of the resistor. It's "nominally" 4.7K,
but that's ± 5%.
2. Measure the actual beta of your thermistor:
http://reprap.org/wiki/MeasuringThermistorBeta
3. Generate more table entries than you need, then trim down the ones
in uninteresting ranges.
In either case you'll have to regenerate this table with
createTemperatureLookup.py, which requires python, which is difficult to
install on windows. Since you'll have to do some testing to determine the
correct temperature for your application anyway, you may decide that the
effort isn't worth it. Who cares if it's reporting the "right" temperature
as long as it's keeping the temperature steady enough to print, right?
*/
// The number of value pairs in our table.
// Must be the same for all tables.
#define NUMTEMPS 102
// {ADC, temp*4 }, // temp
uint16_t temptable[NUMTABLES][NUMTEMPS][2] PROGMEM = {
// Thermistor table for the Extruder. If you want to get exact readings make sure to measure R2 appropriately!
// The thermistor used for this table was an Epocs B57560G104F
// Table for the Extruder.
// Thermistor: EPCOS B57560G104F
// ./createTemperatureLookup.py --r0=100000 --t0=25 --r1=0 --r2=4555 --beta=4092 --max-adc=1023
// r0: 100000
// t0: 25
// r1: 0
// r2: 4555
// beta: 4092
// max adc: 1023
{
{1, 3324}, // 831.245067985 C
{11, 1585}, // 396.252474229 C
@ -134,16 +146,10 @@ uint16_t temptable[NUMTABLES][NUMTEMPS][2] PROGMEM = {
{1011, 0}, // -0.157748974426 C
},
// Thermistor table for the Heatbed. If you want to get exact readings make sure to measure R2 appropriately!
// Thermistor table for the Heatbed.
// The thermistor used for this table was an Epocs B57560G104F
// ./createTemperatureLookup.py --r0=100000 --t0=25 --r1=0 --r2=4580 --beta=4092 --max-adc=1023
// r0: 100000
// t0: 25
// r1: 0
// r2: 4580
// beta: 4092
// max adc: 1023
{
{1, 3318}, // 829.616016745 C
{11, 1582}, // 395.653631407 C

66
ThermistorTable.single.h Normal file
View File

@ -0,0 +1,66 @@
// Thermistor lookup table for one thermistor or
// identical thermistors in all places.
/*
This table doesn't depend on the type of electronics, but on the type of
thermistor(s) you use. You want one table for each thermistor type you use.
*/
// How many thermistor tables we have.
#define NUMTABLES 1
// Names for our tables, so you can use them in config.h.
// Table numbering starts at 0.
#define THERMISTOR_EXTRUDER 0
/*
You may be able to improve the accuracy of this table in various ways.
1. Measure the actual resistance of the resistor. It's "nominally" 4.7K,
but that's ± 5%.
2. Measure the actual beta of your thermistor:
http://reprap.org/wiki/MeasuringThermistorBeta
3. Generate more table entries than you need, then trim down the ones
in uninteresting ranges.
In either case you'll have to regenerate this table with
createTemperatureLookup.py, which requires python, which is difficult to
install on windows. Since you'll have to do some testing to determine the
correct temperature for your application anyway, you may decide that the
effort isn't worth it. Who cares if it's reporting the "right" temperature
as long as it's keeping the temperature steady enough to print, right?
*/
// The number of value pairs in our table.
// Must be the same for all tables.
#define NUMTEMPS 20
uint16_t temptable[NUMTABLES][NUMTEMPS][2] PROGMEM = {
// Table for the Extruder.
// Thermistor: unknown
// ./createTemperatureLookup.py --r0=100000 --t0=25 --r1=0 --r2=4700 --beta=4066 --max-adc=1023
{
{1, 3364}, // 841.027617469 C
{21, 1329}, // 332.486789769 C
{41, 1104}, // 276.102666373 C
{61, 987}, // 246.756060004 C
{81, 909}, // 227.268080588 C
{101, 851}, // 212.78847342 C
{121, 805}, // 201.30176775 C
{141, 767}, // 191.787692666 C
{161, 734}, // 183.662212795 C
{181, 706}, // 176.561442671 C
{201, 680}, // 170.244089549 C
{221, 658}, // 164.542298163 C
{241, 637}, // 159.33475843 C
{321, 567}, // 141.921298995 C
{381, 524}, // 131.166509425 C
{581, 406}, // 101.561865389 C
{781, 291}, // 72.9710018071 C
{881, 219}, // 54.8051659223 C
{981, 93}, // 23.4825243529 C
{1010, 1} // 0.498606463441 C
}
};

View File

@ -260,25 +260,31 @@
/***************************************************************************\
* *
* Define your temperature sensors here *
* Define your temperature sensors here. One line for each sensor, only *
* limited by the number of available ATmega pins. *
* *
* for GEN3 set temp_type to TT_INTERCOM and temp_pin to 0 *
* For a GEN3 set temp_type to TT_INTERCOM and temp_pin to 0. *
* *
* Types are same as TEMP_ list above- TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* Types are same as TEMP_ list above - TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* TT_PT100, TT_INTERCOM, TT_NONE. See list in temp.c. *
* *
* The "additional" field is used for TT_THERMISTOR only. It defines the *
* name of the table(s) in ThermistorTable.h to use. Typically, this is *
* THERMISTOR_EXTRUDER for the first or only table, or THERMISTOR_BED for *
* the second table. See also early in ThermistorTable.{single|double}.h. *
* *
\***************************************************************************/
#ifndef DEFINE_TEMP_SENSOR
#define DEFINE_TEMP_SENSOR(...)
#endif
// name type pin additional
DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, 0, THERMISTOR_EXTRUDER)
// DEFINE_TEMP_SENSOR(bed, TT_THERMISTOR, 1, THERMISTOR_EXTRUDER)
// name type pin additional
DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, 0, THERMISTOR_EXTRUDER)
DEFINE_TEMP_SENSOR(bed, TT_THERMISTOR, 1, THERMISTOR_EXTRUDER)
// "noheater" is a special name for a sensor which doesn't have a heater.
// Use "M105 P#" to read it, where # is a zero-based index into this list.
// DEFINE_TEMP_SENSOR(noheater, TT_THERMISTOR, 1, 0)
// DEFINE_TEMP_SENSOR(noheater, TT_THERMISTOR, 1, 0)

View File

@ -262,22 +262,28 @@
/***************************************************************************\
* *
* Define your temperature sensors here *
* Define your temperature sensors here. One line for each sensor, only *
* limited by the number of available ATmega pins. *
* *
* for GEN3 set temp_type to TT_INTERCOM and temp_pin to 0 *
* For a GEN3 set temp_type to TT_INTERCOM and temp_pin to 0. *
* *
* Types are same as TEMP_ list above- TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* Types are same as TEMP_ list above - TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* TT_PT100, TT_INTERCOM, TT_NONE. See list in temp.c. *
* *
* The "additional" field is used for TT_THERMISTOR only. It defines the *
* name of the table(s) in ThermistorTable.h to use. Typically, this is *
* THERMISTOR_EXTRUDER for the first or only table, or THERMISTOR_BED for *
* the second table. See also early in ThermistorTable.{single|double}.h. *
* *
\***************************************************************************/
#ifndef DEFINE_TEMP_SENSOR
#define DEFINE_TEMP_SENSOR(...)
#endif
// name type pin additional
DEFINE_TEMP_SENSOR(noheater, TT_INTERCOM, 0, 0)
DEFINE_TEMP_SENSOR(bed, TT_INTERCOM, 1, 0)
// name type pin additional
DEFINE_TEMP_SENSOR(noheater, TT_INTERCOM, 0, 0)
DEFINE_TEMP_SENSOR(bed, TT_INTERCOM, 1, 0)
// bed has no heater attached
#define HEATER_bed HEATER_noheater

View File

@ -260,23 +260,27 @@
/***************************************************************************\
* *
* Define your temperature sensors here *
* Define your temperature sensors here. One line for each sensor, only *
* limited by the number of available ATmega pins. *
* *
* If your temperature sensor has no associated heater, enter '255' as the *
* heater index. Unassociated temperature sensors are still read, but they *
* do not affect firmware operation *
* For a GEN3 set temp_type to TT_INTERCOM and temp_pin to 0. *
* *
* Types are same as TEMP_ list above- TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* Types are same as TEMP_ list above - TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* TT_PT100, TT_INTERCOM, TT_NONE. See list in temp.c. *
* *
* The "additional" field is used for TT_THERMISTOR only. It defines the *
* name of the table(s) in ThermistorTable.h to use. Typically, this is *
* THERMISTOR_EXTRUDER for the first or only table, or THERMISTOR_BED for *
* the second table. See also early in ThermistorTable.{single|double}.h. *
* *
\***************************************************************************/
#ifndef DEFINE_TEMP_SENSOR
#define DEFINE_TEMP_SENSOR(...)
#endif
// name type pin additional
DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, PINA5, THERMISTOR_EXTRUDER)
// name type pin additional
DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, PINA5, THERMISTOR_EXTRUDER)

View File

@ -265,30 +265,28 @@
/***************************************************************************\
* *
* Define your temperature sensors here *
* Define your temperature sensors here. One line for each sensor, only *
* limited by the number of available ATmega pins. *
* *
* for GEN3 set temp_type to TT_INTERCOM and temp_pin to 0 *
* For a GEN3 set temp_type to TT_INTERCOM and temp_pin to 0. *
* *
* Types are same as TEMP_ list above- TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* Types are same as TEMP_ list above - TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* TT_PT100, TT_INTERCOM, TT_NONE. See list in temp.c. *
* *
* The "additional" field is used for TT_THERMISTOR only. It defines the *
* name of the table(s) in ThermistorTable.h to use. Typically, this is *
* THERMISTOR_EXTRUDER for the first or only table, or THERMISTOR_BED for *
* the second table. See also early in ThermistorTable.{single|double}.h. *
* *
\***************************************************************************/
#ifndef DEFINE_TEMP_SENSOR
#define DEFINE_TEMP_SENSOR(...)
#endif
// name type pin additional
//DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, 0, THERMISTOR_EXTRUDER)
// DEFINE_TEMP_SENSOR(bed, TT_THERMISTOR, 1, THERMISTOR_EXTRUDER)
// "noheater" is a special name for a sensor which doesn't have a heater.
// Use "M105 P#" to read it, where # is a zero-based index into this list.
// DEFINE_TEMP_SENSOR(noheater, TT_THERMISTOR, 1, 0)
// to get both thermistors working make sure to use an appropriate 'ThermistorTable.h' file!
// See 'ThermistorTable.gen7.h' for an example
DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, PINA1, THERMISTOR_EXTRUDER)
DEFINE_TEMP_SENSOR(bed, TT_THERMISTOR, PINA2, THERMISTOR_BED)
// name type pin additional
DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, PINA1, THERMISTOR_EXTRUDER)
DEFINE_TEMP_SENSOR(bed, TT_THERMISTOR, PINA2, THERMISTOR_BED)

View File

@ -263,22 +263,28 @@ temperature is "achieved" for purposes of M109 and friends when actual temperatu
/***************************************************************************\
* *
* Define your temperature sensors here *
* Define your temperature sensors here. One line for each sensor, only *
* limited by the number of available ATmega pins. *
* *
* for GEN3 set temp_type to TT_INTERCOM and temp_pin to 0 *
* For a GEN3 set temp_type to TT_INTERCOM and temp_pin to 0. *
* *
* Types are same as TEMP_ list above- TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* Types are same as TEMP_ list above - TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* TT_PT100, TT_INTERCOM, TT_NONE. See list in temp.c. *
* *
* The "additional" field is used for TT_THERMISTOR only. It defines the *
* name of the table(s) in ThermistorTable.h to use. Typically, this is *
* THERMISTOR_EXTRUDER for the first or only table, or THERMISTOR_BED for *
* the second table. See also early in ThermistorTable.{single|double}.h. *
* *
\***************************************************************************/
#ifndef DEFINE_TEMP_SENSOR
#define DEFINE_TEMP_SENSOR(...)
#endif
// name type pin additional
DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, AIO2_PIN, THERMISTOR_EXTRUDER)
DEFINE_TEMP_SENSOR(bed, TT_THERMISTOR, AIO1_PIN, THERMISTOR_EXTRUDER)
// name type pin additional
DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, AIO2_PIN, THERMISTOR_EXTRUDER)
DEFINE_TEMP_SENSOR(bed, TT_THERMISTOR, AIO1_PIN, THERMISTOR_EXTRUDER)

View File

@ -267,22 +267,28 @@ temperature is "achieved" for purposes of M109 and friends when actual temperatu
/***************************************************************************\
* *
* Define your temperature sensors here *
* Define your temperature sensors here. One line for each sensor, only *
* limited by the number of available ATmega pins. *
* *
* for GEN3 set temp_type to TT_INTERCOM and temp_pin to 0 *
* For a GEN3 set temp_type to TT_INTERCOM and temp_pin to 0. *
* *
* Types are same as TEMP_ list above- TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* Types are same as TEMP_ list above - TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* TT_PT100, TT_INTERCOM, TT_NONE. See list in temp.c. *
* *
* The "additional" field is used for TT_THERMISTOR only. It defines the *
* name of the table(s) in ThermistorTable.h to use. Typically, this is *
* THERMISTOR_EXTRUDER for the first or only table, or THERMISTOR_BED for *
* the second table. See also early in ThermistorTable.{single|double}.h. *
* *
\***************************************************************************/
#ifndef DEFINE_TEMP_SENSOR
#define DEFINE_TEMP_SENSOR(...)
#endif
// name type pin additional
DEFINE_TEMP_SENSOR( extruder, TT_THERMISTOR, AIO13_PIN, THERMISTOR_EXTRUDER)
//DEFINE_TEMP_SENSOR( bed, TT_THERMISTOR, AIO14_PIN, THERMISTOR_EXTRUDER)
// name type pin additional
DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, AIO13_PIN, THERMISTOR_EXTRUDER)
// DEFINE_TEMP_SENSOR(bed, TT_THERMISTOR, AIO14_PIN, THERMISTOR_EXTRUDER)

View File

@ -264,25 +264,28 @@
/***************************************************************************\
* *
* Define your temperature sensors here *
* Define your temperature sensors here. One line for each sensor, only *
* limited by the number of available ATmega pins. *
* *
* for GEN3 set temp_type to TT_INTERCOM and temp_pin to 0 *
* For a GEN3 set temp_type to TT_INTERCOM and temp_pin to 0. *
* *
* Types are same as TEMP_ list above- TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* Types are same as TEMP_ list above - TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* TT_PT100, TT_INTERCOM, TT_NONE. See list in temp.c. *
* *
* The "additional" field is used for TT_THERMISTOR only. It defines the *
* name of the table(s) in ThermistorTable.h to use. Typically, this is *
* THERMISTOR_EXTRUDER for the first or only table, or THERMISTOR_BED for *
* the second table. See also early in ThermistorTable.{single|double}.h. *
* *
\***************************************************************************/
#ifndef DEFINE_TEMP_SENSOR
#define DEFINE_TEMP_SENSOR(...)
#endif
// name type pin additional
DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, AIO7_PIN, THERMISTOR_EXTRUDER)
DEFINE_TEMP_SENSOR(bed, TT_THERMISTOR, AIO6_PIN, THERMISTOR_EXTRUDER)
// "noheater" is a special name for a sensor which doesn't have a heater.
// Use "M105 P#" to read it, where # is a zero-based index into this list.
// DEFINE_TEMP_SENSOR(noheater, TT_THERMISTOR, 1, 0)
// name type pin additional
DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, AIO7_PIN, THERMISTOR_EXTRUDER)
DEFINE_TEMP_SENSOR(bed, TT_THERMISTOR, AIO6_PIN, THERMISTOR_EXTRUDER)

View File

@ -264,25 +264,28 @@
/***************************************************************************\
* *
* Define your temperature sensors here *
* Define your temperature sensors here. One line for each sensor, only *
* limited by the number of available ATmega pins. *
* *
* for GEN3 set temp_type to TT_INTERCOM and temp_pin to 0 *
* For a GEN3 set temp_type to TT_INTERCOM and temp_pin to 0. *
* *
* Types are same as TEMP_ list above- TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* Types are same as TEMP_ list above - TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* TT_PT100, TT_INTERCOM, TT_NONE. See list in temp.c. *
* *
* The "additional" field is used for TT_THERMISTOR only. It defines the *
* name of the table(s) in ThermistorTable.h to use. Typically, this is *
* THERMISTOR_EXTRUDER for the first or only table, or THERMISTOR_BED for *
* the second table. See also early in ThermistorTable.{single|double}.h. *
* *
\***************************************************************************/
#ifndef DEFINE_TEMP_SENSOR
#define DEFINE_TEMP_SENSOR(...)
#endif
// name type pin additional
DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, AIO7_PIN, THERMISTOR_EXTRUDER)
DEFINE_TEMP_SENSOR(bed, TT_THERMISTOR, AIO6_PIN, THERMISTOR_EXTRUDER)
// "noheater" is a special name for a sensor which doesn't have a heater.
// Use "M105 P#" to read it, where # is a zero-based index into this list.
// DEFINE_TEMP_SENSOR(noheater, TT_THERMISTOR, 1, 0)
// name type pin additional
DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, AIO7_PIN, THERMISTOR_EXTRUDER)
DEFINE_TEMP_SENSOR(bed, TT_THERMISTOR, AIO6_PIN, THERMISTOR_BED)