Sunteți pe pagina 1din 12

2017516 RobotyPic:LibreraCparasensorSHT11conPIC

EstesitioempleacookiesdeGoogleparaprestarsusservicios,parapersonalizaranunciosyparaanalizarel
trfico.Googlerecibeinformacinsobretuusodeestesitioweb.Siutilizasestesitioweb,sesobreentiendeque
aceptaselusodecookies.
MSINFORMACIN ENTENDIDO

Anuncios Google 1 Temperaturesensor 2 Sensordehumedad 3 ArduinoHumiditysensor

INICIO CONTROL PICPIC CONTROL PCPIC PROCESOSPIC COMPONENTESPIC SENSORESPIC ACTUADORESPIC ROBOTSPIC SOFTWAREPIC

RobotyPicsonproyectosbsicosdeelectrnicaconmicrocontroladoresPIC,deaplicacinenelmundodela
robticadidctica,conarchivosfuentecreadosmedianteelcompiladorCCSPICCCOMPILERenlenguajeC.

Librera C para sensor SHT11 con PIC

SetratadeunalibreraC,SHTxx_RyP.c,paraelcontrol
delsensorSHT11conunPIC.Unejemplodesuaplicacin
se puede ver en el artculo: "Sensor de temperatura y
humedadSHT11conPIC".Esvlidaparatodalagamade
sensoresSHT10,SHT11,SHT15,SHT71ySHT75.
Cuando se emplee la versin v3 o v4 del sensor SHT71 o
SHT75, la librera alternativa es SHT7xv3_RyP.c que
contiene los coeficientes de clculo adecuados
correspondientesadichasversiones.

Dentro de la librera C encontraremos el cdigo estructurado en diferentes secuencias y Elige tu idioma


funciones.

LaSECUENCIADEINICIODETRANSMISINconsistenteen:

Ponera0lalneaDATAmientrasSCKesta1.
Ponera0SCKmientrasDATAcontinuaa0.
Suscrbete
Volveraponera1SCKsincambiarelestadodeDATA
FinalmentepasarDATAa1mientrasSCKesta1
Recibe actualizaciones gratis por RSS
Feed o si lo pre eres puedes recibirlas
en tu e-mail.

Suscribetevaemail:

Suscribete
/**secuenciadeiniciodetransmisin**/
voidSHTxx_InicioTrans(void){

//DATAa"0"conSCKa"1"
output_float(sht_data_pin)//lneaDATAa"1"
output_low(sht_sck_pin)//lneaSCKa"0"
delay_us(1)
output_high(sht_sck_pin)//lneaSCKa"1"
delay_us(1)
output_low(sht_data_pin)//lneaDATAa"0"
delay_us(1)
//SCKa"0"sincambiarDATA"0"
output_low(sht_sck_pin)//lneaSCKa"0"
delay_us(2)
//SCKa"1"sincambiarDATA"0"
output_high(sht_sck_pin)//lneaSCKa"1"

http://robotypic.blogspot.com.es/2013/09/LibreriaCparaSHT11.html 1/12
2017516 RobotyPic:LibreraCparasensorSHT11conPIC
delay_us(1)
EstesitioempleacookiesdeGoogleparaprestarsusservicios,parapersonalizaranunciosyparaanalizarel
//DATAa"1"conSCKa"1"
trfico.Googlerecibeinformacinsobretuusodeestesitioweb.Siutilizasestesitioweb,sesobreentiendeque
output_float(sht_data_pin)//lneaDATAa"1"
aceptaselusodecookies.
delay_us(1)
output_low(sht_sck_pin)//lneaSCKa"0"
MSINFORMACIN ENTENDIDO
}


La SECUENCIA DE RESET resetea solo la interface, los registros de estado mantienen sus valores.
Consisteen:

ConlalneaDATApuestaa1,conmutar9omsveceslalneaSCKentre0y1.
DebeseguirleunasecuenciadeInicio.

/**secuenciadereset**/
voidSHTxx_Reset(void){
inti
//iniciodesecuenciaconSCKa0yDATAa1
output_float(sht_data_pin)//lneaDATAa1
output_low(sht_sck_pin)//lneaSCKa0
delay_us(2)
//conmutaSCK9vecesconDATAa1
for(i=0i<9i++){
output_high(sht_sck_pin)
delay_us(2)
output_low(sht_sck_pin)
delay_us(2)
}
Te ha gustado?
/**secuenciadeiniciodetransmisin**/
SHTxx_InicioTrans()
Si lo deseas puedes aadir un enlace
}
en cualquiera de tus blogs de blogger
con un simple "click".
Con la SECUENCIADEENVIODECOMANDO se le indica al sensor la actuacin que debe realizar. Son O bien agregarme a los favoritos de
comandosde5bitsperosedebeenviarunbytecompleto(8bits),3bitsdedireccinA0aA2y tu explorador de internet.
los5bitsdelcomandoC0aC4.Losbitsdedireccinsolopermitenvalor0.

COMANDO Cdigoenbinario Cdigohex.

Reservado 0000x

MedidadeTemperatura 00011 0x03

MedidadeHumedadRelativa 00101 0x05


Enlazaesteblog
LecturadelRegistrodeEstado 00111 0x07
Escrituraenregistrode Agregarafavoritos
00110 0x06
Estado
Reservado 0101x1110x
ResetdelSof,reseteala
Sguenos en...
interface,limpiaelregistroa
losvalorespordefecto.SE
11110 0x1D
debeesperarunmnimode
11msgantesdelsiguiente
comando.

Consisteen: Buscar en esta web


TrasunasecuenciacompletadeIniciodetransmisin.
Envodelcomandobitabit
Buscar
Lecturadelack
LneafinaindicasucontrolporelPIC,lneagruesacontrolporelsensor. Bsquedapersonalizada

/**secuenciadeenvodecomando**/
int1SHTxx_Comando(int8sht_comando){

http://robotypic.blogspot.com.es/2013/09/LibreriaCparaSHT11.html 2/12
2017516 RobotyPic:LibreraCparasensorSHT11conPIC

Hojas Tcnicas
EstesitioempleacookiesdeGoogleparaprestarsusservicios,parapersonalizaranunciosyparaanalizarel
trfico.Googlerecibeinformacinsobretuusodeestesitioweb.Siutilizasestesitioweb,sesobreentiendeque
aceptaselusodecookies. PICS

MSINFORMACIN ENTENDIDO
C.I.s

SENSORES

SEMICONDUCTORES
int8bit
PERIFRICOS
int8mascara=0x80
int1ack
delay_us(4)
//Salidadelcomandobitabit
for(bit=8bit>=1bit){ Anuncios Google
output_low(sht_sck_pin)//lneaSCKa"0"
//LneaDATAa"1"siMSBes"1" 1.Sensorcontrol
if((sht_comando&mascara)>0)output_float(sht_data_pin)
//LneaDATAa"0"siMSBes"0"
2.Sensordata
elseoutput_low(sht_data_pin)
delay_us(1)
output_high(sht_sck_pin)//lneaSCKa"1"
delay_us(1) Sugerencias
mascara=mascara>>1//siguientebitpasaaserMSB
}
Ayudanos a mejorar.
/**lecturadelack**/
Haz tu sugerencia o contesta
output_low(sht_sck_pin)//lneaSCKa"0"
nuestro formulario en este enlace:
delay_us(1)
ack=input(sht_data_pin)//lecturadelack
output_high(sht_sck_pin)//lneaSCKa"1"
delay_us(1)
output_low(sht_sck_pin)//lneaSCKa"0" Formulario de sugerencias
return(ack)
}


La SECUENCIADEESPERADEMEDICINTERMINADAespera, una vez enviado el comando de medida de
la temperatura o humedad, a que el sensor avise de la finalizacin del proceso de medida
pasandolalneaDATAde1a0.Puededurarunmximode20/80/320msg.paraunamedida
de8/12/14bits.

Seguidores
LneafinaindicasucontrolporelPIC,lneagruesacontrolporelsensor.
Seguidores(25)Siguiente

/**Secuenciadeesperademedidaterminada**/
voidSHTxx_Espera(void){
int16sht_delay
output_float(sht_data_pin)//lneaDATAa"1"
output_low(sht_sck_pin)//lneaSCKa"0"
delay_us(1)
//EsperaaquelineaDATApasea"0"mximo300msg.
for(sht_delay=0sht_delay<30000sht_delay++){
//silineaDATApasaa"0"=>findelamedicin
Seguir
if(!input(sht_data_pin))break
delay_us(10)
}
} Notas de Consulta

Con la SECUENCIA DE LECTURA DEL DATO DE UNA MEDIDA,y tras que el SHTxx haya indicado el fin de COMPILADORCCS
unamedicin,elmicrocontroladorreiniciaelbusSCKparaobtenereldatodelamedida.El dato
delamedidaesalmacenadoporloqueelprocesadorpuedehacerotrastareashastasulectura. LENGUAJEC

http://robotypic.blogspot.com.es/2013/09/LibreriaCparaSHT11.html 3/12
2017516 RobotyPic:LibreraCparasensorSHT11conPIC

COMPONENTES
Lasecuenciaconsisteen:
EstesitioempleacookiesdeGoogleparaprestarsusservicios,parapersonalizaranunciosyparaanalizarel
trfico.Googlerecibeinformacinsobretuusodeestesitioweb.Siutilizasestesitioweb,sesobreentiendeque
Lecturadelbytealtodeldatodelamedida.Siesundatode8bitsestebyteseignora.
CONECTORES
aceptaselusodecookies.
ElmicrocontroladorponelalineaDATAa0comoreconocimientoack.
Lecturadelbytebajodeldatodelamedida. MSINFORMACIN ENTENDIDO

El microcontrolador pone la linea DATA a 0 como reconocimiento ack si va a leer el


byteCRCchecksumoa1paraterminarsinlecturadeCRCchecksum.
LecturadelbytedelCRCchecksum(opcional). Chat del Blog
ElmicrocontroladorponelalneaDATAa0comoreconocimientoack.
2Feb17,11:25PM
r:hh
19Oct16,08:59PM
klokko:holap
21Jul16,04:22AM
chile2014:sigueshaciendotrabajos
apedido?
27Jun16,10:24PM
tito:loquesea
4Feb16,02:20AM
kol:hola
17Jan16,09:56AM
LneafinaindicasucontrolporelPIC,lneagruesacontrolporelsensor. fadi:hallo
17Jan16,09:53AM
fadi:hallo
/**Secuenciadelecturadeldatodelamedida**/ 4Nov15,10:19PM
IVO:Alguiensabecualeslapartedel
int16SHTxx_Lectura(void){ codigoStackparaclienteweb??
int8bit 22Sep15,07:39PM
RyP:yanry,usaelformulariode
int16sht_dato=0 contactoparapreguntarloque
constint16mascara0=0x0000 quieras
14Sep15,09:42PM
constint16mascara1=0x0001 yanry:Robotipiccompuedo
//guardabytealtodeldatoledoenbytealtodesht_datobitabit [GetaCbox] actualizar
nombre email/url
for(bit=8bit>=1bit){
mensaje ok
sht_dato=sht_dato<<1//siguientebitpasaaserMSB
ayudaemoticonoscbox
output_high(sht_sck_pin)//lneaSCKa"1"
delay_us(1)
//silneaDATAes"1"ponebitcorrespondienteensht_datoa"1"
if(input(sht_data_pin))sht_dato|=mascara1 Qu PIC te interesa ms?
//silneaDATAes"0"ponebitcorrespondienteensht_datoa"0"
elsesht_dato|=mascara0
16F84 1(100%)
output_low(sht_sck_pin)//lneaSCKa"0"
16F876 0(0%)
delay_us(1)
16F877 0(0%)
}
18F4550 0(0%)
//EnvoackponiendolineaDATAa"0"
output_low(sht_data_pin)//lneaDATAa"0"
Votoshastaelmomento:1
delay_us(1) Encuestacerrada
output_high(sht_sck_pin)//lneaSCKa"1"
delay_us(2)
output_low(sht_sck_pin)//lneaSCKa"0"
delay_us(1)
output_float(sht_data_pin)//lneaDATAa"1" Olvdate de pagar por tu antivirus.
//guardabytebajodeldatoledoenbytebajodesht_datobitabit Avast! es totalmente gratis y su
for(bit=8bit>=1bit){ rendimiento es excelente.
sht_dato=sht_dato<<1//siguientebitpasaaserMSB Descrgalo y pruebalo tu mismo:
output_high(sht_sck_pin)//lneaSCKa"1"
delay_us(1)
//silneaDATAes"1"ponebitcorrespondienteensht_datoa"1"
if(input(sht_data_pin))sht_dato|=mascara1//shiftindatabit
//silneaDATAes"0"ponebitcorrespondienteensht_datoa"0"
elsesht_dato|=mascara0
output_low(sht_sck_pin)//lneaSCKa"0"
Webs Similares
delay_us(1)
}
//EnvoackponiendolineaDATAa"1"=>nolecturaCRCchecksum
output_float(sht_data_pin)//lneaDATAa"1"
delay_us(1)
output_high(sht_sck_pin)//lneaSCKa"1"
delay_us(2)
output_low(sht_sck_pin)//lneaSCKa"0"
return(sht_dato)
}


La FUNCINDEMEDIDADELAVARIABLEejecutatodaslassecuenciasnecesariasyenelordencorrecto
paraobtenerelvalordigitaldelahumedadotemperaturaledasporelsensor.Elprocesoser:
Compra tu Proyecto

http://robotypic.blogspot.com.es/2013/09/LibreriaCparaSHT11.html 4/12
2017516 RobotyPic:LibreraCparasensorSHT11conPIC
Secuenciadeiniciodetransmisin
Solicita un proyecto o servicio
EstesitioempleacookiesdeGoogleparaprestarsusservicios,parapersonalizaranunciosyparaanalizarel
Secuenciadeenvodecomando
trfico.Googlerecibeinformacinsobretuusodeestesitioweb.Siutilizasestesitioweb,sesobreentiendeque
Secuenciadeesperahastamedicincompletada personalizado.
aceptaselusodecookies.
Secuenciadelecturadeldatodelamedicin
Hazclickaqu.
MSINFORMACIN ENTENDIDO
//**Funcindemedidadevariable**/
int16SHTxx_Medida(sht_comando){
int1ack
int16sht_dato
/**secuenciadeiniciodetransmission**/
SHTxx_InicioTrans()
//envodelcommandoylecturadelack
ack=SHTxx_Comando(sht_comando)
if(ack==1)return//sihayerrorsaledelamedida
//esperaaqueshttermineelclculodelamedida
SHTxx_Espera()
//finalizadalamedida,obtieneelvalordigital
sht_dato=SHTxx_Lectura()
return(sht_dato)
}


La FUNCIN DEL CLCULO DE LAS VARIABLES obtiene los valores reales analgicos partiendo de los
datosdigitalesledosporelsensor.Paraelclculoseempleanunoscoeficientesproporcionados
porelfabricanteyquedependendelaresolucin(ndebits)delasmedidasobtenidas.

SHTxx_calculo(int16sht_DatoTemperatura,float&sht_temperatura,int16
sht_DatoHumedad,float&sht_humedad){
floatsht_HumedadLineal
//Clculodetemperaturaenfuncindelamedidadigitaldelsensor DirectoriodeBlogs
sht_temperatura=((float)sht_DatoTemperatura*d2)+d1
//Clculovalorlinealhumedad
sht_HumedadLineal=(sht_DatoHumedad*c2)+(sht_DatoHumedad*
sht_DatoHumedad*c3)+c1
//Clculodelahumedadcompensadaportemperatura
sht_humedad=((sht_temperatura25.0)*(t1+(t2*sht_DatoHumedad)))+
sht_HumedadLineal
Descarga Demos
}

La FUNCINDELECTURADELREGISTRODEESTADO obtiene el valor de configuracin de dicho registro.


Consistiren:

Secuenciadeiniciodetransmisin
Secuenciadeenvodecomando
Secuenciadelecturadelregistrodeestadoycheksum

SHTxx_LECTURA_REGISTRO_ESTADO(){
int16sht_dato//Bytealto=registroestado,bytebajo=ckecksum
int8sht_checksum//Guardarelvalordelchecksum
/**secuenciadeiniciodetransmission**/
SHTxx_InicioTrans()
/**Secuenciadeenvodecomando**/
SHTxx_Comando(SHTxx_REG_ESTADO_R)//Comandodelecturaregistrodeestado
/**Lecturadelregistrodeestadoychecksum**/
sht_dato=SHTxx_Lectura()
sht_registro=make8(sht_dato,1)//Bytealto=valorregistrodeestado
sht_checksum=make8(sht_dato,0)//Bytebajo=valordelchecksum
return(sht_registro)//Devuelvevalordelregistrodeestado
}

Conla FUNCINDEESCRITURADELREGISTRODEESTADO se carga el valor de configuracin del sensor.


Consistiren:

Secuenciadeiniciodetransmisin
Secuenciadeenvodecomando
Secuenciadeescrituradelvalordelregistrodeestado

SHTxx_ESCRITURA_REGISTRO_ESTADO(sht_registro){
/**secuenciadeiniciodetransmisin**/

http://robotypic.blogspot.com.es/2013/09/LibreriaCparaSHT11.html 5/12
2017516 RobotyPic:LibreraCparasensorSHT11conPIC
SHTxx_InicioTrans()
EstesitioempleacookiesdeGoogleparaprestarsusservicios,parapersonalizaranunciosyparaanalizarel
/**Secuenciadeenvodecomando**/
trfico.Googlerecibeinformacinsobretuusodeestesitioweb.Siutilizasestesitioweb,sesobreentiendeque
SHTxx_Comando(SHTxx_REG_ESTADO_W)//Comandodeesrituraregistrodeestado
aceptaselusodecookies.
SHTxx_Comando(sht_registro)//Argumentoacargarenelregistrode
estado
MSINFORMACIN ENTENDIDO
}

Con la FUNCIN DE RESET DE SOFT se enva el comando que inicializa el valor del registro a sus
valorespordefecto(0x00).

voidSHTxx_Reset_Soft(void){
SHTxx_Reset()//Resetcomunicacin
SHTxx_Comando(SHTxx_SOFT_RESET)//Comandoreset=>Reg.Estado,valoresdefecto
delay_ms(15)//Espera15mseg.
}

[+/]Ver/OcultarlibreraCcompleta

////////////////////////////////////////////////////////////////////////////////
////
//LibreraCparaelcontroldesensoresdeTemperaturayHumedad://
////
//SHT10,SHT11,SHT15,SHT71,SHT75//
////
//Debecargarseestearchivodesdelacabeceradelprogramaprincipalcon://

//#include<SHTxx.RyP.c>//
////
//*Inicializacindelsensormediantelafuncin://
//SHTxx_init()//
////
//*Obtencindelamedidadehumedadytemperaturamediantelafuncin://
//SHTxx(sht_temperatura,sht_humedad)//
//Enlasvariablessht_temperaturaysht_humedadseobtienenlosvalores//
//realesdetemperaturayhumedadmedidos.//
////
//*Escrituradelvalordelregistrodeestadomediantelafuncin://
//SHTxx_ESCRITURA_REGISTRO_ESTADO(sht_registro)//
//sht_registrodebercontenerelvaloracargarenelregistro(defecto0)//
//bit0=0=>Resolucin14bitsTemperaturay12bitsHumedad// Patillaje SHT11
//bit0=1=>Resolucin12bitsTemperaturay8bitsHumedad//
//bit1=0=>Datodecalibracinnosecargaantesdecadamedida//
//bit1=1=>Datodecalibracinsecargaantesdecadamedida//
//bit2=0=>CalefactorinternoOFF//
//bit2=1=>CalefactorinternoON//
//bit6=0=>DeteccinbajatensinVcc>2.47V(bitdesololectura)// Patillaje PIC16F876A
//bit6=1=>DeteccinbajatensinVcc<2.47V(bitdesololectura)//
////
//*Obtencindelvalordelregistrodeestadomediantelafuncin://
//SHTxx_LECTURA_REGISTRO_ESTADO(sht_registro)//
//sht_registrodevolverelvalordelregistrodeestado//
////
//*Resetdelsoftdelsensormediantelafuncin://
//SHTxx_Reset_Soft()//
//(Registrodeestadoasusvalorespordefecto)//
////
//http://robotypic.blogspot.com///
////
////////////////////////////////////////////////////////////////////////////////

/****************Definicindepinesdelbusserie**************************/

#definesht_data_pinPIN_A4
#definesht_sck_pinPIN_A3

/**ComandosdelSHTxx**/

#defineSHTxx_REG_ESTADO_W0x06//Comandoescrituraenregistrodeestado
#defineSHTxx_REG_ESTADO_R0x07//Comandolecturaderegistrodeestado
#defineSHTxx_COMANDO_TEMP0x03//Comandomedidadetemperatura
#defineSHTxx_COMANDO_HUM0x05//Comandomedidadehumedad
#defineSHTxx_SOFT_RESET0x1E//Comandoresetdesoft

http://robotypic.blogspot.com.es/2013/09/LibreriaCparaSHT11.html 6/12
2017516 RobotyPic:LibreraCparasensorSHT11conPIC

EstesitioempleacookiesdeGoogleparaprestarsusservicios,parapersonalizaranunciosyparaanalizarel
/*****Variablesglobalesparalecturadelvalordetemperaturayhumedad*****/
trfico.Googlerecibeinformacinsobretuusodeestesitioweb.Siutilizasestesitioweb,sesobreentiendeque
aceptaselusodecookies.
floatsht_temperatura//Guardarelvalorrealdetemperaturamedida
floatsht_humedad//Guardarelvalorrealdehumedadmedida
MSINFORMACIN ENTENDIDO
int8sht_registro//Guardarelvalordelregistrodeestado

/******************************************************************************/
/****************SECUENCIADEINICIODETRANSMISIN**************************/
//_____________
//DATA:|_______|
//______
//SCK:___||___||______

voidSHTxx_InicioTrans(void){
//DATAa"0"conSCKa"1"
output_float(sht_data_pin)//lneaDATAa"1"
output_low(sht_sck_pin)//lneaSCKa"0"
delay_us(1)
output_high(sht_sck_pin)//lneaSCKa"1"
delay_us(1)
output_low(sht_data_pin)//lneaDATAa"0"
delay_us(1)
//SCKa"0"sincambiarDATA"0"
output_low(sht_sck_pin)//lneaSCKa"0"
delay_us(2)
//SCKa"1"sincambiarDATA"0"
output_high(sht_sck_pin)//lneaSCKa"1"
delay_us(1)
//DATAa"1"conSCKa"1"
output_float(sht_data_pin)//lneaDATAa"1"
delay_us(1)
output_low(sht_sck_pin)//lneaSCKa"0"
}

/******************************************************************************/
/***********************SECUENCIADERESET***********************************/
//_____________________________________________________________
//DATA:|_______|
//_______________
//SCK:__||__||__||__||__||__||__||__||__||______||___||______

voidSHTxx_Reset(void){

inti
//iniciodesecuenciaconSCKa"0"yDATAa"1"
output_float(sht_data_pin)//lneaDATAa"1"
output_low(sht_sck_pin)//lneaSCKa"0"
delay_us(2)
//conmutaSCK9vecesconDATAa"1"
for(i=0i<9i++){
output_high(sht_sck_pin)
delay_us(2)
output_low(sht_sck_pin)
delay_us(2)
}
//secuenciadeiniciodetransmisin
SHTxx_InicioTrans()
}

/******************************************************************************/
/*******************SECUENCIADEENVIODECOMANDO****************************/
//___________________
//DATA:___|A2|_|A1|_|A0|_|C4|_|C3|_|C2|_|C1|_|C0|_|ack|_
//___________________
//SCK:___||_||_||_||_||_||_||_||_||_

int1SHTxx_Comando(int8sht_comando){
int8bit
int8mascara=0x80
int1ack
delay_us(4)
//Salidadelcomandobitabit
for(bit=8bit>=1bit){
output_low(sht_sck_pin)//lneaSCKa"0"

http://robotypic.blogspot.com.es/2013/09/LibreriaCparaSHT11.html 7/12
2017516 RobotyPic:LibreraCparasensorSHT11conPIC
//LneaDATAa"1"siMSBes"1"
EstesitioempleacookiesdeGoogleparaprestarsusservicios,parapersonalizaranunciosyparaanalizarel
if((sht_comando&mascara)>0)output_float(sht_data_pin)
trfico.Googlerecibeinformacinsobretuusodeestesitioweb.Siutilizasestesitioweb,sesobreentiendeque
//LneaDATAa"0"siMSBes"0"
aceptaselusodecookies.
elseoutput_low(sht_data_pin)
delay_us(1)
MSINFORMACIN
output_high(sht_sck_pin)//lneaSCKa"1" ENTENDIDO
delay_us(1)
mascara=mascara>>1//siguientebitpasaaserMSB
}
/**lecturadelack**/
output_low(sht_sck_pin)//lneaSCKa"0"
delay_us(1)
ack=input(sht_data_pin)//lecturadelack
output_high(sht_sck_pin)//lneaSCKa"1"
delay_us(1)
output_low(sht_sck_pin)//lneaSCKa"0"

return(ack)
}

/******************************************************************************/
/****************SECUENCIADEESPERADEMEDIDATERMINADA*********************/

voidSHTxx_Espera(void){
int16sht_delay
output_float(sht_data_pin)//lneaDATAa"1"
output_low(sht_sck_pin)//lneaSCKa"0"
delay_us(1)
//EsperaaquelineaDATApasea"0"mximo300msg.
for(sht_delay=0sht_delay<30000sht_delay++){
//silineaDATApasaa"0"=>findelamedicin
if(!input(sht_data_pin))break
delay_us(10)
}
}

/******************************************************************************/
/***************SECUENCIADELECTURADELDATODELAMEDIDA*******************/
//___________________
//SCK:__||_||_||_||_||_||_||_||_|ack|_||_||_||_||_||_||_||_||__
//|||
//|idlebits|Msb12bitHumidityDataLsb|
//|____|_______________|
//DATA:_|F|_|E|_|D|_|C|_|B|_|A|_|9|_|8|_|ack|_|7|_|6|_|5|_|4|_|3|_|2|_|1|_|0|__

int16SHTxx_Lectura(void){
int8bit
int16sht_dato=0
constint16mascara0=0x0000
constint16mascara1=0x0001
//guardabytealtodeldatoledoenbytealtodesht_datobitabit
for(bit=8bit>=1bit){
sht_dato=sht_dato<<1//siguientebitpasaaserMSB
output_high(sht_sck_pin)//lneaSCKa"1"
delay_us(1)
//silneaDATAes"1"ponebitcorrespondienteensht_datoa"1"
if(input(sht_data_pin))sht_dato|=mascara1
//silneaDATAes"0"ponebitcorrespondienteensht_datoa"0"
elsesht_dato|=mascara0
output_low(sht_sck_pin)//lneaSCKa"0"
delay_us(1)
}

//EnvoackponiendolineaDATAa"0"
output_low(sht_data_pin)//lneaDATAa"0"
delay_us(1)
output_high(sht_sck_pin)//lneaSCKa"1"
delay_us(2)
output_low(sht_sck_pin)//lneaSCKa"0"
delay_us(1)
output_float(sht_data_pin)//lneaDATAa"1"

//guardabytebajodeldatoledoenbytebajodesht_datobitabit
for(bit=8bit>=1bit){
sht_dato=sht_dato<<1//siguientebitpasaaserMSB

http://robotypic.blogspot.com.es/2013/09/LibreriaCparaSHT11.html 8/12
2017516 RobotyPic:LibreraCparasensorSHT11conPIC
output_high(sht_sck_pin)//lneaSCKa"1"
EstesitioempleacookiesdeGoogleparaprestarsusservicios,parapersonalizaranunciosyparaanalizarel
delay_us(1)
trfico.Googlerecibeinformacinsobretuusodeestesitioweb.Siutilizasestesitioweb,sesobreentiendeque
//silneaDATAes"1"ponebitcorrespondienteensht_datoa"1"
aceptaselusodecookies.
if(input(sht_data_pin))sht_dato|=mascara1
//silneaDATAes"0"ponebitcorrespondienteensht_datoa"0"
elsesht_dato|=mascara0 MSINFORMACIN ENTENDIDO
output_low(sht_sck_pin)//lneaSCKa"0"
delay_us(1)
}
//EnvoackponiendolineaDATAa"1"=>nolecturaCRCchecksum
output_float(sht_data_pin)//lneaDATAa"1"
delay_us(1)
output_high(sht_sck_pin)//lneaSCKa"1"
delay_us(2)
output_low(sht_sck_pin)//lneaSCKa"0"
return(sht_dato)
}

/******************************************************************************/
/*******************FUNCINDEMEDIDADEVARIABLE****************************/

int16SHTxx_Medida(sht_comando){
int1ack
int16sht_dato
/**secuenciadeiniciodetransmisin**/
SHTxx_InicioTrans()
//envodelcommandoylecturadelack
ack=SHTxx_Comando(sht_comando)
if(ack==1)return//sihayerrorsaledelamedida
//esperaaqueshttermineelclculodelamedida
SHTxx_Espera()
//finalizadalamedida,obtieneelvalordigital
sht_dato=SHTxx_Lectura()
return(sht_dato)
}

/******************************************************************************/
/*****************FUNCINDERESETDELAINTERFACE***************************/

voidSHTxx_Reset_Soft(void){
SHTxx_Reset()//Resetcomunicacin
SHTxx_Comando(SHTxx_SOFT_RESET)//Comandoreset=>Reg.Estado,valoresdefecto
delay_ms(15)//Espera15mseg.
}

/******************************************************************************/
/*********FUNCINPARACLCULODETEMPERATURAYHUMEDADREALES***************/

SHTxx_calculo(int16sht_DatoTemperatura,float&sht_temperatura,int16
sht_DatoHumedad,float&sht_humedad){

floatsht_HumedadLineal

/**CoeficientesparaclculodelaTemperaturapara14bitsyVcc=5V**/
floatd1=40.1
floatd2=0.01
/**CoeficientesdeconversinparaclculodelaHumedadpara12bits**/
floatc1=2.0468
floatc2=0.0367
floatc3=0.0000015955
/**CoeficientesparacompensacindeTemperaturadelaHumedadpara12bits**/
floatt1=0.01
floatt2=0.00008

//EnelcasodeemplearresolucinTemperatura12bitsyhumedad8bits...
if(sht_registro&0b00000001){
/**CoeficientesparaclculodelaTemperaturapara12bitsyVcc=5V**/
d1=40.1
d2=0.04
/**CoeficientesdeconversinparaclculodelaHumedadpara8bits**/
c1=2.0468
c2=0.5872
c3=0.00040845
/**CoeficientesparacompensacindeTemperaturadelaHumedadpara8
bits**/

http://robotypic.blogspot.com.es/2013/09/LibreriaCparaSHT11.html 9/12
2017516 RobotyPic:LibreraCparasensorSHT11conPIC
t1=0.01
EstesitioempleacookiesdeGoogleparaprestarsusservicios,parapersonalizaranunciosyparaanalizarel
t2=0.00128
} trfico.Googlerecibeinformacinsobretuusodeestesitioweb.Siutilizasestesitioweb,sesobreentiendeque
aceptaselusodecookies.
//Clculodetemperaturaenfuncindelamedidadigitaldelsensor
sht_temperatura=((float)sht_DatoTemperatura*d2)+d1
//Clculovalorlinealhumedad MSINFORMACIN ENTENDIDO
sht_HumedadLineal=(sht_DatoHumedad*c2)+(sht_DatoHumedad*sht_DatoHumedad
*c3)+c1
//Clculodelahumedadcompensadaportemperatura
sht_humedad=((sht_temperatura25.0)*(t1+(t2*sht_DatoHumedad)))+
sht_HumedadLineal
//Evitamostrarvaloresfueraderango
if(sht_humedad>=100)sht_humedad=100
if(sht_humedad<0.1)sht_humedad=0.1
}

/******************************************************************************/
/**********FUNCINPARAMEDIDAYCLCULODETEMPERATURAYHUMEDAD************/

voidSHTxx(float&sht_temperatura,float&sht_humedad){

int16sht_DatoTemperatura//DatodeTemperaturaobtenidoporelSHTxx
int16sht_DatoHumedad//DatodeHumedadobtenidoporelSHTxx

sht_DatoTemperatura=SHTxx_Medida(SHTxx_COMANDO_TEMP)//Medidadela
temperatura
sht_DatoHumedad=SHTxx_Medida(SHTxx_COMANDO_HUM)//Medidadela
humedad
SHTxx_calculo(sht_DatoTemperatura,sht_temperatura,sht_DatoHumedad,
sht_humedad)//calculatetemp&RH
}

/******************************************************************************/
/****************FUNCINPARALECTURADELREGISTRODEESTADO*****************/

SHTxx_LECTURA_REGISTRO_ESTADO(){

int16sht_dato//Bytealto=registroestado,bytebajo=ckecksum
int8sht_checksum//Guardarelvalordelchecksum

/**secuenciadeiniciodetransmission**/
SHTxx_InicioTrans()
/**Secuenciadeenvodecomando**/
SHTxx_Comando(SHTxx_REG_ESTADO_R)//Comandodelecturaregistrodeestado
/**Lecturadelregistrodeestadoychecksum**/
sht_dato=SHTxx_Lectura()

sht_registro=make8(sht_dato,1)//Bytealto=valorregistrodeestado
sht_checksum=make8(sht_dato,0)//Bytebajo=valordelchecksum
return(sht_registro)//Devuelvevalordelregistrodeestado
}

/******************************************************************************/
/***************FUNCINPARAESCRITURADELREGISTRODEESTADO****************/

SHTxx_ESCRITURA_REGISTRO_ESTADO(sht_registro){

/**secuenciadeiniciodetransmisin**/
SHTxx_InicioTrans()
/**Secuenciadeenvodecomando**/
SHTxx_Comando(SHTxx_REG_ESTADO_W)//Comandodeesrituraregistrodeestado
SHTxx_Comando(sht_registro)//Argumentoacargarenelregistrode
estado
}

/******************************************************************************/
/********************FUNCINDEINICIALIZACINDELSHTxx*********************/

voidSHTxx_init(void){
SHTxx_Reset()//resetSHT
delay_ms(20)
}

/******************************************************************************/

http://robotypic.blogspot.com.es/2013/09/LibreriaCparaSHT11.html 10/12
2017516 RobotyPic:LibreraCparasensorSHT11conPIC

EstesitioempleacookiesdeGoogleparaprestarsusservicios,parapersonalizaranunciosyparaanalizarel
trfico.Googlerecibeinformacinsobretuusodeestesitioweb.Siutilizasestesitioweb,sesobreentiendeque
Artculorelacionado>>SensorSHT11conPIC
aceptaselusodecookies.
MSINFORMACIN ENTENDIDO

Descargararchivos"SHT11conPIC+Libreras"

Quizstambinleinterese:

Controlde8servos RobotconSRF04y LecturaEscritura PICcontroladorde Controldeun


conPIC TPA81 eepromconPIC servosporI2C brazoRobotde4
porbusI2C ejesconPIC

Linkwithin

PublicadoporRobotypic Recomendar esto en Google

No hay comentarios:
Publicaruncomentario

AgenciadeViajeaLaos
Tenerelmejorpreciodeventaslocales.Recibirelprecio
en24h.gialinhtravel.com

CONTACTA - (Haz referencia del artculo sobre el que trata la consulta o comentario)

Nombre:*

Email:*

Asunto:*

Mensaje:*

VerificationNo.:*

http://robotypic.blogspot.com.es/2013/09/LibreriaCparaSHT11.html 11/12
2017516 RobotyPic:LibreraCparasensorSHT11conPIC

EstesitioempleacookiesdeGoogleparaprestarsusservicios,parapersonalizaranunciosyparaanalizarel
trfico.Googlerecibeinformacinsobretuusodeestesitioweb.Siutilizasestesitioweb,sesobreentiendeque
aceptaselusodecookies.
Enviar
MSINFORMACIN ENTENDIDO
Webformgeneratedby123ContactForm

RobotyPic (c)

http://robotypic.blogspot.com.es/2013/09/LibreriaCparaSHT11.html 12/12

S-ar putea să vă placă și