RobotyPic son proyectos básicos de electrónica con microcontroladores PIC, de aplicación en el mundo de la robótica didáctica, con archivos fuente creados mediante el compilador CCS PIC C COMPILER en lenguajeC.

Sensor de Temperatura y Humedad SHT11 con PIC

En realidad, lo aquí documentado es válido para toda la gama de sensores con comunicación serie: SHT10, SHT11, SHT15, SHT71 y SHT75.


Pin
Denominación
Comentarios
1
GND
Masa
2
DATA
Entrada-Salida de datos
3
SCK
Entrada señal de reloj
4
Vcc
Alimentación (5V)
NC
NC
No conectado

Se ha desarrollado una librería para el control de este tipo de sensores <SHTxx_RyP.c>. Su documentación en detalle puede verse en el artículo "Librería C para sensor SHT11".

Aunque el sensor se puede alimentar con un rango de tensiones de 2.4v a 5.5v, la exactitud del valor de la medida de los valores ambientales dependerán de dicho valor. La librería c está desarrollada para una tensión de alimentación de 5v. Otros valores diferentes a éste pueden provocar errores en la exactitud de la medida de las variables ambientales.

Se debe colocar un condensador de desacoplo de 100nF entre los pines de alimentación y colocado lo mas cercano posible a estos en el sensor. La línea DATA también requiere de una resistencia pull up de 10k. 


En la cabecera del programa habrá que llamarla mediante la directiva:

#include <SHTxx_RyP.c>

En el caso del empleo de la versión v3 o v4 del sensor SHT71 o SHT75, la librería C a emplear será <SHT7xv3_RyP.c> que contiene los coeficientes de cálculo adecuados para esas versiones.

La comunicación entre el PIC y el sensor es mediante un protocolo serie (no es válido un protocolo I2C). Los pines del PIC configurados para dicha comunicación son el RA4 para la línea DATA (Datos) y el RA3 para la línea SCK (Reloj), pero pueden ser sustituidos por los deseados modificando su definición en la cabecera de la librería C.

/*************  Definición de pines del bus serie **************/
#define sht_data_pin   PIN_A4
#define sht_sck_pin    PIN_A3

Cargada la librería C para el sensor, y antes de cualquier otra llamada al mismo, habrá que inicializarlo:

SHTxx_init();                //Inicialización del SHT11

Para leer los valores de las medidas ambientales de Temperatura y Humedad, se llama a la función:

/** Llamada a la función de lectura de Temperatura y Humedad **/
SHTxx (sht_temperatura, sht_humedad);

Nos devolverá en las variables sht_temperatura y sht_humedad los valores de temperatura y humedad respectivamente.

Por defecto, el Registro de Estado se carga con la configuración 0x00. Es decir, emplea una resolución de 14 bits para la lectura digital de la Temperatura, 12 bits de resolución para la lectura digital de la humedad y se deja apagado el calefactor interno del sensor. Si se desea cambiar esta configuración, se deberá llamar a la función:

SHTxx_ESCRITURA_REGISTRO_ESTADO (sht_registro);

Donde  sht_registro deberá contener el valor a cargar en el Registro de Estado en base a los bits que se desee activar:

Bit
Tipo
Descripción
Por defecto
7
---
Reservado
0
6
R
Detección de bajo voltaje:
‘0’ => Vcc > 2.47 V
‘1’ => Vcc < 2.47 V
Sólo lectura
5
---
Reservado
0
4
---
Reservado
0
3
---
No usar
0
2
R/W
Calefactor interno
‘0’ => off
‘1’ => on
0
1
R/W
Sin Recarga de OTP
0
0
R/W
‘0’ => resolución 12 bit RH / 14 bit Tª
‘1’ => resolución 8 bit RH / 12 bit Tª
0

Si no se desea cambiar los valores por defecto (0x00), no es necesaria la llamada a la función.

El valor actual del registro de estado se puede leer con la función:

/** Llamada a la función lectura del valor del Registro de Estado **/
sht_registro=SHTxx_LECTURA_REGISTRO_ESTADO ();


[+/-] Ver / Ocultar programa completo en C


El ejemplo que se ha realizado para confirmar el funcionamiento consiste simplemente en la muestra en un LCD de los valores de Temperatura y Humedad leídos. También se muestra el valor de configuración del Registro de Estado, que previamente se ha cargado con el valor 0x00. Aunque, como se ha hecho referencia antes, no sería necesario puesto que reside en el Registro de Estado por defecto. Tan solo se trata de una demostración de como se cargaría el valor deseado.

En esta animación se puede ver el funcionamiento.


  

Descargar archivos "Sensor SHT11 con PIC + Librerías C".



Artículo relacionado>> Librería C para sensor SHT11 con PIC


El proyecto contenido en el artículo ha sido diseñado y probado  utilizando estas versiones de software:
- Windows 7
- Proteus V7.7 SP2 y V8
- CCS PIC C COMPILER v4.084





PINES PIC16F876A



1 comentario:

Jctique dijo...

Hola amigo buen día, una pregunta, puedo emplear tu libreria con el pic16f1827 empleando los mismo pines he tratado de hacer ello y nada, de casualidad los registros que usas son solo del pic16f876 ?

Related Posts Plugin for WordPress, Blogger...

CONTACTA - (Haz referencia del artículo sobre el que trata la consulta o comentario)