Hallo zusammen!
Ich probiere mit meinem Arduino UNO eine Temperaturschaltung zu bauen. Diese sieht wie folgt aus:
Mit einem LM35 wird die Temperatur gemessen, über ein Poti wird eine Zahl eingestellt. Nun soll je nach größe der Temperatur (im Verhältniss zur Zahl vom Poti) das PWM Signal geändert werden. Hintergrund ist, das die Temperatur nicht über den Wert der Potizahl kommen soll, sich aber nachher asymptotisch daran annähern soll.
Hat irgendjemand eine Idee wie man das machen kann? Mit meinem Code klappts nicht so ganz...
float celsius1 = 0; //storage for Temperature 1
float setcelsius = 0; //storage for the Temperature set
void setup()
{
Serial.begin(9600); //Allow the board to communicate with computer
Serial.println("Temperaturmessung"); //caption on monitor
pinMode(11,OUTPUT);
}
void loop()
{
findTemps(); //function mesuring the temperatures
setTemps(); //function to set the temperature
displayTemps(); //function displaying the temperatures
delay(1000);
heat1();
}
void findTemps()
{
float sensor1 = 0;
//Read the temperature and convert to °C
sensor1 = analogRead(0);
celsius1 = (5.0 * sensor1 * 100.0) / 1024;
delay(5);
}
void displayTemps()
{
Serial.print ("Temperatur 1 ist");
Serial.print (celsius1 , 2);
Serial.println (" °C ");
Serial.print("Temperatur soll"); //temperatur set
Serial.print (setcelsius , 2 );
Serial.println(" °C ");
}
void setTemps()
{
float poti = 0;
poti = analogRead(3);
setcelsius = poti / 40;
setcelsius = setcelsius + 15;
delay(5);
}
void heat1()
{
int d;
for (setcelsius - 20 < celsius1 ; d=255;)
for (setcelsius - 20 < celsius1 < setcelsius - 10 ; d = 255 ;)
for (setcelsius - 10 < celsius1 < setcelsius - 5 ; d = 180 ;)
for (setcelsius - 5 < celsius1 < setcelsius - 3 ; d = 50 ;)
for (setcelsius - 3 < celsius1 < setcelsius - 1 ; d = 25 ;)
for (setcelsius - 1 < celsius1 < setcelsius ; d = 10 ;)
for (celsius1 < setcelsius ; d = 0 ;)
analogWrite(11,d);
delay(200);
analogWrite(11,0);
delay(100);
}
vielen Dank schonmal im Vorraus!