Go Down

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

nix_mehr_frei

Hallo,

das Problem wird sein, das deine 5V keine 5V sind und in die Knie gehen, wenn das Relais anzieht oder sonstige Verbraucher dazukommen. Das rührt da her, das standardmäßig die 5V Betriebsspannung als Analogreferenz genutzt werden.
https://www.arduino.cc/en/Reference/AnalogReference
Die 5V über ein ellenlanges USB-Kabel ist da die denkbar schlechteste Option. Wenn die Betriebsspannung stabil ist, sollte man sie zur Sicherheit mit einem Digitalvoltmeter messen und den gemessenen Wert in die Formel übernehmen (z.B. 4.98V)
Diesen ganzen Problemen kannst du mit einem DS18B20 ganz clever aus dem Wege gehen. Dieser Sensor liefert die Temperatur nicht als Analogwert, sondern als digitales Datentelegramm. Dazu kommt noch, das du bei einem analogen Sensor das Kabel schirmen solltest und die Kabellänge auch nicht unbegrenzt lang sein kann. Bei 2 Metern Kabel sollte parallel an den Analogpin gegen Masse noch ein 1µF Folienkondensator (MKT, KKP...) und eine Mittelwertbildung in der Software, um die Werte zu beruhigen, kann auch nicht schaden. Habe eines meiner ersten Projekte, einen Wärmeschrank mit dem ebenfalls analogen LM35 realisiert. Daher kenne ich die "Fallen"  ;)
rot ist blau und Plus ist Minus

nicdi

Mhm werde mir mal einen DS18B20  bestellen. Das Problem muss mit dem Poti oder dem Relais zu tun haben da wenn ich einen Sketch der mit nur die Temperatur anzeigt verwende alles problemlos funktioniert

HotSystems

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ß
Dann bekommst du da irgend welche Störungen rein, die das Ganze beeinflussen.
Gruß Dieter

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

HotSystems

Mhm werde mir mal einen DS18B20  bestellen. Das Problem muss mit dem Poti oder dem Relais zu tun haben da wenn ich einen Sketch der mit nur die Temperatur anzeigt verwende alles problemlos funktioniert
Dann Zieh doch das Relais einfach mal ab.
Gruß Dieter

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

nicdi

Hab ich schon der Fehler kommt trotzdem. Ich meinte damit das der Sensor nicht kaputt ist da er in einem Sketch nur für Temperaturmessung funktioniert.

ardubu

welchen Wert hat das Poti? Kannst du die Werte mit einem MM überprüfen?

nicdi

#36
May 06, 2016, 10:38 pm Last Edit: May 06, 2016, 10:44 pm by nicdi
Im 20k Ohm Messbereich hat er zwischen 0k Ohm und 9,21kOhm. Alternativ habe ich mir überlegt die Temperatur mit 2 buttons (plus minus) einstellen zu können hab jedoch keine Idee wie ich das machen könnte. Die Idee dahinter wäre weil die Buttons ja digital Input und nicht Analog sind... :smiley-confuse:

ardubu

#37
May 07, 2016, 12:09 am Last Edit: May 07, 2016, 12:30 am by ardubu
vielleicht so:
Die Buttons zwischen GND und D4, D5
#define button_1 4
#define button_2 5
bool button_1_state_alt =1;
bool button_2_state_alt =1;
Im Setup
pinmode(button_1,INPUT_PULLUP);
pinmode(button_2,INPUT_PULLUP);
Im Loop
bool button_1_state = digitalRead(button_1);
bool button_2_state = digitalRead(button_2);
if(!button_1_state && button_1_state_alt)
{delay(50);button_1_state_alt = button_1_state;settemp++;}
if(!button_2_state && button_2_state_alt)
{delay(50);button_2_state_alt = button_2_state;settemp--;}
if(settemp<-9)settemp=-10;
if(settemp>49)settemp=50;
dann mußt du nur noch dein delay(2000) ersetzen.



ardubu

versuch's mal so:
Code: [Select]
#define button_1 4
#define button_2 5
bool button_1_state_alt =1;
bool button_2_state_alt =1;
int settemp = 20;
int Wert;
float isttemp;
uint32_t millis_alt=millis();
const int temPin = A5;
const int potPin = A4;
const int rlsPin = 13;
const int bluPin = 2;
const int redPin = 3;
const int yelPin = 12;
const int interval = 2000;
void ausgabe()
{
  Serial.println(settemp);
  Serial.println("*C (Soll-Wert)");
  Serial.print (isttemp);
  Serial.println("*C (Ist-Wert)");
  millis_alt = millis();
}
void setup() {
Serial.begin(9600);
pinMode(rlsPin, OUTPUT);
pinMode(bluPin, OUTPUT);
pinMode(redPin, OUTPUT);
pinMode(yelPin, OUTPUT);
pinMode(button_1,INPUT_PULLUP);
pinMode(button_2,INPUT_PULLUP);
digitalWrite(rlsPin, HIGH);
digitalWrite(bluPin, LOW);
digitalWrite(redPin, LOW);
}

void loop() {
bool button_1_state = digitalRead(button_1);
bool button_2_state = digitalRead(button_2);
if(!button_1_state && button_1_state_alt)
{delay(50);button_1_state_alt = button_1_state;settemp++;}
if(!button_2_state && button_2_state_alt)
{delay(50);button_2_state_alt = button_2_state;settemp--;}
if(settemp<-9)settemp=-10;
if(settemp>49)settemp=50;
 
 int rawvoltage= analogRead(temPin);
 float volts= rawvoltage/205.0;
 isttemp= 100.0 * volts -50;
 
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);
}
if(millis() - millis_alt > interval) ausgabe();
}

uwefed

#39
May 07, 2016, 10:37 am Last Edit: May 07, 2016, 10:38 am by uwefed
Schalt mal an die Analogeingänge an denen der Sensor und der Poti hängen jewils 2 0,1 µF Kondensatoren nach Masse.
Dann im Sketch lies 2 mal den Analogeingang und verwerfe jeweils die erste Messung.
Grüße Uwe

nicdi

#40
May 08, 2016, 07:01 pm Last Edit: May 08, 2016, 07:38 pm by nicdi
So werd mich jetzt wieder ans Projekt setzten und probiere es mal mit 2 Buttons aus habe den Poti aufgegeben... Hab leider keine Kondensatoren da sonst hätte ich das auchnoch probiert!
Gruß
/ edit
habe den code mit 2 btns probiert jedoch ist das Problem das ich die settemp nur um 1 hoch und 1 runterstellen kann

skorpi080

Du willst doch sicher das ganze nachher auch mit nem LCD verschönern, nimm diese Library, ist einfach die beste von den besten ;)

Da gibt es auch Beispiele für ein Encoder und von mir auch wie man Temp Soll einstelln kann.

Zu Dallas Sensoren gibts zich verschiedene Beispiele, hier eines davon.
playground.arduino.cc/PmWiki/433Mhz-Funkmodule
[Arduino IDE] Feinheiten und Tricks  forum.arduino.cc/index.php?topic=632403.0

nicdi

#42
May 08, 2016, 08:43 pm Last Edit: May 08, 2016, 08:49 pm by nicdi
klar lcd liegt schon parat wollte es nur erstmal so hinbekommen :) werde mir die libary anschauen, und wo befindet sich das bsp für den temp soll?
Gruß und Dankeschön!

skorpi080

playground.arduino.cc/PmWiki/433Mhz-Funkmodule
[Arduino IDE] Feinheiten und Tricks  forum.arduino.cc/index.php?topic=632403.0

nicdi

habe das problem gefunden, jedoch keine lösung für. Das problem ist nicht wie angenommen der poti sondern das relais... Ohne dieses funktioniert alles, stecke ich jedoch den IN Pin des relais in den arduino und verbinde gnd vom relais mit gnd stimmen die temperatur werte nicht mehr...

Go Up