From 73344e69c1cd361164aa67af9ab28344f17a1227 Mon Sep 17 00:00:00 2001 From: Daid Date: Thu, 16 Feb 2012 11:03:41 +0100 Subject: [PATCH] Added temperature offset/gain settings for AD595. --- Marlin/Configuration.h | 6 ++++++ Marlin/temperature.cpp | 8 ++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index f0d8913631..eed1895d4f 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -66,6 +66,12 @@ #define HEATER_2_MAXTEMP 275 #define BED_MAXTEMP 150 +//These defines help to calibrate the AD595 sensor in case you get wrong temperature measurements. +//The measured temperature is defined as "actualTemp = (measuredTemp * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET" +#define TEMP_SENSOR_AD595_OFFSET 0.0 +#define TEMP_SENSOR_AD595_GAIN 1.0 + + // PID settings: // Comment the following line to disable PID and enable bang-bang. #define PIDTEMP diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp index 2f3888c018..9103127f70 100644 --- a/Marlin/temperature.cpp +++ b/Marlin/temperature.cpp @@ -312,7 +312,7 @@ int temp2analog(int celsius, uint8_t e) { return (1023 * OVERSAMPLENR) - raw; } - return celsius * (1024.0 / (5.0 * 100.0) ) * OVERSAMPLENR; + return ((celsius-TEMP_SENSOR_AD595_OFFSET)/TEMP_SENSOR_AD595_GAIN) * (1024.0 / (5.0 * 100.0) ) * OVERSAMPLENR; } // Takes bed temperature value as input and returns corresponding raw value. @@ -342,7 +342,7 @@ int temp2analogBed(int celsius) { return (1023 * OVERSAMPLENR) - raw; #elif defined BED_USES_AD595 - return lround(celsius * (1024.0 * OVERSAMPLENR/ (5.0 * 100.0) ) ); + return lround(((celsius-TEMP_SENSOR_AD595_OFFSET)/TEMP_SENSOR_AD595_GAIN) * (1024.0 * OVERSAMPLENR/ (5.0 * 100.0) ) ); #else #warning No heater-type defined for the bed. return 0; @@ -390,7 +390,7 @@ float analog2temp(int raw, uint8_t e) { return celsius; } - return raw * ((5.0 * 100.0) / 1024.0) / OVERSAMPLENR; + return ((raw * ((5.0 * 100.0) / 1024.0) / OVERSAMPLENR) * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET; } // Derived from RepRap FiveD extruder::getTemperature() @@ -421,7 +421,7 @@ float analog2tempBed(int raw) { return celsius; #elif defined BED_USES_AD595 - return raw * ((5.0 * 100.0) / 1024.0) / OVERSAMPLENR; + return ((raw * ((5.0 * 100.0) / 1024.0) / OVERSAMPLENR) * TEMP_SENSOR_AD595_GAIN) + TEMP_SENSOR_AD595_OFFSET; #else #warning No heater-type defined for the bed. #endif