Autor Tema: Acondicionar entrada A/D  (Leído 3805 veces)

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

Desconectado 5GTT

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 915
Acondicionar entrada A/D
« en: 26 de Abril de 2005, 17:10:00 »
Pues he leido todos los post sobre el tema de voltimetros controlados por PIC y aun me quedan dudas sobre el tema del conversor A/D.

Mi idea es hacer una fuente de alimentacion conmutada totalmente analogica en su control de voltaje (se regulara con un potenciometro). Luego quiero sacar a partir de la salida de la fuente un cable hacia la entrada A/D del pic para posteriormente por un puerto de este salgan las tensiones en codigo BCD para decodificarlas a displays de 7 segmentos.

El problema es que segun he estado leyendo la entrada A/D del PIC solo admite hasta valores de 5V y mi fuente dara sobre 40V. Y es ahi donde me surgen las dudas.

¿Como acondiciono la señal para que 40V lleguen al PIC como 5V y los 0V lleguen al PIC como 0V? Sobre este tema he leido en otros post que se utiliza un amplificador operacional pero no me ha quedado muy claro su funcion.

En cuanto al codigo del PIC, lo haria en C y he pensado que la parte de A/D del codigo sera una cosa asi:

setup_adc (adc_clock_div_32);
setup_adc_ports (RA0_ANALOG_RA3_REF);
set_adc_channel (0);
delay_us (20);
voltaje=read_adc ();
setup_adc (adc_off);

Utilizando RA3 como Vref, aqui tampoco me aclaro, lo que entiendo es que debe tener un voltaje de referencia estable para comparar con el que le llega, pero no se si luego debo indicarle por software que voltaje es ese o si hay que meterle un Vref predeterminado.

Otra cosa que no me queda clara es lo de la resolucion del puerto A/D, se que se debe indicar al principio del codigo en C, pero no se cual es la indicada para este menester.

Tambien en cuanto a lo de convertir a codigo BCD las tensiones tengo una duda, lo quiero hacer asi por que es la manera que conozco de pasar un numero decimal a display de 7 segmentos, a traves de un decodificador de la familia 74SXXX, ¿ahi alguna manera mejor de hacerlo con PIC?

Pues esas son mis dudas, muchas gracias por las respuestas por anticipado y perdon por el ladrillo que pongo.

Un saludo.



Tutoriales y proyectos de electrónica

Desconectado Falconhunter

  • PIC12
  • **
  • Mensajes: 60
RE: Acondicionar entrada A/D
« Respuesta #1 en: 26 de Abril de 2005, 17:33:00 »
Para pasar de 40 a 5 y de 0 a 0 es muy facil. coloca un divisor de tension que divida la tension por 8.

0 - 40 V  |
              |
             ---
             |  |   1050 Kohm
             |  |
             ---
              |_____ Al ADC   0 - 5 V
              |
             ---
             |  |
             |  |   150 Kohm
             ---
              |
              |
            ___

Cuanto mas precisas sean las resistencias, mayor pre4cision habra en la medida. despues, en el programa has de gestionar el valor leido para que te visualice multiplicandolo por el factor del divisor (8):

Para 8 bits:

     Valor_real =  ( (Vref+ - Vref-)/255 ) * Valor_leido_ADC * 8

Para 10 bits

     Valor_real =  ( (Vref+ - Vref-)/1023 ) * Valor_leido_ADC * 8

Desconectado 5GTT

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 915
RE: Acondicionar entrada A/D
« Respuesta #2 en: 26 de Abril de 2005, 18:47:00 »
Muchas gracias Falcon hunter, muy ilustrativo el esquema. ¿Esas resistencias son de un valor tan alto por algun motivo?(estabilidad o algo) o puedo elegir otras mas pequeñas.

Echando cuentas y llamando R1 a la resistencia de arriba y R2 a la de abajo de tu esquema, me sale que tiene que existir la relacion R1/R2=7 para tener un factor de division 8. Podre poner por ejemplo R1=7k y R2=1K.

Respecto a las formulas si alguien me puede explicar el interior del parentesis.

¿por que se devide entre 255 o 1023? ya se que son 2^8 y 2^10, pero no se por que se divide.

Y aqui: "(Vref+ - Vref-)"  entiendo que resta el Vref positivo menos el Vref negativo, pero yo pensaba que solo se usaba un Vref.

Un saludo y gracias de nuevo.

Tutoriales y proyectos de electrónica

Desconectado Falconhunter

  • PIC12
  • **
  • Mensajes: 60
RE: Acondicionar entrada A/D
« Respuesta #3 en: 27 de Abril de 2005, 16:08:00 »
Las resistencias las puedes poner de un valor relativamente elevado para no interferir en la medida y que la corriente demandada por el divisor no te falsee la tensión aplicada.

Como bien has dicho, cualquier realción que te cumpla 1:7 te soluciona el prooblema, pero siempre que se considere que la corriente por el divisor sea baja respecto a la fuente que la suministra, como ya he dicho.

Las formulas para el ADC consideran que hay que dividir por (2^n)-1 porque aunque tienes 2^n valores, el número de intervalos en los que te puedes encontrar la medida entre Vref+ y Vref- son uno menos. Para resoluciones de 10 bits o mas la diferencia de medida es infima, pero con 8 bits o menos, el error ya es notable.

Mira este ejemplo para 3 bits entre 5 y 0 voltios:

Vref+                                                                                              Vref-

|-----------|-----------|-----------|-----------|-----------|-----------|-----------|
. . . . 110 . . . . 101 . . . . 100 . . . . 011 . . . . 010 . . . . 001 . . . . 000  

5V . . . 4.28V . . . 3.57V . . . 2.85V . . . 2.14V . . . 1.42V . . . 0.71V . . . 0V

El valor 111 solo aparece cuando la tensión aplicada excede de Vref+

Como ves, no hay 8 intervalos, sino 8-1.

Las tensiones Vref+ y Vref- se puede seleccionar la fuente en la mayoria de los pics. Mirate en el datasheet el apartado del ADC y veras que hay muchas combinaciones (por lo menos en el 16F819). Unas toman Vref+ la tension Vcc aplicada o Vref- la tensión GND (o Vss). Normalmente la tensíon Vref- es la masa digital, por lo que suele ser 0. En otras configuraciones, sacrificas alguna patilla para introducir las tensiones externamente y poder abarcar un intervalo de tensiones mas estrecho y ganar en precision.

Espero haberte ayudado

Desconectado 5GTT

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 915
RE: Acondicionar entrada A/D
« Respuesta #4 en: 27 de Abril de 2005, 17:27:00 »
Escrito originalmente por Falconhunter
Espero haberte ayudado


No es que me hayas ayudado, es que me has rwsuelto toda duda que tenia sobre A/D. Lo bien que se entiende todo con ejemplos...

Muchas gracias tio, apuntate una.

Un saludo.

Tutoriales y proyectos de electrónica

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
RE: Acondicionar entrada A/D
« Respuesta #5 en: 28 de Abril de 2005, 01:38:00 »
hola

porque no haces el siguiente circuito, asi te evitas de hacer medidas falsas si sobrecargas el divisor de resistencias y ademas varia menos con la temperatura.

Circuito
Saludos desde Suiza, Pablo.

Desconectado 5GTT

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 915
RE: Acondicionar entrada A/D
« Respuesta #6 en: 28 de Abril de 2005, 12:55:00 »
Me debo haber equivocado en algo por que no me salen las cuentas sobre el montaje del no inversor:

Suponemos el operacional ideal, entonces V3=V2 y es la señal de entrada Ve=(0-40V) y la corriente es la entrada es 0 al no existir resistencia.

La corriente en R2 es I2=V2/R2

La corriente en R1 es (Ve-Vs)/R1 con Vs como señal de salida

Ahora por kirchoff I1=I2

(Vs-Ve)/R1=Ve/R2

Con lo que podemos despejar una Vs=(R1/R2)Ve + Ve.

por poner un ejemplo, ante una Ve=40 me daria una salida de 320V en vez de los 5V.

Un Saludo.

Tutoriales y proyectos de electrónica

Desconectado 5GTT

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 915
RE: Acondicionar entrada A/D
« Respuesta #7 en: 28 de Abril de 2005, 12:58:00 »
Nada, nada, ya se donde esta el fallo, la ganancia del no inversor del dibujo es de 8, en mi caso me interesa que sea de 1/8. Esto se soluciona cambiando en el esquema R1 por R2 y viceversa.

Por cierto no se me habia ocurrido como hacerlo con un operacional, como dije anteriormente habia oido hablar de que se hacia con ellos, pero no sabia como. Muchas gracias por el esquema.

Un saludo y gracias.

Tutoriales y proyectos de electrónica

Desconectado Falconhunter

  • PIC12
  • **
  • Mensajes: 60
RE: Acondicionar entrada A/D
« Respuesta #8 en: 28 de Abril de 2005, 17:22:00 »
Lo del operacional esta bien solo que existen dos problemas con el LM108:

1. La alimentacion es simetrica. Quiza no resulta rentable utilizar la tension de -5V solo para esta etapa. SOLUCION: Quiza lo mejor seria buscar un operacional de alimentacion simple.

2. El operacional no es "rail to rail". Esto significa que jamas se pueden alcanzar las tensiones de alimentacion, por lo que si se alimenta a 5 voltios, la salida no llegará más alla de 4 voltios aproximadamente. SOLUCION: Un operacional "rail to rail" (no son baratos) o aumentar la atenuación para introducir el rango dentro de los margenes de tension de salida. Si optas por esto, habra que introducir en el ADC las tensiones +Vref y -Vref correspondientes al margen de operacion. Otra solucion es aumentar la tensión de alimentación del operacional, logrando llegar a los 5 voltios de fondo de escala de ADC.

Un saludo

Desconectado 5GTT

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 915
RE: Acondicionar entrada A/D
« Respuesta #9 en: 28 de Abril de 2005, 19:18:00 »
Si me decanto por la opcion del operacional utilizaria un UA741 ya que los tengo a mano, para alimentarlo, como bien dices podria utilizar un conjunto de 7809 y 7909 o incluso irme a los homologos de 12V.

El problema de esto es el precio, se subiria si tenemos en cuenta que la funcion sera la de hacer un voltimetro digital, y existen en el mercado por unos 20€ y ademas con LCD en vez de los displays de 7 segmentos que tenia previsto.

Lo que realmente me interesa saber es hasta que punto puede hacer variar el efecto de la temperatura la medicion si utilizo el montaje de 2 resistencia, el montaje ira dentro de una fuente de alimentacion que va sera capaz de entregar 10A asi que imagino que se calentara bastante.

Un Saludo.

Tutoriales y proyectos de electrónica

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Acondicionar entrada A/D
« Respuesta #10 en: 29 de Abril de 2005, 19:40:00 »
Buenas.

El efecto de la temperatura lo vas a tener en ambas opciones, ya que en el divisor de tensión afectará a esta división y en el operacional a la ganancia.

De todas formas no te debería preocupar demasiado este efecto:

La variación de resitencia de un material se calcula como sigue:

R=Ri(1+alfa+(tf-ti)), donde:

Ri --> Resistencia inicial
ti --> Temperatura inicial
tf --> Temperatura final
alfa --> coeficiente específico del material.

El alfa más cutre que he encontrado es de 0.0065.

Suponiendo que la resistencia inicial es de 1000 ohmios, y si se incrementa la temperatura 20º, la resistencia se modificaría hasta los  1130. Parece mucho, pero estamos en que la otra resistencia también aumenta en la misma proporción:

7000 --> 7910, luego el divisor de tensión te queda:

1130/(7910+1130)= 1/8. Curiosamente, la temperatura afecta a los dos de tal forma que la relacíon se mantiene.

La temperatura en este caso no es algo de lo que preocuparse, y menos si utilizas resistencias de precisión cuyo alfa es mucho menor, del orden de 0.00001.

Desconectado 5GTT

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 915
RE: Acondicionar entrada A/D
« Respuesta #11 en: 29 de Abril de 2005, 20:50:00 »
Entonces me voy de cabeza hacia la opcion de las dos resistencias. Una ultima duda, como seleccionaria las Vref de 0 y 5V sin tener que utilizar ninguna patilla del PIC, es decir, por software. En los ejemplos que he visto en C, utilizan una entrada como referencia. ¿En ensamblador se complicaria mucho la cosa?

Un Saludo y gracias por todo.

Tutoriales y proyectos de electrónica

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Acondicionar entrada A/D
« Respuesta #12 en: 30 de Abril de 2005, 00:27:00 »
Antoniof, ¿eso del alfa tiene algo que ver con la tolerancia de las resistencias?.
Si las dos resistencias suben o bajan con la misma proporción, lo que si habrá que asegurarse al menos es que las dos tengan el mismo alfa. ¿Cómo se puede medir?

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
RE: Acondicionar entrada A/D
« Respuesta #13 en: 30 de Abril de 2005, 09:15:00 »
hola Nocturno

como dice antoniof el coeficiente alfa es el coeficiente del material. Si las dos resistencias son del mismo material, se puede decir que las dos tienen el mismo coeficiente alfa y por logica tendrian la misma variacion con respecto a la temperatura. Lo que hay que tener en cuenta, es que no se puede sobrecargar el divisor, porque sino la relacion que se ha calculado se puede afectar. El alfa es una caracteristica del material. Como se puede medir? pues la verdad es que nunca me lo he preguntado, pero quizas hay qlguien en el foro que lo sabe.

Aloha
Saludos desde Suiza, Pablo.

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Acondicionar entrada A/D
« Respuesta #14 en: 01 de Mayo de 2005, 17:44:00 »
Bien.

El alfa es una propiedad del material y se supone que ambas resistencias son del mismo material. Una forma sencilla de medir el alfa de una resistencia es, con un polímetro, medir la resistencia a temperatura ambiente conocida, y luego medira a una temperatura menor, como podría ser poner en contacto la resistencia con un vaso de agua con hielo que sabemos que estará a aprox 0ºC. Con esta experiencia, podemos calcular al alfa fácilmente, de las resistencias que vayamos a colocar en nuestro circuito. Así nos haremos una idea de cuánto variará su valor cuando la fuente se ponga "calentita".

En cuanto a lo de la toleracia, está relacionado con el alfa, pero no es eso exactamente. La toleracia es un rango de valores entre los cuales el fabricante te asegura que estará una resistencia a temperatura ambiente. Lógicamente, cuanto mejor sea la tolerancia, menor coeficiente alfa tiene una resistencia. No sería de mucha utilidad, comprar una resistencia de 1050 Ohmios, si cuando se calentara un grado variara 1 Ohmio.

Por último, a la pregunta de 5GTT, hay una configuración del conversor AD que toma las referencias de la alimentación del PIC directamente a 5V y a 0V, por lo que no necesitas ningún pin adicional. Asegúrate de colocar el condensador de desaclopo de 100nF lo más cerca posible del PIC para que esta tensión tenga el mínimo rizado posible.