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