int pwm = 0;
int Tsoll = 30;
int esum = 0;
int Kp = 3;
int Begrenzer = 200;
int y = 0;
int Tabt = 0.1;
int Tempin = 0;
int PwmOut = 5;
void setup(){
Serial.begin(9600);
pinMode(PwmOut, OUTPUT);
pinMode(Tempin, INPUT);
}
void loop(){
y = PIR();
luefterspeed(y);
delay(100);
}
int PIR(){
float e = Tempmess() - Tsoll;
esum = esum + e;
if(esum < Begrenzer*(-1)){
esum = Begrenzer * (-1);
}
if(esum > Begrenzer){
esum = Begrenzer;
}
int pwm = Kp * e + 0.00 * Kp * esum * Tabt;
if(pwm > 255){
pwm = 255;
}
if(pwm < 0){
pwm = 0;
}
return pwm;
}
//Messen der Temp in Celsius
float Tempmess(){
float Celsius = 0;
Celsius = analogRead(Tempin) * 0.004882812 * 100 - 273.15;
Serial.println(Celsius);
return Celsius;
}
//PWM-Signal Verarbeitung und Einstellung
void luefterspeed(int speed){
speed = 255 - speed;
analogWrite(PwmOut, speed);
}