MAX31865 temperature sensor (#15930)
This commit is contained in:
@ -36,8 +36,8 @@
|
||||
#define SPI_CLOCK_MAX SPI_BAUD_PCLK_DIV_2
|
||||
#endif
|
||||
|
||||
#define CS_LOW() {WRITE(ONBOARD_SD_CS_PIN, LOW);} /* Set OnBoardSPI cs low */
|
||||
#define CS_HIGH() {WRITE(ONBOARD_SD_CS_PIN, HIGH);} /* Set OnBoardSPI cs high */
|
||||
#define CS_LOW() WRITE(ONBOARD_SD_CS_PIN, LOW) /* Set OnBoardSPI cs low */
|
||||
#define CS_HIGH() WRITE(ONBOARD_SD_CS_PIN, HIGH) /* Set OnBoardSPI cs high */
|
||||
|
||||
#define FCLK_FAST() ONBOARD_SD_SPI.setClockDivider(SPI_CLOCK_MAX)
|
||||
#define FCLK_SLOW() ONBOARD_SD_SPI.setClockDivider(SPI_BAUD_PCLK_DIV_256)
|
||||
|
@ -341,17 +341,22 @@
|
||||
|
||||
#define HAS_USER_THERMISTORS ANY_TEMP_SENSOR_IS(1000)
|
||||
|
||||
#if TEMP_SENSOR_0 == -4
|
||||
#if TEMP_SENSOR_0 == -5 || TEMP_SENSOR_0 == -3 || TEMP_SENSOR_0 == -2
|
||||
#define HEATER_0_USES_MAX6675
|
||||
#if TEMP_SENSOR_0 == -3
|
||||
#define HEATER_0_MAX6675_TMIN -270
|
||||
#define HEATER_0_MAX6675_TMAX 1800
|
||||
#else
|
||||
#define HEATER_0_MAX6675_TMIN 0
|
||||
#define HEATER_0_MAX6675_TMAX 1024
|
||||
#endif
|
||||
#if TEMP_SENSOR_0 == -5
|
||||
#define MAX6675_IS_MAX31865
|
||||
#elif TEMP_SENSOR_0 == -3
|
||||
#define MAX6675_IS_MAX31855
|
||||
#endif
|
||||
#elif TEMP_SENSOR_0 == -4
|
||||
#define HEATER_0_USES_AD8495
|
||||
#elif TEMP_SENSOR_0 == -3
|
||||
#define HEATER_0_USES_MAX6675
|
||||
#define MAX6675_IS_MAX31855
|
||||
#define HEATER_0_MAX6675_TMIN -270
|
||||
#define HEATER_0_MAX6675_TMAX 1800
|
||||
#elif TEMP_SENSOR_0 == -2
|
||||
#define HEATER_0_USES_MAX6675
|
||||
#define HEATER_0_MAX6675_TMIN 0
|
||||
#define HEATER_0_MAX6675_TMAX 1024
|
||||
#elif TEMP_SENSOR_0 == -1
|
||||
#define HEATER_0_USES_AD595
|
||||
#elif TEMP_SENSOR_0 > 0
|
||||
@ -365,22 +370,26 @@
|
||||
#undef HEATER_0_MAXTEMP
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_1 == -4
|
||||
#if TEMP_SENSOR_1 == -5 || TEMP_SENSOR_1 == -3 || TEMP_SENSOR_1 == -2
|
||||
#define HEATER_1_USES_MAX6675
|
||||
#if TEMP_SENSOR_1 == -3
|
||||
#define HEATER_1_MAX6675_TMIN -270
|
||||
#define HEATER_1_MAX6675_TMAX 1800
|
||||
#else
|
||||
#define HEATER_1_MAX6675_TMIN 0
|
||||
#define HEATER_1_MAX6675_TMAX 1024
|
||||
#endif
|
||||
#if TEMP_SENSOR_1 != TEMP_SENSOR_0
|
||||
#if TEMP_SENSOR_1 == -5
|
||||
#error "If MAX31865 Thermocouple (-5) is used for TEMP_SENSOR_1 then TEMP_SENSOR_0 must match."
|
||||
#elif TEMP_SENSOR_1 == -3
|
||||
#error "If MAX31855 Thermocouple (-3) is used for TEMP_SENSOR_1 then TEMP_SENSOR_0 must match."
|
||||
#elif TEMP_SENSOR_1 == -2
|
||||
#error "If MAX6675 Thermocouple (-2) is used for TEMP_SENSOR_1 then TEMP_SENSOR_0 must match."
|
||||
#endif
|
||||
#endif
|
||||
#elif TEMP_SENSOR_1 == -4
|
||||
#define HEATER_1_USES_AD8495
|
||||
#elif TEMP_SENSOR_1 == -3
|
||||
#if TEMP_SENSOR_0 == -2
|
||||
#error "If MAX31855 Thermocouple (-3) is used for TEMP_SENSOR_1 then TEMP_SENSOR_0 must match."
|
||||
#endif
|
||||
#define HEATER_1_USES_MAX6675
|
||||
#define HEATER_1_MAX6675_TMIN -270
|
||||
#define HEATER_1_MAX6675_TMAX 1800
|
||||
#elif TEMP_SENSOR_1 == -2
|
||||
#if TEMP_SENSOR_0 == -3
|
||||
#error "If MAX31855 Thermocouple (-3) is used for TEMP_SENSOR_0 then TEMP_SENSOR_1 must match."
|
||||
#endif
|
||||
#define HEATER_1_USES_MAX6675
|
||||
#define HEATER_1_MAX6675_TMIN 0
|
||||
#define HEATER_1_MAX6675_TMAX 1024
|
||||
#elif TEMP_SENSOR_1 == -1
|
||||
#define HEATER_1_USES_AD595
|
||||
#elif TEMP_SENSOR_1 > 0
|
||||
|
@ -33,6 +33,29 @@
|
||||
#include "../core/language.h"
|
||||
#include "../HAL/shared/Delay.h"
|
||||
|
||||
#if ENABLED(MAX6675_IS_MAX31865)
|
||||
#include "Adafruit_MAX31865.h"
|
||||
#ifndef MAX31865_CS_PIN
|
||||
#define MAX31865_CS_PIN CS_PIN // HW:49 SW:65 for example
|
||||
#endif
|
||||
#ifndef MAX31865_MOSI_PIN
|
||||
#define MAX31865_MOSI_PIN MOSI_PIN // 63
|
||||
#endif
|
||||
#ifndef MAX31865_MISO_PIN
|
||||
#define MAX31865_MISO_PIN MISO_PIN // 42
|
||||
#endif
|
||||
#ifndef MAX31865_SCK_PIN
|
||||
#define MAX31865_SCK_PIN SCK_PIN // 40
|
||||
#endif
|
||||
Adafruit_MAX31865 max31865 = Adafruit_MAX31865(MAX31865_CS_PIN
|
||||
#if MAX31865_CS_PIN != CS_PIN
|
||||
, MAX31865_MOSI_PIN // For software SPI also set MOSI/MISO/SCK
|
||||
, MAX31865_MISO_PIN
|
||||
, MAX31865_SCK_PIN
|
||||
#endif
|
||||
);
|
||||
#endif
|
||||
|
||||
#define MAX6675_SEPARATE_SPI (EITHER(HEATER_0_USES_MAX6675, HEATER_1_USES_MAX6675) && PIN_EXISTS(MAX6675_SCK, MAX6675_DO))
|
||||
|
||||
#if MAX6675_SEPARATE_SPI
|
||||
@ -1356,7 +1379,13 @@ void Temperature::manage_heater() {
|
||||
#if ENABLED(HEATER_0_USER_THERMISTOR)
|
||||
return user_thermistor_to_deg_c(CTI_HOTEND_0, raw);
|
||||
#elif ENABLED(HEATER_0_USES_MAX6675)
|
||||
return raw * 0.25;
|
||||
return (
|
||||
#if ENABLED(MAX6675_IS_MAX31865)
|
||||
max31865.temperature(100, 400) // 100 ohms = PT100 resistance. 400 ohms = calibration resistor
|
||||
#else
|
||||
raw * 0.25
|
||||
#endif
|
||||
);
|
||||
#elif ENABLED(HEATER_0_USES_AD595)
|
||||
return TEMP_AD595(raw);
|
||||
#elif ENABLED(HEATER_0_USES_AD8495)
|
||||
@ -1538,6 +1567,10 @@ void Temperature::updateTemperaturesFromRawValues() {
|
||||
*/
|
||||
void Temperature::init() {
|
||||
|
||||
#if ENABLED(MAX6675_IS_MAX31865)
|
||||
max31865.begin(MAX31865_2WIRE); // MAX31865_2WIRE, MAX31865_3WIRE, MAX31865_4WIRE
|
||||
#endif
|
||||
|
||||
#if EARLY_WATCHDOG
|
||||
// Flag that the thermalManager should be running
|
||||
if (inited) return;
|
||||
@ -2033,6 +2066,10 @@ void Temperature::disable_all_heaters() {
|
||||
|
||||
next_max6675_ms[hindex] = ms + MAX6675_HEAT_INTERVAL;
|
||||
|
||||
#if ENABLED(MAX6675_IS_MAX31865)
|
||||
max6675_temp = int(max31865.temperature(100, 400)); // 100 ohms = PT100 resistance. 400 ohms = calibration resistor
|
||||
#endif
|
||||
|
||||
//
|
||||
// TODO: spiBegin, spiRec and spiInit doesn't work when soft spi is used.
|
||||
//
|
||||
|
Reference in New Issue
Block a user