Hola a todos de nuevo. En su día pregunté en este foro sobre adquisición de temperatura y
humedad mediante un dispositivo de la casa sensirión (
www.sensirion.com), en concreto el sht11.
Encontré código por ahí en basicstamp y mas o menos lo "adapté" a pic basic. Me llegó después de
mucho tiempo el dispositivo y lo puse en un pic16f876. utilicé las patillas rc2 con su resistencia
de 1K al sda del sensor y rc5 al scl del sensor. Todo en orden salvo el código que me devuelve
tanto para la temperatura como para la humedad un cero patatero....
He estado mirando
qué es lo que exáctamente le manda el código al sensor y en principio parece que está en
orden (o eso creo) y parece que con las especificaciones del datasheet del sht11.
¿Alguna idea?
" definición de la frecuencia de trabajo
DEFINE OSC 8
Include "modedefs.bas" "rutinas de comunicación serie
" definición display
DEFINE LCD_BITS 8 "define display de 8 bits
DEFINE LCD_LINES 2 "cantidad de lineas del display
DEFINE LCD_DREG PORTB "control del display
DEFINE LCD_DBIT 0 "comienzo de bit del puerto
DEFINE LCD_RSREG PORTc "linea select
DEFINE LCD_RSBIT 0 "bit de comando de select
DEFINE LCD_EREG PORTc "puerto de habilitacion
DEFINE LCD_EBIT 1 "bit de habilitacion
"definición de variables para comunicaciones con el sensor sht11
ackbit var bit " bit de reconocimiento de error
iobyte var byte " Byte de comandos para lecturas
temph var word " Variables para recogida de datos
humh var word " Variables para recogida de datos
shiftout portc.2,portc.5,lsbpre,[$fff9] "Mandamos un reset al sht11
mediciones:
"********************de temperatura******************************************
gosub comstart
iobyte = %00000011 "comando para petición de temperatura al sht11
gosub comwrite
gosub comwait
gosub comread
temph.highbyte = iobyte
gosub comread
temph.lowbyte = iobyte
gosub comread
"********************de humedad**********************************************
gosub comstart
iobyte = %00000101 "comando para petición de humedad al sht11
gosub comwrite
gosub comwait
gosub comread
humh.highbyte = iobyte
gosub comread
humh.lowbyte = iobyte
gosub comread
lcdout $FE, 1
lcdout "temperatura: ",dec temph
lcdout $FE, $C0
lcdout "humedad: ", dec humh
goto mediciones
end
comstart: "secuencia de activación sht11
input portc.2 " data
low portc.5 " clock
high portc.5 " clock
low portc.2 " data
low portc.5 " clock
high portc.5 " clock
input portc.2 " data
low portc.5 " clock
return
comwrite:
shiftout portc.2,portc.5,msbpre, [iobyte8]
shiftin portc.2,portc.5,lsbpre, [ackbit1]
return
comwait:
input portc.2
pause 275
goto donewait
donewait:
return
comread:
shiftin portc.2,portc.5,msbfirst, [iobyte8]
shiftout portc.2,portc.5,lsbfirst,[01]
input portc.2
return