Autor Tema: PIC16F84A y sensor de temperatura DHT11  (Leído 55751 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado peteorito

  • PIC16
  • ***
  • Mensajes: 136
Re: PIC16F84A y sensor de temperatura DHT11
« Respuesta #15 en: 07 de Marzo de 2012, 20:19:12 »
Ahora si!! :)

Desconectado eloysn

  • PIC10
  • *
  • Mensajes: 16
Re: PIC16F84A y sensor de temperatura DHT11
« Respuesta #16 en: 23 de Mayo de 2012, 06:22:18 »
Bueno,en primer lugar gracias por el aporte ,pero tengo una duda si el sensor cuando envia un bit sea un 1 o un 0  siempre pone la linea en alto ,solo que lo hace variando el tiempo que esta en alto (26-28microseg para un 0 y 70microseg para un 1) mi duda es como sabemos cuando es un cero y cuando un uno,seguramente sea una tonteria pero leo el codigo y no logro entenderlo.

Desconectado renanparanista

  • PIC10
  • *
  • Mensajes: 1
Re: PIC16F84A y sensor de temperatura DHT11
« Respuesta #17 en: 20 de Julio de 2012, 12:16:41 »
Muito obrigado senhores, esta biblioteca salvou minha nota na disciplina de Automação na Faculdade.

Foi o único lugar na Internet onde achei essa biblioteca. vou postar o código q eu usei com essa biblioteca, conta com um display LCD, e um outro sensor de temperatura, um LM35, usei isso para fazer uma camara de refrigeração usando uma célula Peltier, num PIC 16f877A.

#include <16f877A.h>
#device adc=10
#use delay(clock=20000000, RESTART_WDT)
#use rs232 (baud=9600, xmit=pin_c6, rcv=pin_c7, parity=N, stop=1, bits=8)
#org 0x1F00, 0x1FFF void loader16F877(void) {}
#include <mod_lcd.c>
#include <dht11.c>
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD

#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)
#byte porta = 0x05
#byte portb = 0x06
#byte portc = 0x07
#byte portd = 0x08
#byte porte = 0x09
#bit Incrementa = porta.5
#bit Decrementa = porta.4
#bit PeltierEsq = portc.2
#bit PeltierEsf = portc.1
#bit rele1  = portb.1
#bit rele2  = portb.2

int x = 0;
char received = 0x00,  dados[7];
long int SetTemp=30, TempSensor=0, TempVentoinha=0, limpatela=0;
long int RSetTemp=0, RTempVentoinha=0, msgUmidade=0, msgTemperatura = 0;
static boolean aux1  = true, aux2 = true, auxBotao1 = true, auxBotao2 = true;
static boolean manutencao = false, manutencao1 = false;

void Transmissao()
{
   dados[0] = 'f';
   dados[1] = RSetTemp;
   dados[2] = RTempVentoinha;
   dados[3] = dht_dat[2];
   dados[4] = dht_dat[0];
   dados[5] = msgUmidade;
   dados[6] = msgTemperatura;
   
   for(x=0 ; x < 7;x++)
   {
      putchar(dados
  • );

      delay_ms(3);
   }
}

#int_rda
void serial_interrupt()
{
   // Recebe informações do software (received)
   disable_interrupts(int_rda);
   received = getc();
   aux1 = true;
   aux2 = true;
}

void main()
{

   set_tris_a(0b11111111);
   porta=0x00;
   set_tris_b(0b11111001);
   portb=0x00;
 /*  set_tris_c(0b00000000);
   set_tris_d(0b11110011);
   set_tris_e(0b00000111);
   
   
   portc=0x00;
   portd=0x00;
   porte=0x00;
*/
   setup_psp(PSP_DISABLED);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_CCP1(CCP_OFF);
   setup_CCP2(CCP_OFF);

   setup_adc_ports (RA0_RA1_RA3_analog);//Configura Vdd e Vss como Vref
   setup_vref(FALSE);
   setup_adc (adc_clock_div_32);

   output_low(pin_c4);
   output_low(pin_c5);

   enable_interrupts(GLOBAL);
   
   lcd_ini();
   lcd_escreve('\f');
 
   while(true)
   {
      enable_interrupts(int_rda);
           
      if(limpatela != TempSensor)
      {
        lcd_escreve('\f');
        limpatela = TempSensor;
      }
     

      if (( manutencao == false) &&(manutencao1 == false))
     
      {
         lcd_pos_xy( 2, 1);
         lcd_escreve("TD");
         lcd_pos_xy( 2, 2);
         printf (lcd_escreve,"%ld",RSetTemp );
         lcd_pos_xy( 6, 1);
         lcd_escreve("TF");
         lcd_pos_xy( 6, 2);
         printf (lcd_escreve,"%d", dht_dat[2] );
         lcd_pos_xy( 10, 1);
         lcd_escreve("TV");
         lcd_pos_xy( 10, 2);
         printf (lcd_escreve,"%ld",RTempVentoinha );   
         lcd_pos_xy( 14, 1);
         lcd_escreve("UM");
         lcd_pos_xy( 14, 2);
         printf (lcd_escreve,"%d", dht_dat[0] );
         lcd_pos_xy( 16, 2);
         lcd_escreve("  ");
         delay_ms(100);
      }
     
      Transmissao();     
       
      if(!Incrementa)
      {
         auxBotao1=true;
      } 
      if(!Decrementa)
      {     
         auxBotao2=true;
      }
     
      // Botão incrementa
      if((!Incrementa)||(received == 0x02))
      {
         if (aux1 || auxBotao1)
         {
            // se incrementa pelo software nao usa delay
           
            if (SetTemp<=1020 && aux1)
            {
               SetTemp = SetTemp + 2;
               lcd_escreve('\f');
            }           
            else if (SetTemp<=1020 && auxBotao1)
            {
               SetTemp = SetTemp + 2;
               delay_ms(130);
               lcd_escreve('\f');
            }
           
            aux1 = false;
            auxBotao1 = false;
         }
      }
   
      // Botão decrementa
      if((!Decrementa)||(received == 0x01))
      {
         if (aux2 || auxBotao2)
         {
            // se decrementa pelo software nao usa delay           
            if (SetTemp>=2 && aux2)
            {
               SetTemp = SetTemp - 2;
               lcd_escreve('\f');
            }
            else  if (SetTemp>=2 && auxBotao2)
            {
               SetTemp = SetTemp - 2;
               delay_ms(130);
               lcd_escreve('\f');
            }
                     
            aux2 = false;
            auxBotao2 = false;
         }
      }
               
      delay_ms(10);
      iniciar();
      leer_dht();
      TempSensor =((1024* dht_dat[2])/500);
     
      set_adc_channel(1);
      delay_ms(10);
      TempVentoinha = read_adc();
         
     
     // RTempSensor       =(500*TempSensor)/1024;
      RTempVentoinha    =(500*TempVentoinha)/1024;
      RSetTemp          =(500*SetTemp)/1024;
     
   
      if(TempVentoinha > 80)
      {
         rele1 = 1;
      }
     
      if(TempVentoinha < 40)
      {                   
          rele1=0;
      }                     
         
      if((TempSensor)  > SetTemp)
      {
         PeltierEsf=1;
         PeltierEsq=0;
         rele2 = 1;
      }

      if((TempSensor)  < SetTemp)
      {                   
         PeltierEsq=1;
         PeltierEsf=0;
         rele2=0;
      }
     
      if ((dht_dat[0]) > 92)
      {
         manutencao = true;
         
         rele1=0;
         rele2=0;
         lcd_escreve('\f');
         lcd_pos_xy( 1, 1);
         lcd_escreve("  Umidade alta");
         lcd_pos_xy( 1, 2);
         lcd_escreve("parar p/ limpeza");
         msgUmidade = 1; // msg = 1 vai para o software para mostrar a msg
         delay_ms(500);
      }
      else
      {
         manutencao = false;
         msgUmidade = 0;
      }
      if (TempVentoinha >= 110)
      {       
         manutencao1 = true;
         
         rele1=1;
         rele2=0;
         lcd_escreve('\f');
         lcd_pos_xy( 1, 1);
         lcd_escreve("Temp. muito alta");
         lcd_pos_xy( 1, 2);
         lcd_escreve("PeltierDesligado");
         msgTemperatura = 1; // msg = 2 vai para o software para mostrar a msg
         delay_ms(500);
         
      }
      else
      {
         manutencao1 = false;
         msgTemperatura = 0;
      }
     
   }
}

Desconectado fiolin

  • PIC10
  • *
  • Mensajes: 25
Re: PIC16F84A y sensor de temperatura DHT11
« Respuesta #18 en: 28 de Noviembre de 2012, 07:12:37 »
En el código publicado por pictrance hay una parte que no encuentro que es:
#include "dht.c"
#include  "sht21.c"

Desde ya les digo que está muy bueno el trabajo que han hecho los amigos.
gracias

Desconectado PicTrance

  • PIC10
  • *
  • Mensajes: 6
Re: PIC16F84A y sensor de temperatura DHT11
« Respuesta #19 en: 05 de Diciembre de 2012, 19:29:17 »
Hola fiolin

te comento que al "dht.c" es la misma libredia "dht22.c" renombrada y modificada para otro pin del pic
ya que tengo 2 sensores dht22, la libreria "SHT21.c" es un sensor de temperatura y humedad
I2C de la marca sensirion, ese driver lo compartí en otro foro (neoteo) y en el foro oficial de CCS

Saludos!!!

Desconectado mirasu

  • PIC10
  • *
  • Mensajes: 7
Re: PIC16F84A y sensor de temperatura DHT11
« Respuesta #20 en: 09 de Abril de 2013, 10:54:05 »
Hola zerovlc
Ante todo gracias por tu libreria, me a sido muy util y me a permitido hacer un programita sin conocimientos de C y casi que ni de basic, yo desde que quitaron el 10, 20 y 30 delante de las lineas en basic.... que ya no e sabido hacer nada :-D
Te queria preguntar si podrias ver el programa y ver si tengo algun error. el programa funciona y hace lo que necesito.
otra cosa que me preocupa es que cambie el pin donde va el sensor,
 #define dht11 PIN_B6 // cambiado el pin del 0 al 6
#bit dht_io = 0x86.0 // no lo he cambiado, pero creo que

Edito. Añado el codigo y explico que hace.
tengo 6 led en linea, el 1º se enciende para marcar que funciona, del 2º al 5º se encienden cuando llega la humedad a 50,60,70 y 80% relativamente y 6º se enciende cuando llega a 85% este es de color rojo y al encenderse activa un ventilador.
solo hay una entrada que es el DHT11.

 

Código: [Seleccionar]
#include <16f84a.h>
#include <dht11.h>  //esta es la libreria creada por mi
#FUSES NOWDT                    //desactiva el wath dog
#FUSES XT                       //Crystal  <= 4mhz
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#use delay(clock=4000000)



//Declaracion de variables globales

#define LedOn pin_b0 //  led on
#define led2 pin_b1 // Led mas del 50% humedad
#define led3 pin_b2 // Led mas del 60% humedad
#define led4 pin_b3 // Led mas del 70% humedad
#define led5 pin_b4 // Led mas del 80% humedad
#define LedFin pin_a3// Led mas del 85% humedad-activa el calor

#define Retardo delay_ms(1000)//Nombra a delay_ms() como Retardo


//Programa principal
void main(){

//Configuracion de puertos E/S
SET_TRIS_A(0x00);//Configura el puerto B: 0=Salida; 1=Entrada
output_a(0x00); //Limpia el registro del puerto
//SET_TRIS_b(0x00);//Configura el puerto B: 0=Salida; 1=Entrada
//output_b(0x00); //Limpia el registro del puerto
  do
{
delay_ms(100);
 iniciar();
 delay_ms(100);
leer_dht();

output_high(LedOn); // enciende el led on cuando se inicializa

if (dht_dat[0]>50)
{
output_high(led2);//Pone en alto a led
retardo;//Demora
   if (dht_dat[0]>60)
   {
   output_high(led3); //Pone en alto a led
   retardo;//Demora
   if (dht_dat[0]>70)
      {
      output_high(led4);//Pone en alto a led
      retardo;//Demora
      if (dht_dat[0]>80)
         //Estructura Programa principal
         {
         output_high(led5);//Pone en alto a led
         retardo;//Demora
         if (dht_dat[0]>85)
            {
            //Estructura Programa principal
            output_high(LedFin);//Pone en alto a led
            retardo;//Demora
            delay_ms(60000);
            }
            else
            {
            output_low(LedFin);//Pone en bajo a led
            retardo;//Demora
            }
         }
         else{
         output_low(led5);//Pone en bajo a led
         retardo;//Demora
         }
      }
      else{
      output_low(led4);//Pone en bajo a led
      retardo;//Demora
      }
   }
   else{
   output_low(led3); //Pone en bajo a led
   retardo;//Demora
   }
}
else{
output_low(led2);//Pone en bajo a led
retardo;//Demora
}

output_low(LedOn);
retardo;//Demora


//goto inicio;//Regresa a la etiqueta inicio
}while(true);
}

Gracias por tu libreria otra vez

« Última modificación: 09 de Abril de 2013, 12:01:20 por mirasu »

Desconectado sergio_silva

  • PIC10
  • *
  • Mensajes: 6
Re: PIC16F84A y sensor de temperatura DHT11
« Respuesta #21 en: 30 de Abril de 2013, 15:32:33 »
Hola zerovlc,

porquê que somas 2 à temperatura lida e 5 à humidade? É que nas especificações aparece que o erro pode ser +/- 2ºC e +/- 5%RH, então eu acho incorrecto corrigir para o valor máximo.


[ING]
 why do you add 2 to the read temperature value and 5 to the humidity value? The specifications said that the accuracy is +/- 2ºC e +/- 5%RH, so i think that is wrong to correct to the maximum value.


Saludos!

Desconectado Evonkc

  • PIC12
  • **
  • Mensajes: 50
Re: PIC16F84A y sensor de temperatura DHT11
« Respuesta #22 en: 22 de Junio de 2013, 00:52:02 »
Disculpen es un poco mas que tarde para consultar,

estimados necesito si alguien amable me puede explicar este codigo, que es lo que hace, tengo algunas ideas vagas pero aun asi hay cosas que no entiendo. pues soy nuevo en esto de la programacion y mas trabajo con basic, de antemano gracias por su ayuda.


Código: [Seleccionar]
byte leer_datos_dht();

Void dht_init (void){
   dht_io=0;
   delay_ms(1);
   output_high(dht22);
}

byte leer_datos_dht(){
   byte i = 0;
   byte result=0;
   for (i=0; i< 8; i++) {
      //We enter this during the first start bit (low for 50uS) of the byte
      //Next: wait until pin goes high
      while(input(dht22)==0);
      delay_us(30);
      if (input(dht22)==1){//Was: if(PINC & _BV(dht_PIN))
         result |=(1<<(7-i));
      }
      while (input(dht22)==1);
      //Was: while((PINC & _BV(dht_PIN)));
   }//end of "for.."
   
   return result;
}

Void leer_dht22 (float &dhthum,float &dthtemp){
   //byte GlobalErr=0;
   byte dht22_in, i, dht22_checksum;
   int16 temperatura, humedad;
   float temp,hum;
   
   dht_io=0; // configurar el pin como salida
   output_high(dht22);
   delay_us(20);
   output_low(dht22);
   delay_ms(18);
   
   output_high(dht22);
   delay_us(22);
   dht_io=1;// configurar el pin como entrada
   delay_us(5);
   dht22_in=input(dht22);
   
   if(dht22_in) {
      //GlobalErr=1;
      printf("\r\ndht condicion 1 de inicio no encontrada");
      return;
   }
   
   delay_us(80);
   dht22_in=input(dht22);
   
   if(!dht22_in){
      //GlobalErr=2;
      printf("\r\ndht condicion 2 de inicio no encontrada");
      return;
   }
   
   delay_us(80);
   
   for (i=0; i<5; i++){
      dht22_dat[ i ] = leer_datos_dht(); // capturando datos
   }
   
   dht_io=0;
   delay_us(10);
   output_high(dht22);
   
   dht22_checksum= dht22_dat[0]+dht22_dat[1]+dht22_dat[2]+dht22_dat[3];
   
   if(dht22_dat[4]!=dht22_checksum){
      //GlobalErr=3;
      printf("\r\nDHT checksum error");
   }
   
   humedad = make16(dht22_dat[0],dht22_dat[1]);
   temperatura = make16(dht22_dat[2],dht22_dat[3]);
   
   hum = humedad;
   temp = temperatura;
   
   dhthum = (hum)/10;
   dthtemp = (temp)/10;

Desconectado Evonkc

  • PIC12
  • **
  • Mensajes: 50
Re: PIC16F84A y sensor de temperatura DHT11
« Respuesta #23 en: 22 de Junio de 2013, 00:57:02 »
Disculpen es un poco mas que tarde para consultar,

estimados necesito si alguien amable me puede explicar estas dos lineas de codigo que adjunto, que es lo que hace, tengo algunas ideas de la mayoría del original presente en este post, pero aun así hay cosas que no entiendo, (que son las adjuntas). pues soy nuevo en esto de la programación y mas aun si trabajo con basic, de antemano gracias por su ayuda saludos a todos los que lo lean


Código: [Seleccionar]
byte leer_datos_dht();

Void dht_init (void){
   dht_io=0;
   delay_ms(1);
   output_high(dht22);
}

byte leer_datos_dht(){
   byte i = 0;
   byte result=0;
   for (i=0; i< 8; i++) {
      //We enter this during the first start bit (low for 50uS) of the byte
      //Next: wait until pin goes high
      while(input(dht22)==0);
      delay_us(30);
      if (input(dht22)==1){//Was: if(PINC & _BV(dht_PIN))
         result |=(1<<(7-i));
      }
      while (input(dht22)==1);
      //Was: while((PINC & _BV(dht_PIN)));
   }//end of "for.."
   
   return result; 

Código: [Seleccionar]
   for (i=0; i<5; i++){
      dht22_dat[ i ] = leer_datos_dht(); // capturando datos
   }

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Re: PIC16F84A y sensor de temperatura DHT11
« Respuesta #24 en: 23 de Junio de 2013, 07:12:13 »
Muchas gracias por el aporte
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado TIBURONMAUI

  • PIC10
  • *
  • Mensajes: 4
Re: PIC16F84A y sensor de temperatura DHT11
« Respuesta #25 en: 21 de Octubre de 2013, 09:39:43 »
Hola zerovlc

antes que nada: gracias por la librería :)
y te comento que he modificado tu libreria para el DHT22(RHT03)

y esta es la libreria que he hecho basando me en la tuya :oops:
Código: [Seleccionar]
#define dht22 PIN_A2
#bit dht_io = 0xf92.2
byte dht22_dat[5];

byte leer_datos_dht();

Void dht_init (void){
   dht_io=0;
   delay_ms(1);
   output_high(dht22);
}

byte leer_datos_dht(){
   byte i = 0;
   byte result=0;
   for (i=0; i< 8; i++) {
      //We enter this during the first start bit (low for 50uS) of the byte
      //Next: wait until pin goes high
      while(input(dht22)==0);
      delay_us(30);
      if (input(dht22)==1){//Was: if(PINC & _BV(dht_PIN))
         result |=(1<<(7-i));
      }
      while (input(dht22)==1);
      //Was: while((PINC & _BV(dht_PIN)));
   }//end of "for.."
   
   return result;
}

Void leer_dht22 (float &dhthum,float &dthtemp){
   //byte GlobalErr=0;
   byte dht22_in, i, dht22_checksum;
   int16 temperatura, humedad;
   float temp,hum;
   
   dht_io=0; // configurar el pin como salida
   output_high(dht22);
   delay_us(20);
   output_low(dht22);
   delay_ms(18);
   
   output_high(dht22);
   delay_us(22);
   dht_io=1;// configurar el pin como entrada
   delay_us(5);
   dht22_in=input(dht22);
   
   if(dht22_in) {
      //GlobalErr=1;
      printf("\r\ndht condicion 1 de inicio no encontrada");
      return;
   }
   
   delay_us(80);
   dht22_in=input(dht22);
   
   if(!dht22_in){
      //GlobalErr=2;
      printf("\r\ndht condicion 2 de inicio no encontrada");
      return;
   }
   
   delay_us(80);
   
   for (i=0; i<5; i++){
      dht22_dat[ i ] = leer_datos_dht(); // capturando datos
   }
   
   dht_io=0;
   delay_us(10);
   output_high(dht22);
   
   dht22_checksum= dht22_dat[0]+dht22_dat[1]+dht22_dat[2]+dht22_dat[3];
   
   if(dht22_dat[4]!=dht22_checksum){
      //GlobalErr=3;
      printf("\r\nDHT checksum error");
   }
   
   humedad = make16(dht22_dat[0],dht22_dat[1]);
   temperatura = make16(dht22_dat[2],dht22_dat[3]);
   
   hum = humedad;
   temp = temperatura;
   
   dhthum = (hum)/10;
   dthtemp = (temp)/10;
}

y este es un ejemplo de como usarla:

Código: [Seleccionar]
#include <18f4550.h>           //PIC utilizado
#device adc=10
//#fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG
//#use delay(clock=20M)

#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48M)


//Pal bootloader
#build (reset=0x1000,interrupt=0x1008)
#org 0x0000,0x0FFF{}

#use i2c(Master,slow,sda=PIN_A4,scl=PIN_A5)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

//#include "dht22.c"
#include "dht.c"
#include  "sht21.c"

//#include <LCD20X4.c>


void main(){
   int16 lux;
   float dhthum, dthtemp,temp,humid;
   setup_adc_ports(AN0|VSS_VDD);
   setup_adc(ADC_CLOCK_INTERNAL);
   //EXT_INT_EDGE(H_TO_L);
   
   //lcd_init();
   
   //lcd_putc("\fSensor T-H\nDHT22 RHT03");
   printf ("\f\r\nSensor de temperatura y humedad:\r\nDHT22-RHT03");
   delay_ms(500);
   
   //printf(lcd_putc,"\fHola-Saludos\nEnviame un dato");
   dht_init();
   sht21_init();
   delay_ms(300);
   //lcd_putc("\f");
while(true){
   set_adc_channel(0);
   delay_ms(1);
   lux=read_adc();
   printf("\r\nAdc =: %lu ",lux);
   
   delay_ms(10);
   //leer_dht();
   leer_dht22(dhthum, dthtemp);
   sht21_both(temp,humid);
   delay_ms(10);

   printf("\r\nDHT22 Humedad = %f %%",dhthum);
   delay_ms(1);
   
   printf("\r\nDHT22 Temperatura = %f %cC", dthtemp,223);
   delay_ms(1);
   
   printf("\r\nSHT21 RH = %f %%",humid);
   delay_ms(1);
   
   printf("\r\nSHT21 T = %f %cC", temp,223);
   delay_ms(1);
   
   printf("\r\n...terminado..\n");
   
   delay_ms(2000);
 }
}

por el momento me sirve para valores psositivos de temperatura y voy a hacer pruebas con valores
negativos en temperatura (claro hay que agregar mas cosas a la librería ;-))

bueno ese es mi aporte y gracias de nuevo, me evitaste empezar desde cero :)

Saludos!

Nota: En cuanto pueda subo vídeos y el código mejorado para el DHT22


hola  saludos  soy  nuevo  en  esto  pero  gracias  a ustedes   ya  e podido   aprender algo  ..  primero fue manejar un lcd 16x2 ni dormir.. pero al fin pude y ahora adaptando la librería de el ejemplo para el dht 22 para el pic 16f88 .. pero   tenia sus mañas  como  para  que no cualquiera  las pueda  llegar  y  usar  los  comentarios que no son ...   y  ahora  ....   quería  preguntar   la  dth22.c también  tiene  mañas  verdad   porque en el ejemplo  sale asi (//#include dht22.c)..   y  mas  abajo  (#include dht.c)  osea la  primera  no figura  porque  es  solo  como  comentario   y  la  dht.c   esa  es  la  buena  pero no esta no...  la falta  de sueño   me  tiene  loco  y  peor  no puedo  dormir  cada  vez  estoy  mas  cerca  ....   me  pregunto   la librería subida  para  el  publico   tiene  mañas  verdad  porque estoy  con  un  lcd 16x2 y aparecen los  primeros  mensajes pero de ai a mas nada y  estuve leyendo la hoja de datos del  dht22 y dice que al energizar no se le debe mandar ningún pulso,, y medí en la protoboad el pin a2 del micro y lo primero que hace es eso,, osea  hay  algo.  ademas después sigue con pulsos,   es la librería .  pero   se  que  son  detalles   pequeños  creo.. pero  con  falta  de  sueño me cuesta  mas  pensar   jajaja....   en  realidad  quiero  un  termohigrometro para el control de tempera,humedad de una incubadora ..  y voy por  partes como  no  se  de  esto ya tengo  la librería probada del lcd y ahora voy   por el sensor pero me  cuesta  ... jaja...   gracias   si  esqueme  pudiera dar  pistas  para  facilitarme  un  poco  la búsqueda solo  si quiere   ....  gracias   y muchas  bendiciones,  su  trabajo  me a servido mucho  ...  ^_^






Desconectado PicTrance

  • PIC10
  • *
  • Mensajes: 6
Re: PIC16F84A y sensor de temperatura DHT11
« Respuesta #26 en: 25 de Octubre de 2013, 21:43:26 »

hola  saludos  soy  nuevo  en  esto  pero  gracias  a ustedes   ya  e podido   aprender algo  ..  primero fue manejar un lcd 16x2 ni dormir.. pero al fin pude y ahora adaptando la librería de el ejemplo para el dht 22 para el pic 16f88 .. pero   tenia sus mañas  como  para  que no cualquiera  las pueda  llegar  y  usar  los  comentarios que no son ...   y  ahora  ....   quería  preguntar   la  dth22.c también  tiene  mañas  verdad   porque en el ejemplo  sale asi (//#include dht22.c)..   y  mas  abajo  (#include dht.c)  osea la  primera  no figura  porque  es  solo  como  comentario   y  la  dht.c   esa  es  la  buena  pero no esta no...  la falta  de sueño   me  tiene  loco  y  peor  no puedo  dormir  cada  vez  estoy  mas  cerca  ....   me  pregunto   la librería subida  para  el  publico   tiene  mañas  verdad  porque estoy  con  un  lcd 16x2 y aparecen los  primeros  mensajes pero de ai a mas nada y  estuve leyendo la hoja de datos del  dht22 y dice que al energizar no se le debe mandar ningún pulso,, y medí en la protoboad el pin a2 del micro y lo primero que hace es eso,, osea  hay  algo.  ademas después sigue con pulsos,   es la librería .  pero   se  que  son  detalles   pequeños  creo.. pero  con  falta  de  sueño me cuesta  mas  pensar   jajaja....   en  realidad  quiero  un  termohigrometro para el control de tempera,humedad de una incubadora ..  y voy por  partes como  no  se  de  esto ya tengo  la librería probada del lcd y ahora voy   por el sensor pero me  cuesta  ... jaja...   gracias   si  esqueme  pudiera dar  pistas  para  facilitarme  un  poco  la búsqueda solo  si quiere   ....  gracias   y muchas  bendiciones,  su  trabajo  me a servido mucho  ...  ^_^

Hola, el código no tiene mañas simplemente al publicarlo no me di cuenta que el (//#include dht22.c) no lo des-comente, aparte de que a la libreria original la empece a modificar sin cambiarle el nombre por eso el de dht.c y el dht22.c ya que la probé para 2 sensores que tengo al final ya la nombre "dht22.c"  y esto mismo lo puse en los comentarios anteriores, ¿los leíste? y este ejemplo que puse no usa LCD todo lo envía por serial.

Saludos!!

pictrance.blogspot.mx/2013/10/driver-para-el-dht22-rht22-en-ccs.html
« Última modificación: 25 de Octubre de 2013, 21:49:30 por PicTrance »

Desconectado IngJulianVelasco

  • PIC10
  • *
  • Mensajes: 3
Re: PIC16F84A y sensor de temperatura DHT11
« Respuesta #27 en: 13 de Noviembre de 2013, 12:08:07 »
HOLA A TODOS DE ANTAMANO GRACIAS POR EL TRABAJO REALIZADO

muchachos ya guarde la libreria y copie el codigo pero cuando ejecuto el programa tengo un problema cuando trata de compilar la libreria
sale un error en el (delay) dice que (Undefined identifier)

GRACIAS POR SU AYUDA
« Última modificación: 13 de Noviembre de 2013, 12:49:11 por IngJulianVelasco »

Desconectado TIBURONMAUI

  • PIC10
  • *
  • Mensajes: 4
Re: PIC16F84A y sensor de temperatura DHT11
« Respuesta #28 en: 13 de Noviembre de 2013, 13:08:34 »
HOLA A TODOS DE ANTAMANO GRACIAS POR EL TRABAJO REALIZADO

muchachos ya guarde la libreria y copie el codigo pero cuando ejecuto el programa tengo un problema cuando trata de compilar la libreria
sale un error en el (delay) dice que (Undefined identifier)

GRACIAS POR SU AYUDA


hola eso es que no tienes definido ese delay o esta bien para lo que lo quieres. pero con otra modificación echa le cambio a ese error puede bien, el error estar justo en el relay que te dice, o en otro lado ..  me paso muchas veces ...   y  también prueba si estas usando el compilador picc ,pic c compiler, hay veces que te da error, y puedes modificar todo y abrir y cerrar el programa, pero va a seguir igual ...   yo estuve todo un día así. y fue que tuve que reiniciar el notebook, y así funciono las modificaciones de lo que estaba haciendo, prueba con eso ...  y  lo otro para poder ayudarte mejor pega tu librería y donde te da error . te puedo ayudar por que de errores para que decir ..  pero yo tengo  funcionando mi termostato gracias a este foro y los muchachos y su información muy buena......   después de mucho trabajo ...   dios te ayude ....   ^_^

Desconectado IngJulianVelasco

  • PIC10
  • *
  • Mensajes: 3
Re: PIC16F84A y sensor de temperatura DHT11
« Respuesta #29 en: 16 de Noviembre de 2013, 15:52:23 »
HOLA A TODOS DE ANTAMANO GRACIAS POR EL TRABAJO REALIZADO

muchachos ya guarde la libreria y copie el codigo pero cuando ejecuto el programa tengo un problema cuando trata de compilar la libreria
sale un error en el (delay) dice que (Undefined identifier)

GRACIAS POR SU AYUDA


hola eso es que no tienes definido ese delay o esta bien para lo que lo quieres. pero con otra modificación echa le cambio a ese error puede bien, el error estar justo en el relay que te dice, o en otro lado ..  me paso muchas veces ...   y  también prueba si estas usando el compilador picc ,pic c compiler, hay veces que te da error, y puedes modificar todo y abrir y cerrar el programa, pero va a seguir igual ...   yo estuve todo un día así. y fue que tuve que reiniciar el notebook, y así funciono las modificaciones de lo que estaba haciendo, prueba con eso ...  y  lo otro para poder ayudarte mejor pega tu librería y donde te da error . te puedo ayudar por que de errores para que decir ..  pero yo tengo  funcionando mi termostato gracias a este foro y los muchachos y su información muy buena......   después de mucho trabajo ...   dios te ayude ....   ^_^

Mira llevo vario tiempo con eso y no he podido y necesito urg hacer funcionar ese sensor, mira cuando corro el programa me sale un error en todos los delay y estoy trabajando con CCS ya reinicie el pc varias veces y no logro hacerlo funcionar, pregunta ¿ no se puede colocar todo el codigo en un solo archivo, es decir incluir la libreria en el mismo codigo??
gracias por la info q me puedas brindar