Autor Tema: Ajuste ADC dspic30F4011  (Leído 12579 veces)

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

Desconectado borre4

  • PIC10
  • *
  • Mensajes: 15
Ajuste ADC dspic30F4011
« en: 06 de Diciembre de 2011, 22:56:56 »
Hola, buen dia, primero que nada felicidades por el foro. Soy nuevo aqui y tengo una pregunta relacionada a un proyecto que estoy haciendo con el dspic30F4011.
Por el momento solo estoy haciendo la prueba del ADC para ajustar un PWM entre 0 y 3ms y muestro la lectura del ADC en un LCD pero la lectura del ADC siempre
esta cambiando aun cuando el pot esta inmovil y no se cual sea el problema, ya configure el modo de maxima velocidad de muestreo que indica el datasheet respetando minimos de tiempos en Tad y todo lo demas pero a lo mejor estoy dejando por ahi un clavo suelto AAAAAAAAAAA jeje.

Otra pregunta que tengo es que si en #use delay(clock=4000000) eesta bien el valor de 4M aunque tenga PLL16 o debe ser 64M, uso un cristal de 4M

De ante mano muchas gracias

PD: el codigo esta en CCS

Código: [Seleccionar]

#include <30F4011.h>           //EJEMPLO PWM
#device adc=10
#include <math.h>

#FUSES XT_PLL16   //XT Crystal Oscillator mode with 16X PLL
#FUSES PR   //Primary Oscillator
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOPROTECT   //Code not protected from reading
#FUSES NOWDT   //No Watch Dog Timer
#FUSES MCLR  // Master Clear pin enabled

#use delay(clock=4000000)

#define LCD_ENABLE_PIN  PIN_D0                                    ////
#define LCD_RS_PIN      PIN_D2                                    ////
#define LCD_RW_PIN      PIN_D3                                    ////
#define LCD_DATA4       PIN_F1                                    ////
#define LCD_DATA5       PIN_F4                                    ////
#define LCD_DATA6       PIN_F5                                    ////
#define LCD_DATA7       PIN_F6

#include <lcd.c>

#define ADC_CLOCK_INTERNAL 0x0184

int16 p1;
float a;
unsigned int16 duty;

void main()
{  
  
setup_timer1(TMR_DISABLED);
setup_timer2(TMR_INTERNAL | TMR_DIV_BY_8,0xABDF); //periodo de 22ms para servos
setup_compare(2, COMPARE_PWM | COMPARE_TIMER2);
setup_adc_ports(sAN0|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
#asm
mov #0x80E4,w4;
mov w4,0x02A0;
mov #0x0100,w4;
mov w4,0x02A2;
#endasm      
;
setup_spi(FALSE);

//set_tris_B(0x01);
set_tris_D(0x00);
set_tris_F(0x00);

lcd_init();
int i=0;

set_adc_channel(0); // pot 1K
delay_us(10);
while(i==0){

p1=read_adc();
a= (93.75 * p1 / 1023.0);
duty=a * (int16)64;

set_pwm_duty(2,duty);  

lcd_gotoxy(1,1);
printf(lcd_putc,"p1=%4ld",p1); // u,4ld,f
lcd_gotoxy(1,2);
printf(lcd_putc,"duty ms=%4ld",duty);

delay_ms(1);

}
}
« Última modificación: 07 de Diciembre de 2011, 20:13:33 por borre4 »
Saludos

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ajuste ADC dspic30F4011
« Respuesta #1 en: 06 de Diciembre de 2011, 23:22:04 »
Hola! Si colocas el PLL a x16, en #use delay(...) debes colocar 64M. Luego, si dices que configuras el Tad según datasheet, y esperas el tiempo de adquisición también según datasheet una posible causa de oscilación es que la impedancia de la señal AC no es la adecuada. No se en un dsPIC30F, pero seguro tiene que ser inferior a 2.5k

Luego, la prueba la realizas sobre una placa impresa o en un protoboard?


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado borre4

  • PIC10
  • *
  • Mensajes: 15
Re: Ajuste ADC dspic30F4011
« Respuesta #2 en: 07 de Diciembre de 2011, 02:06:46 »
Hola Suky gracias por responder, esta conectado un pot de 1k, porque la resistencia maxima es de 5k . Tambien tengo un capacitor de .1uF de ADC a tierra
pero no cambia mucho la respuesta con el.

La prueba la estoy haciendo en un proto pero al hacer la prueba con solo el cristal de 4M y # fuses como XT, sin PLL me hace lo mismo. Alguna otra idea de lo que pueda hacer? Gracias

Saludos
« Última modificación: 07 de Diciembre de 2011, 02:21:36 por borre4 »
Saludos

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Re: Ajuste ADC dspic30F4011
« Respuesta #3 en: 07 de Diciembre de 2011, 12:52:21 »
Tambien checa a  que voltajes estas fijando las referencias de ADC. Si esos pines tiene ruido, tu captura no sera buena

Desconectado borre4

  • PIC10
  • *
  • Mensajes: 15
Re: Ajuste ADC dspic30F4011
« Respuesta #4 en: 07 de Diciembre de 2011, 14:07:13 »
Hola fram las referencias estan a VDD-VSS con un capacitor de 100nF entre ellos.

Es recomendable alimentar por separado las lineas de AVDD y AVSS y de ahi tomar la alimentacion para el pot??

Saludos
Saludos

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Re: Ajuste ADC dspic30F4011
« Respuesta #5 en: 07 de Diciembre de 2011, 18:33:36 »
Hola:

Si tu velocidad de muestreo es mayor a 500 ksps ,debes utilizar pines externos para Vref+ y Vref-.
Avdd y Avss van alimentados a la misma fuente, lo que puedes hacer es tratar de rutearlos del modo mas directo a la fuente.
Te anexo un esquematico que tome del dsPIC30F family reference manual. Ahi viene informacion mas detallada.

Espero te sirva de algo.

Recuerda que los capacitores deben tener baja ESR (baja resistencia).

Desconectado borre4

  • PIC10
  • *
  • Mensajes: 15
Re: Ajuste ADC dspic30F4011
« Respuesta #6 en: 07 de Diciembre de 2011, 18:51:55 »
Hola,

La configuracion es para hacer el muestreo con una velocidad de 500ksps, pero tengo 2 preguntas:

1.- Si quiero configurar la velocidad a 1Msps la resistencia maxima permitida cambia a 500 ohms (antes max 5K) ahora tengo que seleccionar los voltajes de referencia Vref- y + pero esos son definidos en el ADCON2 (VCFG) o tienen que ser los pines B0 y B1?? Porque ahi tambien esta el pin analogico AN0 que estoy utilizando para adquirir la señal.

2.-Tengo que seleccionar la resistencia maxima en el ANx por ejemplo para mi caso de 500ksps es de 5k o da igual si tengo un pot de 1k conectado a la entrada?

Saludos
Saludos

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Re: Ajuste ADC dspic30F4011
« Respuesta #7 en: 08 de Diciembre de 2011, 13:21:41 »
1.- Si quiero configurar la velocidad a 1Msps la resistencia maxima permitida cambia a 500 ohms (antes max 5K) ahora tengo que seleccionar los voltajes de referencia Vref- y + pero esos son definidos en el ADCON2 (VCFG) o tienen que ser los pines B0 y B1?? Porque ahi tambien esta el pin analogico AN0 que estoy utilizando para adquirir la señal.
Saludos
Generalmente Vref+ y Vref- esta compartidos con otros pines anlógicos. Esto varia de dispositivo a dispositivo pero es comun que sean AN0 y AN1. En ese caso tendras que utilizar otro pin para la lectura de la señal porque estos estaran ocupados en al referencia.

2.-Tengo que seleccionar la resistencia maxima en el ANx por ejemplo para mi caso de 500ksps es de 5k o da igual si tengo un pot de 1k conectado a la entrada?
Saludos

Con que el valor de la resistencia sea inferior a la resistencia maxima esta bien. Yo en lo personal te recomendaria agregar un segidor de voltaje (con un amp op) ya que estos suelen tener una impedancia de salida baja.

Desconectado borre4

  • PIC10
  • *
  • Mensajes: 15
Re: Ajuste ADC dspic30F4011
« Respuesta #8 en: 08 de Diciembre de 2011, 13:38:56 »
Hola,

Gracias por las respuestas, por el momeno estoy revisando el cogido referido a la configuracion del ADC porque encontre unos detalles sobre seleccionar

ADC_CLOCK_INTERNAL
o
ADC_CLOCK_DIV_2|ADC_TAD_MUL_2

estoy viendo el codigo que genera en asm para comparar con datasheet y ver si es ahi donde esta el problema porque cuando conecto el voltimetro para leer
la entrada del analogico no tengo caidas de tension.

Saludos
Saludos

Desconectado borre4

  • PIC10
  • *
  • Mensajes: 15
Re: Ajuste ADC dspic30F4011
« Respuesta #9 en: 08 de Diciembre de 2011, 16:53:03 »
Hola,

Alguien me podria explicar que significan los capacitores C8-C3 o donde es que los tengo que colocar

De ante mano gracias.

Saludos

Saludos

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Re: Ajuste ADC dspic30F4011
« Respuesta #10 en: 08 de Diciembre de 2011, 18:33:34 »
son capacitores de desacople. Se utlizan para filtrar la alimentacion, estos se pondrian en las patas de alimentacion del dsPIC, deben estar entre el dsPIC y la alimentacio. Deben estar lo mas cercano posible al dspic.

Desconectado borre4

  • PIC10
  • *
  • Mensajes: 15
Re: Ajuste ADC dspic30F4011
« Respuesta #11 en: 08 de Diciembre de 2011, 18:46:24 »
Y se tienen que colocar todos al mismo tiempo?? o como selecciono cuales necesito??. Por el momento tengo 1 capacitor de 100nF entre VDD y VSS y otro capacitor de 100nF entre AN0 y VSS.

Se tiene que colocar 1 capacitor de por cada par de alimentacion, es decir por cada VSS y VDD o con 1 solo capacitor es suficiente? Gracias

Saludos
Saludos

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Ajuste ADC dspic30F4011
« Respuesta #12 en: 08 de Diciembre de 2011, 19:13:29 »
tienes que conectar 1 condensador por cada entrada de alimentacion, alimentacion analogica (avdd), y usb en caso de que tenga, ademas de otro mas importante aun, un condensador en vcap y vss, creo que era de 10uf. En el datasheet te viene los valores y caracteristicas minimas de alimentacion.

Desconectado borre4

  • PIC10
  • *
  • Mensajes: 15
Re: Ajuste ADC dspic30F4011
« Respuesta #13 en: 08 de Diciembre de 2011, 19:29:32 »

Hola, buen dia

Citar
un condensador en vcap y vss, creo que era de 10uf.

No veo ningun Vcap en el datasheet, sera que el dspic 30F4011 no tiene o cual es Vcap?  je

.....

A lo mejor estoy confundiendo pero en el datasheet no encuentro ningun Tacq ni en los manuales de referencia de la familia 30F, y yo lo consierede como Tsamp, estoy en lo correcto??

Gracias
Saludos

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Ajuste ADC dspic30F4011
« Respuesta #14 en: 08 de Diciembre de 2011, 20:04:37 »
tienes razon, este no lleva vcap, estoy acostumbrado a ver hasta los nuevos de 8bits con vcap asiq pense que este al ser pic30 ya lo tenia tambien, pero se ve que no.

el tacq es el tiempo de adquisicion, en el apartado 20.8 puedes ver la descripcion de este, requisitos... Este tiempo depende de la impedancia de la fuente, leete el apartado y comprenderas mas.