TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: mleyton en 20 de Enero de 2008, 16:07:16
-
'****************************************************************
'* Name : sht15.BAS *
'* Author : [Mauricio Leyton Carrasco] *
'* Notice : Copyright (c) 2005 [set under view...options] *
'* : All Rights Reserved *
'* Date : 01/19/2007 *
'* Version : 1.0 *
'* Notes : Leer la data de temperatura y humedad para ser *
'* enviada por la RS232, asi como tambien a un dis-*
'* play LCD de 2 x 16, mostrando en el display las *
'* temperaturas-humedad maxima y minima *
'* Mantener la linea Define LOADER_USED 1 *
'****************************************************************
Define LOADER_USED 1
include "modedefs.bas"
' Define LCD pines
Define LCD_DREG PORTD 'puerto D para LCD
Define LCD_DBIT 4 'bit de partida
Define LCD_BITS 4 'cantidad de bit
Define LCD_RSREG PORTE 'puerto E para RSREG
Define LCD_RSBIT 0 'pin 0 para RSREG
Define LCD_EREG PORTE 'puerto E para Enable
Define LCD_EBIT 1 'pin 1 para Enable
' Define parametros de rs 232
DEFINE DEBUG_REG PORTC ' Puerto C
DEFINE DEBUG_BIT 6 ' *** pin Bit-6 ***
DEFINE DEBUG_BAUD 1200 ' *** Baud Rate ***
DEFINE DEBUG_MODE 0 ' Set Puerto Serial Mode 0=True, 1=Inverted
DEFINE DEBUG_PACING 300 ' retardp en microsegundos entre cada caracter
DEFINE DEBUGIN_REG PORTC
DEFINE DEBUGIN_BIT 7
DEFINE DEBUGIN_MODE 0
ADCON1 = 7 ' Setea Puerto A y Puerto E para digital
Low PORTE.2
'** Asigamiento de Pines
dta VAR PORTD.2 ' Linea de Datos
clk VAR PORTD.3 ' Reloj Serial
'ser_tx VAR PORTC.6
'** Constantes
cmdtr CON %00000011 ' Command "read temperature"
cmdhr CON %00000101 ' Command "read humitity"
'** Variables
result VAR WORD ' RAW Data from Sensor
chksum VAR BYTE ' Checksum
cmd VAR WORD ' Sensor Command
RHlin VAR WORD ' Rel. Humidity (RH) Linear (% *10)
RHtc VAR WORD ' Rel. Humidity (RH) temp. compensated (% *10)
Temp VAR WORD ' Temperature (°C *100)
i VAR BYTE
maxi VAR WORD
mini VAR WORD
maxhr VAR WORD
minhr VAR WORD
flag VAR BIT
flag = 0
maxi = 0
mini = 0
maxhr = 0
minhr = 0
PAUSE 1000
main:
'SEROUT2 GPIO.5,16468,["COMIENZO...",10,13]
GoSub init
cmd = cmdtr
GoSub readsensor
Temp=result-3995
GoSub init
cmd = cmdhr
GoSub readsensor
RHlin=(26542-(54722**result+result))**result-40 ' RH linear
RHtc=655+(result*5)+(result**15917)
RHtc=(RHtc**(Temp/10+2480))-(RHtc**2730)+RHlin ' RH temp. compensated
'++++++++++++++++++++++++++++++++++++++++++
if flag = 0 then mini = Temp
if flag = 0 then minhr = RHtc
if Temp > maxi then maxi = Temp
if Temp < mini then mini = Temp
if RHtc > maxhr then maxhr = RHtc
if RHtc < minhr then minhr = RHtc
flag = 1
DEBUG "TEMP",DEC2 temp/100,".",DEC1 temp/10," - %HR:",DEC2 RHTC/10,".",DEC1 RHTC,10,13
LCDOUT $fe,128, "TEMP = ",DEC2 temp/100,".",DEC1 temp/10," C"
LCDOUT $fe,192,"HR = ",DEC2 RHTC/10,".",DEC1 RHTC," %"
PAUSE 5000
LCDOUT $fe,1
LCDOUT $fe,128, "Max T = ",DEC2 maxi/100,".",DEC1 maxi/10," C"
LCDOUT $fe,192, "Min T = ",DEC2 mini/100,".",DEC1 mini/10," C"
PAUSE 5000
LCDOUT $fe,1
LCDOUT $fe,128, "Max HR = ",DEC2 maxhr/10,".",DEC1 maxhr," %"
LCDOUT $fe,192, "Min HR = ",DEC2 minhr/10,".",DEC1 minhr," %"
PAUSE 5000
LCDOUT $fe,1
GoTo main
'** Iniciar Sensor
init:
High dta
Low clk
For i=1 to 10
High clk
Pause 1
Low clk
Pause 1
Next i
Call tstart
Return
'** Comienzo de Transferencia
tstart:
High clk
Pause 1
Low dta
Pause 1
Low clk
Pause 1
High clk
Pause 1
High dta
Pause 1
Low clk
Return
'** Leyendo Datos del SHT
readsensor:
GoSub tstart
GoSub WaitSensor
ShiftOut dta,clk,1,[cmd\8] ' send command
Input dta ' wait acknowledge
Low clk
While dta=1
Wend
PulsOut clk,10 ' send ack
While dta=0
Wend
While dta=1 ' wait for conversion to complete
Wend
Low clk
ShiftIn dta,clk,0,[result.highbyte\8] ' get first byte
Low dta
PulsOut clk,10 ' send ack
ShiftIn dta,clk,0,[result.lowbyte\8] ' get second byte
Low dta
PulsOut clk,10 ' send ack
ShiftIn dta,clk,0,[chksum\8] ' get third byte (checksum)
High dta
PulsOut clk,10 ' send ack
Input dta ' End of Transmission
Input clk
Return
WaitSensor:
result=4096
Loop:
result=result-1
IF dta && result.bit11 Then Loop
Return
end
-
Ahi estan fotos con el display mostrando temperatura - humedad,temp max - min,humedad max - min
-
Gracias por el aporte.
-
excelente aporte si señor, tenia ya uno casi terminado con el sht71 y estaba atascao en la conversion de la formula de humedad y temperatura y acabo de salir de dudas.
Un saludo mleyton y gracias...si señor
-
Gracias Navaismo y tambien a Lord Micro, este es un pequeño grano de arena de mi parte, agradeciendo todo lo aprendido en este foro que es una muy buena ayuda, para los que nos gusta experimentar.
Atentamente
Mauricio Leyton
-
Excelente aporte!!!!
Solo tengo una duda, porque cuando compilo el programa, me sale un error en el "IF" del "WaitSensor:"....
WaitSensor:
result=4096
Loop:
result=result-1
IF dta && result.bit11 Then Loop
Return
Les estare muy agradecido si pueden ayudarme a resolver este problema...
-
Luis ahi te dejo el ejecutable
Atentamente
mauricio
-
muy buenas noches necesito una ayuda con el sensor de sht15 con 16f877 si me pueden ayudar se los agradeceria mi correo es larryrge@hotmail.com disculpen la molestia
-
hola me llamo eddie, soy nuevo en esto de proyectos, me gustaria saber si este proyecto se puede hacer pero con un sensor LM35
oyes amigo, el lick que dejas de un ejecutable se puede abrir en PIC SIMULATOR IDE?
bueno es que lo abri en ese programa
y me marca un error en la linea 15
'* temperaturas-humedad maxima y minima *
'* Mantener la linea Define LOADER_USED 1 *
'****************************************************************
Define loader_used 1
include "modedefs.bas"
' Define LCD pines
Define LCD_DREG PORTD 'puerto D para LCD
Define LCD_DBIT 4 'bit de partida
Define LCD_BITS 4 'cantidad de bit
Define LCD_RSREG PORTE 'puerto E para RSREG
Define LCD_RSBIT 0 'pin 0 para RSREG
Define LCD_EREG PORTE 'puerto E para Enable
Define LCD_EBIT 1 'pin 1 para Enable
-
Buenas! perdona la molestia, soy estudiante de Ing. electrónica y vi en la web un aporte que usted hizo en la pag. todopic de un sensor SHT15, pic: 16f877 y una pantalla LCD, me gustaría saber si me puede ayudar con los diagramas de configuración que uso usted para el diseño de su proyecto, yo lo intente simular con el Proteus y para la programación del micro use el microcode plus. pero siempre me genera un error...
-
hola tengo problema en la linea SEROUT2 GPIO.5,16468,["COMIENZO...",10,13]
nececito ayuda con la conexcion
y quiero agregarle un temporizador a este programa