Problema sensor temperatura y relé

Hola, mi problema es bien sencillo pero hay algo que se me escapa porque no puede ser tan complicado lo que quiero hacer. Estoy haciendo una especie de termostato con Arduino Uno compuesto de un LCD 16x2, un sensor de temperatura TMP36 y un relé de 5V. Los datasheets de los dos últimos son los siguientes:

El TMP36 está conectado a la A0 y las lecturas de la temperatura es correcta, el problema llega cuando activo el relé. Al activarse el relé y volver a solicitar la lectura del sensor las lecturas son erróneas. ¿Alguien tiene alguna idea de por qué puede pasar esto? ¿El relé que utilizo no es el adecuado?

Espero vuestras respuesta, y muchas gracias antes de nada. UN saludo

Sin ver el codigo es dificil ayudarte.

El código es bastante simple y creo k no es lo que influye. De todas maneras, el programa está basado en una máquina de estados en la que vas pasando de un estado a otro pulsando un botón conectado a la INT0. En el estado 0, se limita a hacer lecturas del sensor de temperatura; en el estado 1, seleccionas mediante un potenciómetro la temperatura a la que quieres que "salte" el termostato; una vez vuelto al estado 0, empieza a comprobar cuando la temperatura leida es mayor que la seleccionada y cuando se cumpla varias veces seguidas pues activa el relé.

De todas maneras voy a probar un programa sencillo aparte sólo midiendo la temperatura y activando el relé, a ver lo que sucede.

Este es un ejemplo que acabo de probar y sigue fallando lo que dije en el primer post.

int rele = 8;
int menuButton = 2; // Botón "menú" conectado a la INT0
int temperaturaPin = A0;
boolean activo = 0;

void setup() {
pinMode(rele, OUTPUT);
pinMode(temperaturaPin, INPUT);
Serial.begin(9600);
attachInterrupt(0, changeMenu, FALLING); //Configuración de la INT0
delay(5000);
}

void loop(){
float temperatura = getVoltage(temperaturaPin);
temperatura = (temperatura - 0.5) * 100;
Serial.println(temperatura);
delay(1000);
}

void changeMenu(){
activo = !activo;
digitalWrite(rele,activo);
}

float getVoltage(int pin){
return (analogRead(pin) * .004882814); //Para 5V
}

Prueba a desconectar el relé, ¿funciona? Entonces ya sabes de quién es la culpa

Como dice @Chiva mira el rele, pensaba que usabas un LCD pero veo que no.

Claro, el problema está cuando activo el relé...lo que quiero saber es como soluciono ese problema...porque el relé esta bien configurado...lo que no se es si ese tipo de relé tiene alguna contraindicación...porque cuando se activa todas las patillas del puerto analógico sufren una pequeña variación en la tensión.
Con respecto a lo del LCD, uso uno pero he puesto un ejemplo simple para probar el funcionamiento exclusivamente del relé y el sensor. Si alguien ha utilizado algún relé de 5V en particular o sensor de temperatura que me lo comente por favor.

Hola,
cualquier cosa que vayas a conectar a un pin de Arduino debe consumir menos de 40mA, Y ese relé en la hoja de datos dice que "Power consumption of 200mW", que a 5V vienen a ser unos 40mA (watios = voltios x amperios). La solución es conectarlo con un transistor, y para eso tienes miles de ejemplos en la red. Por citar uno, Txapuzas electrónicas: PaperRelé. Relé controlado por transistor

Curro muchas gracias, perdón por no decir que el relé lo tengo conectado al pin de arduino mediante un transistor (P2N2222A)...no sé que mas probar. Creo k buscaré otro relé a ver si el fallo es algo interno del relé

Te doy un consejo : Lo mejor y que da menos problemas es el usar un Optoacoplador ya que con ello se aisla completamente los pines de salida de la carga , el consumo es de unos 4 mA y en la carga se puede conectar un transistor Darlintong de potencia.
Yo he probado con transistores BC547B y sin ningun problema, eso si, tienes que conectar entre el pin de salida y la base del BC547 una resistencia de 1K5 para evitar que el consumo sea alto.
Tambien otro consejo util : Alimenta la carga con una fuente externa, no la del Arduino.

He hecho una prueba quitando el relé y manteniendo el transistor, para ir acotando el fallo...y mi sorpresa ha sido que al activar el transistor, el sensor de temperatura me da la lectura también errónea por lo tanto el relé tiene poco o nada que ver con el fallo.

A lo mejor una buena opción sería utilizar un MosFet ya que tiene la puerta aislada no?? o un diodo en paralelo en el emisor del transistor para el paso de la corriente??

Tengo el mismo problema, y creo que tengo la solucion aunque aun no lo he probado,
tienes conectado un diodo a la patilla de enmedio del transistor? Por lo visto esto evite que al activarse la bobina del rele la corriente vuelva en el otro sentido y provoque lecturas erroneas.

http://www.arduino.cc/es_old/Tutoriales/Rele

Es el 1N4001, creo, ya me diras algo.

Jossema106:
un diodo a la patilla de enmedio del transistor?

Imploro a los moderadores que dividan el foro en secciones para principiantes absolutos en electrónica y usuarios medios avanzados!!

Todos hemos empezado sin saber qué es un diodo, pero muchos de nosotros pasamos esa fase en la era "analógica".
En la era digital la gente cree que por escribir una línea de código pin1=1, el pin1 se va a poner a 1 como si esto fueran matemáticas.

No! La electrónica tiene mucho más y por eso nunca aburre.
Empieza entendiendo como pilotar un relé mediante un interfaz a transistor, qué tipo de transistores hay y cómo se usan (no hace fata conocer los parámetros h, sólo lo básico, emisor, base, colector, corte saturación.......

De otro modo, no se puede hacer una paella sin saber lo que es un sofrito ni cómo se enciende la cocina, por mucho que leas una receta.

Pues yo creo que @Josema106 tal vez sea un principiante pero además de comentar de buena fe cre que no va nada desencaminado. La patilla de en medio a la que se refiere bien puede ser la del BD137 que se usa, que físicamente ese transistor el colector es justo la patilla de en medio.

jray:

Jossema106:
un diodo a la patilla de enmedio del transistor?

Imploro a los moderadores que dividan el foro en secciones para principiantes absolutos en electrónica y usuarios medios avanzados!!

Todos hemos empezado sin saber qué es un diodo, pero muchos de nosotros pasamos esa fase en la era "analógica".
En la era digital la gente cree que por escribir una línea de código pin1=1, el pin1 se va a poner a 1 como si esto fueran matemáticas.

No! La electrónica tiene mucho más y por eso nunca aburre.
Empieza entendiendo como pilotar un relé mediante un interfaz a transistor, qué tipo de transistores hay y cómo se usan (no hace fata conocer los parámetros h, sólo lo básico, emisor, base, colector, corte saturación.......

De otro modo, no se puede hacer una paella sin saber lo que es un sofrito ni cómo se enciende la cocina, por mucho que leas una receta.

Tu implora mientras que los demas intentamos ayudar, ok???

Y perdon si he herido tus sentimientos de guru de la electronica, no todos tenemos tan altos conocimientos.

Pido y suplico compasión(reverencia, reverencia, reverencia)

Josema muchas gracias por el aporte...el diodo que va en paralelo a la bobina del relé lo tengo conectado desde un principio, en mi caso la patilla de en medio de mi transitor es la base, pero ese diodo se que hay que colocarlo en el colector. De verdad gracias y seguiré buscando a ver si encuentro el fallo.

muchas gracias por sus amables explicaciones , es exelente esta pagina , yo consco poco de arduino y de aqui he empezado a sacar informacion muy importante.