TODOPIC
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
03 de Septiembre de 2010, 05:31:35

Ingresar con nombre de usuario, contraseña y duración de la sesión
Buscar:     Búsqueda Avanzada
257111 Mensajes en 28437 Temas por 27916 Usuarios
Último usuario: zororyuzaki
* Inicio Ayuda Buscar Calendario Ingresar Registrarse
Buscar en TodoPIC
+  TODOPIC
|-+  Microcontroladores PIC
| |-+  dsPIC (Moderadores: pikman, Sispic)
| | |-+  ADC no 100% estable DSPIC30F4013 para piloto automatico
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Marcar como favorito Imprimir
Autor Tema: ADC no 100% estable DSPIC30F4013 para piloto automatico  (Leído 684 veces)
CapBlack
PIC10
*
Desconectado Desconectado

Mensajes: 15


« : 07 de Febrero de 2010, 02:59:35 »

Hola a todos:
Estoy usando cuatro canales para medir diferentes gyros y accelerometros Sad con ADC12 de un dspic 30f4013 veo por la pc usando el rs232 que determinado numero de converciones la muestra cae a 0 o cerca de este ,alguien me podria decir que estoy haciendo mal ?

este es my clock

_FOSC(CSW_FSCM_OFF &  HS2_PLL16);  //24 MHZ
_FWDT(WDT_OFF);
_FBORPOR(    PBOR_OFF & // brown out off
         MCLR_EN & PWRT_OFF)
_FGS(CODE_PROT_OFF);     


#define PeriodoPWM 0x200     // 50Hz
#define FCY 24000000
#define BAUDRATE 38400 //19200 --- 9600
#define BRGVAL ((FCY/BAUDRATE)/16)-1


este es el codigo del adc :

OpenADC12(ADC_MODULE_ON & ADC_IDLE_CONTINUE & ADC_FORMAT_INTG & ADC_CLK_AUTO & ADC_AUTO_SAMPLING_ON& ADC_SAMP_OFF,
                ADC_VREF_EXT_EXT &  ADC_SCAN_ON & ADC_SAMPLES_PER_INT_4 & ADC_ALT_BUF_OFF & ADC_ALT_INPUT_OFF,
                ADC_SAMPLE_TIME_31 & ADC_CONV_CLK_SYSTEM & ADC_CONV_CLK_32Tcy,
                ENABLE_ALL_DIG & ENABLE_AN9_ANA & ENABLE_AN10_ANA & ENABLE_AN11_ANA & ENABLE_AN12_ANA,
                SCAN_ALL & SKIP_SCAN_AN0 & SKIP_SCAN_AN1 & SKIP_SCAN_AN2& SKIP_SCAN_AN3& SKIP_SCAN_AN4& SKIP_SCAN_AN5&
                SKIP_SCAN_AN6& SKIP_SCAN_AN7& SKIP_SCAN_AN8& SKIP_SCAN_AN13&
                SKIP_SCAN_AN14& SKIP_SCAN_AN15);

ConfigIntADC12(ADC_INT_PRI_6 & ADC_INT_ENABLE);


esta es la interrupcion:

 void __attribute__((__interrupt__,auto_psv)) _ADCInterrupt(void)
   {
   
   
     array[count] = ADCValue = ADCBUF0;                       
     arrax[count] = ADCValue1 = ADCBUF1;   
     gyrox[count] = gyro = ADCBUF2;
     gyroy[count] = gyroroll = ADCBUF3;
         
          count ++;
   
     if (count < cont_sens)
     {
     temp1 = temp1 + ADCValue ;
     temp2 = temp2 + ADCValue1 ;
     temp3 = temp3 + gyro ;
     temp4 = temp4 + gyroroll;
     flag = 0;
     }

     else
     count = 0;

     IFS0bits.ADIF=0;
  }

muchas gracias.
En línea
beatAurex1
PIC12
**
Desconectado Desconectado

Sexo: Masculino
Mexico Mexico

Mensajes: 66

Aprendiendo a Dormir en el foro :P


WWW
« Respuesta #1 : 09 de Febrero de 2010, 02:00:51 »

No sera porque no le das un tiempo  para que se valide el muestreo?
En línea
Nocturno
Administrador
DsPIC33
*******
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 12825



WWW
« Respuesta #2 : 09 de Febrero de 2010, 03:00:38 »

Imagino que habrás hecho la prueba colocando simples potenciómetros en las entradas ADC y también te cae a 0, ¿verdad?
En línea

Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ
droky
Colaborador
PIC18
*****
Desconectado Desconectado

Sexo: Masculino
Svalbard and Jan Mayen Svalbard and Jan Mayen

Mensajes: 403



WWW
« Respuesta #3 : 09 de Febrero de 2010, 12:36:19 »

Lo más probable es que estés leyendo a destiempo el gyro o el acelerómetro, sin darle tiempo a recuperarse de otra lectura al ADC.
SAlu2
En línea

Yo... he visto cosas que vosotros no creeríais... atacar naves en llamas más allá de Orión, he visto rayos C brillar en la oscuridad cerca de la puerta Tannhäuser.
Todos esos momentos se perderán en el tiempo como lágrimas en la lluvia.
Es hora de morir.
CapBlack
PIC10
*
Desconectado Desconectado

Mensajes: 15


« Respuesta #4 : 09 de Febrero de 2010, 02:16:52 »

Ante todo Gracias por las respuestas , ya casi probe de todo , el muestreo esta en auto con el maximo tiempo posible "sample 31 tad y adc conv 32" estoy con un clock de 24mhz , el maximo clock para este micro es 30mhz asi que no viene por alli el problem , las tensiones las comprobe con valores fijos de resistencias y con los sensores puedo ver en el osciloscopio que la tension no cae en ningun momento , en algun momento pense que el codigo dentro de la interrupcion tomaba demasiado tiempo pero veo en el osciloscopio que no es asi , entre interrupciones tengo unos 320us y dentro estoy solo 4us . tambien tengo chequeada la referencia de tension externa con un estabilizador de
5v a 3.3v exclusivo para esta entrada Confused

por otro lado he comprobado que si redusco el tiempo de muestreo el problema empeora , el minimo tiempo segun el datasheet es de 334nsec x 4 entradas tendria que ser 1.336 usec y veo alli 320usec entre interupcion.

El mayor problema de estos misteriosos baches es que desestabiliza la integracion entre el gyro y el accelero. Confused

Gracias.

En línea
alexiel
PIC10
*
Desconectado Desconectado

Colombia Colombia

Mensajes: 30


« Respuesta #5 : 17 de Mayo de 2010, 08:18:33 »

Hola CapBlack, quisiera saber si ya has solucionado el problema, a mi también se me presenta algo similar con el ADC. Si es el caso que si, sería mucho pedir que postearas como lo has solución o como llegaste a la solución, en el foro. De antemano gracias.
En línea
TODOPIC
   

 En línea
Páginas: [1] Imprimir 
« anterior próximo »
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC XHTML 1.0 válido! CSS válido!
Página creada en 0.093 segundos con 23 consultas.