summaryrefslogtreecommitdiff
path: root/Sprinter/Configuration.h
diff options
context:
space:
mode:
authorKeegi <keegi@spamcop.net>2011-08-09 10:56:34 +0300
committerKeegi <keegi@spamcop.net>2011-09-17 17:43:09 +0300
commitc6a228d62ed7f42eb2a019801d9fa4316b45bdb7 (patch)
treece41e578ec85d0075d073def9239ae5be8c8dec6 /Sprinter/Configuration.h
parentd6fe1dab44a452fcd223c03524698f040407e61f (diff)
PID fixes
Diffstat (limited to 'Sprinter/Configuration.h')
-rw-r--r--Sprinter/Configuration.h12
1 files changed, 8 insertions, 4 deletions
diff --git a/Sprinter/Configuration.h b/Sprinter/Configuration.h
index bc00ce1..df55c7d 100644
--- a/Sprinter/Configuration.h
+++ b/Sprinter/Configuration.h
@@ -120,10 +120,14 @@ 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
#ifdef PIDTEMP
-#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
+#define PID_INTEGRAL_DRIVE_MAX 80 // too big, and heater will lag after changing temperature, too small and it might not compensate enough for long-term errors
+#define PID_PGAIN 1280 //256 is 1.0 // value of 5.0 means that error of 20C is changing it almost halfway of the PWM range
+#define PID_IGAIN 64 //256 is 1.0 // value of 0.25 means that each degree error over 1 sec (2 measurements) changes duty cycle by 0.5 units (verify?)
+#define PID_DGAIN 2048 //256 is 1.0 // value of 8.0 means that each degree change over one measurement (half second) adjusts PWM by 8 units to compensate
+// magic formula 1, to get approximate "zero error" PWM duty. It is most likely linear formula
+#define HEATER_DUTY_FOR_SETPOINT(setpoint) (22+1*setpoint)
+// magic formula 2, to make led brightness approximately linear
+#define LED_PWM_FOR_BRIGTHNESS(brightness) ((64*brightness-1384)/(300-brightness))
#endif
// Change this value (range 1-255) to limit the current to the nozzle