Pages: [1]   Go Down
Author Topic: Dreipunktregelung  (Read 761 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 8
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo an alle, ich bin ein absoluter Neuling, suche aber eine Lösung für mein Arduino Duemillanove, mit der eine Dreipunktregelung für Heizung und Lüftung realisiert werden kann. Ich habe eine Temperatursensor, möchte die Werte auf einem Display ablesen können und was wichtig ist das ich die Werte ohne Computer ändern kann. Ich dacht dabei an Taster, je einen für "set" , "+" ,"-".
Für eine Lösung wäre ich dankbar.

Logged

Germany
Offline Offline
Edison Member
*
Karma: 44
Posts: 2261
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Herzlich willkommen! Hast du schon ein par Zeilen Code zusammengebastelt oder erwartest du hier ein komplette Lösung? Hier im Forum ist eher "Hilfe zur Selbsthilfe" angesagt. smiley-wink
Um welchen Temperatursensor handelt es sich denn?
« Last Edit: November 24, 2012, 06:35:50 pm by sth77 » Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Sr. Member
****
Karma: 1
Posts: 353
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich hab ähnliches mit einem Encoder gemacht.

Nach rechts drehen: Wert erhöhen
nach links drehen: Wert verringern
Encoder-Taste betätigen: Wert übernehmen, (oder auf Default setzen, oder......)

Beispiele und eine Lib findest du z.B. hier
http://www.pjrc.com/teensy/td_libs_Encoder.html
Logged

Arduino 1.0.5 | Arduino UNO & MEGA | Arduino 1.54r2 mit DUE

Germany S-H
Offline Offline
Edison Member
*
Karma: 117
Posts: 2448
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo und Danke erstmal, das mit den Temperaturen messen und dem Display klappt schon, nur habe ich keine Idee wie ich das mit den Veränderbaren  werten hinkriegen soll. Als Temperatursensor habe ich einen Dallas.

Entweder baust Du zwei Stell-Potentiometer in die Schaltung, deren Stellung Du über einen Analog-Input abfragen kannst, um die Sollwerte vorzugeben.

Oder Du machst eine Tastensteuerung über digitale Pins. Zwei Taster für Temperatur hoch/runter um den Schaltpunkt der Heizung einzustellen und zwei Taster für den Schaltpunkt des Lüfters. Damit bei Stromausfall die Einstellwerte nicht verlorengehen, müßten die Einstellwerte im Eprom-Speicher gespeichert werden, von wo aus sie beim Reset des Controllers dann jeweils gelesen werden.
Logged

Germany
Offline Offline
Edison Member
*
Karma: 44
Posts: 2261
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich gehe mal davon aus, dass dein Dreipunktregler mit festen Sollwerten schon funktioniert. Die Einstellung der Sollwerte würde ich in etwa so realisieren:
Code:
int ButtonPlus = 2;
int ButtonMinus = 4;
int ButtonSet = 3;

int Sollwert1 = 20;  
int Sollwert2 = 25;
boolean SetSW1 = false;
boolean SetSW2 = false;

unsigned long Zeitstempel;

void setup(){
  Serial.begin (9600);
  pinMode (ButtonPlus, INPUT_PULLUP);
  pinMode (ButtonMinus, INPUT_PULLUP);
  pinMode (ButtonSet, INPUT_PULLUP);
}

void loop (){
  if (digitalRead(ButtonSet)==LOW && SetSW1==false && SetSW2==false){
    SetSW1 = true;
    Zeitstempel = millis();
    Ausgabe();
    delay (200);
  }
  if (digitalRead(ButtonSet)==LOW && SetSW1==true && SetSW2==false){
    SetSW2 = true;
    SetSW1 = false;
    Zeitstempel = millis();    
    Ausgabe();
    delay (200);
  }
  if (digitalRead(ButtonPlus)==LOW){
    if (SetSW1==true){
      Sollwert1++;  
      Ausgabe();
    delay (200);
    }
    if (SetSW2==true){
      Sollwert2++;  
      Ausgabe();      
      delay (200);
    }  
  }  
  if (digitalRead(ButtonMinus)==LOW){
    if (SetSW1==true){
      Sollwert1--;  
      Ausgabe();      
      delay (200);
    }
    if (SetSW2==true){
      Sollwert2--;  
      Ausgabe();      
      delay (200);
    }  
  }
  if (millis()-Zeitstempel>3000){
    SetSW1 = false;
    SetSW2 = false;
  }  
}

void Ausgabe(){
  Serial.print (SetSW1);
  Serial.print (" SW1: ");
  Serial.print (Sollwert1);
  Serial.print (" ");
  Serial.print (SetSW2);
  Serial.print (" SW2: ");
  Serial.println (Sollwert2);
}
Dabei gibt es noch einige Verbesserungen, die man einpflegen könnte und auch sollte. Das wäre vor allem das Entprellen der Taster, ich habe hier einfach mit einem delay gearbeitet. Weiterhin sollte man noch die eingestellten Sollwerte auf ihre Gültigkeit prüfen: SW2 muss immer größer sein als SW1, beide Werte dürfen nicht negativ werden usw.. Günstig wäre es auch die Sollwerte im Eeprom zu speichern, dass die nach einem Stromausfall auch wieder die richtigen Daten vorliegen. Die Ausgabe müsste selbstverständlich auf dein LCD angepasst werden, selbst lasse ich das ja nur im seriellen Monitor anzeigen.
Ich bin jetzt einfach davon ausgegangen, dass dein Dreipunktregler ansonsten schon funktioniert und habe den nicht implementiert.

Ansonsten solltest du dich nicht so bedeckt halten und ruhig deinen bisherigen Code posten. smiley-wink
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Pages: [1]   Go Up
Jump to: