Autor Tema: Codigo picbasic para lectura sensirion SHT11  (Leído 2083 veces)

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

Desconectado bytedestroyer

  • PIC10
  • *
  • Mensajes: 2
Codigo picbasic para lectura sensirion SHT11
« en: 26 de Mayo de 2004, 09:37:00 »
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