Go Down

Topic: Problem bei 2 Punkt Regelung (Read 2676 times) previous topic - next topic

nicdi

#15
May 06, 2016, 04:03 pm Last Edit: May 07, 2016, 10:32 am by uwefed Reason: add [CODE] TAGs </>
Code: [Select]
int settemp;
int isttemp;
int Wert;
int temPin = A5;
int potPin = A4;
int rlsPin = 13;
int bluPin = 2;
int redPin = 3;
int yelPin = 12;
void setup() {
 // put your setup code here, to run once:
Serial.begin(9600);
pinMode(rlsPin, OUTPUT);
pinMode(bluPin, OUTPUT);
pinMode(redPin, OUTPUT);
pinMode(yelPin, OUTPUT);
digitalWrite(rlsPin, HIGH);
digitalWrite(bluPin, LOW);
digitalWrite(redPin, LOW);
}

void loop() {

   Wert = analogRead(potPin);

   settemp = map(Wert, 0, 1023, -10, 50);
   Serial.print(settemp);
   Serial.println("*C (Soll-Wert)");

   int rawvoltage = analogRead(temPin);
   float volts = rawvoltage / 205.0;
   float isttemp = 100.0 * volts - 50;
   Serial.print (isttemp);
   Serial.println("*C (Ist-Wert)");
   delay(2000);


 if (isttemp < settemp) {
   digitalWrite(rlsPin, LOW);
   digitalWrite(redPin, HIGH);
   digitalWrite(bluPin, LOW);
   digitalWrite(yelPin, HIGH);
 } else {
   digitalWrite(rlsPin, HIGH);
   digitalWrite(redPin, LOW);
   digitalWrite(bluPin, HIGH);
   digitalWrite(yelPin, LOW);
 }
}

das ist der Sketch momentan. Wenn das lokale float rausnehme fehlt mir doch "100.0 * volts - 50;"? Nehme ich das globale "int isttemp" raus sind die gemessenen Werte unrealistisch

ardubu

#16
May 06, 2016, 04:12 pm Last Edit: May 06, 2016, 04:17 pm by ardubu
versuch's mal so
Code: [Select]
int settemp;
float isttemp;
int Wert;
const int temPin = A5;
const int potPin = A4;
const int rlsPin = 13;
const int bluPin = 2;
const int redPin = 3;
const int yelPin = 12;
void setup() {
 // put your setup code here, to run once:
Serial.begin(9600);
pinMode(rlsPin, OUTPUT);
pinMode(bluPin, OUTPUT);
pinMode(redPin, OUTPUT);
pinMode(yelPin, OUTPUT);
digitalWrite(rlsPin, HIGH);
digitalWrite(bluPin, LOW);
digitalWrite(redPin, LOW);
}

void loop() {

 Wert = analogRead(potPin);
 settemp =map(Wert, 0, 1023, -10, 50);
 Serial.print(settemp);
 Serial.println("*C (Soll-Wert)");

 int rawvoltage= analogRead(temPin);
 float volts= rawvoltage/205.0;
 isttemp= 100.0 * volts -50;
 Serial.print (isttemp);
 Serial.println("*C (Ist-Wert)");
 delay(2000);

if (isttemp < settemp) {
 digitalWrite(rlsPin, LOW);
 digitalWrite(redPin, HIGH);
 digitalWrite(bluPin, LOW);
 digitalWrite(yelPin, HIGH);
} else
if (isttemp > settemp + 1)
{
 digitalWrite(rlsPin, HIGH);
 digitalWrite(redPin, LOW);
 digitalWrite(bluPin, HIGH);
 digitalWrite(yelPin, LOW);
}
}

nicdi

Funktioniert schon etwas besser, jedoch immernoch das Problem das sobald ich das Potentiometer hochdrehe (also denn Sollwert) die Ist temperatur mitsteigt:
50*C (Soll-Wert) // Sollwert hochgestellt
27.07*C (Ist-Wert)
49*C (Soll-Wert)
34.88*C (Ist-Wert)
49*C (Soll-Wert)
34.88*C (Ist-Wert) // Temperatur steigt
-9*C (Soll-Wert)  // Sollwert runtergestellt
34.39*C (Ist-Wert)
-10*C (Soll-Wert)
22.68*C (Ist-Wert) // Temp wieder auf dem wirklichen IST Stand

ardubu

versuch mal für das Poti den A0 zu nehmen

HotSystems

#19
May 06, 2016, 04:34 pm Last Edit: May 06, 2016, 04:36 pm by HotSystems
Funktioniert schon etwas besser, jedoch immernoch das Problem das sobald ich das Potentiometer hochdrehe (also denn Sollwert) die Ist temperatur mitsteigt:
50*C (Soll-Wert) // Sollwert hochgestellt
27.07*C (Ist-Wert)
49*C (Soll-Wert)
34.88*C (Ist-Wert)
49*C (Soll-Wert)
34.88*C (Ist-Wert) // Temperatur steigt
-9*C (Soll-Wert)  // Sollwert runtergestellt
34.39*C (Ist-Wert)
-10*C (Soll-Wert)
22.68*C (Ist-Wert) // Temp wieder auf dem wirklichen IST Stand
Das ist nicht besser, sondern immer noch "Mist". Das darf nicht sein.

Was hast du für ein Netzteil dran? Ist die Spannung sauber und stabil?

Wie lang sind die Kabel?

Und warum packst du den Sketch nicht in Code-Tags?
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

nicdi

Ich versorge den Arduino über den USB von meinem Rechner mit Strom.
Gruß

HotSystems

Ich versorge den Arduino über den USB von meinem Rechner mit Strom.
Gruß
Und Kabellänge?
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

ardubu

lege mal den 3,3V pin auf A5 und lasse dir Serial.println(analogRead(A5))auf dem Seriellen Monitor anzeigen und drehe dann am Poti

nicdi

hatte es über eine usb verlängerung angeschlossen, Kabellänge dürfte knapp 1 1/2 m sein, hab es eben aber nur mit dem original mitgeliefertem Kabel probiert (circa 40cm) und das Problem trat immernoch auf.

HotSystems

hatte es über eine usb verlängerung angeschlossen, Kabellänge dürfte knapp 1 1/2 m sein, hab es eben aber nur mit dem original mitgeliefertem Kabel probiert (circa 40cm) und das Problem trat immernoch auf.

Sorry, ich meinte die Länge der Anschlüsse zu A5 bzw. A4 (Poti und Sensor).
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

nicdi

Also habe den 3,3V anschluss auf A5 angeschlossen und bekam Werte von 693-695, konnte jedoch keinen zusammenhang mit dem Poti feststellen.
Die Länge von Arduino zu Sensor/Poti sind max 20cm lang.
Gruß

Scherheinz

#26
May 06, 2016, 04:56 pm Last Edit: May 06, 2016, 04:59 pm by Scherheinz
Dein gemessener Wert passt doch zu den 3,3V. Du hast das Poti mit Sicherheit falsch angeschlossen und gibst dauerhaft 3,3V auf den Eingang. Zeig mal oder beschreib mal deine Verkabelung

Hier könnte ihre Werbung stehen

nicdi

Glaub ich nicht, der Soll Wert verändert sich ja wie er soll von -10 bis +50*C. Weiter oben ist auch ein Plan wie ich alles verdrahtet habe.

Scherheinz

Sorry dann habe ich den Post #25 nicht ganz verstanden
Hier könnte ihre Werbung stehen

nicdi

#25 dort ging es drum um zu überprüfen ob der Poti einfluss auf den Temperatursensor nimmt welcher auf A5 liegt

Go Up