Hola
Se me estropeo la nevera el otro dia y dado que no hay repuesto de la placa, me he decidido a hacerlo con arduino.
El problema que tengo es que los sensores (tanto del congelador como de la nevera) dan cifras distintas si alguno de los dos compresores esta en marcha.
Por cierto, es imposible llegar a los sensores para quitarlos y cambiarlos.... solo esta accesible los cables en la placa.
En la parte de la nevera no me preocupa mucho porque por el agujero de desague puedo meter un ds18b20... el problema es en el congelador... a malas intentaria taladrar el fondo para meter otro ds... pero corro el riesgo de acertarle a uno de los tubos del refrigerante...
El caso es que tengo un boceto principalmente de condicionales basandome en mediciones del sensor del congelador en todas las situaciones posibles:
nevera y congelador ON
nevera y congelador OFF
nevera ON y congelador OFF
nevera OFF y congelador ON
pero el soft no funciona bien...
y de verdad que ya no se por donde seguir...
Por favor, podéis echarme una mano... aunque sea al cuello.
Gracias
int rele1 = 7; //rele nevera conectado a pin 7
int rele2 = 8; //rele congelador conectado a pin 8
int lecturasensor2;
int estado = 0;
int rele1Status;
int rele2Status;
void setup() {
pinMode(rele1, OUTPUT); //especifico que el pin7 es de salida
pinMode(rele2, OUTPUT); //especifico que el pin 8 es de salida
digitalWrite(rele1,LOW); //dejo el rele 1 en posicion OFF
rele1Status = LOW;
digitalWrite(rele2,LOW); //dejo el rele 2 en posicion OFF
rele2Status = LOW;
lecturasensor2 = 0; //dejo a 0 el valor del sensor 2
Serial.begin(9600);
}
void loop() {
lecturasensor2 = 190; //este valor sera el que de el sensor a traves de analogRead(A0) pero para pruebas uso un valor numerico
if (rele1Status==HIGH){
if (rele2Status==HIGH){
if (lecturasensor2>183){
digitalWrite(rele2,HIGH);
rele2Status = HIGH;
}
}
if(rele2Status==LOW){
if(lecturasensor2>156){
digitalWrite(rele2,HIGH);
rele2Status = HIGH;
}
}
}
if (rele1Status==LOW){
if (rele2Status==HIGH){
if (lecturasensor2>168){
digitalWrite(rele2,HIGH);
rele2Status = HIGH;
}
if(rele2Status==LOW){
if(lecturasensor2>121){
digitalWrite(rele2,HIGH);
rele2Status = HIGH;
}
}
}
}
estado = digitalRead(rele2);
if(estado==1){
Serial.println("ON");
}
else Serial.println("OFF");
delay(2000);
}
No hay esquemático atrás... Llevo metido detrás de la dichosa nevera 2 días...
El modelo si... Es una fagor innova
Los datos concretos si que los puedo sacar porque está esa pegatina.
Hi,
Hice un google y encontre vendedores de la nevera pero se necesita el modelo. Algunos vendedores de piezas tienen esquematicos y como localizarlo en el equipo. Hace falta el modelo.
Haz chequeado el termostato del frizer tienn 3 cables
Hola
La nevera es una Fagor modelo FC - 48 XED
Yo busqué y no lo vi... Aparentemente en gmfile.es si que está pero el enlace no lleva a ningún sitio.
Lo mejor desde luego sería conseguirlo pero yo no he podido encontrarlo.
Y fuera de esa página, ya no vi más.
La mejor solución desde luego sería ponerle 2 sondas ds nuevas pero habiendo revisado la nevera... Me da que están inaccesibles.
Los termostatos que lleva son de 2 hilos.... En total lleva 4 hilos de los dos termostatos.... Y hasta la placa llegaban con las 2 funda aislantes.... Así que a priori no hay más cables por ahí perdidos.
Revisando por internet la mayoría de los vídeos que se ven de neveras y acc son con dos hilos...
Pues tenías toda la razón.... Era un problema de lógica... Creo que ya el código me funciona.
Me faltará incluir la parte de la sonda ds y también histéresis para que en el tramo "frontera" no se vuelva loco activando y desactivando.... Tengo que ver como va lo de la histéresis porque no tengo ni idea.
Lo que igual tomo medidas de nuevo para ver si pudiera respetar la sonda de la nevera al igual que respeto la del congelador... Pero me da, que eso ya lo convertirá en un galimatías....
Con respecto a los relés las pruebas las estoy haciendo con unos relés chinos.... Y es justo como dices.... Pensaba que al ir a usar unos decentes.... Los compraré en un rato... Y los comprobaré.
Pero en principio (tengo que pensarlo) solo será cambiar low por high y viceversa, no?
Este es el código corregido a expensas de lo que he comentado antes:
int rele1 = 7; //rele nevera conectado a pin 7
int rele2 = 8; //rele congelador conectado a pin 8
int lecturasensor2;
int estado = 0;
int rele1Status;
int rele2Status;
void setup() {
pinMode(rele1, OUTPUT); //especifico que el pin7 es de salida
pinMode(rele2, OUTPUT); //especifico que el pint8 es de salida
digitalWrite(rele1,LOW); //dejo el rele 1 en posicion ON
rele1Status = LOW;
digitalWrite(rele2,HIGH); //dejo el rele 2 en posicion ON
rele2Status = HIGH;
lecturasensor2 = 0; //dejo a 0 el valor del sensor 2
Serial.begin(9600);
}
void loop() {
lecturasensor2 = 100; //este valor sera el que de el sensor a traves de analogRead(A0) pero para pruebas uso un valor numerico
if(rele1Status==LOW){
if(rele2Status==LOW){
if(lecturasensor2>121){
digitalWrite(rele2,HIGH);
rele2Status=HIGH;
}
}
}
if(rele1Status==HIGH){
if(rele2Status==LOW){
if(lecturasensor2>156){
digitalWrite(rele2,HIGH);
rele2Status=HIGH;
}
}
}
if(rele1Status==LOW){
if(rele2Status==HIGH){
if(lecturasensor2<168){
digitalWrite(rele2,LOW);
rele2Status=LOW;
}
}
}
if(rele1Status==HIGH){
if(rele2Status==HIGH){
if(lecturasensor2<183){
digitalWrite(rele2,LOW);
rele2Status=LOW;
}
}
}
estado = digitalRead(rele2);
if(estado==1){
Serial.println("ON");
}
else Serial.println("OFF");
delay(2000);
}
para evitar escalar mucho los "if" condiciones talvez mejor usas operadores lógicos como
if( rele1Status==LOW && rele2Status==HIGH && lecturasensor<168) {....}
te hace mas fácil de revisar y no olvides cerrar los }
Eso es lo que estoy intentando hacer ahora que estoy metiendo la parte del segundo sensor.
Y ya veremos si sale porque me preocupa el tema de la histéresis pero una cosa detrás de otra.
De todas formas, ya que lo nombró....
¿Hay alguna forma sencilla de poner que después de un digitalWrite haga una pausa de 5 minutos o así sin que vuelva a hacer otro digitalWrite?
Esto le daría tiempo suficiente al aparato de enfriar o de calentarse lo suficiente para que no haya esos micro encendidos o micro apagados al estar en la "frontera"...
Perdonar por usar esos términos pero es que no se cómo explicarlo correctamente.
Gracias por el intento pero este manual es de lavavajillas.... La avería es en la nevera...
Y no te creas que el lavavajillas me va muy fino (pero no es Fagor y es más sencillo.... La bomba de desagüe).
Lo dicho, muchas gracias por las molestias
Hi,
Segui buscando y solamente pude encorar una fotografia de la nevera. Apaentemente tienen el manual de servicio controlado solamente para los tecnico de reparacion.
No te preocupes.
Se agradece el intento... Yo lo maximo.que he visto es la página esa que he dicho antes.... Y no lleva a ningún sitio..
No tenía ninguna esperanza porque he revisado el aparato completo y lo maximo que me he acercado al sensor es en el extremo de los hilos que van a placa.
Buenos días
Ya he metido las condicionales para el segundo sensor y me ha surgido un problema...
Ejemplo... partiendo de ambos sensores en low, si se cumple la condición uno de ellos pasa a ser high... por lo que encendera el compresor...
el problema es que mas abajo, hay otra condición que vuelve a cumplirse... y me lo vuelve a cambiar....
¿Se os ocurre como evitar que pase esto?
Gracias
Añado: los serial.print que hay por todas partes los he usado para descubrir el problema porque no me salia el on y off como me correspondia.
int rele1 = 7; //rele nevera conectado a pin 7
int rele2 = 8; //rele congelador conectado a pin 8
int lecturasensor1;
int lecturasensor2;
int estado1 = 0;
int estado2 = 0;
int rele1Status;
int rele2Status;
void setup() {
pinMode(rele1, OUTPUT); //especifico que el pin7 es de salida
pinMode(rele2, OUTPUT); //especifico que el pint8 es de salida
digitalWrite(rele1, LOW); //dejo el rele 1 en posicion ON
rele1Status = LOW;
digitalWrite(rele2, LOW); //dejo el rele 2 en posicion ON
rele2Status = LOW;
lecturasensor2 = 0; //dejo a 0 el valor del sensor 2
Serial.begin(9600);
}
void loop() {
lecturasensor1 = 300; //este valor sera el que de el sensor a traves de analogRead(A1) pero para pruebas uso un valor numerico
lecturasensor2 = 160; //este valor sera el que de el sensor a traves de analogRead(A0) pero para pruebas uso un valor numerico
if (rele1Status == LOW) {
if (rele2Status == LOW) {
if (lecturasensor2 >= 145 & lecturasensor1 >= 314) {
Serial.print("1-1");
digitalWrite(rele2, HIGH);
digitalWrite(rele1, HIGH);
rele2Status = HIGH;
rele1Status = HIGH;
}
if (lecturasensor2 < 145 & lecturasensor1 < 314) {
//NO HACER NADA, BORRAR?????
//digitalWrite(rele2,LOW);
//digitalWrite(rele1,LOW)
//rele2Status=LOW;
//rele1Status=LOW;
Serial.print("1-2");
}
if (lecturasensor2 >= 145 & lecturasensor1 < 314) {
Serial.print("1-3");
digitalWrite(rele2, HIGH);
rele2Status = HIGH;
}
if (lecturasensor2<145 & lecturasensor1 >= 314) {
Serial.print("1-4");
digitalWrite(rele1, HIGH);
rele1Status = HIGH;
}
}
}
if (rele1Status == HIGH) {
if (rele2Status == LOW) {
if (lecturasensor2 >= 166 & lecturasensor1 >= 331) {
Serial.print("2-1");
digitalWrite(rele2, HIGH);
rele2Status = HIGH;
}
if (lecturasensor2 >= 166 & lecturasensor1 < 331) {
Serial.print("2-2");
digitalWrite(rele2, HIGH);
rele2Status = HIGH;
digitalWrite(rele1, LOW);
rele1Status = LOW;
}
if (lecturasensor2 < 166 & lecturasensor1 < 331) {
Serial.print("2-3");
digitalWrite(rele1, LOW);
rele1Status = LOW;
}
if (lecturasensor2<166 & lecturasensor1 >= 331) {
// NO HACER NADA
// digitalWrite(rele1,LOW);
// rele1Status=LOW;
Serial.print("2-4");
}
}
}
if (rele1Status == LOW) {
if (rele2Status == HIGH) {
if (lecturasensor2 <= 171 & lecturasensor1 <= 335) {
Serial.print("3-1");
digitalWrite(rele2, LOW);
rele2Status = LOW;
}
if (lecturasensor2 <= 171 & lecturasensor1 > 335) {
Serial.print("3-2");
digitalWrite(rele1, HIGH);
rele1Status = HIGH;
}
if (lecturasensor2 > 171 & lecturasensor1 <= 335) {
// NO HACER NADA
//digitalWrite(rele2,HIGH);
//rele2Status=HIGH;
Serial.print("3-3");
}
if (lecturasensor2 > 171 & lecturasensor1 > 335) {
Serial.print("3-4");
digitalWrite(rele2, HIGH);
rele2Status = HIGH;
digitalWrite(rele1, HIGH);
rele1Status = HIGH;
}
}
}
if (rele1Status == HIGH) {
if (rele2Status == HIGH) {
if (lecturasensor2 <= 190 & lecturasensor1 <= 345) {
Serial.print("4-1");
digitalWrite(rele2, LOW);
rele2Status = LOW;
digitalWrite(rele1, LOW);
rele1Status = LOW;
}
if (lecturasensor2 <= 190 & lecturasensor1 > 345) {
Serial.print("4-2");
digitalWrite(rele2, LOW);
rele2Status = LOW;
}
if (lecturasensor2 > 190 & lecturasensor1 <= 345) {
Serial.print("4-3");
digitalWrite(rele2, HIGH);
rele2Status = HIGH;
}
if (lecturasensor2 > 190 & lecturasensor1 > 345) {
// NO HACER NADA
// digitalWrite(rele2,HIGH);
// rele2Status=HIGH;
Serial.print("4-4");
}
}
}
estado1 = digitalRead(rele1);
if (estado1 == 1) {
Serial.println("NEVERA ON");
}
else Serial.println("NEVERA OFF");
estado2 = digitalRead(rele2);
if (estado2 == 1) {
Serial.println("CONGELADOR ON");
}
else Serial.println("CONGELADOR OFF");
delay(2000);
}
Que raro que digas eso. El esquema suele estar en el motor pero si estuviste 2 dias debiste haberlo visto.
Yo hice eso pero use Home Assistant y un termostato basado en ESPHOME que lleva un DS18B20. Use el cableado existente, quite todo lo anterior y controlo el motor con el DS18B20.
Aclaro. La heladera es un tema, el frezzer tal vez requiera de otro control que desconozco.
En mi caso en el frezzer no hice nada, lo dejé como esta.
Mi hno por ejemplo si tiene dos sensores pero el uso controles de temperatura individuales y le costó mucho hacerla funcionar.
Mira si este esquema se ajusta a tu heladera o refrigerador (como lo llames)
Hola
En mi caso al no poder llegar a los sensores para quitarlos, estoy intentando usarlos... en el caso de la nevera o refrigerador podría meter un ds por el agujero de descongelación pero en el caso del congelador es imposible (salvo que taladre la pared trasera)....
En el caso de los sensores de fábrica... Los motores deben generar bastantes interferencias porque cuando arranca uno y otro, o los dos a la vez.... Cambian mucho los valores de los sensores... Eso o que hay neveras (lo he visto en algún vídeo) que llevan el sensor en alguna zona del circuito del gas y en cuanto hay movimiento del gas... pero en ese caso no me cuadra que arranque el congelador y modifique los datos tanto en sensor de la nevera como en el del congelador.
De todas formas he observado que suele ser bastante estable.... Ejemplo.... con los dos motores en on y a -21º siempre da el sensor del congelador sobre 190 y el del refrigerador sobre 345...
Por eso mi intento con ese código...
Es posible corregir el fallo que tiene o está todo mal?
Soy muy novato... Hace años ya trastee y por cierto ya me echaste una mano en su día.
Nota: no hay nada de refrigeradores o neveras en los enlaces... Y el segundo es un lavavajillas o una lavadora (mí inglés es penoso).
Tomo nota aunque de momento dejo todo en suspenso... Finalmente he visto la luz literalmente en el congelador por lo que voy a meterle un ds18b20... Y entonces esta programación no sirve (no servía porque no funcionaba pero ya se me entiende)
He visto por aquí una programación que estoy revisando aunque solo es de un sensor y me ha surgido alguna duda....
Intentaré hacer el programa y si acaso tendré que volver por aquí...
Gracias a todos