Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Resumen: En este proyecto se trata de realizar un control de velocidad de un motor DC para la dosificacin de
unos polvos, para ello se usa un encoder para medir la velocidad y un PSOC donde ira implementada la ley de
control que regir la velocidad del motor, este trabajo se hace con fines acadmicos, es decir es de carcter de
experiencia institucional.
1. INTRODUCCION
En el presente trabajo se desarrolla un Control de
velocidad en lazo cerrado de un motor DC de imn
permanente aplicando el conocido algoritmo de
control PID.
2. MODELAMIENTO DE LA
PLANTA
Considerando que nuestro motor tiene un eje rgido,
por medio de sus ecuaciones elctricas y mecnicas,
al relacionarlas, podemos obtener el modelo del
motor en el cul la entrada es el voltaje aplicado y la
salida es la velocidad rotacional del eje, para esto es
= + +
Tabla 2.
1
Masa del motor
(gr)
450
(3)
La *J
Km Kt +Ra *b
Kt
La *J
Ra *J+La *b
(5)
La *J
3. MEDICION DE
PARAMETROS
(6)
Voltaje
armadura
(V)
5
8
10
12
15
18
20
22
24
Corriente
armadura
(A)
8,00E-02
9,00E-02
9,03E-02
1,00E-01
1,01E-01
1,10E-01
1,11E-01
1,20E-01
1,21E-01
Radio motor
(cm)
1.85
Dimetro del
motor (cm)
3.7
Vueltas/20seg
283
452
577
688
864
1055
1193
1296
1386
Inductancia
armadura
(mH)
3,75
4,02
3,83
3,78
3,79
3,79
3,78
4,03
3,75
(7)
As,
(8)
Donde el voltaje armadura, la corriente
armadura y es la velocidad angular. Usando los
datos de la tabla 1 se estima, promediando, que K=
3.84E-3 voltios/RPM.
Para estimar el momento de inercia se considera que
el motor es un cilindro, y calcular el momento de
inercia de un cilindro es muy fcil, y est dado por la
siguiente ecuacin:
=
2
2
(9)
24
21
5,25
3,84E-03
5,45E-02
5,45E-02
8.205E-05
5E-07
Kp=9
Ti=5
Td=0.001 N=10
4. SIMULACION EN MATLAB
Y DISEO DE CONTROL
PID.
El algoritmo de un control PID en tiempo continuo es
de la siguiente forma:
Figura 2. Respuesta al escaln del sistema con
control PID.
Por tanto los parmetro de Kp, Ti y Td del control
PID sern los que se usaran para controlar el motor.
(9)
En el dominio de S, el control PID se puede escribir
de la siguiente forma:
5. PID DIGITAL
Para poder realizar un control a nivel digital se debe
discretizar la ley de control, en nuestro caso se debe
discretizar la ley de control PID.
(10)
La ecuacin 10 representa un control PID de
posicion, pero tambin existe otrol control PID
denominado PID de velocidad, donde su estructura es
la siguiente:
= 1+
1
+
(11)
1+
(12)
(1 1 )
U(z)
Kp*T
+
=Kp+
+
E(z)
Ti(1-Z-1 ) 1 1
+
(13)
= +
=
Figura 4. PWM
6. SISTEMA DE LAZO
CERRADO.
Tal como se muestra en la figura 3, el sistema consta
de un pequeo motor DC, cuya seccin de potencia la
constituye un H-Bridge que permite, por un lado,
definir la direccin de giro y por otro, controlar la
velocidad con la aplicacin de una seal PWM. El
lazo de control es cerrado usando un encoder de
velocidad GP1A30R de la empresa SHARP colocado
en el eje del motor. El encoder cuenta con un disco
ranurado (100 ranuras en el disco)para producir as
pulsos cuya cantidad por unidad de tiempo es
proporcional a la velocidad de giro del motor.
8. IMPLEMENTACION
PSOC DESIGNER.
7. MODULACION DE ANCHO
DE PULSO.
Es el mecanismo utilizado para variar la velocidad de
un motor DC. Consiste en variar la anchura de pulso
o el dutycycle en un ciclo de PWM de manera de
EN
9.
10.
RESULTADOS
OBTENIDOS.
CONCLUSIONES.
11.
BIBLIOGRAFIA
ANEXOS.
#include <m8c.h>
// part specific constants and macros
#include <stdlib.h>
#include <string.h>
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#pragma interrupt_handler TIMER_ISR
voidmandarDATO(void);
voidconvertir(void);
voidLeyControl(void);
intcont=0;
unsignedintval_seg=0,val_min=0;
floatval_minf=0;
unsignedintconteos=0;
charsWriteBuffer[10];
charsTxBuffer[20];
charsRxBuffer[20];
float ref=800.0;
floatek=0.0,ek_1=0.0,ek_2=0.0;
floatuk=0.0,uk_1=0.0,uk_rescalado=0;
float a=9.27,b=9.18,c=0.090; //Para un periodo de muestreo de 100ms
unsigned int uk_int=0;
charsRxBufferLeyControl[15];
void main(void)
{
CMPPRG_HIGH_Start(CMPPRG_HIGH_HIGHPOWER);
CMPPRG_LOW_Start(CMPPRG_LOW_HIGHPOWER);
CONTARPULSOS_EnableInt();
/* Habilito interrupcion para el contador */
CONTARPULSOS_Start();
/* Inicio el contador
*/
TIMERms_Start();
TIMERms_EnableInt();
PWM8_1_EnableInt();
PWM8_1_Start();
M8C_EnableGInt;
//Start I2CHW user module
I2CHW_ESCLAVO_Start();
// Enable I2C Slave Operation
I2CHW_ESCLAVO_EnableSlave();
// Enable I2C Interrupt
I2CHW_ESCLAVO_EnableInt();
// Initialize I2C Read Buffer
I2CHW_ESCLAVO_InitRamRead(sRxBuffer,10);
// Initialize I2C Write Buffer
I2CHW_ESCLAVO_InitWrite(sWriteBuffer,10);
while(1)
{
mandarDATO();
}
}
void TIMER_ISR(void)
{
cont++;
if(cont==1)
{
CONTARPULSOS_Stop();