Está en la página 1de 6

Control de Velocidad en Lazo Cerrado para un Motor DC

Utilizando Matlab, GUI y Arduino.


Xavier Alexandro Torres Amaya.
Universidad de El Salvador, El Salvador

Jaime Javier Arriola Suarez.


Universidad de El Salvador, El Salvador

amayax22@gmail.com
RESUMENEl siguiente trabajo presentan los
resultados de combinar una potente herramienta
matemtica como lo es Matlab con la versatilidad que nos
brinda Arduino a la hora del manejo de hardware; de este
modo haciendo un enfoque especial al rea de control
automtico, logrando poner en prctica los conceptos
bsicos de realimentacin para sistemas SISO.
Se utilizara Matlab para crear una interfaz grfica en la
cual se pueda enviar seales de referencia hacia el
Arduino y este a su vez lo aplicara fsicamente sobre el
servo amplificador del kit feedback MS-150A [3] a travs
de la respectiva etapa de acoplamiento, el servo
amplificador controla la tensin aplicada al motor DC lo
cual lo hace girar velocidad deseada (alrededor de 400
RPM, que fue el valor donde el motor mostr una
estabilidad apropiada para nuestros propsitos). El kit
feedback MS-150A cuenta con los elementos necesarios
para realizar las tareas antes descritas, el motor tiene
tacmetro integrado que se encarga de convertir las RPM
del motor en una magnitud elctrica medible por Arduino,
de tal forma que esta seal se acopla y se enva al
programa desarrollado en Matlab que toma las acciones
necesarias si dicho valor se encuentra fuera del nivel de
histresis experimentalmente determinado.
PALABRAS CLAVEArduino, Control de velocidad,
GUIDE, Lazo cerrado, Matlab.

I.

as08005gnu@gmail.com

II.

A. Caractersticas generales
1) Matlab.
En este caso se us la versin R2013a [5] en la cual los
desarrolladores del mismo crearon la interface de
comunicacin va USB entre Arduino y Matlab, por esa razn
Arduino cuenta con Support Package [1] en donde se explica
el procedimiento para instalar la paquetera necesaria y as
establecer la comunicacin entre ellos.

2) GUI de Matlab.
Las GUI [6] (tambin conocidas como interfaces grficas
de usuario o interfaces de usuario) permiten un control
sencillo (con uso de ratn) de las aplicaciones de software, lo
cual elimina la necesidad de escribir comandos a fin de
ejecutar dicha aplicacin. Las GUI nos permiten desarrollar
una tarea de manera automatizada ya que al oprimir por
ejemplo un botn se activa una rutina de comando los cuales
permiten ya sea adquirir datos desde una tarjeta externa y
realizarles operaciones matemticas en tiempo real.

3) Arduino.
La ventaja con la que cuenta Matlab es que puede
trabajar con el Arduino UNO y MEGA 2560 [2], en este caso
se opt por usar la segunda opcin con la cual se tendran
mayores beneficios gracias a que cuenta con ADC de 10 bit
que son suficientes para los beneficios esperados.

INTRODUCCIN

Hace poco ms de un ao, la nica manera de poder


trabajar con datos fsicos consista en comprar un sistema
comercial de adquisicin de datos (DAQ), lo cual implicaba
una elevada inversin; afortunadamente hoy en da con el
avance tecnolgico se tienen alternativas econmicamente
ms accesibles ya sea para estudiantes o profesionales, una
de ellas es el popular microcontrolador Arduino que gracias a
su bajo costo y facilidad de programacin representan una
nueva opcin para realizar actividades de control y
procesamiento de seales tanto analgicas como digitales.
Combinando dichas bondades con el alto nivel de
procesamiento de un software matemtico como Matlab es
posible lograr el control de diversos componentes externos y
de tal forma lograr analizar las seales fsicas generados por
los mismos y sobre todo realizar correcciones en tiempo real y
de forma automtica.

CONFIGURACION DE MATLAB Y ARDUINO.

4) Kit feedback MS-150A.


El Sistema Modular Servo MS-150A es un equipo nico,
diseado para estudiar la teora y la prctica de los sistemas
de control automtico. Fue diseado para la enseanza de la
teora de control de lazo abierto y de lazo cerrado, el control
de velocidad y sistemas de control de posicin utilizando
unidades modulares, tanto mecnica como electrnica, que
se puede configurar para demostrar los diversos mtodos de
tcnicas de control.

B. Configuracion de Matlab y Arduino.


Paso 1: Se deben descargar la paquetera necesaria para
que la conexin Arduino/Matlab sea posible. Esta se puede
encontrar en la direccin de Support Package de Mathworks
para Arduino, en esta direccin se encuentran alojados la
paquetera tanto para Matlab como para Simulink pero en este

caso no se hablara de la segunda opcin ya que no tiene


ninguna precedencia a la hora de trabajar con Matlab.
Como recomendacin principal se menciona que a la hora
de almacenar dicha paquetera se haga en la carpeta de
Matlab ubicada en la carpeta de documentos del usuario.
Paso 2: Despus de descargar la paquetera para Matlab,
se procede a instalarla, para esto se abre el entorno de
programacin de Arduino (IDE) y desde ah entramos a la
carpeta llamada pde la cual est contenida en la carpeta
ArduinoIO la cual fue descargada desde el Support
Package, se abre el archivo llamado adiosrv. Este archivo
debe de ser transferido a nuestro Arduino esto sirve para
configurar el mismo y as pueda tener comunicacin serial
con Matlab.
Paso 3: Tenemos que abrir Matlab y ejecutar el fichero
denominado install_arduino.m que se encuentra en la
carpeta ArduinoIO una vez ejecutado este archivo se tendr
configurado Matlab para que reconozca como tarjeta de
adquisicin de datos a nuestro Arduino.
Paso 4: Por ltimo se debe de realizar la conexin en el
entorno de programacin de Matlab y Arduino, para esto se
creara un objeto en el cual se configure el puerto de
comunicacin por el cual se tendr acceso al Arduino, esto se
logra ejecutando el siguiente comando (cabe recalcar que el
puerto COM puede cambiar de una computadora a otra):
a=arduino(COM3), la configuracin de los pines se realizar
en unos pocos segundos y con esto ahora se tiene acceso a
los pines digitales y analgicos del dispositivo. Arduino en
Matlab posee tambin funciones propias que podemos ver en
el archivo arduino.m que se han descargado con la
paquetera desde la web de Mathworks. Para la programacin
en Matlab tenemos que referirnos en sus funciones propias al
objeto Arduino que hemos declarado como a anteriormente,
como ejemplo podemos ver:

1) En Arduino.
void setup(){
pinMode(3,OUTPUT);}//el pin 3 se configura como salida
void loop(){
digitalWrite(3,HIGH);}// ponemos 5V en el pin 3

2) En Matlab.
a.pinMOde(3,output)%el pin 3 se configura como salida
a.digitalWrite(3,1)%ponemos 5V en el pin 3

C. Creacion de la GUI.
Se desarroll usando GUIDE [7], ya que ste entorno
ofrece un ambiente amigable donde los elementos grficos
que conforman la GUI estn a la vista y adems dichos
elementos pueden dimensionarse segn estime conveniente
el programador, todos los elementos grficos se guardan en
un archivo .fig que depende de otro .m con todas las
funcionalidades asociadas a los elementos grficos, dicho
archivo .m, es automticamente generado por Matlab al
guardar el .fig. En el contexto del desarrollo de ste tipo de
programas es de suma importancia conocer el lugar donde se
ubicarn las instrucciones, ya que por ejemplo el objeto de
Arduino se debe declarar como variable global y para ello

sta variable debe ser parte de la estructura handles en la


funcin OpeningFnc que se ejecuta justo despus de que la
GUI es hecha visible, otro ejemplo de esto se da en los
botones puesto que el botn Iniciar prueba de
realimentacin contiene el cdigo principal, para ms detalles
se puede revisar el manual de usuario de GUIDE [8] que
incluye excelentes descripciones de cada elemento.

III.

DESCRIPCION DEL SISTEMA.

La GUI inicia arrancando el motor dentro de un ciclo con


una duracin de 3 minutos donde se llevarn a cabo todas las
correcciones necesarias, despus de algunas oscilaciones el
motor tiende a la estabilidad alrededor de 1.5V o 400 RPM
(tensin generada por el tacmetro pasada a RPM mediante
una
constante
Kg
experimentalmente
obtenida),
posteriormente al tener el valor de estado estable, se procede
a considerar que la velocidad del motor no estar fija en un
mismo valor de RPM por lo cual se considera un rango de
histresis de 1.2023V de umbral alto y bajo (es decir una
oscilacin de 601.2mV, en hacia arriba y hacia abajo). Luego
se entra a un ciclo, donde se estar a la espera de una accin
sobre el motor, mostrando dicho estado en la casilla avisos de
la GUI. Cuando a ste se le aplique una carga, el programa
que realiza un muestreo cada 100mS observar dicho evento
y aumentar el voltaje en PWM y por ende la tensin en el
servo amplificador, lo cual tendr como consecuencia un
aumento en la velocidad del motor para tratar de regresarlo al
rango definido por la histresis donde se considera que la
velocidad no cambia de forma que sea necesaria una
correccin. Experimentalmente se determin que la carga
mxima que se puede aplicar para que el programa sea
capaz de regresar la velocidad del motor al rango de
histresis es de 8 posiciones de la unidad de carga (este
dispositivo est incluido en el Kit feedback Ms-150A).
Al retirar sbitamente la carga, la velocidad aumentar de
igual forma hasta su mximo, debido al torque en el motor
que se genera debido a la carga que se le haba aplicado, el
aumento de la velocidad debe ser corregido y esto se hace
restando de uno en uno el valor de PWM enviado, cada resta
toma 100mS en los cuales se comprueba si el valor de voltaje
del tacmetro est en el rango de histresis, pero debido a la
velocidad a la que se dan stas restas el motor usualmente
se apaga ya que el valor que requiere para mantenerse
encendido es rebasado y por lo tanto la rutina del ciclo infinito
se ve obligada a volver a encender el motor y estabilizarlo, de
este modo vuelve al estado estable en el cual espera de una
accin. Para que el sistema pueda realizar las correcciones
de manera automtica se necesita un sistema de lazo
cerrado, el cual se puede observar en la Fig. 1, teniendo
como principal caracterstica el papel que juega el Arduino
para este proceso.

Figura 1. Diagrama de bloques para el sistema.


Recordando que un sistema de lazo cerrado contempla la
idea fundamental de modificar el valor de la seal de entrada
2

de un sistema, dependiendo de los valores exhibidos por la


seal de salida, dichas modificaciones son ejecutadas por un
controlador que puede ser una persona, un circuito con
amplificadores operacionales o un programa como Matlab el
cual se us en este caso para realizar lecturas y a sus ves
correcciones en velocidad con el simple objetivo de
mantenerla constante a la hora de colocarle una carga al eje
del motor.

IV.

ACOMPLAMIENTO DE LAS SEALES.

Por las limitaciones de voltaje tanto de entrada como de


salida se utiliz los beneficios que nos ofrecen en sus
distintas configuraciones los amplificadores operacionales es
por esto que para ambos casos se us un solo integrado el
cual contiene 4 amplificadores operaciones encriptados con
un rango de salida de -13.7V hasta +13.7V, este integrado es
el LM348 [4].

B. Acoplamiento de la seal de salida del Arduino.


Matlab dar la orden al Arduino para que active su salida
en un valor determinado, en este caso la opcin que ms se
adecua es la de usar las salidas PWM, pero estas tienen la
limitante de que nos brindan una corriente de 80x10-3A, esto
es un valor demasiado pequeo para pretender activar el
servo amplificador del motor DC, adems se tiene la principal
limitante que dicho motor trabaja con niveles de voltaje de 015V y nuestro Arduino solo puede darnos valores de 0-5V por
esta razn es que se tiene que usar el amplificador operacin
no inversor con ganancia de 3V/V a continuacin se presenta
la ecuacin de un amplificador no inversor el cual es la mejor
opcin para este caso.
(2)

Vo =Vin *(1 + R2/R1)

A. Acoplamiento de la seal del tacmetro.


Como se mencion antes el Arduino tiene que realizar una
lectura de voltaje en el tacmetro para que Matlab pueda
realizar el ajuste de velocidad de manera automtica, pero a
sabiendas que el tacmetro trabajando con niveles de voltaje
DC de 0-15V y que dicho modulo solo puede captar en sus
entradas analgicas voltajes de 0-5V se tiene que
acondicionar la seal para poder leer y sobre todo prevenir
que el Arduino sufra daos irreversibles a la hora de ejecutar
este paso; la mejor solucin es dos amplificadores inversores
conectados en cascada el primero con ganancia unitaria y el
segundo con una ganancia de 1/3V/V esto gracias a su
ecuacin:
Vo = (-R2/R1) *Vin

(1)

Y con esto nos aseguramos de obtener niveles de voltajes


de 0-5V en la entrada analgica del Arduino, Como se
muestra en la Fig. 2 se le asignan valores a las resistencias
para obtener ganancia unitaria en la primera etapa y una de
1/3V/V en la segunda.

Figura 3. Etapa de salida para Arduino.

Podemos observar en la Fig. 3 los valores de las


resistencias necesarios para obtener una salida de voltaje de
0-15V el problema de la corriente se resuelve gracias a que la
fuente de poder nos suministra 5A mximos y a sabiendas
que los amplificadores operacionales toman la corriente de su
fuente de suministro para luego inyectarla directamente al
servo amplificador.

V.

DIAGRAMA DE CONEXIONES.

Como se mencion antes para el buen funcionamiento del


sistema el Arduino debe de contar con las etapa de
acondicionamiento para seales de entrada y salida, las
cuales fueron explicadas en el apartado anterior, por esta
razn se tom a bien la elaboracin de un solo modulo en el
cual se contendran dichas etapas y sobre todo el Arduino
Mega 2560 y as se bautizndolo como MFDA-V1.0 (Module
For Data Acquisition), en la Fig. 4 podemos observar la
representacin fsica del mismo.

Figura 2. Circuito de acondicionamiento para entrada


analgica del Arduino.

Figura 4. Mdulo MFDA-V1.0


3

VI.
Ahora en la Fig. 5 se muestra las conexiones pertinentes
para el manejo del kit feedback MS-150A en las cuales se
observa el mdulo MFDA-V1.0 adems de la unidad de carga
la cual permite colocar en el eje del motor 10 niveles distintos
carga al usar sus imanes para realiza un frenado contra
corriente.

ANALISIS DE RESULTADOS.

Se inicia como se mencion antes ejecutando la GUI


elaborada usando GUIDE de MATLAB, esta interfaz se puede
observar en la Fig. 6, donde se muestra la grfica de la
tensin del tacmetro contra el tiempo, adems de otros
parmetros de inters como la tensin aplicada al servo
amplificador y la velocidad en RPM generada por el motor.
Se cuenta con dos botones el primero Iniciar prueba de
realimentacin el cual sirve para dar inicio y como se explic
anteriormente este proceso tendr una duracin de 3 minutos
en los cuales se puede colocar distintos niveles de carga al
eje del motor y podemos observar los resultados en tiempo
real en la grfica. El segundo botn es el de Salir este nos
sirve ya sea para cerrar todo el proceso al observar un
desperfecto en la conexin o mal funcionamiento del Kit, o
tambin sirve para cerrar la GUI luego que haya terminado los
3 minutos del proceso. Y como utilidad adicional se cuenta
con una casilla en donde se coloca el nombre del archivo en
Excel por si se desea, en este archivo se guardan todos los
datos captados en los 3 minutos que dura la prueba y con
esto se puede realizar un anlisis posterior como el que se
observa en la Fig. 6.

Figura 5. Conexiones para el sistema lazo cerrado.

Figura 6. Interfaz grfica para la prueba.

62.8093975

0.8797654

301.289519

62.8420887

0.92375367

316.353995

63.072273

0.8797654

301.289519

63.1024116

0.83577713

286.225043

Figura 7. Grafica de resultados obtenidos.


Como se puede observar en la Fig. 7, la grfica de los
datos adquiridos durante una porcin de los 3 min que dura la
prueba, los cuales muestra las distintas fases del proceso ya
que al principio el motor DC sufre un efecto transitorio para
romper su inercia luego de esto se estabiliza, una vez
estabilizado se le aplica una carga de 8 unidades las cuales
provocan un una disminucin en el voltaje del tacmetro pero
el cdigo realiza la correccin pertinente para volver a colocar
al motor a una velocidad constante. Al observar la grfica se
puede percatar de que al segundo 185.98 realiza un aumento
en el voltaje del tacmetro y esto se debe ya que en ese
preciso momento se le retiro toda la carga al eje del motor,
entonces al alcanzar su valor mximo (ya que el voltaje en el
servo amplificador tiene un valor de 13.5V) el cdigo realiza la
correccin pertinente para regresar a su nivel de voltaje
predeterminado y es as como en el segundo 210.13 el voltaje
en el tacmetro corresponde a 0V pero al segundo 212.52 el
cdigo empieza a aumentar el voltaje en la entrada del servo
amplificador esto a modo de regresar a su estado estable y
de esta forma se concluye la prueba satisfactoriamente.
Ahora observamos de manera ms minuciosa el momento
exacto en donde se le aplica la carga al eje del motor, para
esto observamos la grfica correspondiente para 3 segundos
de interaccin y su grafica se muestra en la Fig. 8. Adems
de los valores obtenidos tanto en voltaje del tacmetro como
la velocidad en RPM se muestran en la Tabla 1.
Tabla 1. Datos obtenidos para 3 segundos.
Tiempo (s)

Tacmetro (V)

Velocidad (RPM)

61.088271

1.30498534

446.912787

61.2203018

1.31964809

451.934279

61.3523137

1.26099707

431.848311

61.4823331

1.20234604

411.762343

61.9032142

0.70381232

241.031615

62.0351121

0.55718475

190.816695

62.168359

0.60117302

205.881171

62.297359

0.7771261

266.139075

62.4283739

0.93841642

321.375487

62.6772998

0.92375367

316.353995

Figura 8. Grafica de resultados para tres segundos.


En la figura anterior podemos observar el momento justo
en el que se le coloca la carga de 8 unidades al eje del motor,
la reaccin que tiene este es la de reducir su velocidad ya que
se requiere ms torque para mantener la velocidad constante
y es en este punto donde se realiza la correccin para
alcanzar nuevamente al estado estable.

VII.

OBSERVACIONES.

Es necesario realizar un anlisis exhaustivo del sistema a


controlar antes de realizar la programacin, ya que al no
realizar esto se pueden encontrar diversos inconvenientes
tanto en la hora de elaborar el cdigo como en la
implementacin fsica del hardware para controlar el motor,
adems se tuvo que reemplazar el motor por uno del mismo
modelo ya que el primero que se utiliz mostr problemas de
estabilidad por el deterioro del mismo y esto caus retrasos y
sobre todo daos en los circuitos de acople, aunque algunos
detalles se escapen es necesario que los mismos sean
mnimos para evitar que estos afecten a la hora de realizar
las pruebas pertinentes.

VIII. CONCLUCIONES Y TRABAJOS FUTUROS.


Arduino en conjunto con GUIDE de MATLAB forman un
equipo potente a la hora de realizar tareas de adquisicin de
datos y control de sistemas, ya que la programacin en sta
oportunidad fue en gran medida facilitada por ste lenguaje
de alto nivel que obedece a las acciones de los diferentes
botones, sliders y otros elementos grficos que realizan una
determinada accin sobre el flujo de datos. Por ejemplo la
rutina de acciones sobre el motor se inicia nicamente si el
botn Iniciar prueba de realimentacin es presionado y es
posible detener la ejecucin de dichas acciones en cualquier
momento presionando el botn salir.
A modo de trabajo futuro se planea seguir trabajando con
la lnea de control Automtico pero ahora utilizando la
herramienta Simulink ya que al combinarla con Matlab y
5

Arduino se puede obtener un instrumento de medicin ms


eficiente y sobre todo estable al realizar la programacin de
los sistemas de control de lazo cerrado y as aprovechar al
mximo caractersticas del mismo.

IX.

AGRADECIMIENTOS.

Al Ing. Ricardo Cortez, catedrtico de la asignatura


Sistemas de Control Automtico en la Universidad de El
Salvador, ya que gracias a los conocimientos adquiridos en
sus clases y sobre todo al facilitarnos los medios necesarios
se pudo terminar el proyecto satisfactoriamente.

X.
[1]
[2]
[3]

[4]
[5]

[6]
[7]
[8]

REFERENCIAS.

Gua de comunicacin entre Matlab y Arduino. Disponible en:


http://www.mathworks.com/hardware-support/arduinomatlab.html
Caractersticas del Arduino Mega 2560, Disponible en:
http://arduino.cc/en/Main/ArduinoBoardMega2560
Caractersticas del equipo Feedback MS-150A. Disponible en:
http://catalogue.techno-test.com/products/6Educational_Products/37-Control___Instrumentation/219Feedback_MS150Feedback_MS150_DC_Complete_Modular_Servo_System.pdf
Data sheet LM348. Disponible en:
http://www.ti.com/lit/ds/symlink/lm148-n.pdf
Requisitos para instalacin de Matlab versin r2013a. Disponible
en:
http://www.mathworks.com/support/sysreq/sv-r2013a
Conceptos bsicos sobre Matlab Gui. Disponible en:
http://www.mathworks.com/discovery/matlab-gui.html
Conceptos bsicos sobre Matlab Guide. Disponible en:
http://www.mathworks.com/help/matlab/ref/guide.html
Manual para GUIDE. Disponible en:
http://www.mathworks.com/help/pdf_doc/matlab/buildgui.pdf

XI.

BIOGRAFAS DE LOS AUTORES

1) Jaime Javier Arriola Surez. Naci en San Salvador, El


Savador en 1989. En el ao 2008 inici sus estudios en la
Universidad de El Salvador en la carrera de Ingeniera Elctrica y
actualmente se encuentra cursando su ltimo ao de estudios
superiores. Miembro de la Rama Estudiantil IEEE de la Universidad
de El Salvador desde el ao 2014.

2) Xavier Alexandro Torres Amaya. Originario de la ciudad de


Sensuntepeque departamento de Cabaas, El salvador. Inici sus
estudios en el ao 2007 y actualmente se encuentra cursando su
ltimo ao en la carrera de Ingeniera Elctrica de la facultad de
Ingeniera y Arquitectura en Universidad de El Salvador, adems de
ser miembro de la Rama Estudiantil IEEE de la Universidad de El
Salvador desde el ao 2014.

También podría gustarte