Está en la página 1de 4

Adquisicin de datos usando MATLAB y un PIC18F452

La figura 1 muestra el diagrama de bloques del sistema de adquisicin de datos propuesto que
usa MATLAB y un PIC18F452. Se puede observar que el microcontrolador realiza la tarea de
la conversin A/D de la seal proveniente del sensor y tambin genera la seal PWM en el
actuador. La recepcin y la transmisin de datos en el PC se realizan por medio de RS-232.

Figura 1. Diagrama de bloques Sistema de adquisicin de datos propuesto

El microcontrolador debe estar realizando la conversin A/D para transmitir este dato al PC y
recibir del PC el valor de con el que realizara el PWM. El siguiente diagrama de bloques ilustra
un ejemplo de la solucin de software que se podra implementar en el microcontrolador.

Figura 2.Ejemplo cdigo microcontrolador


La conversin A/D en el microcontrolador est configurada a 8 bits. La comunicacin serial
est configurada de la siguiente manera:

Baudios = 115200
Bits de datos = 8
Paridad = Ninguna
Bits de parada = 1
Control de flujo = Ninguno

El siguiente es el plano del circuito propuesto para la adquisicin de datos usando MATLAB:
El script que se utiliza en MATLAB para la adquisicin de datos es el
siguiente:

%% Configuracin del puerto

clc, disp('Start'); %%Indica que se inici el script


erPIC = serial('COMxx'); %%Remplazar xx por el nmero de puerto Serial
% Parmetros de configuracin serial
set(SerPIC,'BaudRate',115200);
set(SerPIC,'DataBits',8);
set(SerPIC,'Parity','none');
set(SerPIC,'StopBits',1);
set(SerPIC,'FlowControl','none');
SerPIC.terminator={'' ''};
SerPIC.BytesAvailableFcnCount = 1;
SerPIC.BytesAvailableFcnMode = 'byte';
SerPIC.timeout = 2;
fopen(SerPIC);

%% Enviar Datos

y = [];
x = [];
% Limpiar el bufer
fclose(SerPIC);
fopen(SerPIC);
vout = 0;
for k=1:8
pwm = 210;
fwrite(SerPIC,pwm)
for i=1:100
tic
x = [x;pwm];
vout = (mean(fread(SerPIC,SerPIC.inputbuffersize))*(5/255));
y = [y;vout];
toc
end
pwm = 0;
fwrite(SerPIC,pwm);
for i=1:100
tic
x = [x;pwm];
vout = (mean(fread(SerPIC,SerPIC.inputbuffersize))*(5/255));
y = [y;vout];
toc
end
end

%Grfica de la seal de entrada y salida


xt = x*(5/210);
plot(xt,'r','LineWidth',2)
hold on
plot(y,'LineWidth',2)
grid on
axis([0 800 -1 7])

legend('Seal de entrada','Seal de salida')

%% CERRAR el puerto COM


fclose(SerPIC);
delete(SerPIC)
clear SerPIC
disp('Fin...')
Los datos adquiridos pueden ser luego utilizados con la toolbox de ident para realizar la
identificacin del sistema. Despus de ejecutar el script los datos a usar son:

xt = Datos de entrada al planta.


y = Datos de salida de la planta.

Elaborado por:
Ing. Jonathan Avendao Prez
MSc. Jaime Alberto Parra