Autor Tema: Ayuda con el conversor A/D del 16F876  (Leído 12166 veces)

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

Desconectado ajkite

  • PIC10
  • *
  • Mensajes: 23
Ayuda con el conversor A/D del 16F876
« en: 14 de Noviembre de 2005, 06:46:00 »
Qeria saber si me podriais poner un ejemplo sobre como se configura el conversor A/D, el cual kiero poner una entrada analogica y las demas digitales, asi como se pone el reloj del conversor y todo lo akello q ay q acer para q convierta la señal

gracias

Desconectado PAOLA09

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 332
RE: Ayuda con el conversor A/D del 16F876
« Respuesta #1 en: 14 de Noviembre de 2005, 08:01:00 »
HOLA
QUISIERA SABER QUE LENGUAJE DE PROGRAMACION USAS YA QUE YO MANEJO EL ASSEMBLER, SI LO MANEJAS TAMBIEN TE INCLUYO UN EJEMPLO.

Desconectado ajkite

  • PIC10
  • *
  • Mensajes: 23
RE: Ayuda con el conversor A/D del 16F876
« Respuesta #2 en: 14 de Noviembre de 2005, 10:33:00 »
Pues utilizo el MPLAB

Desconectado PAOLA09

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 332
RE: Ayuda con el conversor A/D del 16F876
« Respuesta #3 en: 15 de Noviembre de 2005, 09:39:00 »
hola perdona la demora

BCF      STATUS,RPO;BANCO 0
MOVLW B"10000001";FOSC/32 SELECCION DE RA0
MOVWF ADCON0
BSF      STATUS,RP0;CAMBIO DE BANCO 1
MOVLW  B"10001110"
MOVWF  ADCON1
MOVLW B"00000001";DEJANDO COMO ENTRADA A AN0
MOVWF  TRISA

;MANEJO DE LA CONVERSION
 UNO                                               CLRF   ADRESL
BCF                                          STATUS,RP0
AD         CALL   DELAY1
         CALL   DELAY1
         CLRF   VAR10
         CLRF   VAR11

;INICIO DEL PROCESO      
         CLRF   ADRESH
         BSF   ADCON0,GODONE
CRA0                      BTFSC   ADCON0,GODONE   ;VERIFICACION DE FINALIZACION DE CONVERSION
         GOTO   CRA0
         MOVF   ADRESH,00
                                                MOVWF    VAR11
                                                BSF           STATUS,RP0
         MOVF   ADRESL,00
                                                MOVWF    VAR10
                                                GOTO        UNO
LOS DELAYS SON TIEMPOS NECESARIOS ENTRE CONVERSIONES DE ESTE DEPENDE DE QUE SE REALICE ADECUADAMENTE, LO PUSE PARA QUE SE REALIZARA LA CONVERSION CONTINUAMENTE PERO LO PUEDES AJUSTAR SEGUN LO NECESITES. LAS VARIABLES DE ALMACENAMIENTO SE DEBEN DECLARAR Y EN CASO DE SER SALIDA EN EL PUERTO SE REEMPLAZARAN POR ESTE.

CUALQUIER COSA ME DICES SI TE SIRVIO.

Desconectado ajkite

  • PIC10
  • *
  • Mensajes: 23
RE: Ayuda con el conversor A/D del 16F876
« Respuesta #4 en: 15 de Noviembre de 2005, 11:02:00 »
Pues muxisima grasia ma servido d muxa ayuda pero tengo una pekeña duda, no se xq as puesto
ADRESL,00 , significa lo de 00

Contx si no te importa y grasias de nuevo

Desconectado PAOLA09

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 332
RE: Ayuda con el conversor A/D del 16F876
« Respuesta #5 en: 15 de Noviembre de 2005, 13:22:00 »
HOLA
LA LINEA DE MOVF ADRESL,00 SIGNIFICA QUE SE PASA EL DATO DEL REGISTRO A W PARA ASIGNARLO A OTRO O AL PURTO. NO OLVIDES QUE EL TIEMPO DE LOS DELAYS ES IMPORTANTE PARA UNA BUENA CONVERSIO.


Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Ayuda con el conversor A/D del 16F876
« Respuesta #6 en: 17 de Noviembre de 2005, 20:02:00 »
Escrito originalmente por ajkite
Pues muxisima grasia ma servido d muxa ayuda pero tengo una pekeña duda, no se xq as puesto
ADRESL,00 , significa lo de 00

Contx si no te importa y grasias de nuevo


Tambien puedes hacer

Codigo:
w set 0


y luego hacer

Codigo:
   movf ADRESL,w


Estas pequeñas cosas hacen mas legible el codigo
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado dj_valle

  • PIC10
  • *
  • Mensajes: 48
RE: Ayuda con el conversor A/D del 16F876
« Respuesta #7 en: 21 de Diciembre de 2005, 15:02:00 »
saludos,

tengo unas dudas a ver si alguien me puede ayudar:
1. se puede emular con el mplab la entrada analogica del pic?
2. para que son los analog channels? chs2,  chs1, chs0.. en el data los veo pero no encuentro para que valen.
3. en el ejemplo que pones, usando an0 .... por an0 que entra solo la entrada analogica verdad?

por cierto no estoy muy seguro de como funciona el convertidor AD.... tienes 3 entradas no? voltaje alto, bajo y la de referencia que seria la que saldria del potenciometro verdad?

espero me puedan ayudar

gracias por adelantado... felices fiestas

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Ayuda con el conversor A/D del 16F876
« Respuesta #8 en: 21 de Diciembre de 2005, 16:58:00 »
Paola,

yo ya he usado el ADC en lenguaje C y desde siempre he copiado una rutina de conversión que incluye un delay de 20us.

¿Porqué se deben poner siempre 20us? ¿o se tienen que cambiar según la velocidad del PIC?

Siempre me han funcionado a 4MHz, pero ahora que estoy corriendo PICs a 20MHz, no sé si se deba aumentar o disminuir ese delay.

Thanks Pao Divertido

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Ayuda con el conversor A/D del 16F876
« Respuesta #9 en: 22 de Diciembre de 2005, 05:26:00 »
Escrito originalmente por dj_valle
saludos,

tengo unas dudas a ver si alguien me puede ayudar:
1. se puede emular con el mplab la entrada analogica del pic?
2. para que son los analog channels? chs2,  chs1, chs0.. en el data los veo pero no encuentro para que valen.
3. en el ejemplo que pones, usando an0 .... por an0 que entra solo la entrada analogica verdad?

por cierto no estoy muy seguro de como funciona el convertidor AD.... tienes 3 entradas no? voltaje alto, bajo y la de referencia que seria la que saldria del potenciometro verdad?

felices fiestas


A ver si te puedo ayudar.

1) Si se puede utilizar.  Si solo haras una entrada analógica es simple y se hace con el SCL generator en el menu Debugger de MPLAB.  Antes debes tener habilitado el modulo MPSIM

2) No entiendo bien tu pregunta pero te explico que el PIC (cualquier sea su modelo de los PIC16f... tienen un solo conversor A/D con "varias" entradas).  Uno selecciona por software que entrada leer en cada momento, a esto se le llama multiplexar.

3) AN0 es la entrada analógica 0, que corresponde a seleccionar el Canal 0.  No es el único canal, puedes tener hasta 13 canales A/D dependiendo del pic que uses!!  

4) Si bien no le pusiste numero le pongo yo.  Un A/D funciona con un "voltaje de referencia" y la entrada analógica.  El voltaje de referencia en el caso de los PIC16F, va entre 0V y Vdd.  Vdd puede ser 5 V como máximo y nunca más que el voltaje de alimentación + 0.3V o 0.5V  .  Si elijes la referencia como "interna" entonces el módulo A/D usará al alimentación del PIC como referencia de comparación para la entrada analógica que le pongas.
Ese ejemplod el potenciómetro es UN EJEMPLO; de ninguna manera es la única forma de ingresarle una entrada analógica a un PIC.

Además te aclaro que en los pic, el pin AN0 puede ser también un pin digital de propósito general , si se deshabilita esa entrada analógica.  De hecho hay muchas configuraciones posibles en los A/D para seleccionar los canales A/D que realmente vayamos a usar y no otros.

Espero te haya sido de mejor utilidad la explicacion
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado poi5on

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 127
RE: Ayuda con el conversor A/D del 16F876
« Respuesta #10 en: 22 de Diciembre de 2005, 07:43:00 »
Hola amigos,
Toda esa infomración la puedes conseguir el el datasheet del PIC q estes usando, ahi te muestra una tabla de las configuraciones posibles y el valor que debe tener el registro ADCON1 para que puedas trabajar que fue lo que hizo PAOLA09 en el programa de ejemplo.

Saludos

Desconectado PAOLA09

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 332
RE: Ayuda con el conversor A/D del 16F876
« Respuesta #11 en: 22 de Diciembre de 2005, 10:50:00 »
HOLA

EL DELAY QUE USAS ES EL TIEMPO MINIMO QUE DEBE HABER ENTRE CONVERSIONES, EL CUAL ES IGUAL AL DOBLE DEL TIEMPO DE ADQUISICION. ESTE TIEMPO SE VE AFECTADO POR EL PRODUCTO DE EL TIEMPO ELEGIDO EN LOS REGISTROS ADCON0 Y ADCON1  PARA LA CONVERSION Y POR EL TIEMPO DEL OSCILADOR. ES DECIR QUE ENTRE MAYOR SEA LA FRECUENCIA DE TU OSCILADOR MENOR SERA DICHO TIEMPO.

TAD=T(ADSC1:ADSC0)*TOSC

NO HAY QUE OLVIDAR QUE LA FRECUENCIA MINIMA DE TAD DEBE SER IGUAL A 1.6u

EL TIEMPO QUE TIENES IGUAL TE SIRVE, PERO SI NECESITAS MAS RAPIDEZ EN TU APLICACION LO PUEDES REDUCIR.Sonrisa Gigante

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Ayuda con el conversor A/D del 16F876
« Respuesta #12 en: 22 de Diciembre de 2005, 11:48:00 »
Escrito originalmente por PAOLA09
HOLA

EL DELAY QUE USAS ES EL TIEMPO MINIMO QUE DEBE HABER ENTRE CONVERSIONES, EL CUAL ES IGUAL AL DOBLE DEL TIEMPO DE ADQUISICION. ESTE TIEMPO SE VE AFECTADO POR EL PRODUCTO DE EL TIEMPO ELEGIDO EN LOS REGISTROS ADCON0 Y ADCON1  PARA LA CONVERSION Y POR EL TIEMPO DEL OSCILADOR. ES DECIR QUE ENTRE MAYOR SEA LA FRECUENCIA DE TU OSCILADOR MENOR SERA DICHO TIEMPO.

TAD=T(ADSC1:ADSC0)*TOSC

NO HAY QUE OLVIDAR QUE LA FRECUENCIA MINIMA DE TAD DEBE SER IGUAL A 1.6u

EL TIEMPO QUE TIENES IGUAL TE SIRVE, PERO SI NECESITAS MAS RAPIDEZ EN TU APLICACION LO PUEDES REDUCIR.Sonrisa Gigante


Paola, te estas olvidando que el TIEMPO DE MUESTREo no es el doble, ni el simple, ni el triple de nada...

El tiempo de muestreo es directamente proporcional a la constante RC formada por la impedancia externa en la pata del PIC y el capacitor de muestreo o de HOLD...

Este tiempo es totalmente independiente de la velocidad con la que luego el A/D realice la conversión (una vez capturado el valor analógico, es el tiempo que tarda en convertirlo en digital).

En la hoja de datos hay un ejemplo de como calcular este tiempo de muestreo .. o al menos un tiempo aproximado, aunque si uno no conoce bien la impedancia de la carga que le coloa entonces deberá hacer pruebas empíricas.

Para los que no lo sepan, el tiempo de muestreo es el tiempo que transcurre entre que uno selecciona un canal A/D hasta que se dispara la conversión.   Es el tiempo que tiene el capacitor de muestreo para tomar el mismo valor de tensión que tiene la entrada.  

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado PAOLA09

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 332
RE: Ayuda con el conversor A/D del 16F876
« Respuesta #13 en: 22 de Diciembre de 2005, 13:17:00 »
HOLA

CREO QUE TAL VEZ NO FUI MUY CLARA ME REFIERO AL TIEMO ENTRE LAS CONVERSIONES, NO AL TIEMPO DE MUESTREO EL CUAL SI ES INDEPENDIENTE DE LA FRECUENCIA PERO EL TIEMPO ENTRE MUESTRAS COMO DICE EL DATASHEET ES EL DOBLE DEL TAD. ESTE ES EL TIEMPO POR EL CUAL PREGUNTANSonrisa Gigante

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Ayuda con el conversor A/D del 16F876
« Respuesta #14 en: 23 de Diciembre de 2005, 11:56:00 »
Pao, creo que tu hablas de algo muy particular y yo hablo de algo mas general.

migsantiago escribió:
Escrito originalmente por migsantiago
Paola,
yo ya he usado el ADC en lenguaje C y desde siempre he copiado una rutina de conversión que incluye un delay de 20us.
¿Porqué se deben poner siempre 20us? ¿o se tienen que cambiar según la velocidad del PIC?
Siempre me han funcionado a 4MHz, pero ahora que estoy corriendo PICs a 20MHz, no sé si se deba aumentar o disminuir ese delay.



A lo cual yo respondí lo del sampling time.  Siendo más general expondré lo sigueinte:

El tiempo de demora entre conversiones debe ser el siguiente:

Tdelayentreconversiones >= 2Tad + Tmuestreo

TAd depende de la configuracion del A/D tal cual PAOLA dijo.

Tmuestreo depende de la carga conectada al A/D.

El tiempo de muestreo será mucho menor si siempre se sensa la misma entrada y si la misma cambia muy lento entonces podemos casi no utilizarlo, ahora bien si se utilizan varios canales A/D y encima con señales muy diferentes entre sí entonces el tiempo de muestreo no es despreciable y debe tenerse muy en cuenta.

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)