Autor Tema: Resolucion A/D  (Leído 4597 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado arcadi

  • PIC12
  • **
  • Mensajes: 74
Resolucion A/D
« en: 28 de Marzo de 2008, 15:25:19 »
Hola a todos;

Tengo un problema con el conversor A/D de 10 bits del 16f876a. El problema que tengo es que no me muestra bien el resultador por la pantalla LCD.
Quiero mostrar la temperatura de un LM35 de un rango de 0ºC a 75ºC.

Caracteristicas del A/D:

Vref=0.75v
10 bits


Vresolucion=0.75/2^10=0.000732421875

Vfactor=vresolucion*100=0.0732421875


------------------------------Programa--------------------------------------

int16 adcValue;
float temper;


Void main (void)
{

....

      printf(lcd_putc,"\f") ;
      adcValue=read_adc();   
      delay_us(20);
      x=1;y=2;
      lcd_gotoxy(x,y);
      temper=adcValue*0.07324218;
      printf(lcd_putc,"%1.2f C",temper) ;

...

}

Me gustaria que fuese si puede ser:

Analogica: 0.23v           Salida: 23.00ºC


Me sale:

Analogica: 0.23v           Salida: 3.36ºC




Muchas gracias
Anglès (Girona)

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 624
Re: Resolucion A/D
« Respuesta #1 en: 28 de Marzo de 2008, 20:32:43 »
Estas definiendo que vas a trabajar con 10 bits?
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Resolucion A/D
« Respuesta #2 en: 28 de Marzo de 2008, 22:58:41 »
MMhhh

Si dices que Vref es 0.75V, considero que Vref+ = 0.75V y Vref- = 0V. El rango es de 0.75V, entonces...

0.75V es a 1023bits

pero 0.75V es a 75°C y a su vez es a 1023 bits, según la hoja de características del LM35.

1023 bits -> 75°C
x -> TempC

Lo que desconocemos es TempC, despejando...

TempC = (x * 75)/1023

donde x es la lectura en binario. Traducido a tu programa...

temper=(float)(adcValue*75)/1023; //con casting para forzar el resultado en flotante


Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Resolucion A/D
« Respuesta #3 en: 29 de Marzo de 2008, 06:44:56 »
Creo que los cálculos los tiene bien hechos!

MigSantiago según la fórmula de la resolución de un convertidor creo que es 1024 y no 1023.

Arcadi como has hecho en el programa para programar la VREF (setup_adc_ports ...)?

Pón el programa completo.

Desconectado arcadi

  • PIC12
  • **
  • Mensajes: 74
Re: Resolucion A/D
« Respuesta #4 en: 29 de Marzo de 2008, 09:09:58 »
Perdonen por el retraso, he tenido problemas con el PC.

He puesto en el micro Vref=0.75v i -Vref=0v.

Ahora culego el programa con la simulacion del Proteus. Es un reloj alarma con sensor de temperatura.

Muchas gracias
Anglès (Girona)

Desconectado arcadi

  • PIC12
  • **
  • Mensajes: 74
Re: Resolucion A/D
« Respuesta #5 en: 29 de Marzo de 2008, 09:20:54 »
Sí, utilizo una conversion de 10 bits.

Cuando tenga el trabajo terminado, ya lo colgare como ejemplo de programar. Es que me falta tastear el tiempo de los segundos y todo esto...
Anglès (Girona)

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Resolucion A/D
« Respuesta #6 en: 29 de Marzo de 2008, 12:28:53 »
Hola Pocher

Si cuando tiene 0V tiene 0bits, entonces 0.75V es a 1023 bits, porque 1024 requeriría de un conversor de 11 bits de resolución... (10 000 000 000 en binario).

Si el ADC fuera de 8 bits, entonces 0.75V sería a 255 (2^8-1).

Desconectado arcadi

  • PIC12
  • **
  • Mensajes: 74
Re: Resolucion A/D
« Respuesta #7 en: 29 de Marzo de 2008, 12:52:51 »
Puede ser, ya que al final nunca conseguire el Vref. Igualmente, tengo que poner un divisor de tension despues del LM35 para configurarlo bien.
Anglès (Girona)

Desconectado arcadi

  • PIC12
  • **
  • Mensajes: 74
Re: Resolucion A/D
« Respuesta #8 en: 29 de Marzo de 2008, 12:56:24 »
Ahora he visto que no se habia colgado bien...
ya esta puesto bien.

Gracias
Anglès (Girona)

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Resolucion A/D
« Respuesta #9 en: 29 de Marzo de 2008, 15:12:38 »
Hola Arcadi.

Arcadi te falla porque te falta lo que te comentaba más arriba:

setup_adc_ports(RA0_RA1_ANALOG_RA3_REF);

Otra cosilla: Has elegido un voltímetro a.c., cámbialo por uno d.c.

Hola MigSantiago.

Este dilema entre el 1024 y el 1023 ya lo tuve hace mucho tiempo con un componente del FORO y al final cada uno nos quedamos con lo nuestro, támpoco apareció nadie a opinar al respecto.

Yo me baso simplemente en la fórmula de un conversor A/D ó D/A que es:

VRES=VREF/2^n -----> Si n=10, pues 2^n=1024

Un saludo a ambos.

Desconectado arcadi

  • PIC12
  • **
  • Mensajes: 74
Re: Resolucion A/D
« Respuesta #10 en: 29 de Marzo de 2008, 15:23:28 »
Muchas gracias!!!! Ahora lo puebo en el Proteus.

La semana que viene me voy a Barcelona a comprar los componentes que me faltan y lo montare. Seguramente retocare alguna cosilla y despues lo colgare aqui para si alguien le interesa para proyectos futuros.


Muchas gracias a todos.
Anglès (Girona)

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Resolucion A/D
« Respuesta #11 en: 29 de Marzo de 2008, 19:43:13 »
Hola MigSantiago.

Este dilema entre el 1024 y el 1023 ya lo tuve hace mucho tiempo con un componente del FORO y al final cada uno nos quedamos con lo nuestro, támpoco apareció nadie a opinar al respecto.

jejeje pues que le vamos a hacer... un bit a final de cuentas no afecta  :D

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Resolucion A/D
« Respuesta #12 en: 29 de Marzo de 2008, 19:59:39 »
Hola de nuevo

Me llegó una idea de cómo demostrar lo de la resolución. Si tuviéramos un ADC de 2 bits de resolución tendríamos los posibles datos entregados siguientes...

00, 01, 10 y 11

y si Vref+ fuera 5V...

5V / (2^2 - 1) = 5V / 3 = 1.66V

00 -> 0V
01 -> 1.66V
10 -> 3.33V
11 -> 5V

Pero si hiciéramos la división...

5V / 2^2 = 5V / 4 = 1.25

entonces la tabla estaría forzada a ser así...

00 -> 0V
01 -> 1.25V
10 -> 2.5V
11 -> 3.75V !!!

Hablando ya en 10 bits... tendría que hacerse con 2^10 - 1.

¿Qué opinas Pocher?  :mrgreen:
« Última modificación: 29 de Marzo de 2008, 20:02:22 por migsantiago »

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Resolucion A/D
« Respuesta #13 en: 30 de Marzo de 2008, 02:23:01 »
Pués sí, con ese ejemplito te lo voy a demostrar fácilmente. Je, je.

Para valores de entrada Vi mayores ó iguales que 0 pero menores que 1,25V se codifican todos ellos como 00. Con números:

0V <= Vi < 1,25V    -----> 00

1,25V <= Vi < 2,5V -----> 01

2,5V <= Vi < 3,75V -----> 10

3,75V <= Vi < 5V    -----> 11

El valor 5V recibe el nombre de valor a fondo de escala (VFS) y suele coincidir casi siempre (salvo el caso de un convertidor de resistencias ponderadas que es un escalón menos) con el valor de referencia (VREF). En el caso del PIC creo que usa un convertidor A/D interno de aproximaciones sucesivas (el más usado) y sí que VFS=VREF)

Un saludo


Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: Resolucion A/D
« Respuesta #14 en: 30 de Marzo de 2008, 03:09:17 »
Yo creo que es como explica pocher,aunque poniéndonos tiquismiquis, ¿qué pasa con los 5V?


 

anything