TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: ferbarriga en 18 de Octubre de 2007, 20:10:28
-
Hola gente. El tema es el siguiente. Estoy haciendo un medidor de humedad relativa. con un sensor capacitivo HS1101, que en conjunto con un 555, me entregan una frecuencia que varia desde aprox 6033HZ para un 100% de humedad y 7300 para el 0%. Mi idea era, con la instruccion PULSIN obtener el ancho del pulso alto. Luego multiplicarlo x2 para obtener el periodo de la señal, luego elevarlo a la -1 y asi obtener la frec. Desarrollando el metodo de los minimos cuadrados hice que la recta de Hr en funcion de la frecuencia sea lineal.
El micro que uso es un 16f84.
Pero el programa no funciona y me parece que es por que no puedo trabajar con coma flotante. Me gustaria que le echen una mirada haber que les parece, y Gracias por adelantado!!! :-/ :-/
'MEDIDOR DE HUMEDAD RELATIVA
' SENSOR --------------> HS 1101(CAPACITIVO)
entrada VAR PORTB.4 'Defino el port de entrada
ancho VAR WORD 'Defino la variable que me guarda el tiempo del ancho del pulso
humedad VAR WORD
frec VAR WORD
periodo VAR WORD
TRISB.4 = 1
Pause 200
LCDOut $fe,1, " Medidor de "
LCDOut $fe,$c0, "humedad relativa"
Pause 1000
medicion:
PulsIn entrada,1,ancho 'Mide el ancho del pulso alto y lo guarda en ancho
IF (ancho <> 0) Then
periodo= ancho * 2
frec= 1/periodo
Pause 10
humedad = 56509/100 - ((767/10000)* frec) 'Recta de Hr en funcion de la frecuencia
ancho=0
goto mostrar
EndIF
mostrar:
pause 200
LCDOut $fe,1, humedad,"%"
pause 1000
goto medicion
End
End
End
End
-
En PBP asi directamente no se puede trabajar con Punto decimal, Te recomiendo lo intetes con Proton para no complicar mucho.
Tambien tienes la altenativa de usar las rutinas de FP que hizo microchip pero eso si son muy pesadas o bien hacer uso del DIV32 para sacar decimales. Hay un tema dedicado al punto decimal en PBP que hizo Mario checalo por si te sirve.
-
gracias por contestar navaismo. Estube viendo lo de las librerias fp. intente poniendo
include " fp0c.bas" o include "fp0c32.bas"
pero cuando compilo me tira un error
-
Si creo que solo soportan PIC como el 16f628 y el 877 ademas de que debes tener las librerias en el mismo lugar de tu proyecto. Y hacer las variables adecuadas a las rutinas de conversion.
Saludos.