Autor Tema: Programa temperatura con relevador.  (Leído 2438 veces)

Francisco Angulo

  • Newbie
  • *
  • Mensajes: 4
    • Ver Perfil
Programa temperatura con relevador.
« : mayo 23, 2016, 07:22:30 pm »
Buenas tardes!

Cómo le puedo hacer para que mi programa realicen las siguientes funciones:

1. Detectar la tempratura
2. Si detecta temperatura>=X, se activa el relevador.
3. Se muestra una alerta en el display que diga "ALARMA".
4. Para desactivar el revelador y apagar display, ingresar al teclado una clave.

Esto como si fuera un simulador de alarma contra incendios.

Gracias.

Juan Martinez

  • Administrator
  • Newbie
  • *****
  • Mensajes: 30
    • Ver Perfil
    • Microcontrollers. Proyects. Tutorials
Re:Programa temperatura con relevador.
« Respuesta #1 : mayo 25, 2016, 10:34:39 pm »
Para leer el sensor de temperatura 18B20, puedes utilizar la función que se describe aquí:
http://puntoflotante.net/DS18B20ANSICPLUS.htm
Para leer del teclado la temperatura deseada, así como para mostrar un letrero en el LCD, sigue las funciones que se muestran aquí:
http://puntoflotante.net/FUNCIONES-C18.htm
Para activar el relevador solamente tienes que usar el siguiente comando:
RB0=1;

Francisco Angulo

  • Newbie
  • *
  • Mensajes: 4
    • Ver Perfil
Re:Programa temperatura con relevador.
« Respuesta #2 : mayo 26, 2016, 03:21:59 am »
Exactamente, se puede usar la plantilla de lectura de temperatura, después se implemetaria un if para cuando este dentro o fuera de la temperatura permitida. Una vez cumplida la condición impimiria la alerta, y creo que con el ultimo ejemplo que vimos de ingreso de código se puede adaptar para reiniciar el programa y apagar el relevador (equivadria a desactivar la alarma).

Para el desarrollo de éste simulador se necesitaria la adaptación de las plantillas:
1. Medidor de temperatura.
2. Activación del relevador mediante una condición.
3. Comparación de claves.
4. Desactivación

Gracias.

Francisco Angulo

  • Newbie
  • *
  • Mensajes: 4
    • Ver Perfil
Re:Programa temperatura con relevador.
« Respuesta #3 : mayo 26, 2016, 03:29:22 am »
Para leer la temperatura se puede adaptar la siguiente plantilla:

#include <p18cxxx.h>
#include <delays.h>
#include <stdio.h>      
#include <stdlib.h>      
#include "18F2550BOLT.h"
#include "ONEWIRE-BOLT.h"

extern void _startup( void ); // See c018i.c in your C18 compiler dir
#pragma code _RESET_INTERRUPT_VECTOR = 0x000800
void _reset( void )
{
    _asm goto _startup _endasm
}

#pragma code

float a;
int entero,decimal;
char array[10];
char temperatura[]="Tempe=";
char alarma[]="ALARMA ACTIVADA";
 
void main()
{
init_bolt( );
InitLCD( );
   while(1)
   {
   ClearScreen( );
   PrintString(alarma);
   PrintString(temperatura);
   a=ds1820_read();
   entero=a; //Entero
   decimal=(a-entero)*10; //Decimal
   sprintf(array,"%2d.%d %cC",entero,decimal,214); //CONVIERTE A STRING
   GotoXY(1,0);
   PrintString(array);
   delay_ms(1000);
   }
      
}

Yessi Guz

  • Newbie
  • *
  • Mensajes: 2
    • Ver Perfil
Re:Programa temperatura con relevador.
« Respuesta #4 : mayo 26, 2016, 03:37:52 am »
Después utilizando un if, dependiendo la condición de la temperatura deseada para
activar el relevador sólo se usa RELE = 1 para encenderlo; ya que previamente
configurado.

En el display puede aparecer la alerta y la temperatura, editando a la
plantilla anterior, esta parte:

char temperatura[]="Tempe=";
char alarma[]="ALARMA ACTIVADA";
 
void main()
{
init_bolt( );
InitLCD( );
   while(1)
   {
   ClearScreen( );
   PrintString(alarma);
   PrintString(temperatura);

Francisco Angulo

  • Newbie
  • *
  • Mensajes: 4
    • Ver Perfil
Re:Programa temperatura con relevador.
« Respuesta #5 : mayo 26, 2016, 03:39:51 am »
Y por último cómo podria desacticar el relevador por medio de ingresar un código en el teclado, para simular que la alarma ésta apagada???

Yessi Guz

  • Newbie
  • *
  • Mensajes: 2
    • Ver Perfil
Re:Programa temperatura con relevador.
« Respuesta #6 : mayo 26, 2016, 03:46:05 am »
Basate en el último ejercicio que vimos en clase, sobre el uso de claves y al final haces la desactivación del relevador.

char clave[]= "CLAVE?";
char claveIgual[] = "Clave = ";
char claveUsuario [] = "1234";  //contraseña predeterminada
char error404 [] = "Error"; //Código incorrecto
char entrada;
int i;
int error = 0;

void main(void)
{
   init_bolt();
Inicio:
   InitLCD();
   PrintString(clave); //A = si, B= no.
   entrada = GetBot();   
      if(entrada =='A')   
      {
         ClearScreen();         
         GotoXY(1,0);
         for(i=0; i<4; i++)
         {
            claveUsuario = GetBot();
            PutLCD(claveUsuario);
            writeeeprom(i,claveUsuario);         
          }   
         goto Inicio;   
      }
      else
      {   
         repite:
         GotoXY(0,0);
         PrintString(claveIgual);  //autentica contraseñas
         GotoXY(1,0);
         for(i=0; i<4; i++)   //proceso de lectura de digitos
         {
            claveUsuario = GetBot();
            PutLCD(claveUsuario);
            if(claveUsuario != readeeprom(i)) error = 1;                                 
          }
         if(error == 1)
         {
         ClearScreen();
         PrintString(error404);  //imprime contraseña incorrecta
         goto repite;
         }
         else
            RELE = 0;  // se desativa el revevador
      }
   while(1);
}