From 93ced92dc774482a60a9774db81ca9585e5506b4 Mon Sep 17 00:00:00 2001 From: Michael Wiebusch Date: Thu, 16 Apr 2015 15:02:52 +0200 Subject: [PATCH] adapted PID constants to new CPU cooler and fixed the PID overflow bug --- atmega32u4/cooler/cooler.c | 43 ++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/atmega32u4/cooler/cooler.c b/atmega32u4/cooler/cooler.c index 635f52e..72f4770 100644 --- a/atmega32u4/cooler/cooler.c +++ b/atmega32u4/cooler/cooler.c @@ -3,7 +3,7 @@ #include "main.h" #define SET_VAL_UPPER 30*16 //upper limit to set value -#define SET_VAL_LOWER -10*16 //lower limit to set value +#define SET_VAL_LOWER -20*16 //lower limit to set value #define MAX(x,y) (((x) > (y)) ? (x) : (y)) #define MIN(x,y) (((x) < (y)) ? (x) : (y)) @@ -349,37 +349,39 @@ void new_set_value(int16_t value){ // all constants in x/10 #define PID_CONST_PROP 800 #define PID_CONST_INT 15 -#define PID_CONST_DIFF 0 +#define PID_CONST_DIFF 1600 #define PID_ACTOR_OUTPUT_LIMIT 1023 #define PID_INTEGRAL_LIMIT 600 #define PID_FINE_INTERVAL 2*16 // within 2 degrees uint16_t pid_calculation(int16_t error) { - static int16_t intg_error = 0; + static int16_t intg_error = 0; static int16_t last_error = 0; - int16_t diff_error = error-last_error; + int16_t diff_error = error-last_error; - if( abs(error)