TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: microcom en 07 de Junio de 2006, 20:11:20
-
caballeros la inquietud que me llega es la siguiente el conversor para sensar la temperatura ambiente. estoy haciendo la prueva y la temperatura ambiente se debe mostrar en lcd.
al momento de visualizar la entrada analoga las unidades varian mucho, no se quedan quietas estan oscilando en valores ejem :058 el numero 8 pasa a 0 a 1 a 7 y asi sucesivamente.
y hasta pasa a 062 etc.
que recomiendan
la señas analoga que entra a ra0 la vario con un potenciometro.
caballeros si algui me puede orientar en el problema y me ayude a solucionar el inconveniente.
se necesita que la temperatura quede 058 090 y asi sucesivamente si oscilaciones.
gracias de antemano
-
Hola microcom en este post se realizo un termometro de cuatro canales quizas te sirva para aclararte un poco y resolver tu inquietud.
http://www.todopic.com.ar/foros/index.php?topic=12258.0
Si no es asi pues pega el codigo de tu proyecto y vemos en que te puedes aver equivocado.
un saludo juan
-
existen algunas posibilidades, una de ellas es manejar la referencia, ya que te varia mucho debido a que si son cinco voltios y trabajas en modo 8 bits tienes 255 valores de temperatura posible, por lo que una variacion en milivottios va a provocar un aumento considerable del valor a la salida del ADc, pero si puedes manejar el voltaje de referencia al punto en el que estas variaciones sean insignificantes puedes solucionar el problema, intenta a subir el Vref+ a 10v y el Vref- manalo a tierra (GND)
Otra opcion es ir actualizando la temperatra despues de algun tiempo.
Y la mas radical puede ser cambiar de sensor, ya que al parecer no es un sensor lineal, te recomiendo el lm35 que opera de perfecta forma con una variacion de 10mv por grado celciu y es bastante preciso, claro si no vas a supera la medicion de 100º
-
caballeros mucha gracias por las recomendaciones;
estoy utilizando un potenciometro para simular la temperatura esas variaciones
no si sera la actualizacion de la temperatura. le he puesto condensadores para mejorar y nada.
boy a probar lo que usted dice.
otra cosa que me sucede es que le lcd el laparte derecha de la pantalla los datos selen perfectamente pero al rato los 8 espacios de esa parte se van colocando las lineas negras
no se si sera el lcd malo o que
el funcionaba perfectamente ahora me sala ese problema
ay que pasa muchachos no se .
lcd malo o que.
las letras y datos se ven normal hasta llegar 12 lineas de la parte superior.
lo mismo sucede con la parte inferior dl lcd.
caballeros ese es un dilema.
una historia.
anexo el programa.
-
Es poco practico utilizar un conversor a 4 bits y hasta complicado :?: pero bueno aparte de eso tienes mucho codigo que no hace nada y muchos retardos que no te sirven deberias corregir eso, un dato mas cuando tu pones un include de algun pic ya no es necesario definir todos y cada uno de los registros ya que estos ya esta definidos en el mismo include, solo tienes que definir los registros de RAM osea los que tu creas para guardar alguna variable u otra cosa.
Bueno yo te recomiendo que abandones totalmente ensamblador y te pases a un lenguaje de alto nivel que facilta muchisimo ,las cosas, deberias intentar hacer en PicbasicPro que es un leguaje bastante sencillo y muy practico y hay bastante infromacion en este foro mismo, por ejemplo lo que tu quieres hacer
' Conexiones LCD PIC:
' LCD PIC
' DB4 PortB.0
' DB5 PortB.1
' DB6 PortB.2
' DB7 PortB.3
' RS PortB.4
' E PortB.5
' RW Ground
' Vdd 5 volts
' Vss Ground
' Vo 20K potenciometro
' DB0-3 No connectado
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 4
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 5
adval var byte
TRISA = %11111111 ' Set PORTA to all input
ADCON1 = %00000010 ' Set PORTA analog and LEFT justify result
ADCON0 = %11000001 ' Configure and turn on A/D Module
Pause 500 ' Wait .5 second
loop: ADCON0.2 = 1 ' Start Conversion
notdone: Pause 5
If ADCON0.2 = 1 Then notdone ' Wait for low on bit-2 of ADCON0, conversion finished
adval = ADRESH ' Move high byte of result to adval
Lcdout $fe, 1 ' Clear screen
Lcdout "Value: ", DEC adval ' Display the decimal value
Pause 100 ' Wait .1 second
Goto loop ' Do it forever
End
-
como dice patolinec yo te recomendaria que pases a otro lenguaje ,para mi gusto el C. (en este te puedo dar una mano)
te sera mucho mas cencillo
-
Ademas no creo conveniente usar un micro de 10 bits de ADC para solamente utilizar 4, la resolucion de tu medicion disminuye demasiado.
Saludos LabPIC
-
caballero el problema es con el ultimo digito que oscila demasiado
la resolucion no es inconveniente
el c no lo manejo
gracias
-
Hola. Veo que en el programa asm, pusiste como comentario el retardo. Es necesario poner un retardo entre lectura y lectura, para dar tiempo a que el capacitor interno se cargue correctamete y pueda comparar bien.
Saludos.
-
hola microcom:
nada muy rápido:
-Pon el esquema
-Vref 5V/100=50mV . Esos 50mv se mueven mucho? bueno, hay que entender que la entrada es una compuesta de Vcd+Vca debido al
ruido , salida del sensor, etc. (entiendo que tu has amplificado la entrada sensor, dejando la salida a 0-5v 0-100 grados)
- Debes filtrar la entrada.
- Elige un sampleo lento.
Ahora no tengo mucho tiempo, si veo que no te sale ya postearé con más tiempo.