Go Down

Topic: Problema sensor temperatura y relé (Read 4 times) previous topic - next topic

mdvc0002

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:

https://www.sparkfun.com/products/10988
https://www.sparkfun.com/products/100

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

flico

Sin ver el codigo es dificil ayudarte.
Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

mdvc0002

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.

mdvc0002

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     
}

chiva

Prueba a desconectar el relé, ¿funciona? Entonces ya sabes de quién es la culpa
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Go Up