Circuit diagram

3Dsimo Kit
Device: 3Dsimo Kit
Rev. 1.00 Page 13/18
// average last n output values
int sumPIDavg = 0 ;
for (int i = 0 ; i< 4 ; i++){
sumPIDavg += pidAvg[i];
}
sumPIDavg >>= 2 ;
return sumPIDavg;
}
# define NO_AVERAGES_VALUES 64
/*
* heating function for heater driving by PID regulator
*/
int heating (){
static int tempAvg[NO_AVERAGES_VALUES]; // temperature array for averaging it
static int tempAvgIter = 0 ; // current index in temperature array
static char firstTime = 0 ; // if is 1, this function ran at least one time
char text[ 30 ]; // buffer for text
// variables initialization
if (!firstTime){
memset(tempAvg, 0 , sizeof (tempAvg)* sizeof ( int ));
firstTime = 1 ;
}
// resolve PID value for heater PWM
int temperature = getTemperature ();
int valuePID = getPIDoutput (setTemperature, temperature, 255 , 0 );
analogWrite (HEATER_EN, valuePID);
// save actual temperature for averaging
tempAvg[tempAvgIter] = temperature;
if (++tempAvgIter>=NO_AVERAGES_VALUES)
tempAvgIter = 0 ;
// make temperature average from NO_AVERAGES_VALUES
int sumTemp = 0 ;
for ( int i = 0; i<NO_AVERAGES_VALUES; i++){
sumTemp += tempAvg[i];
}
sumTemp /= NO_AVERAGES_VALUES;
// show on display actual and preset temperature