# Sensores SHT15 y DHT11



## cabraikki (Feb 28, 2012)

​hola buenas tardes, voya  hacer un proyecto de temperatura con el sensor dht11, soy nuevo en esto y he leido un poco, y entiendo que el ra4/t0ck del pin 3, me sirve como contador, bueno entonces quiero usar ese pin como entrada, entonces lo configure en el option reg, bueno el dedatelle es que el sensor es digital y me manda  40 bits, de los cuales los primeros 16 son de temperatura, los cuales 8 son de enteros y 8 son de unidades, y los siguientes 16 bits son de humedad 8 de enteros y 8 de unidades, y los ultimos 8 son la suma de los datos de temperatura mas datos de humedad relativa,  esto si los datos son correctos, ahora loq ue yo quiero haces es un programa en ensamblador donde tome la señal del sensor  y mandarlas a un lcd de 16x2,  que en una fila me muestre la temperatura y en otra la de humedad, pero pues no se como agarrar el dato del sensor y guardarlo para que luego las mande al lcd, espero que me ayan entendido, ayudenme por favor, gracias!![/RIGHT][/RIGHT]


saludos!!


----------



## Fabianx (May 10, 2012)

Hola Buenas Tardes.

Chicos quería, si fueran tan amables DESASNARME un poco.

He leido y bajado información sobre estos dos sensores. Por lo visto solo ofrecen el DHT11.

Serían tan amables de decirme ¿quien es el representante comercial... si lo hay en Argentina del SHT15 Sansirion?.

Por último ¿Alguien tiene la *librería* para el *DHT11* funcional en *Proteus*? o de que sitio sacarla... Desde hace dos días que la estoy buscando en las paginas de china y EEUU pero no he tenido suerte.

Mi gran problema es que cuento con información sobre SHT15, pero no encuentro quien lo venda.
Para el caso del DHT11 tengo quien lo venda pero carezco de la libreria para hacer las pruebas en Proteus. 

Muchas Gracias.


----------



## Moyano Jonathan (May 16, 2012)

> Serían tan amables de decirme ¿quien es el representante comercial... si lo hay en Argentina del SHT15 Sansirion?.



Los vende Cika y creo que también electrocomponentes.



> Por último ¿Alguien tiene la librería para el DHT11 funcional en Proteus? o de que sitio sacarla... Desde hace dos días que la estoy buscando en las paginas de china y EEUU pero no he tenido suerte.



No estás siendo específico. Necesitas el modelo simulable, el código para comunicarte a través de un microcontrolador ?

Te recomiendo no uses proteus...probalo en la realidad al sensor. Es la única manera en que te vas a dar cuenta de sus capacidades reales.



> Para el caso del DHT11 tengo quien lo venda pero carezco de la libreria para hacer las pruebas en Proteus.



Yo tengo experiencia con el DHT11, te digo en realidad no le llega ni a los talones al SHT15..11. No se que necesitas medir...pero si querés precisión tenés que comprar el SHT11 que si no me equivoco lo vende Cika.


----------



## neithenjony (May 18, 2012)

hola yo al igual estoy realizando un proyecto muy y necesito de apoyo para poder tomar los datos y almacenarlos. yo utilizo el pic 16f877A y si tengo entendido que todos los datos son por tiempos pero solo necesito ayuda con el programa. De antemano gracias hasta luego


----------



## Fabianx (May 19, 2012)

Moyano Jonathan dijo:


> Los vende Cika y creo que también electrocomponentes.
> 
> No estás siendo específico. Necesitas el modelo simulable, el código para comunicarte a través de un microcontrolador ?



 hay un emiticon para darte 1000 gracias por tu respuesta. La estaba necesitando y mucho. 

Vos sabés que escribí a Sensirion EEUU y no tenía respuesta ni siquiera de ellos. Probaré el Lunes sin falta con Cika y Electrocomponentes.

Siendo más específico. lo que buscaba es el *modelo simulable*. en Proteus del DHT11. Intenté crearlo, pero no tengo tanta experiencia aún para lograrlo con exito.

Pero ahora que vos me decís que el SHTxxx esta en el mercado seguiré con ese. Que a mi también me dejo la sensación que es lo que necesito.

Con respecto al uso que quiero darle es:

Crear una "cadena en serie" de sensores; meterlos en un Silo de Granos y controlar la Temperatura y Humedad del mismo.  Bueno eso es lo que desearía hacer.

Muchas Gracias Moyano.


----------



## Moyano Jonathan (May 19, 2012)

> Crear una "cadena en serie" de sensores; meterlos en un Silo de Granos y controlar la Temperatura y Humedad del mismo.  Bueno eso es lo que desearía hacer



Para eso necesitas presición...por justamente estás trabajando con alimentos y es importante controlar bien los parámetros de temperatura y precisión. Yo estudio Biomecatrónica y en uno de los proyectos fue el control de un depósito de frutas...donde se conjuga el trabajo con sensores de temperatura y humedad..sensores de gases...etc. El que respondió exactamente con lo pedido fue el SHT11 de Sensirion.


----------



## D@rkbytes (May 20, 2012)

neithenjony dijo:


> hola yo al igual estoy realizando un proyecto muy y necesito de apoyo para poder tomar los datos y almacenarlos. yo utilizo el pic 16f877A y si tengo entendido que todos los datos son por tiempos pero solo necesito ayuda con el programa. De antemano gracias hasta luego



Dense una vuelta por este link. 
*Measurement of temperature and relative humidity using DHT11 sensor and PIC microcontroller          *


----------



## Fabianx (May 20, 2012)

Tal cual.

Accedí a los Sitios que me has dicho (y que no conocía) y finalmente encontré el SHTxx.

Te gradezco mucho tu intervención, sugerencias, comentarios y ayuda.

Te envio un


----------



## cabraikki (May 20, 2012)

muchas gracias, pero ando trabajando en ensamblador, o alguien me puede decir como hacer  una division en ensamblador, para pic, loq ue pasa que quiero dividir un numero para mandarlo al display, un ejemplo seria si tengo 34, primero hay que mandar 3 y luego el 4, se que es con una resta y un incremento pero no mesale, alguien puede ayudarme?


----------



## ElFabroDeLaGente (Feb 22, 2013)

Moyano Jonathan dijo:


> Yo tengo experiencia con el DHT11, te digo  en realidad no le llega ni a los talones al SHT15..11. No se que  necesitas medir...pero si querés precisión tenés que comprar el SHT11  que si no me equivoco lo vende Cika.



Hola. Como va todo?
Una pregunta: ¿para el DHT11 que otros valores de resistores de pull-up puedo usar aparte del de 5K? Por que 5K no es un valor comercial para resistores al 5% de tolerancia.
Saludos.


----------



## Moyano Jonathan (Feb 22, 2013)

> Una pregunta: ¿para el DHT11 que otros valores de resistores de pull-up puedo usar aparte del de 5K? Por que 5K no es un valor comercial para resistores al 5% de tolerancia.
> Saludos.



Yo uso 4K7 1/4w 5% y funciona OK.

Saludos !


----------



## ElFabroDeLaGente (Feb 22, 2013)

Moyano Jonathan dijo:


> Yo uso 4K7 1/4w 5% y funciona OK.
> 
> Saludos !



Muchísimas gracias!!!!!!!!!!
Saludos.

Usaste el sensor alguna vez con una placa arduino?
Saludos.


----------



## Moyano Jonathan (Feb 23, 2013)

Si es muy sencillo de usar en Arduino, yo usé la librería y el ejemplo que aparecen aquí:

http://arduino-info.wikispaces.com/TemperatureHumidity

En esa página vas a poder encontrar otros proyectos interesantes también para probar.

Saludos !


----------



## ElFabroDeLaGente (Feb 24, 2013)

Muchísimas gracias!!!!!!!!!!
Saludos.


----------



## xzagatx (Feb 25, 2013)

hola tengo una libreria para dht11 con pic 16f84 en ccs por si les sirve la acabo de encontrar y parece util

este es el enlace, es archivo .rar automatica mente se inicia la descarga ingresando al siguiente link:

http://infinitec-ml.site50.net/dsz/201150.html


----------



## planchibus (Mar 10, 2013)

Hola, esto leyendo todo los que están comentando sobre los sensores y yo ha comprado 5 DHT11 para programar con picaxe18M2 y el problema que tengo es que no tengo la librería necesaria para comunicarlo. 
Quiero emplearlos en aplicaciones sencillas relacionadas con proyectos educativos. Soy profesor y mis alumnos están muy interesados en aprender sobre estos temas.
Saludos


----------



## jucaceledon (Mar 21, 2013)

hola, estoy tratando de ver como puedo utilizar el sth, con un pic 16f877a, utilizando flow code, la consulta es, la señal que entrega el sth es digital o analoga???

como podria hacerlo, la idea es mostrar la temp y humedad en un lcd

gracias

juan carlos


----------



## Steron (Ago 2, 2013)

Hola buenas a todos. Estoy haciendo uso del dht11 con un 16f877a, usando mikroc, realmente me ha costado hacer uso del sensor, porque he encontrado códigos para establecer comunicación pero no me funciona. No tengo simulación porque no existe tal sensor en Proteus. Así que todo ha sido a prueba real. Espero puedan ayudarme.

El código está en MikroC


----------



## salvador33 (Mar 10, 2015)

Hola. Buenos días, amigos.
Hace ya tiempo que no escribo, y después de estar realizando diversos proyectos, me embarqué en la aventura de comunicar un PIC cualquiera con el sensor de temperatura DHT11.
Ya que sólo hay ejemplos para Arduino y tal vez a alguien como yo le gustaría poder probarlo en los PIC de Microchip sin necesidad de arduino.

Voy a adjuntar una librería hecha por mi, por lo tanto es casera y se puede modificar a gusto y necesidad de cada uno, y si alguien puede aportar mejoras, un tanto mejor.

Librería:

```
//----------------------------------------------------------//


#define dht11 PIN_B0
#bit dht_io = 0x86.0 // este es el bit 0 del tris b para ponerlo como entrada o salida
#byte puerto_b = 0x06

byte dht_dat[5]; // Creo un array de tipo byte de 5 ya que asi en el programa principal podemos mostrar cada dato
//individualmente sin necesidad de punteros
//los datos obtenidos son en este orden: 
//dato 0= parte entera de la humedad
//dato1= parte decimal de la humedad
//dato2= parte entera de la temeperatura
//dato3= parte decimal de la temperatura
//dato4= dato de comprobacion para saber si la captura es correcta

//#use rs232(baud=9600,xmit=PIN_B7,rcv=PIN_B6,bits=8,parity=N,FORCE_SW) // conexion rs232 por si acaso alguien la necesita


void iniciar_dht();//para iniciar el sensor
void leer_dht();//para comenzar la captura de datos el sensor
byte leer_dht_dat();//funcion de captura de datos del sensor
void mostrar_dht();// mostrar datos

//--------------------------------funcion inicializar
void iniciar()
{

dht_io=0;
delay_ms(1);
OUTPUT_HIGH(dht11);

}//-------------------

//----------------------funcion de leer el dht-------------
void leer_dht()
{
//------- variables
byte GlobalErr=0;
byte dht_in;
byte i;

byte dht_check_sum;




//-----------------
dht_io=0; // configurar el pin como salida
OUTPUT_HIGH(dht11);
OUTPUT_LOW(dht11);
delay_ms(18);// retardo indicado por el fabricante
OUTPUT_HIGH(dht11);
delay_us(22);// entre 22 y 28 us 
dht_io=1;// configurar el pin como entrada
delay_us(5);// retardo indicado por el fabricante esta entre los 22 y 28 us
dht_in=input(dht11);
if(dht_in)
 {
  GlobalErr=1;
  printf("<dht11 start condition 1 not met");
  return;
 }
 delay_us(80);
 dht_in=input(dht11);
 if(!dht_in) 
 {
  GlobalErr=2;
  printf("<dht11 start condition 2 not met");
  return;
 }
  delay_us(80);
  for (i=0; i<5; i++)
  {
    dht_dat = leer_dht_dat(); // capturando datos
  }
  
  dht_io=0;// configura el puerto como salida

OUTPUT_HIGH(dht11);

dht_check_sum = dht_dat[0]+dht_dat[1]+dht_dat[2]+dht_dat[3]; // comprobacion si la lectura es correcta
if(dht_dat[4]!=dht_check_sum)
{
 GlobalErr=3;
 printf("DHT11 checksum error");
 
}
dht_dat[0]=dht_dat[0]+5;
dht_dat[2]=dht_dat[2]+2;
// por ajustar segun caracteristicas +- 5%
//printf("Current humdity = ");
 //printf("%d",dht_dat[0]+5);
  //printf(".");
  //printf("%d",dht_dat[1]+50);
  //printf(" RH  ");
 //printf("temperature = ");
  //printf("%d",dht_dat[2]+2); // por ajustar segun caracteristicas +- 2ºC
  //printf(".");
  //printf("%d",dht_dat[3]+50);
  //
  //printf("C \n ");
 // delay_ms(2000);



}// fin de funcion leer dht

//------------------------funcion recoger bits del dht
byte leer_dht_dat()
{
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(dht11)==0);
  delay_us(30);
  if (input(dht11)==1)//Was: if(PINC & _BV(dht_PIN))
  {
  result |=(1<<(7-i));
  }
  while (input(dht11)==1);
  //Was: while((PINC & _BV(dht_PIN)));
 }
 //end of "for.."
 return result;
}

//---------------------------------------------------------
```
A continuación voy a poner un ejemplo hecho con el PIC16F84A pero puede utilizarse para cualquier PIC

Ejemplo:

```
//--------------------------------------------------------------------------------

#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)
#use rs232(baud=9600,xmit=PIN_B5,rcv=PIN_B4,BITS=8,PARITY=N)

void main()
{

   //setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

   // TODO: USER CODE!!

delay_ms(5000);
printf("iniciando..\n");
   do
{




delay_ms(10);
 iniciar();
leer_dht();

printf("Humedad = ");
 printf("%d",dht_dat[0]);
 delay_ms(20);
 printf(",");
  printf("%d ",dht_dat[1]);
  delay_ms(20);
 printf("Temperatura = ");
 printf("%d ",dht_dat[2]);
 delay_ms(20);
  printf(",");
  printf("%d ",dht_dat[3]);
  delay_ms(20);
printf("\n...terminado..\n");

  delay_ms(2000);

}while(true);


}

//-------------------------------------------------------
```
Hasta aquí mi aporte. Espero que les sirva de ayuda a los demás.


----------



## Gargantia (Ago 5, 2018)

Hola buenos dias  esta es mi primera vez en este foto, necesito ayuda con un proyecto que estoy haciendo ya que no estoy muy acostumbrado a programar en mikro c por lo que me disculpo si no llego a entender algunos concepto que lleguen a mencionar.
El proyecto que estoy haciendo es para un invernadero hidroponico, con el pic 18f4550(que es el que estoy usando) mide la cantidad de agua con un sensor de caudal yf-s201 y nos muestra sus lecturas en una LCD, el problema que tengo es que ahora quiero añadir un sensor de temperatura DHT11 para medir la temperatura y humedad que haya dentro del invernadero y que a ciertas temperaturas (0°, 15° y 25° C°) activen unos reveladores que a su ves encenderán unos ventiladores y un foco para regular al temperatura. El código para lo del caudal y temperatura ya mas o menos me lo pasaron unos compañeros pero no se si lo tengo bien, abajos les dejo el codigo que tengo en un bloc de notas.
Espero sus respuestas y agradesco la ayuda que me puedan proporcionar .


----------



## TRILO-BYTE (Ago 5, 2018)

Pero no entendí que quieres o cuál es tu duda


----------

