DjEKI
15.04.2015, 21:35
Moin,
Ich nutze Teacup Firmware auf ein Arduino Uno.
Hier der Sensor (http://www.ebay.de/itm/3D-Drucker-Print-Head-Extruder-0-2mm-0-3mm-0-4mm-Nozzle-Thermostable-RepRap-/121564027408?pt=LH_DefaultDomain_77&hash=item1c4dc7da10)
Der Sensor ist an Pin A4 angeschlossen.
Es gibt ein Wiki dazu (http://reprap.org/wiki/MeasuringThermistorBeta), aber ich verstehe es Absolut nicht. Das kommt vllt auch von daher, dass ich nicht so gut Englisch kann.
Ich habe den Sensor gemessen und es hat 5Ohm bei Zimmertemperatur. (an Rot und blaues Kabel gemessen)
Weis jemand, wie ich Teacup einstellen kann?
ThermistorTable.h
// 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
const uint16_t PROGMEM temptable[NUMTABLES][NUMTEMPS][2] = {
// 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
}
};
Ausschnitt von Config.h
/************************************************** *************************\
* *
* 4. TEMPERATURE SENSORS *
* *
\************************************************* **************************/
/** \def TEMP_HYSTERESIS
Actual temperature must be target +/- this hysteresis before target
temperature is considered to be achieved. Also, BANG_BANG tries to stay
within half of this hysteresis.
Unit: degree Celsius
*/
#define TEMP_HYSTERESIS 10
/**
TEMP_RESIDENCY_TIME: actual temperature must be close to target (within
set temperature +- TEMP_HYSTERESIS) for this long before target is achieved
(and a M116 succeeds). Unit is seconds.
*/
#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).
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
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
*/
#define TEMP_EWMA 1.0
/// which temperature sensors are you using? List every type of sensor you use here once, to enable the appropriate code. Intercom is the gen3-style separate extruder board.
// #define TEMP_MAX6675
#define TEMP_THERMISTOR
// #define TEMP_AD595
// #define TEMP_PT100
// #define TEMP_INTERCOM
/************************************************** *************************\
* *
* Define your temperature sensors here. One line for each sensor, only *
* limited by the number of available ATmega pins. *
* *
* Types are same as TEMP_ list above - TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* TT_PT100, TT_INTERCOM. 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. *
* *
* For a GEN3 set temp_type to TT_INTERCOM and temp_pin to AIO0. The pin *
* won't be used in this case. *
* *
\************************************************* **************************/
#ifndef DEFINE_TEMP_SENSOR
#define DEFINE_TEMP_SENSOR(...)
#endif
// name type pin additional
DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, AIO4, THERMISTOR_EXTRUDER)
//DEFINE_TEMP_SENSOR(bed, TT_THERMISTOR, AIO1, 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)
Ich nutze Teacup Firmware auf ein Arduino Uno.
Hier der Sensor (http://www.ebay.de/itm/3D-Drucker-Print-Head-Extruder-0-2mm-0-3mm-0-4mm-Nozzle-Thermostable-RepRap-/121564027408?pt=LH_DefaultDomain_77&hash=item1c4dc7da10)
Der Sensor ist an Pin A4 angeschlossen.
Es gibt ein Wiki dazu (http://reprap.org/wiki/MeasuringThermistorBeta), aber ich verstehe es Absolut nicht. Das kommt vllt auch von daher, dass ich nicht so gut Englisch kann.
Ich habe den Sensor gemessen und es hat 5Ohm bei Zimmertemperatur. (an Rot und blaues Kabel gemessen)
Weis jemand, wie ich Teacup einstellen kann?
ThermistorTable.h
// 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
const uint16_t PROGMEM temptable[NUMTABLES][NUMTEMPS][2] = {
// 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
}
};
Ausschnitt von Config.h
/************************************************** *************************\
* *
* 4. TEMPERATURE SENSORS *
* *
\************************************************* **************************/
/** \def TEMP_HYSTERESIS
Actual temperature must be target +/- this hysteresis before target
temperature is considered to be achieved. Also, BANG_BANG tries to stay
within half of this hysteresis.
Unit: degree Celsius
*/
#define TEMP_HYSTERESIS 10
/**
TEMP_RESIDENCY_TIME: actual temperature must be close to target (within
set temperature +- TEMP_HYSTERESIS) for this long before target is achieved
(and a M116 succeeds). Unit is seconds.
*/
#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).
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
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
*/
#define TEMP_EWMA 1.0
/// which temperature sensors are you using? List every type of sensor you use here once, to enable the appropriate code. Intercom is the gen3-style separate extruder board.
// #define TEMP_MAX6675
#define TEMP_THERMISTOR
// #define TEMP_AD595
// #define TEMP_PT100
// #define TEMP_INTERCOM
/************************************************** *************************\
* *
* Define your temperature sensors here. One line for each sensor, only *
* limited by the number of available ATmega pins. *
* *
* Types are same as TEMP_ list above - TT_MAX6675, TT_THERMISTOR, TT_AD595, *
* TT_PT100, TT_INTERCOM. 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. *
* *
* For a GEN3 set temp_type to TT_INTERCOM and temp_pin to AIO0. The pin *
* won't be used in this case. *
* *
\************************************************* **************************/
#ifndef DEFINE_TEMP_SENSOR
#define DEFINE_TEMP_SENSOR(...)
#endif
// name type pin additional
DEFINE_TEMP_SENSOR(extruder, TT_THERMISTOR, AIO4, THERMISTOR_EXTRUDER)
//DEFINE_TEMP_SENSOR(bed, TT_THERMISTOR, AIO1, 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)