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){
}
}
}