Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Servovalvula PDF
Servovalvula PDF
TESIS
Que para obtener el título de:
PRESENTA:
Delgado Báez Jesús Adolfo
Méndez Martínez Oscar
ASESORES:
RESUMEN
AGRADECIMIENTOS
A mi familia y a todas aquellas personas por toda esa confianza que han
depositado en mí, así como su amor y cariño y sobre todo, su apoyo incondicional.
Mis logros y mis triunfos son de ustedes.
Por último, quiero agradecer a esas personas que compartieron sus conocimientos
a lo largo de esta carrera, mis maestros; en especial a mis asesores de tesis, que
con su ayuda y experiencia lograron motivarme para culminar esta obra.
Esta tesis está dedicada a mi madre a quien agradezco de todo corazón por su
amor, cariño y comprensión. De igual manera a mi familia le doy las gracias por su
apoyo y la ayuda incondicional. En todo momento los llevo conmigo.
A todas las personas que participaron e hicieron posible este proyecto, muchas
gracias por su disposición y enseñanza.
Índice General
Pág.
Índice de tablas i
Índice de ecuaciones ii
Índice de figuras iii
Planteamiento del problema 1
Objetivos 2
Justificación 3
Introducción 4
Estado del Arte 6
1. Capítulo 1. Marco Teórico 8
1.5. Nivel 15
1.6. Válvulas 16
1.8. Simulink 20
2.1. Microcontrolador. 24
3.3.1. Puente H 58
3.4. Resultados 60
4.1. Conclusión 62
Bibliografía 64
Anexos 66
Índice de Tablas
Pág.
Índice de Ecuaciones
Pág.
Capítulo I
Ecuación 1.1 Definición de flujo 10
Capítulo II
Ecuación 2.1. Fórmula para el cálculo del volumen del tanque 28
de proceso.
Ecuación 2.2. Ecuación de la recta. 28
Índice de Figuras
Pág.
Capítulo I
Figura 1.1. Relación entre los diferentes tipo de presión. 14
Capítulo II
Figura 2.1. Diagrama de bloques de los periféricos internos del 24
microcontrolador MSP430G2452
Figura 2.2. Tarjeta de adquisición de datos NI USB-6008 25
Capitulo III
Figura 3.1. Diagrama general del sistema de control 40
OBJETIVOS
JUSTIFICACIÓN
Esta obra busca resolver el problema del control automático del flujo de agua a
través de una tubería mediante la elaboración y el control de una servoválvula
construida en base a una válvula de globo, con el fin de demostrar una variante en
la automatización de procesos sin necesidad de realizar una gran inversión.
INTRODUCCIÓN
Es por ello que gran parte de la investigación mundial está centrada en la creación
de nuevas tecnologías capaces de proveer las mismas prestaciones a un menor
precio.
La demanda de estos instrumentos por parte de las industrias ha dado lugar a que
en los catálogos de algunos fabricantes se exhiban varios modelos de
CAPÍTULO I
Marco Teórico
Newtonianos
No newtonianos
dónde:
Para aprender a analizar los sistemas que trabajan con fluidos es necesario
comprender los siguientes conceptos, los cuales también tienen como objetivo el
modelado y la solución del problema planteado.
1.2. Densidad
1.4. Presión
La presión es una magnitud física definida como la fuerza que ejerce un cuerpo
sobre una unidad de superficie (ecuación 1.6) y puede expresarse en unidades
tales como pascal (Pa), atmósferas, bar, kilogramos por centímetro cuadrado y psi
(libras por pulgada cuadrada), según el campo de aplicación y el sistema de
medida que se esté usando [5]. En el anexo A figuran las unidades más utilizadas
y sus equivalencias.
Si , entonces
Cabe mencionar que la ecuación anterior no se aplica a los gases, debido a que el
peso específico de un gas cambia con la presión, por lo que queda restringida
únicamente para líquidos homogéneos en reposo [6].
1.5. Nivel
Existen varios métodos para medir el nivel de líquidos, entre los cuales están:
1.6. Válvulas
Las válvulas deben ser precisas en el control del fluido y presión, así como la
secuencia de operación.
La pieza de la válvula globo que controla el flujo es el disco, que está sujeto al
vástago de la válvula (los discos están disponibles en varios diseños). La válvula
es cerrada dando vuelta al vástago de válvula hacia adentro hasta que el disco se
apoye en el asiento de la válvula. Esto evita que el líquido atraviese la válvula (ver
figura 1.4 A). El borde del disco y su asiento están delicadamente trabajados a
máquina de manera que cuando la válvula es cerrada encastran en forma muy
precisa. Cuando la válvula está abierta (ver figura 1.4 B), el líquido atraviesa el
espacio entre el borde del disco y el asiento. Dado que el fluido se desplaza
igualmente en todos los lados del centro de apoyo cuando la válvula está abierta,
no existe ninguna presión sin balancear sobre el disco que cause un desgaste
desigual. El régimen al cual el líquido atraviesa la válvula es regulado por la
posición del disco en relación con el asiento.
K = coeficiente,
( )
( ) ( ) ( )
Donde ( ) [ ] y ( ) [ ]
( )
( )
( )
( )
1.8. Simulink
Data Acquisition Toolbox™ provee funciones para conectar MATLAB® con tarjetas
de adquisición de datos. El toolbox soporta una gran cantidad de DAQs,
incluyendo dispositivos USB, PCI, PCI-Express®, PXI y PXI-Express, de National
Instruments, Measurement Computing, Advantech, Data Translation, y otros
proveedores.
CAPÍTULO II
Controladores, sensores y algoritmos
de control.
2.1. Microcontrolador.
Una gran ventaja que presenta este sensor es su bajo costo y su compensación
en temperatura.
Características principales:
El tanque del proceso tiene un volumen de 160 litros el cual es obtenido a partir de
las dimensiones del mismo como se muestra en la ecuación 2.1.
INSTITUTO POLITECNICO NACIONAL Página 27
Ingeniería en Comunicaciones y Electrónica
Las dimensiones internas del tanque del proceso, hasta el drenado son las
siguientes:
Largo = 0.4 m
Ancho = 0.4 m
Alto = 1 m
Ecuación 2.1. Fórmula para el cálculo del volumen del tanque de proceso.
La ecuación antes citada se puede desarrollar tomando en cuenta para el eje ‘y’ la
salida de 25 mVcd del sensor (la diferencia entre el valor de comienzo y el valor de
llenado total, en mV) y para el eje ‘x’ la altura del tanque (la diferencia entre el
Ecuación 2.3. Relación lineal, altura – volts, detectada por el sensor en el llenado
del tanque.
Para la ecuación 2.3 se ha considerado el valor de ‘b’ igual a cero, debido a que
en la siguiente gráfica el inicio está en el origen y no está desplazada hacia alguna
parte del plano cartesiano.
25
20
Voltaje sensor de presion
15
10
0
0 10 20 30 40 50 60 70 80 90 100
Altura
El sensor de flujo Gems tipo turbina proporciona un rango de flujo de salida exacto
y entrega un voltaje de corriente directa en forma de tren pulsos [13]. Los
parámetros bajo los cuales se seleccionó el sensor de flujo son los siguientes:
Señal de error = Señal del valor de referencia – Señal del valor medido
Elemento
de
Elemento de Elemento de Elemento de
+ control corrección proceso
Entrada, - Salida,
Seña
valor de l de
referencia
variable
erro
r controlada
Elemento de
Realimentación medición
Código digital
de entrada Computadora Convertidor Salida
Proceso
digital-
Digital controlado
analógico
Convertidor
analógico-
digital
Para la integración
Kp
𝑒 𝑘𝑇 𝑢 𝑘𝑇
𝐷𝐼 𝑧
𝐸 𝑧 𝑢 𝑧
𝐷𝐷 𝑧
Set-
Point TRANSMISOR
TRANSMISOR
- VARIABLE VARIABLE
SECUNDARIA PRIMARIA
CAPÍTULO III
Desarrollo
En este capitulo se desarrolla toda la parte del control del sistema, así como los
circuitos electrónicos utilizados para adecuar las señales entregadas por los
sensores y la etapa de potencia del motorreductor. Se analizarán y se justificará
todos los elementos electrónicos, los algoritmos y las estrategias de control
propuestas para el desarrollo del proyecto, conformado de tres partes medulares,
las cuales se explican a continuación:
Etapa de potencia: esta es utilizada para energizar los devanados del motor de CD
por medio de un puente H encargado a su vez de controlar el sentido del giro y la
velocidad del motor.
La señal analógica de entrada es convertida a través del BIT 2 del puerto 1 del
microcontrolador, el cual está configurado para hacer conversiones continuas. El
valor digitalizado del sensor de presión es mostrado en un LCD 16x2, en el cual se
puede observar el porcentaje de la presión que posee el contenedor. El código del
programa de la adquisición de datos y visualización de la variable presión se
muestra en el anexo D.
Por otro lado, los valores de presión medidos por el sensor MPX2010GP en las
diferentes alturas del tanque se muestran a continuación:
Presión
Altura (m) (KPa)
0.1 0.981
0.2 1.962
0.3 2.943
0.4 3.924
0.5 4.905
0.6 5.886
0.7 6.867
0.8 7.848
0.9 8.829
1 9.81
Altura vs Presion
10
6
KPa
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
m
Los valores de frecuencia entregados por el sensor de flujo tipo turbina en las
diferentes alturas del tanque se muestran a continuación:
Frecuencia
Altura (m) (Hz)
0.21 22.45
0.26 25.37
0.31 28.15
0.36 31.03
0.41 33.2
0.46 35.46
0.51 37.88
0.56 39.96
0.61 41.66
0.66 43.45
0.71 45.39
0.76 47.1
0.81 48.35
0.86 48.62
0.91 48.88
Para el cálculo del flujo que pasa a través del sensor a las diferentes alturas se
realizó una interpolación de los valores de frecuencia y su respectivo flujo,
contenidos en la hoja de datos del sensor. Los valores obtenidos son los
siguientes:
Frecuencia Flujo
(Hz) (GPM)
22.45 1.8061
25.37 1.9702
28.15 2.1388
31.03 2.3166
33.2 2.4506
35.46 2.5811
37.88 2.7155
39.96 2.8311
41.66 2.9255
43.45 3.0264
45.39 3.1405
47.1 3.2411
48.35 3.3147
48.62 3.3305
48.88 3.3458
Flujo
Flujo (GPM)
4
3.5
2.5
2
Flujo (GPM)
1.5
0.5
0
0 10 20 30 40 50 60 Frecuencia
Debido a que las señales de salida del sensor de flujo son muy bajas (del orden de
17 Hz a 50Hz), se deben de amplificar a valores a donde el circuito convertidor
frecuencia a voltaje sea más estable y evitar con ello la incursión de nuevos
elementos para mejorar la conversión.
SENSOR_FLUJO
10k
U1
R2
3 1
COMPIN PP
10k 9 2 14 12
VCOIN PC1OUT CKA Q0
1 9
CKB Q1
14 13 8
U2 SIGIN PC2OUT Q2
11
Q3
R1 6 2
CX1 R0(1)
3
R0(2)
R3 VCOOUT
4 6
R9(1)
C2 C1
7 7
CX2 R9(2)
5
INH
1nF 11 10 74LS90
R1 DEMOD
12 15
R2 ZENER
OUTPUT
4046
1nF
10k
SENSOR_FLUJO
4
10k
3
1
2
LM324
10k
11
10k 10k
5.6k
10k
3 1
4
COMPIN PP 20k 20k
10k 9 2 14 12
VCOIN PC1OUT CKA Q0
1 9 10 OUTPUT (0 - 2.5 VOLTS)
7
CKB Q1
14 13 8 V+ 8
3 SIGIN PC2OUT Q2
11 5k 9
R-C
CMIN
THR
Q3
10 6 2
4
CX1 R0(1) 1nF LM324
3 U1:C(V+)
R0(2)
11
GND
VCC
R12 4 6 5
8
VCOOUT R9(1)
7 7 7 U1:C(V-)
4
CX2 R9(2)
5 6
FOUT
IOUT
REFI
INH 20k
1nF 11 10 74LS90
R1 DEMOD LM324 20k
12 15 LM331 U1:C
R2 ZENER
11
1
3
4046 R7
1nF 20k
10k V- R6
20k
1nF 10k 10k
4
12
14
1k 10k 13
LM324
11
10k
10k
Para tal fin se recurrió a la utilización del circuito integrado LM331, con la
configuración típica del convertidor en modo Frecuencia/Voltaje [14], como se
puede observar en la figura 3.4.
10k
10k
10k
10k
INPUT
7
R-C
CMIN
THR
1nF
GND
VCC
8
4
FOUT
IOUT
REFI
LM331
3
OUTPUT
1k
( )
Por tanto:
( )
( )
INPUT
4
3
1
2 U
LM324
R
11
5.6k
U
4
20k 20k
10 OUTPUT (0 - 2.5 VOLTS)
V+ 8
5k 9
4 LM324
U1:C(V+)
11
5
7 U1:C(V-)
6
20k
LM324 20k
U1:C
11
R7
20k
V- R6
20k
4
12
14
10k 13
LM324
11
10k
10k
Cabe mencionar que el encoder cuenta con 2 canales que entregan señales en
cuadratura con un defasamiento de 90° entre ellas. En base a esta característica
se definirá y controlará el sentido de giro, como se explicará más adelante.
Por otro lado, los pulsos que entregue el encoder a través del canal que quede
habilitado serán contados ascendentemente o descendentemente (según sea el
caso) con el fin de adecuar la señal y mantener en memoria la posición actual.
CANAL_B
U1 OUTPUT_ATRAS
4 2
D0 Q0
3
Q0
5 7
D1 Q1
CANAL_A 6
Q1
12 10
D2 Q2
11
Q2
13 15
D3 Q3
14
Q3
9
CLK
1
MR
74LS175
U2 OUTPUT_ADELANTE
4 2
D0 Q0
3
Q0
5 7
D1 Q1
6
Q1
12 10
D2 Q2
11
Q2
13 15
D3 Q3
14
Q3
9
CLK
1
MR
74LS175
En otras palabras se puede decir que la función principal del PWM es variar la
corriente promedio con la cual el motor trabaja, haciendo con ello un incremento o
un decremento en la velocidad de este.
La realización del control por PWM se logró a través del mismo microcontrolador
como se puede observar en el código del anexo F.
Perturbación
Válvula manual
SENSOR
Encoder
SENSOR
De flujo
INICIO
Inicialización de variables y
periféricos del
microcontrolador
SUBRUTINA
Obtención del valor absoluto DE
de error2
INTERRUPCIÓN
Controlador
Digital
Salida PWM
FALSO
Cierre de la
Error1> V.P.2 válvula
VERDADERO
Abertura de la
válvula
Subrutina de interrupción
error1>V.P.2 V.P.2 - -
V.P.2 ++
Donde:
V.P.1 = flujo
V.P.2 = posición
3.3.1. Puente H.
3.4. Resultados
Por otra parte, es loable señalar que el controlador proporcional realizo un buen
trabajo al reducir el error en estado estacionario durante todo el tiempo en que el
CAPITULO IV
Conclusión
Sin embargo, para trabajos posteriores, los autores de esta obra recomendamos
ampliar este proyecto de investigación al incluir el estudio de diferentes clases de
controladores y realizar una comparación exhaustiva para elegir la mejor opción.
Por otra parte, seria buena idea considerar otro tipo de fluido a parte del agua.
Bibliografía
[2] TOSHIYA WATANABE ET ÁL., Development of the Small Flow Rate Water
Hydraulic Servo valve. Departamento de Ingeniería Mecánica, Universidad de
Meijo, Japón. 2010.
[4] ROBERT L. MOTT, Mecánica de fluidos. Pearson Prentice Hall. Sexta Edición.
2006.
[8] http://www.mathworks.com/products/simulink/
[9] http://www.mathworks.com/products/daq/
[10] http://www.ti.com/product/msp430g2452
[11] http://sine.ni.com/nips/cds/view/p/lang/es/nid/201986
[13] http://www.gemssensors.com/~/media/GemsNA/InstructionBulletins/157258-h.ashx
ANEXOS
#include "msp430x20x2.h"
#define FALSE 0
#define TRUE 1
void PulseLcm();
void SendByte(char,int);
void LcmSetCursorPosition(char,char);
void ClearLcmScreen();
void InitializeLcm(void);
void PrintStr(char *);
void vfBCD(long);
long temp;
long IntDegC;
long Porcentaje;
char UnidadMillar, Centena, Decena, Unidad;
void main(void)
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
InitializeLcm();
ClearLcmScreen();
SendByte(0x0C,FALSE);
SendByte(0x84,FALSE);
PrintStr("Porcs=");
for(;;)
{
temp = ADC10MEM;
Porcentaje = (temp * 10000)/(1023);
IntDegC = ((temp * 2500)/1023);
vfBCD(Porcentaje);
SendByte(0x8A,FALSE);
SendByte(UnidadMillar,TRUE);
SendByte(Centena,TRUE);
SendByte(0x2E,TRUE);
SendByte(Decena,TRUE);
Unidad = Unidad + 0x30;
SendByte(Unidad,TRUE);
__delay_cycles(5555555);
}
}
void PulseLcm()
{
LCM_OUT &= ~LCM_PIN_EN;
__delay_cycles(200);
LCM_OUT |= LCM_PIN_EN;
__delay_cycles(200);
if (IsData == TRUE)
{
LCM_OUT |= LCM_PIN_RS;
}
else
{
LCM_OUT &= ~LCM_PIN_RS;
}
PulseLcm();
if (IsData == TRUE)
{
LCM_OUT |= LCM_PIN_RS;
}
else
{
LCM_OUT &= ~LCM_PIN_RS;
}
PulseLcm();
}
if (Row == 0)
{
address = 0;
}
else
{
address = 0x40;
}
address |= Col;
void ClearLcmScreen()
{
SendByte(0x01, FALSE);
SendByte(0x02, FALSE);
}
void InitializeLcm(void)
{
LCM_DIR |= LCM_PIN_MASK;
LCM_OUT &= ~(LCM_PIN_MASK);
__delay_cycles(100000);
LCM_OUT = 0x20;
PulseLcm();
SendByte(0x28, FALSE);
SendByte(0x0E, FALSE);
SendByte(0x06, FALSE);
}
c = Text;
if ( D >= 1000 )
{
do
{
D-=1000;
UnidadMillar++;
}
while ( D >= 1000 );
}
if ( D >= 100 )
{
do
{
D-=100;
Centena++;
}
if ( D >= 10 )
{
do
{
D-=10;
Decena++;
}
while ( D >= 10 );
}
Unidad = D;
}
flujo = ADC10MEM*8;
error_flujo = set_point - flujo;
error_posicion = error_flujo - acumulador;
pwm_abs=abs(error_posicion);
pwm = (pwm_abs)/(28);
CCR1 = pwm + 480;
P1OUT |= BIT3;
P1OUT &= ~BIT4;
}
else{
flujo = ADC10MEM*8;
error_flujo = set_point - flujo;
error_posicion = error_flujo - acumulador;
pwm_abs=abs(error_posicion);
pwm = (pwm_abs)/(28);
CCR1 = pwm + 480;
P1OUT |= BIT4;
P1OUT &= ~BIT3;
}
}//Fin for
}//Fin main
// Rutina de servicio de interrupcion del puerto 1
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
acumulador++;
P1IFG=0x00;
asm("RETI");
}
// Rutina de servicio de interrupcion del puerto 2
#pragma vector=PORT2_VECTOR
__interrupt void Port_2(void)
{
acumulador--;
P2IFG=0x00;
asm("RETI");
}
/*
Control en Cascada
"Primer controlador" -> Control de Flujo
error_flujo=set_point-flujo
Segundo Controlador -> Control de Posición
error_posicion=error_flujo-acumulador
*/