Autor Tema: LM35 + ADC  (Leído 5224 veces)

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

Desconectado nibble

  • PIC10
  • *
  • Mensajes: 2
LM35 + ADC
« en: 26 de Febrero de 2007, 22:08:39 »
Hola, estoy trabado con un problema del LM35 y el ADC del pic, no funcionan como deberían y en algo estoy fallando, y tengo mis dudas si es en el hardware o el software... Estoy usando los 10 bits del ADC que tiene el pic que uso, el 16f873a, para convertir los mV que me envia el LM35 en un dato digital, uso el voltaje de referencia del pic, es decir los 5V... y estos son algunos de los problemas que tengo:

1- Varía y mucho, de 23 a 26, y a 19, variaciones de 4 o 5 grados, las muestras las tomo cada 1 segundo.
2- Con un aparato que genera mV, calibrado por el INTI, simulo lo que me entrega el LM35, ejemplo 260mV son 26°C, bueno después de que pasó por el ADC y lo convierto en BCD y lo muestro por los displays de 7 segmentos pero no muestra 26, sino 20, y el defasaje no es lineal.
3- No entiendo como puedo hacer para diferenciar los negativos y tampoco como hacer para mostrar los puntos decimales, ej: 265mV son 26.5°C
4- Cualquier valor que ingrese con este aparato por debajo de 100mV no lo lee, el ADC me devuelve un cero.

El hardware mucho no puedo contar, porque se practicamente nada y porque de eso se encarga otra persona, pero esto es lo que sé: hay conectado un amplificador (LM324 si mal no recuerdo) y con un trimer ajustamos para amplificar el doble, según me dijo para así filtrar ruidos. De todas formas probamos con y sin el amplificador y es igual.

Les adjunto el funte para ver si ven algún error...

Cualquier ayuda que puedan darme se los agradeceré.

Saludos.

Desconectado vicent

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 144
    • Web de Vicent
Re: LM35 + ADC
« Respuesta #1 en: 27 de Febrero de 2007, 18:35:15 »
Para recoger valores negativos, creo que tienes que darle tensión de referencia negativa para VSS (mayor en valor absoluto al mínimo que quieres leer, p.e: si quieres leer -50 tendrás que darle por lo menos -500mV).

Lo que te muestra el ADC lo tienes que convertir al valor si no lo has hecho ya.
Si VSS es 0V y VDD (creo que es así, no se si he cambiado VSS y VDD, hablo de memoria) +5V, el valor que te de lo tienes que multiplicar por (VDD-VSS) / 1024

Te digo la teoría por que en ensamblador no estoy muy puesto, pero vamos, esa es la idea.

Otro consejo que me dieron a mi hace muy poco es que tomes una media de muchas lecturas por segundo, es decir, toma X valores por segundo, los sumas, y los divides al final del segundo por X, te dará una aproximación mejor al valor correcto.

Un saludo. Au.
« Última modificación: 27 de Febrero de 2007, 18:37:16 por vicent »

Desconectado Astaroth_25

  • PIC12
  • **
  • Mensajes: 52
Re: LM35 + ADC
« Respuesta #2 en: 27 de Febrero de 2007, 19:05:58 »
Segun pude ver rapidamente la resolucion q estas utilizando es de 5mv es decir q el ADC por cada 5mv incrementa en 1.. por lo q un valor de 26 BINARIO en el ADC no equivale a 26º mas bien a la mitar 13º aprox. 

llegue a simular tu codigo y estas realizando la conversion directamente..

Espero te haya sido de ayuda...

saludos y suerte!!

« Última modificación: 27 de Febrero de 2007, 19:17:12 por Astaroth_25 »
HEAVY - METAL ..por siempre  Ψ Ω Ψ

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: LM35 + ADC
« Respuesta #3 en: 27 de Febrero de 2007, 22:09:32 »
Bueno pues este es un programita para leer la temperatura de un LM35 y mostrarlo en display.

Código: [Seleccionar]
   analogo = read_adc();
   analogo=analogo*0.488;                     //Temperatura
   if (analogo>150) analogo=150;

   centena = (int) analogo / 100;            // 1er Dígito o Centenas
   analogo -= centena * 100;                 // y se lo resto al valor
   decena = (int) analogo / 10;              // 2do Dígito o Decenas
   analogo -= decena * 10;                   // y también se lo resto
   unidad = analogo;                            // y por último solo me quedan las unidades


Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: LM35 + ADC
« Respuesta #4 en: 27 de Febrero de 2007, 22:13:13 »
Respecto a leer temperaturas negativas, el datasheet te explica como hacerlo.

pero OJO no le puedes meter voltajes negativos al PIC. Lo dañas.!!!!



Desconectado nibble

  • PIC10
  • *
  • Mensajes: 2
Re: LM35 + ADC
« Respuesta #5 en: 27 de Febrero de 2007, 23:15:39 »
Gracias por las respuestas. Hoy logré que se estabilizara con un capacitor de 100nF, parece que el que tenía estaba pinchado o mal conectado  :x  . Y el defasaje que tenía también era causa de eso, porque hoy funcionó de maravillas, hasta le saqué una foto :P

Lo que tu dices vicent de modificar el VSS lo voy a intentar, a ver que sale. Y acerca de las muestras sucesivas y obtener el promedio, pues quizás más adelante, cuando ya este casi-terminado el proyecto. Y la resolución es de 5mv (4.88) pero está amplificado x2 así que da justo para que coincida con lo que entrega el LM35.

PICmouse la configuración del LM35 ya lo tengo implementado, y como tu dices que el PIC no soporta voltajes negativos es que me preguntaba como se lograba, pero bueno ahí vicent dio una idea vamos a ver si lo logro.

Bueno, gracias de nuevo por la ayuda, hoy estoy menos frustrado y veo un poco de luz, es que ya me estaba dando por vencido. :lol:

Desconectado Rulo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 168
Re: LM35 + ADC
« Respuesta #6 en: 28 de Febrero de 2007, 00:21:22 »


   No se si ya viste estos dos hilos...

         LM35

         LM35-2

 
                en el primero se ve lo que te dice vicent y en el segundo publicado por Chaly29 se ve un diagrama para poder usar el LM35 en todo el rango de temperatura con fuente simple.

   Espero te sirva de algo.

                  Saludos  8)


 

anything