Sida 2 av 2

Re: Förbättra vv framledningsstyrning arduino

Postat: 21 juni 2022, 22:13:15
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

Re: Förbättra vv framledningsstyrning arduino

Postat: 26 juli 2022, 20:25:01
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){
      
      }
  }
}
 

Re: Förbättra vv framledningsstyrning arduino

Postat: 26 juli 2022, 20:56:20
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){
      
      }
  }
}

Re: Förbättra vv framledningsstyrning arduino

Postat: 26 juli 2022, 21:00:00
av Sunkann
Tackar letade efter rätt men gick bet.

Re: Förbättra vv framledningsstyrning arduino

Postat: 26 juli 2022, 21:01:30
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.