Förbättra vv framledningsstyrning arduino

Planering och tankar kring eventuella framtida projekt.
Användarvisningsbild
pi314
Inlägg: 5674
Blev medlem: 23 oktober 2021, 19:22:37
Ort: Stockholm

Re: Förbättra vv framledningsstyrning arduino

Inlägg av pi314 »

Här finns mer info om proportionella blandare med länkar till mer detaljerade dokument.

https://esbe.eu/sv/produkter/vridande-s ... portionell

/Pi
Sunkann
Inlägg: 24
Blev medlem: 12 december 2017, 08:00:14

Re: Förbättra vv framledningsstyrning arduino

Inlägg av Sunkann »

Har labbat lite mer nu och har en grovhuggen kod.
Programmet har körts några dagar och både sambon och jag kan duscha efter varandra utan bekymmer, har dock inte kört beredaren tom ännu så vet inte hur väl det fungerar när varmvattnet tar slut om det hinns med att stänga kallvattnet fort nog.
Har satt in en mikrobrytare som begränsar minus slaget, som i nuläget ger lite över 47 grader framledning vid full beredare.
Avsvalningen går fort vid stängda kranar så hamnar i viloläge fort. Blir lite körningar fram och tillbaka dock innan tempen svalnat av under 40 grader.

Hellst skulle jag vilja ha en flödesgivare som angav när det tappas vatten.
Finns det annan lösning för att känna av när det tappas, 2 givare en bit isär varav en isoleras och reglering endast sker när dom visar samma värde?
w
Har även en lcd skärm jag tänkte knåpa in som visar tempen för mig.

Har problem med att få denna delen att funka så fick lägga den i void loop och skärma av med en while loop, vad kan det bero på?

Kod: Markera allt

]void setup() {
  unsigned long tid = 1;
  float tempen = 0 ;
  int tur = 1;


Kod: Markera allt

This is a library for the Adafruit PT100/P1000 RTD Sensor w/MAX31865

  Designed specifically to work with the Adafruit RTD Sensor
  ----> https://www.adafruit.com/products/3328

  This sensor uses SPI to communicate, 4 pins are required to  
  interface
  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ****************************************************/

#include <Adafruit_MAX31865.h>

// Use software SPI: CS, DI, DO, CLK
Adafruit_MAX31865 thermo = Adafruit_MAX31865(10, 11, 12, 13);
// use hardware SPI, just pass in the CS pin
//Adafruit_MAX31865 thermo = Adafruit_MAX31865(10);

// The value of the Rref resistor. Use 430.0 for PT100 and 4300.0 for PT1000
#define RREF      430.0
// The 'nominal' 0-degrees-C resistance of the sensor
// 100.0 for PT100, 1000.0 for PT1000
#define RNOMINAL  100.0

void setup() {
  unsigned long tid = 1;
  float tempen = 0 ;
  int tur = 1;
  int vart = digitalRead(2);
  Serial.begin(9600);
  Serial.println("Adafruit MAX31865 PT100 Sensor Test!");

  thermo.begin(MAX31865_2WIRE);  // set to 2WIRE or 4WIRE as necessary
  pinMode(2, INPUT_PULLUP);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
}


void loop() {
  unsigned long tid = millis();
  float tempen = 1;
  int tur = 0;
  while(true){
  int vart = digitalRead(2);
  float temp = (thermo.temperature(RNOMINAL, RREF));
  Serial.print("Temp = "); Serial.print (temp); Serial.print("   Tempen = "); Serial.println(tempen);
  Serial.print("tur "); Serial.println(tur);
  Serial.print("vart "); Serial.println(vart);
  
  if(temp > 45 && temp < 46){
    tur = 0;
    }
  if(tur >= 10){
    while (vart == HIGH){
      vart = digitalRead(2);
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
    }
    digitalWrite(3,LOW);
    tur = 3;
  
  }
   
    
    if(temp < 40 && tur < 3 ){
      tempen = temp;
      tid = millis() ;
      while(millis() - tid <= 30000){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
    } 
    digitalWrite(3, LOW);
    tur = 8;
    }  
     ++tur;
    if(temp > 40 && temp < 43){
      if(temp - tempen >= 1 || temp - tempen <= -1){
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 10000){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
      
      
    } 
    }
  if(temp > 43 && temp < 44){
      if(temp - tempen >= 0.3 || temp - tempen <= -0.3){
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 5000){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
      
      
    }   
  }
  if(temp > 44 && temp < 44.75 && vart == HIGH){
     if(temp - tempen >= 0.3 || temp - tempen <= -0.3){
      
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 3000){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
      
      }  
  }
  if(temp > 44.75 && temp < 45 && vart == HIGH){
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 1000){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
      
      
    }
  
    if(temp > 46 && temp < 46.25 && vart == HIGH){
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 1000){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
      
      
    }  
    
 
  if(temp > 46.25 && temp < 47 && vart == HIGH){
      if(temp - tempen >= 0.3 || temp - tempen <= -0.3){
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 2000 && vart == HIGH){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
      
      }   
      }
  

  if(temp > 47 && temp < 48 && vart == HIGH){
      if(temp - tempen >= 0.3 || temp - tempen <= -0.3){
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 3000 && digitalRead(2) == HIGH){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
      
      } 
      }
  

if(temp > 48 && temp < 50 && vart == HIGH){
      if(temp - tempen >= 0.3 || temp - tempen <= -0.3){
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 5000 && digitalRead(2) == HIGH){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
      
      }  
      }
  
  if(temp > 50 && vart == HIGH){
      if(temp - tempen >= 1 || temp - tempen <= -1){
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 10000 && digitalRead(2) == HIGH){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
     
      
    }  
  }
  tid = millis();
      while(millis() - tid < 5000){
      
      }
  }
}
 
Senast redigerad av Sunkann 26 juli 2022, 20:59:13, redigerad totalt 1 gång.
nifelheim
Den första
Inlägg: 2318
Blev medlem: 27 mars 2008, 22:31:16
Ort: stockholm

Re: Förbättra vv framledningsstyrning arduino

Inlägg av nifelheim »

Blir en aning lättare att läsa om du använder "Kodvisning" taggen, knappen märkt: </>
:)

Kod: Markera allt

void setup() {
  unsigned long tid = 1;
  float tempen = 0 ;
  int tur = 1;


This is a library for the Adafruit PT100/P1000 RTD Sensor w/MAX31865

  Designed specifically to work with the Adafruit RTD Sensor
  ----> https://www.adafruit.com/products/3328

  This sensor uses SPI to communicate, 4 pins are required to  
  interface
  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ****************************************************/

#include <Adafruit_MAX31865.h>

// Use software SPI: CS, DI, DO, CLK
Adafruit_MAX31865 thermo = Adafruit_MAX31865(10, 11, 12, 13);
// use hardware SPI, just pass in the CS pin
//Adafruit_MAX31865 thermo = Adafruit_MAX31865(10);

// The value of the Rref resistor. Use 430.0 for PT100 and 4300.0 for PT1000
#define RREF      430.0
// The 'nominal' 0-degrees-C resistance of the sensor
// 100.0 for PT100, 1000.0 for PT1000
#define RNOMINAL  100.0

void setup() {
  unsigned long tid = 1;
  float tempen = 0 ;
  int tur = 1;
  int vart = digitalRead(2);
  Serial.begin(9600);
  Serial.println("Adafruit MAX31865 PT100 Sensor Test!");

  thermo.begin(MAX31865_2WIRE);  // set to 2WIRE or 4WIRE as necessary
  pinMode(2, INPUT_PULLUP);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
}


void loop() {
  unsigned long tid = millis();
  float tempen = 1;
  int tur = 0;
  while(true){
  int vart = digitalRead(2);
  float temp = (thermo.temperature(RNOMINAL, RREF));
  Serial.print("Temp = "); Serial.print (temp); Serial.print("   Tempen = "); Serial.println(tempen);
  Serial.print("tur "); Serial.println(tur);
  Serial.print("vart "); Serial.println(vart);
  
  if(temp > 45 && temp < 46){
    tur = 0;
    }
  if(tur >= 10){
    while (vart == HIGH){
      vart = digitalRead(2);
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
    }
    digitalWrite(3,LOW);
    tur = 3;
  
  }
   
    
    if(temp < 40 && tur < 3 ){
      tempen = temp;
      tid = millis() ;
      while(millis() - tid <= 30000){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
    } 
    digitalWrite(3, LOW);
    tur = 8;
    }  
     ++tur;
    if(temp > 40 && temp < 43){
      if(temp - tempen >= 1 || temp - tempen <= -1){
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 10000){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
      
      
    } 
    }
  if(temp > 43 && temp < 44){
      if(temp - tempen >= 0.3 || temp - tempen <= -0.3){
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 5000){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
      
      
    }   
  }
  if(temp > 44 && temp < 44.75 && vart == HIGH){
     if(temp - tempen >= 0.3 || temp - tempen <= -0.3){
      
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 3000){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
      
      }  
  }
  if(temp > 44.75 && temp < 45 && vart == HIGH){
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 1000){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
      
      
    }
  
    if(temp > 46 && temp < 46.25 && vart == HIGH){
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 1000){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
      
      
    }  
    
 
  if(temp > 46.25 && temp < 47 && vart == HIGH){
      if(temp - tempen >= 0.3 || temp - tempen <= -0.3){
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 2000 && vart == HIGH){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
      
      }   
      }
  

  if(temp > 47 && temp < 48 && vart == HIGH){
      if(temp - tempen >= 0.3 || temp - tempen <= -0.3){
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 3000 && digitalRead(2) == HIGH){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
      
      } 
      }
  

if(temp > 48 && temp < 50 && vart == HIGH){
      if(temp - tempen >= 0.3 || temp - tempen <= -0.3){
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 5000 && digitalRead(2) == HIGH){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
      
      }  
      }
  
  if(temp > 50 && vart == HIGH){
      if(temp - tempen >= 1 || temp - tempen <= -1){
      tid = millis();
      tempen = temp ;
      while(millis() - tid <= 10000 && digitalRead(2) == HIGH){ 
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    }
     
    digitalWrite(3, LOW);
    tur = 0;
     
      
    }  
  }
  tid = millis();
      while(millis() - tid < 5000){
      
      }
  }
}
Sunkann
Inlägg: 24
Blev medlem: 12 december 2017, 08:00:14

Re: Förbättra vv framledningsstyrning arduino

Inlägg av Sunkann »

Tackar letade efter rätt men gick bet.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45168
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Förbättra vv framledningsstyrning arduino

Inlägg av TomasL »

Du kan nog glömma att få en vetig reglering på TVV om du inte har cirkulation på den, vilket man normalt sett bara har i en hyresfastighet, sätt dit en termisk blandningsventil, det är det enda som fungerar.
Skriv svar