Professional Documents
Culture Documents
INTRODUCCION
En este taller se reforzaron algunos conocimientos vistos a lo largo de la carrera, tales como función
de trasferencia en lazo cerrado, controladores retroalimentados PID, frecuencia de muestreo entre
otros. Además de esto, se llevó a cabo la conexión entre el software Matlab y la tarjeta de desarrollo
Arduino, mediante la comunicación por puerto serial, tanto para enviar y recibir datos.
OBJETIVOS
- Reforzar conocimientos vistos en el trascurso de la carrera.
- Realizar la conexión de un Arduino y Matlab mediante el puerto serial.
DESARROLLO TALLER
5. Escribir en una tarjeta de desarrollo basado en microcontrolador, un arreglo llamado A1 de 7
elementos: A1= [1, 3, 7, 10, 7, 3, 1]. Posteriormente, realizar una conexión entre la tarjeta de
desarrollo y un computador con Matlab instalado y visualizar el arreglo mencionado en la ventana
del “command Windows” de Matlab.
void loop()
{
for(int i=0;i<7;i++)
{
delay(2);
Serial.print(arreglo[i]);
Serial.println();
}
}
JEIMMY KATHERIN QUIÑONES
MARIA FERNANDA MORENO
JUAN CAMILO MURILLO
UNIVERSIDAD SANTO TOMÁS
CONTROL DE PROCESOS INDUSTRIALES
FAC. INGENIERÍA ELECTRÓNICA
2018-1
CODIGO MATLAB
clear all
clc
contador=1;
%vector[7];
y=zeros(1,7);
%borrar previos
delete(instrfind({'Port'},{'COM3'}));
%crear objeto serie
s = serial('COM3','BaudRate',9600,'Terminator','CR/LF');
warning('off','MATLAB:serial:fscanf:unsuccessfulRead');
%abrir puerto
fopen(s);
flushinput(s);
while contador<=7
x=fscanf(s,'%d');
y(contador)=x(1);
contador=contador+1;
end
y
fclose(s);
delete(s);
clear all;
6. Al igual que en el ejercicio anterior, la idea es generar un arreglo, pero en este caso del tamaño
de 16 elementos a saber: A2= [ 128 176 218 245 255 245 218 176 128 79 37 10 0 10 37 79 127 ] El
objetivo es enviarle el arreglo desde la tarjeta de desarrollo hacia la computadora y visualizarlos en
JEIMMY KATHERIN QUIÑONES
MARIA FERNANDA MORENO
JUAN CAMILO MURILLO
UNIVERSIDAD SANTO TOMÁS
CONTROL DE PROCESOS INDUSTRIALES
FAC. INGENIERÍA ELECTRÓNICA
2018-1
una gráfica en Matlab. Para el envío, los elementos del arreglo se deben enviar separados en
periodos de tiempo de 2 milisegundos.
void loop() {
// put your main code here, to run repeatedly:
for(int i=0;i<17;i++)
{
delay(2);
Serial.print(arreglo[i]);
Serial.println();
}
}
- El código implementado en Matlab fue el siguiente:
clear all;
clc;
numero=100;
y=zeros(1,16);
delete(instrfind({'Port'},{'COM3'}));
s=serial('COM3');
%borrar previos
delete(instrfind({'Port'},{'COM3'}));
%crear objeto serie
s = serial('COM3','BaudRate',9600,'Terminator','CR/LF');
warning('off','MATLAB:serial:fscanf:unsuccessfulRead');
%abrir puerto
fopen(s);
flushinput(s);
contador=1;
hold on;
grid on;
while contador<17
x=fscanf(s,'%d');
if (contador>=1)
u(contador)=x;
y(contador)=((x(1)));
y
stem(contador,y(contador),'X-r'),title('Toma Muestras Arduino');
end
contador=contador+1;
end
JEIMMY KATHERIN QUIÑONES
MARIA FERNANDA MORENO
JUAN CAMILO MURILLO
UNIVERSIDAD SANTO TOMÁS
CONTROL DE PROCESOS INDUSTRIALES
FAC. INGENIERÍA ELECTRÓNICA
2018-1
Al igual que el punto anterior, en el codigo de Arduino se crea un arreglo del tamaño de los
datos a enviar y mediante un if se envia uno a uno los datos. En matlab se realiza la misma
accion de abrir el puerto, limpiarlo y recibir los datos mediante la variable “funcion”,
despues mediante la función step, graficamos los datos.
El resultado en el “command window” es el vector creado en Arduino y la gráfica de los
datos fue la siguiente: