TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: ejmc en 25 de Febrero de 2004, 02:14:00

Título: Presicion del conversor A/D
Publicado por: ejmc en 25 de Febrero de 2004, 02:14:00
Hola a todos
Estoy haciendo un termometro con el 16F818 y el sensor de temperatura LM335. Para leer este sensor uso la instruccion ADCIN, la cual me entrega la medicion en una var de tipo byte, con la que me da  255 para una tencion de 5v, por lo tanto puedo obtener el valor de la tencion en incrementos de 5/255= 19.6mV
Pero como el sensor me entrega 10mV/ºC, no puedo tener la precicion de 1 grado, y menos de una decima de grados. Asi que lo que quiero saber es como puedo hacer para achicar el rango de voltaje a medir y poder consegir mayor presicion, creo que eso se controla con las Vref de los registros asociados a la convercion A/D, pero no entiendo mucho de esto, asi que espero sus respuestas para solucionar esto.......
Título: RE: Presicion del conversor A/D
Publicado por: jorgeansuini en 25 de Febrero de 2004, 12:13:00
Buenas:

Si utilizas un 16f818 podés usar el a/d a 10 bits osea 1024 cuentas,por otro lado, depende hasta que valor de temperatura vas a medir pero podes desplazar la vref a un valor menor a vdd,como ser a 2,5volt y asi tendrias "pasos " de tension mas pequeños.-
saludos
Jorge
Título: RE: Presicion del conversor A/D
Publicado por: ejmc en 25 de Febrero de 2004, 17:14:00
Hola Jorge
El rango de tension a medir es de 2,73 a 3,93V.
Te cuento que decidi provar la medicion de 10 bits y hice el siguiente programita:
asm
   device pic16F818,INTRC_OSC,WDT_OFF,PWRT_OFF,LVP_OFF,PROTECT_OFF,MCLR_OFF
endasm

define osc 8
DEFINE ADC_BITS 16 "Numero de bits en el resultado ADCIN
DEFINE ADC_CLOCK 3 "ADC clock source (rc = 3)
DEFINE ADC_SAMPLEUS 50 "ADC sampling time in microseconds

tension var word
decenas var byte
c var byte
unidades var byte
d var byte
decimales var byte
u var byte
i var word

INTCON = 0
OSCCON = %01110000
OSCTUNE = 0
SSPCON[5] = 0
ADCON1 = %00001110
TRISA = %00101111
TRISB = %00000000

SENSA:ADCIN 0,tension
      decenas = tension / 100
      lookup decenas,[126,48,109,121,51,91,31,112,127,115],c
      unidades = (tension - decenas*100) / 10
      lookup unidades,[126,48,109,121,51,91,31,112,127,115],d
      decimales = (tension - decenas*100) // 10
      lookup decimales,[126,48,109,121,51,91,31,112,127,115],u
      GOSUB DISPLAY
      GOTO SENSA
     
DISPLAY:for i=0 to 100
           porta.4=1
           portb = c
           pause 1
           porta.4=0
           porta.7=1
           portb = d
           pause 1
           porta.7=0
           porta.6=1
           portb = u
           pause 1
           porta.6=0
        next i
        return

Pero hace cualquier cosa
El problema esta en las varibles no?
que me dices???
Título: RE: Presicion del conversor A/D
Publicado por: MGLSOFT en 26 de Febrero de 2004, 05:48:00
Copiaste tal cual aqui el programa ??
Porque si es asi deberia darte un error el compilador, por variable inexistente...

En el tramo:

SENSA:ADCIN 0,tencion
decenas = tension / 100

Tienes dos variables diferentes, por lo tanto no es loco que te de cualquier cosa, si estas leyendo una variable que vaya a saber como se actualiza.

Por otro lado debes escribir ADC_BITS 10 en el define, no 16...

Título: RE: Presicion del conversor A/D
Publicado por: ejmc en 26 de Febrero de 2004, 14:39:00
Si copie el programa tal cual, pero cuando vi como havia puesto tension me dio tanta verguenza que lo cambie y en esa parte me lo pase de largo.
Entonces defino ADC_BITS 10, y el resultado de la medicion lo guardo en una var de tipo word. No tengo en claro si puedo hacer estas cosas con las variables porque no se como trabaja el pbp( no tendrian que agregar un careto avergonzado).
Ya tengo un LM35, asi que voy a poner la Vref- en 0V y veo en que valor pongo la Vref+, otra cosita, ¿con este pic no se puede regular la Vref con algun registro no?

Título: RE: Presicion del conversor A/D
Publicado por: MGLSOFT en 26 de Febrero de 2004, 15:35:00
No se si tendra referencia de tension interna regulable, no tengo la hoja de datos...
De todos modos asegurate que estes trabajando como dice la hoja de datos, normalmente las tensiones de referencia no estan activas, solo cuando programas los registros adecuadamente se activan.

No hay careto avergonzado porque no es necesario aqui.
Verguenza no es no saber y preguntar, sino saber y no ayudar
...

Lo que si es extraño que te lo haya compilado sin darte errores, sera un bug ??

PD: Usas la tabla Lookup para buscar el dato a enviar al display?
Porque no agregas los valores de A a F y muestras en hexadecimal el valor convertido directo?
Eso te ayudara a ver como te esta ayudando el tema de la referencia de tension...
Título: RE: Presicion del conversor A/D
Publicado por: jorgeansuini en 26 de Febrero de 2004, 21:26:00
Buenas:
te mando el codigo de un termometro que funciona,solo deberias adaptar la rutina de display para que la haga multiplexada

"****************************************************************
"*  Name    : termometro.BAS                                    *
"*  Author  : Jorge ansuini                                     *
"*  Notice  : Copyright (c) 2004 jorge ansuini                  *
"*          : All Rights Reserved                               *
"*  Date    : 26/02/2004                                        *
"*  Version : 1.0                                               *
"*  Notes   : medicion de temperatura con lm35 y 16f977         *
"*          :                                                   *
"****************************************************************
    define osc 8
    digit1 VAR Byte
    digit2 VAR Byte
    digit3 VAR Byte
    veces var byte
    cuenta var word
    intermedia VAR word
   
      TRISA = %11111111  
   ADCON1 = %10001110    
   ADCON0 = %11000101   
    TRISB = %00000000
    TRISC = %00000000
    TRISD = %00000000

    symbol digi1=portb
    symbol digi2=portc
    symbol digi3=portd
inicio:
     cuenta=0
     for veces= 0 to 4
    ADCON0.2 = 1      " arranca Conversion

termino:
    Pause 20
   IF ADCON0.2 = 1 Then termino
   intermedia.highbyte = ADRESH
   intermedia.lowbyte = ADRESL   
    cuenta=intermedia+cuenta
     next veces
    gosub display  
    pause 500
    goto inicio
    end
display:

    digit3 = cuenta dig 2
   digit2 = cuenta dig 1
   digit1 = cuenta dig 0
   
 LOOKUP2 DIGIt3,[63,6,91,79,102,109,125,7,127, 111],digi3
 LOOKUP2 DIGIt2,[63,6,91,79,102,109,125,7,127, 111],digi2
 LOOKUP2 DIGIt1,[63,6,91,79,102,109,125,7,127, 111],digi1
 return

Cualquier cosa pregunta.
Jorge
Título: RE: Presicion del conversor A/D
Publicado por: ejmc en 26 de Febrero de 2004, 23:12:00
vAMOS POR PARTE
mglsoft:
             eL PROGRAMA ME LO CONFIGURO PORQUE EN TODOS LADOS PUSE ``TENCION´´ Y NO TUBE PROBLEMA CON ESO. LOS DISPLAY SON ESOS DE 7 SEGMENTOS Y EL LOOKUP LO USO PARA PONER EN EL PORTB LOS UNOS Y CEROS QUE NECESITO PARAS VER EL NUMERO, ES DECIR , SI QUIERO MOSTRAR EL NUMERO 3 EN EL DISPLAY, HAGO PORTB = 121, Y CON ESTO ENCIENDO LOS SEGMENTOS DEL DISPLAY QUE ME MUESTRAN EL NUMERO 3.
JORGE:
           Para que es el bit 7 de ADCON1?, no entiendo que hace.
           En el programa utilizas el for Next para tomar la medicion 5 veces y luego sacas el promodio en la table que usas.
           No tengo el 16F977, pero en el 16F818 que estoy usando tengo una resolucion de 10 bit en la convercion y tambien los almacena en los registros ADRESH y ADRESL, y si yo hago
intermedia.highbyte = ADRESH
que me guarda en intermedia.highbyte: los 8 bit mas altos de los 10 bit de la convercion o los mas bajos.

Bueno espero no abusar de su hospitalidad
Título: RE: Presicion del conversor A/D
Publicado por: MGLSOFT en 27 de Febrero de 2004, 06:07:00
EJMC

El bit 7 del registro ADCON1 (del datasheet del 16F877, pienso que es igual para el otro) te permite justificar el resultado de la conversion a la derecha o a la izquierda tomando los 16 bits.

Si te fijas como lo tienes, esto permite que los 6 bits mas significativos del resultado de la conversion se pongan en cero.
por lo tanto cuando leas el maximo valor posible tendras todo AdressL en 1 (FF) y AdressH el 00000011 (03).
De esta forma el maximo valor del conversor sera de 3FF (10 bits).

En cuanto a la rutina de multiplexado de display que te paso Jorge, cuando el toma AdressL y AdresH y los pasa a Intermedia.Lowbyte e Intermedia.Higbyte esta pasando los 10 bits de la conversion a los dos bytes de la Word llamada Intermedia.
Esto es un formato poco comentado del PBP, pero altamente eficiente.
En la Word tendrs los 10 Bits de la conversion.
Decia que puedes hacer mas eficiente el multiplexado si lo disparas a traves de la interrupcion del timer0, asi se ejecuta en tiempos exactos.
Eso si, la cuenta hacela apenas terminas de hacer el promedio de la conversion, no dentro de la rutina de multiplexado, para optimizar la interrupcion, ademas podes tener valores erroneos o de dos conversiones diferentes, segun donde interrumpa...
Título: RE: Presicion del conversor A/D
Publicado por: MGLSOFT en 27 de Febrero de 2004, 06:14:00
Ahora caigo como diablos lo hace CCS !!
Si pones el bit 7 de ADCON1 en 1 tendras un resultado de conversion de 10 bits, pero el bit mas alto vale 32768, es lo mas parecido a 16 bits !!

Pruebalo y veras que tienes 65472 valores con una conversion a 10 bits !!

Alli esta el truco del que hablaba en su momento alguien del foro !!
Como es egoista (no quiso compartirlo con nosotros), por eso no recuerdo su nombre..je..je
..

Gracias por lo de egoista, seguramente lo merezco
nadie es perfecto  

hay un escrito muy antiguo que dice mas o menos asi:

No le des peces al hambriento, solo enseñale a pezcar.
si le das peces una vez, deberas darle siempre
si le enseñas a pezcar nuca mas tendra hambre.


yo aclare en su momento que no podia publicarlo porque era parte de un ensayo del equipo de tareas y era una falta de respeto
pubicar algo que no es de mi total propiedad intelectual
ademas me enviastes un correo privado pidiendo  
que te explicara y te enviara todo lo que tenia al respecto
sobre  conversion en 16 Bits. por mail privado,
cuando el tema era publico, que paso ?, lo querias para vos solo?
tengo guardado el mensaje
seguramente todos nos guardamos alguna carta en la manga
o no???
suerte veo que por lo menos de algo sirvio el post
creo que deberias estar agradecido
un beso
Luis Frino
Mar del Plata



 
Título: RE: Presicion del conversor A/D
Publicado por: cucaracha en 27 de Febrero de 2004, 08:26:00
Interesante, pero no lo acabo de entender. Puedes poner un ejemplo donde indiques los bits que usas de más.
No se si será así:
10bits-> BYTE alto+ BYTE bajo. Para 10bits tomamos sólo los dos bits más significativos del bajo. Te refieres a tener también en cuenta los restantes 6bits??
Título: RE: Presicion del conversor A/D
Publicado por: MGLSOFT en 27 de Febrero de 2004, 09:18:00


No estoy borracho, el CCS lo permite, pero no entendia como lo hacia...

Imaginate que lees una señal que esta a tope del rango de entrada al conversor.
Esta señal vale:

          AdressH     AdressL
          00000011  11111111

con el bit 7 de ADCON1 en 1 (justifica a la izquierda el valor leido).

Pero si lo pones en 0 justifica a la derecha por lo tanto el valor queda asi:

          AdressH     AdressL
         11111111  11000000

Por lo tanto estas convirtiendo parecido a 16 bits !!
En un conversor cuya señal esta correctamente filtrada o es muy estable la medicion (no hay ruido) el bit de menor peso pero mas significativo aun para el resultado sera el bit 5 de AdressL, por lo tanto el resultado varia en +/- 64 cuentas con su cambio, sobre un total de 65472 cuentas posibles !!

Matematicamente da y bien, siempre y cuando sea bueno el circuito a medir.
Yo lo probe en un protoboard y me anduvo tal cual te digo, con el conversor "suelto", es decir convirtiendo a lo que de, casi no se mueve.

Título: RE: Presicion del conversor A/D
Publicado por: jorgeansuini en 27 de Febrero de 2004, 11:03:00
Buenas:
La verdad,muy interesantes las conclusiones ,por mi parte creo que no tengo mas que opinar,solo aclaro que el micro que utilizo es el 16f877 (error de tipeo) y que hago 5 mediciones pero no promedio sino que las sumo a todas por una razón: el conversor lee 1023 cuentas a 5 volts,si lo sumo 5 veces me da aproximadamente 5000 cuentas, que serian 500 grados centigrados del lm35.-
saludos
jorge
Título: RE: Presicion del conversor A/D
Publicado por: ejmc en 28 de Febrero de 2004, 09:38:00
A ver, estoy medio mariado, voy a leer laas cosas tranquilito y luego les cuento
Título: RE: Presicion del conversor A/D
Publicado por: LuisFrino en 28 de Febrero de 2004, 11:14:00
Gracias por lo de egoista, seguramente lo merezco
nadie es perfecto

hay un escrito muy antiguo que dice mas o menos asi:

No le des peces al hambriento, solo enseñale a pezcar.
si le das peces una vez, deberas darle siempre
si le enseñas a pezcar nuca mas tendra hambre.


yo aclare en su momento que no podia publicarlo porque era parte de un ensayo del equipo de tareas y era una falta de respeto
pubicar algo que no es de mi total propiedad intelectual
ademas me enviastes un correo privado pidiendo
que te explicara y te enviara todo lo que tenia al respecto
sobre conversion en 16 Bits. por mail privado
,
cuando el tema era publico, que paso ?, lo querias para vos solo?

tengo guardado el mensaje
 
seguramente todos nos guardamos alguna carta en la manga
o no???
suerte veo que por lo menos de algo sirvio el post
creo que deberias estar agradecido
un beso
Luis Frino
Mar del Plata


Título: RE: Presicion del conversor A/D
Publicado por: cucaracha en 28 de Febrero de 2004, 11:27:00
Bueno, pues no se si soy el único que no se entera, ya que nadie ha dicho nada...
Pues eso, que no me entero.
Además eso de que hay 65472 combinaciones posible aun me lía más. No te referirás a 65532 no? Que son las combinaciones para 16bits.
Por que pones un ejemplo de como se leería un valor, por ejemplo 0xFFFF, osea el máximo. Como se haría??

Saludos, y no se me enfaden hombre!!
Título: RE: Presicion del conversor A/D
Publicado por: MGLSOFT en 01 de Marzo de 2004, 05:50:00
Hola Cuca!

En realidad la conversion sigue siendo a 10 Bits, pero el resultado viene desplazado a la izquierda 6 lugares, por lo cual recibes en la word formada por ADRESH y ADRESL un valor maximo de 65472 cuentas.
Esto en C lo puedes hacer escribiendo #DEVICE ADCBITS=16, en el archivo ExAddm.c que viene en los ejemplos, veras que el resultado cambia.

Como no es realmente un resultado a 16 bits, no tienes valores hasta 65535 como deberias tener en ese caso, pues los 6 bits mas bajos del resultado se mantienen siempre en cero.

Esto esta desarrollado asi por la gente Microchip directamente, por alguna razon que podriamos imaginarnos asi:

1.- La precision del conversor realmente es mayor a 10 Bits, pero lo guardan por evitar problemas con los usuarios.
2.- Necesitan mantener ambos formatos por compatibilidad con algun micro con conversor A/D viejo (PIC14000 por ejemplo, no lei nunca sobre el).
3.- Necesitan justificar distinto el dato dependiendo si lo deben transmitir serialmente a algun otro dispositivo.
4.- Ninguna de esas, tal vez sea por otra razon.
5.- Niguna de esas, ellos tampoco saben porque les salio asi.

Para Luis Frino:
Pido disculpas por lo de egoista, soy bastante sanguineo y me salio eso, al darme cuenta que eso es lo que habia consultado contigo, sin obtener respuesta.
Es cierto que lo pedi por privado, viendo que no tenias intencion de aclararlo en el foro, pero tambien es cierto que no recibi respuesta tuya.

Un abrazo.
Título: RE: Presicion del conversor A/D
Publicado por: cucaracha en 01 de Marzo de 2004, 07:10:00
Vale, ahora entiendo.
He hecho los cambios que dices y además he incluido unas líneas para que me muestre los valores de ADESH y ADRESL, y ahí es donde lo entendí.
Pero ahora digo yo, es cierto que obtienes un máximo de 65472, pero no vas a poder tener pasos de 1.
Me explico, que necesitarás tener 16 veces el LSB (para 65472), para notar el cambio.
Osea, que sigue siendo un conversor de 10bits.
Al menos, simulando es más o menos eso. No se si en la realidad lo hará bien??

Comenta, me vuelvo a equivocar??
Título: RE: Presicion del conversor A/D
Publicado por: MGLSOFT en 01 de Marzo de 2004, 07:24:00
Correccion, cada paso vale 64 cuentas (1,2,4,8,16,32 sumados), y si es cierto, el resultado sigue siendo de 10 bits (pseudo 16 bits), pero si se mantiene estable tienes mejor alcance bit a bit, entiendes ??
Título: RE: Presicion del conversor A/D
Publicado por: jorgeansuini en 01 de Marzo de 2004, 21:38:00
Buenas:
Me parece que hay un error en el hecho de considerar al conversor como "pseudo 16 bits",pensandolo un poco,me parece, que sigue siendo de 10 bits, y el cambio del bit inferior,seguira valiendo el mismo nivel de tensión y esta dado por la Vref/1024.-
La precisión del conversor realmente depende de otros valores, aparte el hecho de no tener el bit menos significativo,no nos permitiria generar´valores impares .-

Como comentario al marge,el hecho de tener mas bits en el conversor tampoco significa tener más precisión, la que depende de otros parámetros tales como Vref,compensación de temperatura, instrumentro patrón para ajustar,etc.-
Pero por las dudas vamos a ver el asembler que genera un programita en ccs utilizando a/d de 16bits.-

Saludos
Jorge
Título: RE: Presicion del conversor A/D
Publicado por: Elena2000 en 02 de Marzo de 2004, 04:20:00
Uff.... no puedo callarme... es que Luis Frino me has dejado helada con ese mensaje tan... improcedente... no te parece? creo que este foro no es ni mucho menos para incitar a enfados o subidas de tono.. sería una pena que se estropeara la magia y buen rollito que tenemos entre nosotros, y seguro que estás de acuerdo conmigo, a que si? Además, Luis, si no recuerdo mal.. no es esta la primera vez que estás involucrado en una polémica con alguno de los foristas, por absurdos malentendidos.

 A veces es difícil interpretar el verdadero sentido que quiere dar el que escribe el post, porque las palabras escritas están sólo... eso palabras... y no hay ninguna mirada cómplice ni sonrisa que las acompañe (excepto por los caretos, que realmente ayudan).
Pero si haces un pequeñísimo esfuerzo en leer lo que escriben los amigos, te das cuenta de que en realidad puedes ver esa mirada o esa sonrisa a través de las letras... y creo de corazón que Marcos siempre siempre tiene una sonrisa y un guiño cariñoso que acompaña a todos y cada uno de sus mensajes.
En todo caso, si aún así no has sido capaz de ver el guiño y te molestó de alguna manera su cariñoso "egoista" que te brindó, te recuerdo que rectificar es de sabios y pedir disculpas, además públicamente, es de eruditos... y él ha demostrado que es sabio y erudito, las dos cosas...

Ya. Y una cosa, por incordiar más, el tener más bits no da más precisión, ah... eso ya lo dijo Jorge, no?... pues le pagaré derechos de autor...

Muchos besotes y muchas sonrisas.
Elena
Título: RE: Presicion del conversor A/D
Publicado por: MGLSOFT en 02 de Marzo de 2004, 05:19:00
UFAA!!

Voy a tener que seguir trabajando con mi bendito conversor a 12 bits (MCP3204) y si quiero 16 voy a tener que cambiarlo...

Son aguafiestas estos dos de arriba, je..je..

Pero seria interesante ahondar estos temas de los A/D internos o externos, para consultar dudas e intercambiar experiencias, no ??
Título: RE: Presicion del conversor A/D
Publicado por: LuisFrino en 02 de Marzo de 2004, 05:35:00
Escrito originalmente por Elena2000
Uff.... no puedo callarme... es que Luis Frino me has dejado helada con ese mensaje tan... improcedente... no te parece? creo que este foro no es ni mucho menos para incitar a enfados o subidas de tono.. sería una pena que se estropeara la magia y buen rollito que tenemos entre nosotros, y seguro que estás de acuerdo conmigo, a que si? Además, Luis, si no recuerdo mal.. no es esta la primera vez que estás involucrado en una polémica con alguno de los foristas, por absurdos malentendidos.

 A veces es difícil interpretar el verdadero sentido que quiere dar el que escribe el post, porque las palabras escritas están sólo... eso palabras... y no hay ninguna mirada cómplice ni sonrisa que las acompañe (excepto por los caretos, que realmente ayudan).
Pero si haces un pequeñísimo esfuerzo en leer lo que escriben los amigos, te das cuenta de que en realidad puedes ver esa mirada o esa sonrisa a través de las letras... y creo de corazón que Marcos siempre siempre tiene una sonrisa y un guiño cariñoso que acompaña a todos y cada uno de sus mensajes.
En todo caso, si aún así no has sido capaz de ver el guiño y te molestó de alguna manera su cariñoso "egoista" que te brindó, te recuerdo que rectificar es de sabios y pedir disculpas, además públicamente, es de eruditos... y él ha demostrado que es sabio y erudito, las dos cosas...

Ya. Y una cosa, por incordiar más, el tener más bits no da más precisión, ah... eso ya lo dijo Jorge, no?... pues le pagaré derechos de autor...

Muchos besotes y muchas sonrisas.
Elena



Elena con el mayor de los respetos
si esta parte del post no contiene algo de burla y mala intencion
yo ya no entiendo nada
se lo reescibo para que saque sus conclusiones

Alli esta el truco del que hablaba en su momento alguien del foro !!
Como es egoista (no quiso compartirlo con nosotros), por eso no recuerdo su nombre..je..je..


ademas me llama la atencion que  que los mensajes no sean leidos detenidamente y se apresuren en las respuestas

ademas mi mensaje fue muy claro y para MGLsoft que me ha sorprendido ya que somos gente grande y estamos perdiendo tiempo en cosas sin sentido para el foro
tengo el derecho a me defensa cuando el mensaje que se postea
es para agredir porque si sabia a quien se referia cuando escribio
Alli esta el truco del que hablaba en su momento alguien del foro !!
Como es egoista (no quiso compartirlo con nosotros), por eso no recuerdo su nombre..je..je..

Elena le ruego que dejemos las cosas como estan
y el tema es entre Marcos Lazcano y Luis Frino
y el señor Marcos tiene la opcion de defenderse como la tuve yo
y si no lo hizo fue para no generar mas polemicas
y con respecto a los chispazos y diferencias entre mas de dos personas que piensan diferente son normales y validas
en cualquier familia
no necesito defensores y si en algun momento me equivoco
no tengo problemas en rectificarme
nadie es perfecto
reciba usted mi saludo
Atte.
Luis Frino
 
Título: RE: Presicion del conversor A/D
Publicado por: Elena2000 en 02 de Marzo de 2004, 05:50:00
Luis,
Primero me reescribe el post y me pide que saque conclusiones.
A continuación me ruega que deje las cosas como están.

Pues gustosamente atenderé su último ruego y a cambio le pediré y rogaré uno yo misma:
como gente grande que dice ser, no haga enormes océanos de pequeños charcos. Se lo ruego. Los charcos se sobrepasan con un simple salto, los océanos requieren mucho más esfuerzo...

Saludos
Elena
Título: RE: Presicion del conversor A/D
Publicado por: MGLSOFT en 02 de Marzo de 2004, 07:50:00
Yo ya deje el tema.
Gracias Luis por acceder a mi perfil, veo que me estas prestando atencion.
Título: RE: Presicion del conversor A/D
Publicado por: marmatar en 02 de Marzo de 2004, 09:56:00
Bueno... creo que hubo una polémica, y me la perdí... no quiero hablar de la parte técnica del asunto, sino de las características del foro... creo que, como somos grandes, si detectamos que se inicia una polémica con alguien en particular, sería coherente proseguirla en privado y plasmar los resultados interesantes para el foro, luego en público.
Ya nos ha pasado a muchos, y solo vemos como resultado el enojo de algunos otros foristas que quizá no tienen porqué pasar por una mala situación.

Es mi opinión... solo es una sugerencia... no se enojen... ambos son excelentes foristas, y si bien es normal entre personas disentir, no creo que ofenderse en público sea parte del caracter del foro.
un abrazo a ambos... tregua.
marmatar
Título: RE: Presicion del conversor A/D
Publicado por: MGLSOFT en 02 de Marzo de 2004, 12:12:00
Ya fue planteada esa tregua, gracias, Marcelo por tus conceptos..
Título: RE: Presicion del conversor A/D
Publicado por: ejmc en 02 de Marzo de 2004, 14:10:00
Bueno aqui estoy, se acuerdan de mi......el que pregunto por la ``Presicion del conversor A/D´´
Este es el programa que hice:
asm
   device pic16F818,INTRC_OSC,WDT_OFF,PWRT_OFF,LVP_OFF,PROTECT_OFF,MCLR_OFF
endasm

define osc 8
DEFINE ADC_BITS 8 "Numero de bits en el resultado ADCIN
DEFINE ADC_CLOCK 3 "ADC clock source (rc = 3)
DEFINE ADC_SAMPLEUS 50 "ADC sampling time in microseconds

grad var word
promedio var word
decenas var BYTE
c var BYTE
unidades var BYTE
d var BYTE
decimales var BYTE
u var BYTE
i var word

INTCON = 0
OSCCON = %01110000
OSCTUNE = 0
SSPCON[5] = 0
ADCON0 = %11000101
ADCON1 = %10001110
TRISA = %00101111
TRISB = %00000000

SENSA:promedio = 0
      for i=0 to 9
        grad = 0
        ADCON0.2 = 1
     
FINAL:if ADCON0.2=1 then final
      grad.highbyte = ADRESH
      grad.lowbyte = ADRESL
      promedio = grad + promedio
      next i
      if promedio > 830 then promedio = promedio - 20
      promedio = promedio / 20
      decenas = promedio DIG 2
      lookup decenas,[126,48,109,121,51,91,31,112,127,115],c
      unidades = promedio DIG 1
      lookup unidades,[126,48,109,121,51,91,31,112,127,115],d
      decimales = promedio DIG 0
      lookup decimales,[126,48,109,121,51,91,31,112,127,115],u
      GOSUB DISPLAY
      GOTO SENSA
     
DISPLAY:for i=0 to 100
           porta.4=1
           portb = c
           pause 1
           porta.4=0
           porta.7=1
           portb = d
           pause 1
           porta.7=0
           porta.6=1
           portb = u
           pause 1
           porta.6=0
        next i
        return

Es una copia del que me paso Jorge con unas malas correcciones
Pero anda muy bien ( precicion : +- 1 ºC)
Creo que hablaban de que se podia tener una presicion de 16 bits no? Mucho no lo entendi. Lo que saque en limpio es que para tener una medicion mas  presisa se deven acomodar la Vref a las tensiones maximas y minimas a medir, osea si mi sensor de temperatura hera un lm335, haria: Vref- = 2.73V (0 ºC) y Vref+ = 3.73V (100ºC), asi lograria una presicion de una decima de grado
Y bueno la idea hera ver que es esto de los conversores y alg0 aprendi
Muchisimas gracias a todos y pronto volveremos a escrivirnos (que sigo con mis preguntas)