TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: kaki en 03 de Agosto de 2010, 20:31:33

Título: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: kaki en 03 de Agosto de 2010, 20:31:33
Hola.
Tengo una duda y es en la configurancion del PIC18F2550 para usar la conversión Analógico-Digital.
La duda es lo siguiente:

Código: [Seleccionar]
setup_adc(ADC_CLOCK_DIV_8);
En esta parte no entiendo bien, osea no si yo uso un cristal esterno de 20MHz y no se si esta bien eso.

Con respeto a esta parte:

Código: [Seleccionar]
set_adc_channel(0);
Aca se elije el Pin donde van a entrar los datos Analogicos??

                  Saludos perdon por la inoracia!!
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: kaki en 03 de Agosto de 2010, 21:19:02
leyendo encontre que cuando usas un cristalde 20MHz tengo q configurarlo asi:

Código: [Seleccionar]
setup_adc(ADC_CLOCK_DIV_32);
ahora lo que no encontre es el ¿Por  Que?
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: Suky en 03 de Agosto de 2010, 21:28:32
Revisa por aquí (http://www.infopic.comlu.com/joomla/index.php/modulo-de-conversion-analogica-16f18f), hay una explicación del funcionamiento para que puedas configurarlo adecuadamente.


saludos!
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: willynovi en 03 de Agosto de 2010, 22:52:14
kaki, como puedes ver, Suky ha hecho tan lindos tutoriales en base a lo que dice la datasheet.

Ahi en la datasheet seguro encontraras algunos detalles mas que te ayudaran a configurar correctamente el ADC de acuerdo a tu necesidad particular.

Saludos
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: kaki en 04 de Agosto de 2010, 02:39:14
ya lo lei eso y no entiendo eso del Fosck/32,etc esa es la parte que necesito q me expliquen.

        Gracias
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: Suky en 04 de Agosto de 2010, 10:45:15
ya lo lei eso y no entiendo eso del Fosck/32,etc esa es la parte que necesito q me expliquen.

        Gracias

Fosc= frecuencia del oscilador externo o interno. 32 una constante seleccionable según divisor de frecuencia  :mrgreen:


kaki, como puedes ver, Suky ha hecho tan lindos tutoriales..

Gracias!  :oops:  :D :D

Saludos.
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: willynovi en 04 de Agosto de 2010, 11:44:30
los valores del registro ADCON2 debes ajustarlos a tu necesidad, y los puedes determinar los valores de la practica.

Por ejemplo:
ACQT2-ACQT0 seleccionas el tiempo de adquisición, y
ACDS2-ACDS0 seleccionas el reloj para la conversion

Por ejemplo, el otro dia estaba con unas entradas analogicas usando unos potenciometros para un joystick, y fui ajustando los valores hasta obtener una señal que fuera el equilibrio entre oscilacion y tiempo de ejecucion del bucle principal del programa.
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: jhozate en 04 de Agosto de 2010, 13:49:19
a mi me parece que ese valor es para aprovechar al maximo lo que la frecuencia de Osc y en el datasheet ponen el valor recomendado para cada caso
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: kaki en 04 de Agosto de 2010, 14:36:27
Muchas gracias a todos
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: kaki en 04 de Agosto de 2010, 20:42:54
una pregunta que la verdad verdad no encuentro se por que.

Por multiploco * 0.48875 cuando pasa de lo que capturo el ah ºC
Código: [Seleccionar]
A=(Medicion*(0.48875));
lo que tambien noto que el valor de referencia cuando lo cambio cambia el resultado.Por ejemplo probe con estos 2

Código: [Seleccionar]
#device adc= 8
Código: [Seleccionar]
#device adc=10
Los resultados son distintos... por que??
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: jhozate en 04 de Agosto de 2010, 20:47:33
esa es la resolucion del ADC, con ADC=8 quiere decir que el ADC convertira tu señal analoga en un dato de 8 bits.
Con ADC=10 tendras una conversion de 10bits.
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: kaki en 04 de Agosto de 2010, 20:49:49
Gracias... y como le asigno el voltaje de referencia?? o el voltaje de referencia es el que tengo antes de q llegue al comparador... a ver si me explico mejor.

  FUENTE 5V --> Res --> COMVERSOR ANALOGICO DIGITAL

La fuente seria mi voltaje de referencia??
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: jhozate en 04 de Agosto de 2010, 20:58:05
De forma general, para el pic que uses, dale una mirada a la carpeta "devices" en donde tienes instalado el compilador, ahi encontraras la forma de configurar los modulos que posea dicho PIC
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: kaki en 04 de Agosto de 2010, 21:17:16
esta parte seria:

Código: [Seleccionar]
////////////////////////////////////////////////////////////////// ADC
// ADC Functions: SETUP_ADC(), SETUP_ADC_PORTS() (aka SETUP_PORT_A),
//                SET_ADC_CHANNEL(), READ_ADC()
// Constants used for SETUP_ADC() are:
#define ADC_OFF               0           // ADC Off
#define ADC_CLOCK_DIV_2   0x100
#define ADC_CLOCK_DIV_4    0x04
#define ADC_CLOCK_DIV_8    0x01
#define ADC_CLOCK_DIV_16   0x05
#define ADC_CLOCK_DIV_32   0x02
#define ADC_CLOCK_DIV_64   0x06
#define ADC_CLOCK_INTERNAL 0x07           // Internal 2-6us

// Constants used in SETUP_ADC_PORTS() are:
#define NO_ANALOGS   0x0F   // None
#define ALL_ANALOG   0x00   // A0 A1 A2 A3 A5 B2 B3 B1 B4 B0             
#define AN0_TO_AN11  0x03   // A0 A1 A2 A3 A5 B2 B3 B1 B4                 
#define AN0_TO_AN10  0x04   // A0 A1 A2 A3 A5 B2 B3 B1                   
#define AN0_TO_AN9   0x05   // A0 A1 A2 A3 A5 B2 B3                       
#define AN0_TO_AN8   0x06   // A0 A1 A2 A3 A5 B2                         
#define AN0_TO_AN4   0x0A   // A0 A1 A2 A3 A5
#define AN0_TO_AN3   0x0B   // A0 A1 A2 A3
#define AN0_TO_AN2   0x0C   // A0 A1 A2
#define AN0_TO_AN1   0x0D   // A0 A1
#define AN0          0x0E   // A0
#define AN0_TO_AN11_ANALOG     0x03   //!old only provided for compatibility
#define AN0_TO_AN10_ANALOG     0x04   //!old only provided for compatibility
#define AN0_TO_AN9_ANALOG      0x05   //!old only provided for compatibility
#define AN0_TO_AN8_ANALOG      0x06   //!old only provided for compatibility
#define AN0_TO_AN4_ANALOG      0x0A   //!old only provided for compatibility
#define AN0_TO_AN3_ANALOG      0x0B   //!old only provided for compatibility
#define AN0_TO_AN2_ANALOG      0x0C   //!old only provided for compatibility
#define AN0_TO_AN1_ANALOG      0x0D   //!old only provided for compatibility
#define AN0_ANALOG             0x0E   //!old only provided for compatibility

// The following may be OR'ed in with the above using |
#define VSS_VDD               0x00              // Range 0-Vdd
#define VREF_VREF             0x30              // Range VrefL-VrefH
#define VREF_VDD              0x20              // Range VrefL-Vdd
#define VSS_VREF              0x10              // Range 0-VrefH


// Constants used in READ_ADC() are:
#define ADC_START_AND_READ     7   // This is the default if nothing is specified
#define ADC_START_ONLY         1
#define ADC_READ_ONLY          6
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: jhozate en 04 de Agosto de 2010, 21:22:58
exacto, fijate que ahi te dice como se escribe la funcion y seguidamente las posibles configuraciones.
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: kaki en 04 de Agosto de 2010, 21:28:41
me quedaria asi:
Código: [Seleccionar]
setup_adc_ports(AN0|VSS_VDD);  para q sea de 0 a 5v ??
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: Suky en 05 de Agosto de 2010, 00:32:47
me quedaria asi:
Código: [Seleccionar]
setup_adc_ports(AN0|VSS_VDD);  para q sea de 0 a 5v ??

Exacto
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: kaki en 05 de Agosto de 2010, 13:50:54
bien ya lo logre hacer andar.. Muchas gracias.. la unica duda que me quedo

Código: [Seleccionar]
SETUP_ADC(ADC_CLOCK_DIV_32)
No entiendo como se cual tengo que usar dependiendo de mi oscilador.
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: Suky en 05 de Agosto de 2010, 15:01:43
bien ya lo logre hacer andar.. Muchas gracias.. la unica duda que me quedo

Código: [Seleccionar]
SETUP_ADC(ADC_CLOCK_DIV_32)
No entiendo como se cual tengo que usar dependiendo de mi oscilador.

En el articulo que indique anteriormente se explica ese detalle, hay mínimos que hay que cumplir y a partir de allí determinar esos valores.


Saludos!
Título: Re: PIC 18F2550 usando conversión Analógico-Digital (CCS)
Publicado por: Suky en 07 de Diciembre de 2010, 15:54:10
Hola SUky, vi en un mensaje tuyo http://www.todopic.com.ar/foros/index.php?topic=31540.0
que seteabas vss y vdd como referencia para el comparador analogico con la siguiente sentencia
setup_adc_ports(AN0|VSS_VDD);
a mi no me andubo en mi ccs, 4.104, me podes ayudar? me tira este error:

*** Error 12 "main.c" Line 678(21,28): Undefined identifier   VSS_VDD


Podes abrir el *.h del microcontrolador que se encuentra en PICC/Devices/ y allí ver las distinas opciones de configuración que presenta la función setup_adc_ports

Puede que haya cambiado de nombre en esta versión.


Saludos!