diff options
author | kliment <kliment.yanev@gmail.com> | 2011-07-26 14:16:20 -0700 |
---|---|---|
committer | kliment <kliment.yanev@gmail.com> | 2011-07-26 14:16:20 -0700 |
commit | b3280f5adcb0c968f5f2b1bf5a15d2d1dcc88f44 (patch) | |
tree | aad487f4d52ad0ea29cee92daac5916a899e74cb /Sprinter | |
parent | 15c76d51bbb4fcd2f501670730f62721aaffc108 (diff) | |
parent | 0ca62c559670c0d9878b1ede081267d7142506a5 (diff) |
Merge pull request #62 from alexrj/heater-current-limit
Heater current limit
Diffstat (limited to 'Sprinter')
-rw-r--r-- | Sprinter/Configuration.h | 4 | ||||
-rw-r--r-- | Sprinter/Sprinter.pde | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/Sprinter/Configuration.h b/Sprinter/Configuration.h index 1798642..354e59d 100644 --- a/Sprinter/Configuration.h +++ b/Sprinter/Configuration.h @@ -113,13 +113,15 @@ char uuid[] = "00000000-0000-0000-0000-000000000000"; // Uncomment the following line to enable PID support. This is untested and could be disastrous. Be careful. //#define PIDTEMP 1 #ifdef PIDTEMP -#define PID_MAX 255 // limits current to nozzle #define PID_INTEGRAL_DRIVE_MAX 220 #define PID_PGAIN 180 //100 is 1.0 #define PID_IGAIN 2 //100 is 1.0 #define PID_DGAIN 100 //100 is 1.0 #endif +// Change this value (range 1-255) to limit the current to the nozzle +#define HEATER_CURRENT 255 + // How often should the heater check for new temp readings, in milliseconds #define HEATER_CHECK_INTERVAL 500 #define BED_CHECK_INTERVAL 5000 diff --git a/Sprinter/Sprinter.pde b/Sprinter/Sprinter.pde index 4b93c0e..c6932cf 100644 --- a/Sprinter/Sprinter.pde +++ b/Sprinter/Sprinter.pde @@ -126,6 +126,9 @@ int tt = 0, bt = 0; int temp_iState_min = 100 * -PID_INTEGRAL_DRIVE_MAX / PID_IGAIN; int temp_iState_max = 100 * PID_INTEGRAL_DRIVE_MAX / PID_IGAIN; #endif +#ifndef HEATER_CURRENT + #define HEATER_CURRENT 255 +#endif #ifdef SMOOTHING uint32_t nma = 0; #endif @@ -1444,7 +1447,7 @@ void manage_heater() iTerm = (PID_IGAIN * temp_iState) / 100; dTerm = (PID_DGAIN * (current_raw - temp_dState)) / 100; temp_dState = current_raw; - analogWrite(HEATER_0_PIN, constrain(pTerm + iTerm - dTerm, 0, PID_MAX)); + analogWrite(HEATER_0_PIN, constrain(pTerm + iTerm - dTerm, 0, HEATER_CURRENT)); #else if(current_raw >= target_raw) { @@ -1456,6 +1459,7 @@ void manage_heater() else { WRITE(HEATER_0_PIN,HIGH); + analogWrite(HEATER_0_PIN, HEATER_CURRENT); #if LED_PIN > -1 WRITE(LED_PIN,HIGH); #endif |