Här finns mer info om proportionella blandare med länkar till mer detaljerade dokument.
https://esbe.eu/sv/produkter/vridande-s ... portionell
/Pi
Förbättra vv framledningsstyrning arduino
Re: Förbättra vv framledningsstyrning arduino
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å?
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.
Re: Förbättra vv framledningsstyrning arduino
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
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.