Autor Tema: Señales a la entrada de canal 0 y 1 del ADC  (Leído 2450 veces)

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

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
Señales a la entrada de canal 0 y 1 del ADC
« en: 13 de Enero de 2005, 18:07:00 »
Hola a todos y Feliz Año 2005 !!! Les deseo lo mejor para ustedes y sus familias y que cada día aprendamos más y más cosas.

Bueno, pues tengo un pequeño problema... resulta que quiero muestrear dos señales, una por el canal A0 y otra por el canal A1. Cuando solo trabajo con el canal A0 no tengo ningún problema (cabe señalar que las entradas las simulo con un generador de señales), pero cuando conecto el otro generador al canal A1, ambas señales adquiridas se distorsionan y no se que pueda ser, porque a la entrada del pic la señales llegan bien pero despues cuando las grafico en VB salen distorsionadas. Según yo es por las tierras pero no se. Bueno el código que utilizo es el siguiente:
Codigo:

#include <16f874A.h>
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP,NOCPD,NOWRT
#device ADC=10
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)  
#include<lcd.c>

long i, dato, muestras;
int tmuestreo;
char datohigh, datolow, temp;

void adquirir()
   {
         delay_us(tmuestreo);
           dato = read_adc();
         datolow=dato;
         temp=(dato>>8);
         datohigh=temp&3;
         putc(datohigh);
         putc(datolow);      
    }
                        

main()
{
   long dato;
   char valor, canal;
   int periodohigh, periodolow, muestrashigh, muestraslow;
   int tmuestreo;
   long periodo, muestras;
   setup_adc_ports( ALL_ANALOG );
   setup_adc( ADC_CLOCK_INTERNAL );
   //set_adc_channel( 0 );
   lcd_init();
   
 
   while (TRUE)
        {
         while(!kbhit()); //Espera la recepcion de un caracter
         valor=getc();
         if (valor=="j")
           {  
            output_high(PIN_B7);
            putc("8");
            while(!kbhit());
         muestrashigh=getc();
         while(!kbhit());
         muestraslow=getc();
            while (!kbhit());
            periodohigh=getc();
         while(!kbhit());
         periodolow=getc();
         muestras=muestrashigh*256+muestraslow;
         periodo=periodohigh*256+periodolow;
         tmuestreo=(100*periodo)/muestras;
         lcd_putc("f");
            lcd_gotoxy(1,1);
         printf(lcd_putc,"p=%4lu",periodo);
         lcd_gotoxy(9,1);
         printf(lcd_putc,"m=%4lu",muestras);
         lcd_gotoxy(1,2);
            printf(lcd_putc,"tm=%3u",tmuestreo);
         for (i=1;i<=muestras;i++)
            {
               set_adc_channel( 0 );
               adquirir();
               set_adc_channel( 1 );
               adquirir();
            }
       }
   }
}


Gracias

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Señales a la entrada de canal 0 y 1 del ADC
« Respuesta #1 en: 13 de Enero de 2005, 18:53:00 »
Quizá debas definir el puerto como entrada:

set_tris_a(0xFF);

Hace poco creo alguien posteó que tenía problemas con la conversión AD y lo solucionó con ese simple detalle.
Saludos

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Señales a la entrada de canal 0 y 1 del ADC
« Respuesta #2 en: 13 de Enero de 2005, 23:45:00 »
¿Para qué sirve el 100, en la fórmula tmuestreo=(100*periodo)/muestras; ?

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Señales a la entrada de canal 0 y 1 del ADC
« Respuesta #3 en: 14 de Enero de 2005, 02:39:00 »
¿Sólo falla cuando conectas los dos generadores, uno en cada patilla?
¿Has probado a meter la señal de un sólo generador a las dos entradas a ver si lo leen bien ambas?

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Señales a la entrada de canal 0 y 1 del ADC
« Respuesta #4 en: 19 de Enero de 2005, 17:12:00 »
Hola, perdón por la tardanza pero me traen a la carrera.

Pues bien, haré lo que dice Modulay que es lo único que no he hecho.

El 100 que utilizo es para conversiones a valores de microsegundos en los retardos, tal vez esté medio rara pero es para que me diera valores enteros.

Y pues si, solo tengo el problema de ruido cuando conecto los generadores cada uno a la respectiva pata del micro. Porque cuando conecto la misma señal a ambos pines del micro no tengo ningún problema.

Gracias a todos por sus comentarios y sugerencias.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Señales a la entrada de canal 0 y 1 del ADC
« Respuesta #5 en: 20 de Enero de 2005, 02:49:00 »
No entiendo bien...¿simulas las entradas con un generador? ¿Hablas de una simulación o de un generador de señal conectado a un circuito físico?
Si la acertada es la segunda...¿colocaste condensadores en la alimentación? ¿el cableado entre la fuente y el circuito es "decente" ? ¿será la fuente quien mete el ruido?

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Señales a la entrada de canal 0 y 1 del ADC
« Respuesta #6 en: 20 de Enero de 2005, 10:28:00 »
Hola

Pues tal vez ese sea mi problema porque conecto los generadores a los pines del micro sin ningún condensador o circuito filtro. Pero no creo que sea ruido de la fuente, mas bien yo creo que es por la tierra de los generadores. Gracias

Desconectado badtzdizzy

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 234
RE: Señales a la entrada de canal 0 y 1 del ADC
« Respuesta #7 en: 20 de Enero de 2005, 10:30:00 »
Hola

Pues tal vez ese sea mi problema porque conecto los generadores a los pines del micro sin ningún condensador o circuito filtro. Pero no creo que sea ruido de la fuente, mas bien yo creo que es por la tierra de los generadores. Gracias