martes, 5 de noviembre de 2013

MUESTREO DE SEÑALES CON SCILAB

  A continuación se mostrara el uso del software scilab para la adquisición de datos de señales analógicas utilizando el microcontrolador ATMEGA48, para poder hacer uso del código que se presentara procure observar la entrada MUESTREO DE SEÑALES  que se encuentra en el blog.

DESCRIPCIÓN:

  El código realiza la adquisición de 200 datos enviados por el puerto serial, el cual esta configurado con en este caso con el puerto serial COM6, este valor tendrá que modificarse dependiendo del puerto que este usando su convertidor serial-usb o su puerto serial; el baud rate utilizado es de 19200 el cual debe de ser el mismo que el que esta utilizando el el dispositivo que envía los datos, en nuestro caso es el dispositivo AVR; no hay paridad; se enviaran 8 bits de datos y 2 bits de stop.

  Se mostraran 2 programas uno donde se podrá observar el muestreo de la señal en tiempo real con el inconveniente de que el tiempo de muestreo en PC no puede ser muy bajo ya que sobrecargaría el programa, el segundo realiza un muestreo mucho mas rápido y se encuentra configurado para poder hacer un muestreo de 800 microsegundos el numero de muestras esta determinado por la variable n la cual se puede ajustar dependiendo de sus necesidades.

Alguna duda pueden ingresarla en los comentarios

muestreo lento

clf;                                                  //limpia la pantalla
n=200;                                           //numero de muestreos
y=ones(1,200);                              //vector de unos donde se almacenaran los datos adquiridos
h=openserial(6,"19200,n,8,2");      //abre el puerto serial
i=1;                                               //declara un contador
while i<=n                                     //ciclo para la adquisición de los datos
    pot=ascii(readserial(h));            //guarda el dato obtenido en la variable pot
        y(i)=(pot(1))*5/256;            //asigna el elemento 1 de pot al i-esimo elemento del vector y                                                                      //preescalando los valores de [0:255] a [0:5]
        xpause(5000);                     //realiza una espera de 5 milisegundos
        plot(i,y(i),'X-r');                   //gráfica el valor adquirido
        drawnow();
        i=i+1;                                  //incrementa el contador
end
closeserial(h)                               //cierra el puerto


muestreo en tiempo real

clf;                                               //limpia la pantalla
n=7000;                                      //numero de muestreos
y=ones(1,n-1);                            //vector de unos donde se almacenaran los datos adquiridos
h=openserial(5,"19200,n,8,2");    //abre el puerto serial
i=1;                                             //declara un contador
x=[0:1:n];                                    //vector para realizar la graficación de los datos                     
while i<=n                                   //ciclo para la adquisición de los datos
    pot=ascii(readserial(h));           //guarda el dato obtenido en la variable pot
        y(i)=pot(1);                         //asigna el elemento 1 de pot al i-esimo elemento del vector y
        xpause(800);                       //realiza una pausa de 800 microsegundos
        i=i+1;                                  //incrementa el contador
end                                             //termina la adquisición
k=(5/256).*y;                             //guarda la conversión del vector y en k para observar el valor de 0 a 5V
plot2d2(x,k)                               //gráfica los datos adquiridos
closeserial(h)                              //cierra el puerto serial


LINK DE CÓDIGO EN SCILAB PARA MUESTREO RÁPIDO
https://mega.co.nz/#!E48zGC4D!EuD1rmsbZkEmAtI23CZHayqUtn1T9MMAOAqcmfxmioQ

muestreo lento

muestreo rápido 



No hay comentarios:

Publicar un comentario