Autor Tema: Ayuda con LM335 usando el 16F777 y Proton  (Leído 3590 veces)

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

Desconectado Makavelo

  • PIC10
  • *
  • Mensajes: 3
Ayuda con LM335 usando el 16F777 y Proton
« en: 29 de Octubre de 2008, 19:43:10 »
Hola, Estoy haciendo un sensor de temperatura usando el LM335 con el Pic16F777, mi codigo de proton es el siguiente:

Código: [Seleccionar]
Device 16F777
Declare XTAL 4

Declare ADIN_RES 10 ' 10-bit
Declare ADIN_TAD 8_FOSC ' Reloj  del ADC
Declare ADIN_STIME 50 ' Allow 50us sample time

Declare LCD_TYPE 0 ' LCD Alphanumerico
Declare LCD_DTPIN PORTB.4   ' Se usa PortB B4,B5,B6,B7
Declare LCD_RSPIN PORTB.2 ' RS en B2
Declare LCD_ENPIN PORTB.3 ' Enable en pin B3
Declare LCD_INTERFACE 4    ' Interface de 4 bit

Dim ADC_Result As Float
Dim ADC_Total As Float
Dim Temp_Float As Float
Dim ADC_Channel As Byte
Dim ADC_Loops As Word
Dim Temp As Word


Dim Last_Result1 As Float
Dim Last_Result2 As Float


ADCON1 = %10000000 ' Poner en Analogo todas las entradas (PORTA)
TRISA = $FF ' Declarar porta como entradas
 
DelayMS 150
Cls

Print $FE,$40,$07,$05,$07,$00,$00,$00,$00,$00 ' Caracter para Grados

ADC_Loops = 200

Main:
ADC_Channel = 1 ' ADC en el primer canal o referencia
GoSub ADC_Average ' Avarage para mejor presicion

Temp_Float = ADC_Result ' Guarda el resultado

ADC_Channel = 0 ' ADC en el segundo canal
GoSub ADC_Average ' Avarage para mejor presicion

ADC_Result = ADC_Result * 5000 / 1023 ' Convierte valores en Volts (en escala de 1000)
Temp_Float = Temp_Float * 5000 / 1023 '    Reduce errores decimales
ADC_Result = ADC_Result - Temp_Float ' Calcula la diferencia

ADC_Result = ADC_Result / 10 ' Escala 10mV = 1 Deg C

If ADC_Result <> Last_Result1 Then ' Verifica si cambian los valores
Print At 1,1, DEC1 ADC_Result, 0, "F  " '  Actualiza el Display si los valores cambiaron
Last_Result1 = ADC_Result         ' Nuevo valor para el Display
EndIf


GoTo Main     ' Loop


ADC_Average:   ' Perform an averaging on ADC conversions
  '  to reduce errors
ADC_Total = 0   ' Clear summing register
For Temp = 1 To ADC_Loops   ' Loop for a pre-determined number of times
ADC_Result = ADIn ADC_Channel   ' Grab a new ADC value
ADC_Total = ADC_Total + ADC_Result   ' Sum it to the total register
DelayUS 1     ' Allow internal capacitors to discharge
Next Temp

ADC_Result = ADC_Total / ADC_Loops   ' Determin the average of all the equations

Return

Mi problema es que al momento de mostrar los datos en el Display no me muestra nada, no se si tenga problemas en convertir los datos analogos a digital, porfavor si alguien me puede ayudar a solucionar el problema seria de enorme ayuda.

Por cierto ya hice la simulacion en Proteus y ahi si me muestra todo bien es al momento de hacerlo fisico cuando no me funciona bien el display, el archivo adjunto es una foto de mi simulacion en ISIS.

Gracias por cualquier cosa
« Última modificación: 29 de Octubre de 2008, 19:58:46 por Makavelo »

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: Ayuda con LM335 usando el 16F777 y Proton
« Respuesta #1 en: 29 de Octubre de 2008, 20:21:52 »
Los lineas de datos del LCD D1-D4 no las conectes a tierra. VEE a tierra, VDD a 5V, VSS a GND, si quieres RW a GND.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado Makavelo

  • PIC10
  • *
  • Mensajes: 3
Re: Ayuda con LM335 usando el 16F777 y Proton
« Respuesta #2 en: 30 de Octubre de 2008, 14:07:14 »
Los lineas de datos del LCD D1-D4 no las conectes a tierra. VEE a tierra, VDD a 5V, VSS a GND, si quieres RW a GND.

en el proyecto Fisico usaba un Potenciomentro para VEE pero ya descubri cual era el problema y el problema esta en mi codigo.

No tenia bien el ADCON1, ya lo corregi y ya por lo menos manda caracteres al display pero los datos son bastantes irreales, me marca temperaturas de 158 grados, alguien me podria ayudar a regular los valores que manda el sensor?

Como dato adicional ya queme 2 potenciometros que conectaba al sensor para tratar de regular la temperatura

Desconectado bj73_horta

  • PIC10
  • *
  • Mensajes: 12
Re: Ayuda con LM335 usando el 16F777 y Proton
« Respuesta #3 en: 26 de Noviembre de 2008, 08:00:44 »
Makavelo, yo he usado las LM335 como sensores de temperatura sin usar para nada la patilla Adj, de hecho la cortaba. Como ya sabras las LM335 actuan como diodos zener cuyo potencial de corte es proporcional a la temperatura absoluta, entregando 10 mVolts por cada grado absoluto, por lo tanto su potencial de corte teorico a 0 ºC es de 2,73 Voltios y a 100 ºC de 3,73. En otras palabras: temperatura (ºC) = 100 * (Voltaje - 2,73). De todas formas te recomiendo calibrar tu sonda para tener una lectura de temperatura correcta.

Suerte con tu montaje.


 

anything