You are on page 1of 4

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
TALLER 1

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.

- Para el desarrollo de este punto fue necesario implementar un código para la


comunicación por puerto serial entre Arduino y Matlab, el cual fue el siguiente:
CODIGO ARDUINO:
%PUNTO 5%
int arreglo[7]={1,3,7,10,7,3,1};
void setup()
{
Serial.begin(9600);
}

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;

En el codigo implementado en Arduino principalmente se crea un arreglo con el numero de


variables a enviar mediante el puerto serial, despues se crea un if en el cual se van a guardar
las variables a enviar. En el codigo de Matlab en el cual es importante abrir el puerto y borrar
los datos que hay en este antes de realizar la lectura, ya que esto nos genera un conflicto al
momento de la lectura de los datos. La variable s, es aquella que abre el puerto y lee los
datos de este, para posteriormente asignarlos a la variable contador que va aumentando a
medida que toma los 7 datos, despues cerramos el puerto.
Como se solicitaba en el punto, mediante el “Command window” de Matlab, se observó el
arreglo que se creó en Arduino

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.

- El código implementado en Arduino fue el siguiente:


int arreglo[17]={128,176,218,245,255,245,218,176,128,79,37,10,0,10,37,79,127};
void setup()
{
Serial.begin(9600);
}

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:

You might also like