Está en la página 1de 6

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/281784042

Scilab-Arduino: Diseño e implementación de sistemas de control

Conference Paper · September 2015


DOI: 10.13140/RG.2.1.2923.6564

CITATIONS READS

0 5,029

1 author:

Jacob Javier Vásquez Sanjuan


Universidad Politécnica de Puebla
24 PUBLICATIONS   44 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Electric go-kart View project

Voltage control of DC/DC converters View project

All content following this page was uploaded by Jacob Javier Vásquez Sanjuan on 24 September 2015.

The user has requested enhancement of the downloaded file.


Scilab-Arduino:
Diseño e implementación de sistemas de control
J.J.Vásquez-Sanjuan1, L.I. Olivos-Pérez1, E. Yescas-Mendoza2

1
Ingeniería de sistemas automotrices, Universidad Politécnica de Puebla, 3er carril del ejido serrano s/n, San Mateo
Cuanalá, Puebla, México. C.P.72640, e-mail: jacob.vasquez@uppuebla.edu.mx
2
Ingeniería en Electrónica, Universidad Tecnológica de la Mixteca. Carretera a Acatlima Km. 2.5, Huajuapan de
León, Oaxaca, México. C.P. 69020.

Resumen (M&A)
Existen diversos programas de software libre que son una opción viable en la realidad mexicana donde los recursos
económicos pueden emplearse en otras necesidades académicas. En este trabajo se muestran ejemplos del uso de Scilab
orientados al diseño de sistemas de control. Ejemplos de Routh-Hurtwitz, lugar de las raíces (root-locus), Bode, diagramas
retroalimentados y su respuesta en el tiempo son analizados. Finalmente se muestran los pasos para emplear Scilab y
Arduino Mega 2560 para crear un sistema de monitoreo y/o control.

Palabras clave: Arduino, Scilab, Control, Simulación, Implementación.

Abstract (M&A)

There are several free software programs that are an option for Mexican Institutions where their limited economics
resources could be used in other academics necessities. In this work several examples for use of Scilab to design control
systems are shown. Examples of Routh-Hourtwitz, root-locus, Bode, feedback systems and his response on time are also
shown. Finally is presented the necessary steps to use Scilab with Arduino Mega 2560 for control systems or data
acquisition.

Key words: Arduino, Scilab, Control, Simulation, Implementation.

INTRODUCCIÓN programa se encuentra disponible para Linux, Windows y


Mac [2].
Existen programas comerciales empleados para el diseño
e implementación de sistemas de control, pero la
Por otra parte, Xcos (Connected Object Simulator) es la
adquisición de una licencia es sumamente costosa además
herramienta de software para modelado y simulación de
del hardware compatible. Una opción es emplear Scilab
sistemas dinámicos. La cual provee una interfaz gráfica de
para el diseño del sistema de control y Arduino como
usuario para editar modelos e interconectar los bloques
hardware compatible con este programa.
que representan las funciones fundamentales predefinidas
(generador de señales, integradores, ganancias,
Scilab es un paquete de software científico libre y de
osciloscopio, etc). Esta es una versión libre alternativa a
código abierto para cálculos numéricos, lo que
Simulink.
proporciona un potente entorno informático abierto para
la ingeniería y las aplicaciones científicas [1]. Ha sido
Existe una página web donde pueden descargarse diversos
desarrollado por investigadores del INRIA y ENPC,
ejemplos de libros, con código Scilab y Xcos, de diversas
Francia. Este programa es uno alternativo a Matlab, con
áreas de ingeniería como control, procesamiento digital de
funcionalidades similares tales como álgebra lineal,
señales, comunicaciones, entre otros [3].
visualización en dos y tres dimensiones, optimización,
estadística, procesamiento de señales, simulación
Antes de iniciar una breve descripción del empleo de
dinámica y análisis y diseño de sistemas de control.
Scilab, se hace la aclaración que para identificar el código
Además, un gran número de contribuciones se pueden
fácilmente se empleará otro tipo de letra (Courier New,
descargar desde el sitio web. Otra ventaja es que este
9).
Otra herramienta de Scilab es Xcos, la cual se puede
seleccionar mediante la terminal (xcos) o bien al presionar
el ícono en la consola principal. En la imagen izquierda se
muestra el explorador de paletas deXcos, ventana derecha
(ver Fig. 4).

Fig. 1. Pantalla del programa Scilab/Xcos.

Después de instalar y ejecutar el programa se mostrará la


consola principal o terminal (fig. 1), en la cual se pueden
ejecutar las instrucciones; como ejemplo se muestra el
código para introducirla matriz:

1 2 3
𝐴 = [4 5 6] (1)
7 8 9
>>A = [1 2 3; 4 5 6; 7 8 9]

Fig. 4. Ventanas de Xcos.

Después de mostrar brevemente el entorno, a continuación


se muestran ejemplos de algunas instrucciones de Scilab
útiles en el proceso de diseño y simulación de sistemas de
Fig. 2. Consola de inicio. control.

Para un conjunto de instrucciones se puede emplear el


editor de archivos con extensión *.sce y ejecutarlas
instrucciones. El editor se carga al seleccionar la imagen DESARROLLO
del lápiz mostrada (Fig. 2), que se encuentra en la esquina
superior izquierda o bien mediante el comando edit. La El análisis y diseño de los sistemas de control
ventana del editor se muestra en la figura 3. principalmente se dividen en el dominio del tiempo y la
frecuencia, a continuación se muestran ejemplos para
ambos casos.

ANÁLISIS EN EL DOMINIO DEL TIEMPO


El siguiente código permite obtener la respuesta de un
sistema de control de primer orden en lazo abierto.

clear
K=1;T=1;
s = poly(0, "s");
sys=syslin('c',K,T*s+1);
Fig. 3. Editor de instrucciones.
t=0:0.01:5*T;
sys_rt=csim('step',t,sys); sys=syslin('c',num/den);
plot(t,sys_rt) clf();
title('Respuesta al escalón de un sistema evans(sys,100);sgrid()
de primer orden');
[Ki,s]=kpure(sys) // Ganancia (polos
xlabel('tiempo(s)');
ylabel('Amplitud'); complejos conjugados)
plot([real(s) real(s)],[imag(s) -
La instrucción poly permite definir la variable s, para imag(s)],'*r')
funciones de transferencia (Laplace). Para indicar la cad=msprintf('%3.2f',Ki)
función e indicar si es continua o discreta se emplea la hl=legend(cad);
instrucción syslin. La instrucción csim permite obtener la
respuesta en el tiempo de la función.
ANÁLISIS EN EL DOMINIO DE LA FRECUENCIA
Mediante el siguiente código se obtiene la respuesta de un Existen instrucciones para el análisis y diseño de sistemas
sistema prototipo de segundo orden retroalimentado para de control en el dominio de la frecuencia:
diferentes coeficientes de amortiguamiento. Las
instrucciones son las empleadas en el sistema
anteriormente descrito. bode(sys)
show_margin(sys)
g_margin(sys)
clear p_margin(sys)
s=%s;
wn=1;
zeta=[0 0.1 0.5 1 2]; La gráfica de Bode de la función de transferencia de lazo
t=0:0.1:20;
num=wn^2; L(s) = 2500/[s(s + 5)(s + 50)]
fori=1:5
den=s^2+2*zeta(i)*wn^2*s+wn^2; se obtiene a partir de las siguientes instrucciones:
sysnd=num/(num+den);
sys=syslin('c',sysnd);
y(i,:)=csim('step',t,sys); s=%s;
end num=2500;den=s*(s+5)*(s+50);
sys=syslin('c',num/den)
plot2d(t',y',style=[1 3 4 5 6]) ; bode(sys)
xtitle('Respuesta de segundo show_margins(sys,'bode')
orden','tiempo','y(t)')
legends(['psi=0','psi=0.1','psi=0.5','psi=
1','psi=2'], La instrucción show_margins permite mostrar el margen
[1,3,4,5,6],opt="ur");
de fase y magnitud del sistema.
La tabulación de Routh-Hurtwitz empleada para
determinar la estabilidad absoluta del sistema se obtiene VARIABLES DE ESTADO
mediante la instrucción routh_t. A continuación se
Las variables de estado son otra forma de representar la
muestra el código necesario para obtener la tabulación
dinámica de un sistema, mediante la siguiente estructura:
para el polinomio
𝑥̇ = 𝐴𝑥(𝑡) + 𝐵𝑢(𝑡)
s 4 + 6s 3 + 5s 2 + 2s + 1.
𝑦 = 𝐶𝑥(𝑡) + 𝐷𝑢(𝑡)

>> routh_t(s^4+6*s^3+5*s^2+2*s+1) Donde x(t) es el vector de estados; y(t) es el vector de


salida; u(t) el vector de entrada o control; A es la matriz de
estados, B y C son las matrices de entrada y salida
Para obtener el lugar geométrico de las raíces se emplea el respectivamente y D es la matriz de transmisión directa.
comando evans. El código permite obtener la gráfica para Existe la técnica de control por retroalimentación de
la ecuación característica: estados la cual consiste en reubicar los polos del sistema
en el semiplano izquierdo del plano S. Para realizar la
𝐾
1+ . ubicación de polos y ceros se emplea el comando ppoly se
𝑠 4 +25𝑠 3 +15𝑠 2 +20𝑠
requieren las matrices A, B y la ubicación de los polos.
s=%s; [K]=ppol(A,B,poles)
num=1;
den=s^4+25*s^3+15*s^2+20*s;
EJEMPLO CON XCOS
Como puede notarse el sistema puede representarse
En la figura 5 se muestra un reductor de voltaje (buck).
mediante variables de estado y la técnica del mismo
nombre puede emplearse, sin embargo, presenta error en
estado estable. Para eliminar este se emplea un control
mediante retroalimentación de estados y control integral,
el cual se muestra en Xcos (fig. 6). Las constantes k1, k2
y k3 se calculan mediante la instrucción ppol. Un análisis
detallado del controlador puede consultarse en [4].

Fig. 5. Circuito reductor de voltaje. ARDUINO-SCILAB


Como se ha mostrado Scilab facilita el diseño y
Su representación en variables de estado se muestra: simulación de sistemas de control al contar con diversas
funciones y herramientas. Además es posible emplear
1 Arduino dentro del ambiente Xcos para realizar tareas de
0 −
𝑥̇
[ 1] = [ 𝐿 ] [𝑥1 ] + [𝐸/𝐿] 𝑢 monitoreo o control. El método descrito a continuación
𝑥̇ 2 1 1 𝑥2 0 fue probado empleando la tarjeta Mega 2560 y Scilab
− versión 5.5.2.
𝐶 𝑅𝐶
x1
y = [0 1] [ x ] (2)
2

Fig. 6. Implementación en Xcos del control por retroalimentación de estados de un convertidor buck.

Instalación del programa en Arduino comunicación serial (dentro de la categoría procesamiento


de señales), arduino (en Instruments Control) y Clustering
Para establecer la comunicación entre Scilab y Arduino, toolbox (en Data Analisys and Statistics). Se cierra Scilab
es necesario cargar en la tarjeta el programa y se vuelve a abrir, y en el explorador de paletas de Xcos
toolbox_arduino_v3.ino, el cual puede descargarse de aparecerán los bloques que corresponden a Arduino (fig.
internet [5]. 7).

En las figuras 8 y 9 se muestra como adquirir un voltaje


Instalación de Arduinoen Scilab analógico y desplegarlo. En el diagrama puede notarse que
se realiza una división para convertir a voltaje la señal
Es necesario instalar herramientas adicionales de Scilab recibida y se selecciona el puerto en donde se encuentra
para lo cual se requiere internet. En la consola principal conectada la tarjeta.
seleccione la pestaña Applicaciones/Administrador de
módulos–ATOMS e instale los paquetes para
CONCLUSIONES
Generalmente existe cierta resistencia al uso de programas
nuevos por la mayoría de los usuarios y más si se trata de
software libre, sin embargo, emplear Scilab como una
herramienta en la enseñanza o bien para el diseño de
sistemas de control es fácil y precisa, como se ha
mostrado; además presenta un entorno similar a Matlab y
Simulink lo que facilita su uso y finalmente permite la
incorporación de hardware como Arduino para la
adquisición y control, lo cual la hace aún más atractiva.
Este trabajo puede emplearse como base para crear un
sistema de control que no requiera un tiempo de muestreo
elevado (baud rate empleado de 115200) o bien para
adquirir señales a bajo costo.

Fig. 7. Explorador de paletas de Xcos con librerías


de Arduino. REFERENCIAS
[1] Scilab en línea. Disponible: http://www.scilab.org. Consulta
Agosto2015.
[2] Ma, L., Xia, F., &Peng, Z. “Integrated design and implementation
of embedded control systems with Scilab”. Sensors Vol. 8, No. 9:
5501-5515, 2008.
[3] Brattz. R.D. "Scilab Textbook Companions [Focus on Education],"
Control Systems, IEEE, Vol. 34, No.3, pp.76, June 2014.
[4] U. Cortés, J. Vásquez, M. A. Pérez. “Plataforma didáctica de
control automático basada en un reductor de tensión cd-cd (buck)”.
Semana Nacional de Ingeniería Electrónica, 2014.
[5] http://forge.scilab.org/index.php/p/arduino/source/tree/HEAD/ma
cros/toolbox_arduino_v3/toolbox_arduino_v3.ino, Agosto de
2015.

Fig. 8. Programa en Xcos para adquirir datos


por el puerto Analógico (0) de Arduino.

Fig. 9. Señal obtenida del puerto analógico (0) con


Arduino-Scilab

View publication stats

También podría gustarte