PROYECTO Ball Beam Control 2012

CONTROL DIGITAL Entrega Final Planta Control BALL BEAM Carlos Iván Mesa Manrique Código: 45121608 # Estudiante (Ingeni

Views 50 Downloads 0 File size 724KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

  • Author / Uploaded
  • CM35
Citation preview

CONTROL DIGITAL

Entrega Final Planta Control BALL BEAM Carlos Iván Mesa Manrique Código: 45121608 #

Estudiante (Ingeniería en Automatización, Universidad de La Salle) Bogotá D.C., Colombia

Resumen— El siguiente proyecto Ball Beam consiste en controlar la posición de una bola de acero inoxidable en una pista. Consiste básicamente de la variación de posición de la bola que es medida con la variación de resistencia sobre la pista que en este caso es alimentada a un voltaje y la pista que está conformada por un tornillo sin fin es la resistencia que varía, cuando esta bola cambia de posición. Lo anterior vendría a ser nuestro sensor que vendría a determinar la variación de posición vs voltaje o resistencia según varié. Por otro lado tenemos el servo que es el que vamos a controlar por medio de la variación angular que este me genere, en este caso un rango de -15° a 15°. Según la posición deseada para la bola o el cilindro en la pista, se realizara la respectiva instrumentación para la parte del sensor y su respuesta de control al motor para que cumpla con los objetivos del proyecto INTRODUCCION El sistema de control digital comprende un módulo de control, que es una alta precisión. La unidad se utiliza para servomotores o motores de corriente continua. IDIOMA programable con alto nivel de movimiento, el módulo de control inteligente integrado en una sola tarjeta de control de movimiento avanzado

y específico PLC funcionalidad. Idioma combinado con un movimiento de alto nivel, una plataforma para la programación rápida gráfica módulo de control de configuración, ajuste y movimiento representa un flexible, inteligente y fácil de implementar, la solución para una amplia gama de aplicaciones. Un fácil utilizar el interfaz de control muestra los resultados visuales gráficas de la madre y todos los datos de funcionamiento.

En tiempo real de la interfaz de control se proporciona en Matlab, Simulink haciendo conveniente implementar experimentos básicos y la aritmética de estudio.

OBJETIVO GENERAL  Diseñar e implementar un control para la planta del Ball Beam. Objetivos específicos  Identificar los materiales adecuados para estabilizar la planta.  Caracterizar e Identificar el método de diseño de la planta.  Elegir de una forma adecuada para el control del servomotor  Diseñar un control para mantener la planta en un punto estable.

1

CONTROL DIGITAL

MARCO TEÓRICO

Cilindro Acero Se diseñó una planta con el fin de controlar la posición de un cilindro de acero inoxidable mediante el ajuste del ángulo de giro de una viga la cual está sujeta al servo-motor el cual es el que va a girar (grados) para dar la posición de la bola.

Posición Deseada

Posición Actual

Para realizar dicha planta fue necesario hacer un estudio previo debido a los materiales necesarios para su fabricación. Los materiales que se utilizaron son: - Servo-motor - Fuente de 5V - Tornillo sin fin (hierro) - Una base de acrílico A continuación se explica el funcionamiento de cada uno de los materiales que se utilizaron

PD< PA

PD> PA

Girar Angulo Negativo

Girar Angulo Positivo

Servomotor Un Servo es un dispositivo pequeño que tiene un eje de rendimiento controlado. Este puede ser llevado a posiciones angulares específicas al enviar una señal codificada. Con tal de que una señal codificada exista en la línea de entrada, el servo mantendrá la posición angular del engranaje. Cuando la señala codificada cambia, la posición angular de los piñones cambia. En la práctica, se usan servos para posicionar superficies de control como el movimiento de palancas, pequeños ascensores y timones. Ellos también se usan en radio control, títeres, y por supuesto, en robots.

PD= PA

Posición De Bola Controlada Fig. 1 Diagrama de flujo del Ball and Beam 2. Determinar las variables de control Posición angular en el servomotor

DESARROLLO 1. Determinar el diagrama de flujo del proceso

3. Determinar las variables a manipular Cantidad de pulsos enviados al servomotor 2

CONTROL DIGITAL

4. Determinar los puntos de control Posición angular de -15 ° a + 15° y la velocidad de giro respectivo 5. Describir el principio físico básico siguiendo el modelo Funcionamiento El motor del servo tiene algunos circuitos de control y un potenciómetro (una resistencia variable) esta es conectada al eje central del servo motor. En la figura se puede observar al lado derecho del circuito. Este potenciómetro permite al circuito de control, supervisar el ángulo actual del servo motor. Si el eje está en el ángulo correcto, entonces el motor está apagado. Si el circuito chequea que el ángulo no es el correcto, el motor girará en la dirección adecuada hasta llegar al ángulo correcto. El eje del servo es capaz de llegar alrededor de los 180 grados. Normalmente, en algunos llega a los 210 grados, pero varía según el fabricante. Un servo normal se usa para controlar un movimiento angular de entre 0 y 180. La cantidad de voltaje aplicado al motor es proporcional a la distancia que éste necesita viajar. Así, si el eje necesita regresar una distancia grande, el motor regresará a toda velocidad. Si este necesita regresar sólo una pequeña cantidad, el motor correrá a una velocidad más lenta. A esto se le llama control proporcional. Características Generales Y Funcionamiento: Estos servos tienen un amplificador, servo motor, piñonearía de reducción y un potenciómetro de realimentación; todo incorporado en el mismo conjunto. Esto es un servo de posición (lo cual significa que uno le indica a qué posición debe ir), con un rango de

aproximadamente 180 grados. Ellos tienen tres cables de conexión eléctrica; Vcc, GND, y entrada de control. Para controlar un servo, usted le ordena un cierto ángulo, medido desde 0 grados. Usted le envía una serie de pulsos. En un tiempo ON de pulso indica el ángulo al que debe posicionarse; 1ms = 0 grados, 2.0ms = máx. grado (cerca de 120) y algún valor entre ellos da un ángulo de salida proporcional. Generalmente se considera que en 1.5ms está el "centro." Entre límites de 1 ~ 2ms son las recomendaciones de los fabricantes, usted normalmente puede usar un rango mayor de 1.5ms para obtener un ángulo mayor e incluso de 2ms para un ángulo de rendimiento de 180 grados o más. El factor limitante es el tope del potenciómetro y los límites mecánicos construidos en el servo. Un sonido de zumbido normalmente indica que usted está forzando por encima al servo, entonces debe disminuir un poco.

El tiempo de OFF en el servo no es crítico; puede estar alrededor de los 20ms. Hemos usado entre 10ms y 30 ms. Esto No tiene que ser de ésta manera, puede variar de un pulso a otro. Los pulsos que ocurren frecuentemente en el tiempo de OFF pueden interferir con el sincronismo interno del servo y podría escucharse un sonido de zumbido o alguna vibración en el eje. Si el espacio del pulso es mayor de 50ms (depende del fabricante), entonces el servo podría estar en modo SLEEP entre los pulsos. Entraría a funcionar en pasos pequeños y el rendimiento no sería el óptimo. Como se observa en la figura, la duración del pulso indica o dictamina el ángulo del eje (mostrado como un círculo verde con flecha). Nótese que las ilustraciones y los tiempos reales dependen del fabricante de motor. El principio, sin embargo, es el mismo. 3

CONTROL DIGITAL

El cable de control se usa para comunicar el ángulo. El ángulo está determinado por la duración de un pulso que se aplica al alambre de control. A esto se le llama PCM Modulación codificada de Pulsos. El servo espera ver un pulso cada 20 milisegundos (.02 segundos). La longitud del pulso determinará los giros de motor.

tomar esa definición para nuestro proceso, la aplicación q tiene el tornillo es darle fricción a la bola metálica para poder tener un menor grado de error.

Un pulso de 1.5 ms., por ejemplo, hará que el motor se torne a la posición de 90 grados (llamado la posición neutra). Si el pulso es menor de 1.5 ms., entonces el motor se acercará a los 0 grados. Si el pulso es mayor de 1.5ms, el eje se acercará a los 180 grados.

Selección Del Sensor:

Base de Madera: es el elemento que nos permite unir todos los materiales que se utilizaran

Debido a recursos del proyecto, se decidió seleccionar el sensor ultrasónico del laboratorio.

La descripción realizada anteriormente como se ha podido observar son servomotores de corriente continua usados en robótica doméstica fundamentalmente. Fig. 3 Sensor Ultrasónico V-15

UB500-18/GM75 I

Indicaciones de manejo LED amarillo: objeto en rango evaluación LED rojo: Objeto no detectado Para la etapa de sensórica, se ha escogido un sensor ultrasónico Pepperl + Fuchs con las siguientes características: Fig. 2 Características técnicas del servomotor Fuente: es el dispositivo que provee la electricidad con que se alimentan los diferentes dispositivos electrónicos Tornillo sin fin: es una disposición que transmite el movimiento entre ejes que están en ángulo recto, en este caso no vamos a

Sensor ultrasónico Intervalo de detección: 50mm a 500mm Frecuencia: 380 KHz Ángulo de reflejo: 60° Rango de temperatura:-25 °C a +70 °C Entrada del sensor: Ultrasónico Tensión de alimentación máx.:30V Tiempo de respuesta: 50ms 4

CONTROL DIGITAL

Función de Transferencia Sensor Para determinar la función de transferencia del sensor fue necesario poner en funcionamiento el sensor para así poder obtener el valor de la corriente con respecto a la distancia a la se encuentra el objeto. Los valores obtenidos fueron los siguientes: Corriente Distancia (mA) (cm) 4,5 10 6,7 15 9,2 20 11,6 25 13,5 30 15,7 35 Tabla 1. Corriente Vs Distancia del sensor

4,5

6,7 9,2 11,6 13,5 15,7

Fig. 4 Respuesta en Excel de los datos de la tabla 1. La función de transferencia del sensor es la ecuación de la recta anterior que va a ser igual a: y 2  y1 m x 2  x1 15  10 m  2.27 6.7  4.5 y  y 0  m ( x  x 0)

H (s)  22.48 Luego se analizó la salida del sensor ultrasónico ante la variación del cilindro, para poder obtener su equivalencia en distancia que es lo que se desea controlar mediante el punto de referencia a seleccionar Distancia cm

Voltaje

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

0.996 1.089 1.270 1.439 1.626 1.788 1.910 2.075 2.271 2.399 2.562 2.744 2.914 3.061 3.187 3.337 3.517 3.645 3.796 3.914 4.082 4.237 4.356 4.566 4.808

Tabla 2. Salida del sensor ultrasonico De la tabla anterior podemos seleccionar nuestro Set-point midiendo desde un multímetro y comprobar el diseño del controlador.

y  10  2,27( x  4,5) y  2.27 x  20.21 y  22.48 x 5

CONTROL DIGITAL

Montaje actual Control Digital PID Si se refiere a cualquier problema del control PID para los sistemas continuos, la función de transferencia PID se expresó como:

Como habrá notado la función de transferencia anterior fue escrito en términos de s. Para el control PID digital, se utiliza la siguiente función de transferencia en términos de z.

Fig. 4 Fig. 4 Explicación del prototipo Cuando el motor empieza a girar en grados la leva se mueve y hace que el sistema de las barrar empiecen a subir o bajar pendiendo del movimiento del servo-motor, además el movimiento de las barras como están polarizada, cada vez que se mueven su voltaje aumenta o disminuye debido al movimiento del cilindro ya que esta permite la unión de las dos barras. 6. MODELO MATEMATICO Para el modelo matemático del Ball Beam tenemos la siguiente ecuación ya que se implementara un control en lazo abierto

R( s ) mgd 1   2  ( s)  J  s L 2  m  R 

Función de transferencia discreta Lo primero que debe hacer es convertir lo anterior función de transferencia del sistema continuo a una función de transferencia discreta equivalente. Para ello, vamos a utilizar la función de Matlab c2d. Para utilizar c2d, tenemos que especificar tres argumentos: el sistema, el tiempo de muestreo (Ts), y el 'método'. Usted ya debe estar familiarizado con la forma de crear un sistema de numerador y denominador matrices. El tiempo de muestreo debe ser menor que 1 / (30 * BW) seg, donde BW es el ancho de banda de bucle cerrado. El método que se utilizará es el mantenedor de orden cero ('zoh'). Suponiendo que la frecuencia de ancho de banda de bucle cerrado es de alrededor de 1 rad / seg, dejar que el tiempo de muestreo 1/50 seg / muestra. Ahora estamos listos para utilizar c2d. Introduzca los siguientes comandos en un archivo-m. Modelamiento En Matlab: m = 0.111; R = 0.015;

6

CONTROL DIGITAL g L d J

= = = =

-9.8; 1.0; 0.03; 9.99e-6;

K = (m*g*d)/(L*(J/R^2+m)); %simplifies input num = [-K]; den = [1 0 0]; ball = tf(num,den); Ts = 1/50; ball_d = c2d(ball,Ts,'zoh')

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0

0

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

Planta Del Ball Beam Transfer function: 4.2e-05 z + 4.2e-05 ------------------z^2 - 2 z + 1 Sampling time: 0.02

Control Proporcional Ahora vamos a añadir de control proporcional (Kp) para el sistema y obtener la respuesta del sistema de bucle cerrado. Por ahora vamos Kp igual a 100 y ver qué pasa con la respuesta. Introduzca los siguientes comandos en un archivo-m nuevo y ejecútelo en la ventana de comandos. numDz = 0.0001*[0.42 0.42]; denDz = [1 -2 1]; Ts = 1/50; ball_d = tf(numDz,denDz,Ts); [x,t] = step(0.25*ball_d,5); stairs(t,x)

Fig. 7 Respuesta del Control Proporcional Control Proporcional-Derivativo Ahora agregaremos un término derivativo al controlador. Manteniendo la ganancia proporcional (Kp) igual a 100, y dejar que la ganancia derivativa (Kd) igual a 10. Copie el código siguiente en un nuevo archivo-m y ejecútelo para ver la respuesta del sistema.

Código En Matlab: numDz = 0.0001*[0.42 0.42]; denDz = [1 -2 1]; Ts = 1/50; ball_d = tf(numDz,denDz,Ts); Kp=100; Kd=10; Ki=0; numpd = [Kp+Ki+Kd -(Kp+2*Kd) Kd]; denpd = [1 -1 0]; contr = tf(numpd,denpd,Ts); sys_cl =

feedback(contr*ball_d,22.48); [x,t] = step(0.25*sys_cl,5); stairs(t,x)

7

CONTROL DIGITAL % z^2 - 2 z + 1 % % Sampling time: 0.02 numDz = [0.000126 0.000126]; denDz = [1 -2 1]; ball_d = tf(numDz,denDz,Ts); hold on Kp=1000; sys_cl = feedback(Kp*ball_d,22.48)

0.18 0.16 0.14 0.12 0.1 0.08 0.06

% SISTEMA SIN CONTROL [x,t] = step(0.25*sys_cl,0.5); stairs(t,x)

0.04 0.02 0

0

0.5

1

1.5

2

Fig. 8 Respuesta Derivativo

2.5

3

3.5

Control

4

4.5

5

Proporcional

Simulación Del Modelamiento En Matlab: A continuación mostramos la simulación mediante Matlab, aplicamos el control PID

Kd=10; numpd = [Kp+Kd -(Kp+2*Kd) Kd]; denpd = [1 1 0]; contr = tf(numpd,denpd,Ts); sys_cl = feedback(contr*ball_d,22.48); %SISTEMA CON CONTROL [x,t] = step(0.25*sys_cl,5); stairs(t,x)

Código En Matlab: clc close all clear all

Aquí mostramos un ejemplo para obtener la constante Kbb obtenida en el paper para la cual es de 0.63 %% EJEMPLO % m = 0.111; % MASA DE LA PELOTA 0.11 Kg % R = 0.015; % RADIO DE LA BOLA 0.015 m % g = -9.8; %BRAZO DE PALANCA ACOPLADA % L = 1.0; %LOGITUD DE LA VIGA % d = 0.03; %BRAZO DE PALANCA % J = 9.99e-6; %MOMENTO DE INERCIA DE LA PELOTA % % % K = (m*g*d)/(L*(J/R^2+m)) %K=0.21 simplifies input %% K DE LA PLANTA OBTUBIDO EN EL PAPER K=0.63 num = [-K]; den = [1 0 0]; ball = tf(num,den) % hold on Ts = 1/50; ball_d = c2d(ball,Ts,'zoh') % Transfer function: % -0.000126 z - 0.000126 % ----------------------

Control proporcional Ahora vamos a añadir de control proporcional (Kp) para el sistema y obtener la respuesta del sistema de bucle cerrado. Por ahora vamos Kp igual a 100 y ver qué pasa con la respuesta. Introduzca los siguientes comandos en un archivo-m nuevo y ejecútelo en la ventana de comandos. Código En Matlab: numDz = [0.000126 0.000126]; denDz = [1 -2 1]; Ts = 1/50; ball_d = tf(numDz,denDz,Ts); [x,t] = step(0.25*ball_d,5); stairs(t,x)

8

CONTROL DIGITAL

1.5

0.25

1

0.2

0.5

0.15

0

0.1

0.05

-0.5

-1

0

0

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

Fig. 9 Sistema Sin Control

0

1

2

3

4

5

6

7

8

9

10

Fig. 10 Sistema Con Control 1.5

Proporcional-Derivativo Ahora agregaremos un término derivativo al controlador. Mantener la ganancia proporcional (Kp) igual a 100, y dejar que la ganancia derivativa (Kd) igual a 10. El código siguiente muestra la respuesta del sistema.

1

0.5

0

Código En Matlab: numDz = [0.000126 0.000126]; denDz = [1 -2 1]; Ts = 1/50; ball_d = tf(numDz,denDz,Ts); Kp=100; Kd=10; numpd = [Kp+Kd -(Kp+2*Kd) Kd]; denpd = [1 1 0]; contr = tf(numpd,denpd,Ts); sys_cl =

feedback(contr*ball_d,22.48); [x,t] = step(0.25*sys_cl,5); stairs(t,x)

-0.5

-1

0

1

2

3

4

5

6

7

8

9

10

Fig. 11 Sistema Con Control con Kp=100, Kd=10 1.5

1

0.5

0

-0.5

-1

0

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

Fig. 12 Sistema Con Control con Kp=1000, Kd=10 9

CONTROL DIGITAL

Identificación De Planta Para la planta sabemos que nuestra entrada es la variación de la ganancia del servomotor en ms VS la variación de ganancia del sensor en voltios. Como se muestra a continuación las ganancias Rango del servomotor: (1.25ms-175ms) Rango del sensor: (0.996V-4.9V) A continuación mostramos los datos adquiridos de la planta de los cuales se obtuvieron 105 muestras a partir de un tiempo de muestreo de 0.2 seg, como se muestra a continuación.

Muestras 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

SERVOMOTOR Pulsos en Milisegundos Entrada 0.001667 0.001667 0.001667 0.001667 0.001667 0.001667 0.001667 0.001667 0.001667 0.001667 0.001667 0.001667 0.001667 0.001667 0.001667 0.001667 0.001667 0.001667 0.001332 0.001332 0.001332 0.001332 0.001332 0.001332 0.001332 0.001332 0.001332 0.001332

SENSOR Voltaje Salida 0,905486 0,958750 0,980006 1.012234 1.245866 1.545178 1.721005 2.258974 2.852105 3.646586 4.164325 4.725468 4.521501 4.684635 4.758923 4.806380 4.854896 4.843230 4.800541 4.756466 4.358769 4.045623 3.830450 3.503453 3.020545 2.836469 2.685246 2.285468

29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

0.001332 0.001332 0.001332 0.001332 0.001332 0.001332 0.001332 0.001332 0.001332 0.001332 0.001332 0.001332 0.001584 0.001584 0.001584 0.001584 0.001584 0.001584 0.001584 0.001584 0.001584 0.001584 0.001584 0.001584 0.001584 0.001584 0.001584 0.001584 0.001584 0.001584 0.001415 0.001415 0.001415 0.001415 0.001415 0.001415 0.001415 0.001415 0.001415 0.001415 0.001415 0.001415 0.001415 0.001415 0.001415 0.001415 0.001750 0.001750 0.001750 0.001750

1.648568 1.246285 1.454658 1.135482 0.934765 1.263468 1.156542 0.984321 0.964525 0.949162 0.911683 0.916489 0.926543 1.268607 1.550648 1.804506 2.644023 3.015408 3.650520 4.115201 4.730540 4.501540 4.805410 4.602100 4.671220 4.821584 4.700542 4.824827 4.813483 4.806847 4.700545 4.503968 4.241709 3.564218 3.004505 2.412683 1.902567 1.405648 1.305315 0.995443 1.254632 1.107890 0.961200 1.054525 0.924585 0.980089 1.308050 1.915432 2.821215 3.845252

10

CONTROL DIGITAL

79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105

0.001750 0.001750 0.001750 0.001750 0.001750 0.001750 0.001750 0.001750 0.001750 0.001750 0.001250 0.001250 0.001250 0.001250 0.001250 0.001250 0.001250 0.001250 0.001250 0.001250 0.001250 0.001250 0.001250 0.001250 0.001250 0.001250 0.001250

4.655215 4.821964 4.553155 4.892482 4.720905 4.620054 4.811938 4.800553 4.823195 4.829245 4.654254 4.025097 3.534248 2.890809 2.005891 1.412845 1.121248 1.354668 0.905462 1.101234 1.260015 0.921544 0.950564 0.985266 0.924652 0.902120 0.900645

Graficamos los datos adquiridos

Tabla 3. Variación de la ganancia del servomotor en ms VS la variación de ganancia del sensor De la anterior tabla de datos observamos que para la variación en la entrada, tenemos que: Fig. 13 Respuesta en Ident de Matlab -

125 ms es 45º 141.6 ms es 30º 133.3 ms es 15º 150 ms es 0º 166.6 ms es -15º 158.3 ms es -30º 175 ms es -45º

Procesamos diferentes diseños

Entonces desde Ident de Matlab, nos basamos en los datos que obtuvimos y los importamos con un Tm de 0.2 seg igual que como se adquirió las muestras Fig. 14 Simulación mediante Ident de Matlab 11

CONTROL DIGITAL

Analizamos los datos procesados de los diseños para la planta del sistema

Fig. 15 Respuesta simulaciones.

de

las

diferentes

Seleccionamos la mejor respuesta ante los datos adquiridos que fue de 77.22% con un diseño de un Zero y dos polos

Fig. 17 Modela de la función de Transferencia Resultados de la planta

Analizamos la respuesta ante una entrada escalón de nuestra planta escogida

G ( s )  Kp 

1  Tz * s  exp( Td * s ) (1  Tp1)(1  Tp2) Kp  1724.9

Tp1  2.3669 Tp2  2.349 Td  4.5953e  9 Tz  34.305 En Matlab simplificamos y terminamos de calcular nuestra planta en términos de z.

Código en Matlab: Fig. 16 Respuesta ideal del 77% Luego observamos nuestra planta con sus constantes calculadas a reemplazar

clc clear all close all s=tf('s') Kp = 1724.9 Tp1 = 2.3669 Tp2 = 2.349 Td = 0.0000000045953 Tz = 34.305 exponencial=(-Td*s) G= exponencial*((Kp * (1+Tz*s))/( s*(1+Tp1*s)*(1+Tp2*s))) zpk(G) step(G) figure

12

CONTROL DIGITAL s=tf('s') H=22.48 feedback(G,H) step(feedback(G,H)) T=0.2 ball_d=c2d(G,T) Transfer function in s: 4.8907e-005 s (s+0.02915) -------------------------s (s+0.4257) (s+0.4225) Feedback in s: 0.0002719 s^2 - 7.926e-006 s ----------------------------5.56 s^3 + 4.71 s^2 + s T = 0.0200

T=0.2; %PID numpd = [Kp+Kd+ki -(Kp+2*Kd) Kd]; denpd = [1 1 0]; contr = tf(numpd,denpd,Ts) sys_cl = feedback(contr*ball_d,22.45); [x,t] = step(0.25*sys_cl,5); stairs(t,x)

Cálculos Del PI(Z) Para el Micro

Pd  Kp  Kds z 1 Tz Kp(Tz)  Kdz  Kd Pd ( z )  Tz ( KpT  Kd ) z  Kd  z 1   1  Pd ( z )  Tz z 

Pd ( z )  Kp  Kd

KpT  Kd  Kdz 1 T

Planta Identificada En Términos De Z

Pd ( z ) 

Transfer function in z: 9.0129e-006 (z-0.9942) ----------------------(z-0.919) (z-0.9184)

U ( z)  Pd ( z ) E( z) ( KpT  Kd ) E (k )  Kd  E (k  1) U (k )  T E(k )  setpo int  sensor  error E(k 1)  erroranterior

Sampling time: 0.2

Código en Matlab: Cálculos del controlador Cálculos Del PID(Z) Para el Micro

Código en Matlab: clc close all numDz = 0.0001*[0.42 0.42]; denDz = [1 -2 1]; Ts = 1/50; ball_d = tf(numDz,denDz,Ts); kp=0; kd=0; ki=0;

clc close all numDz = 0.0001*[0.42 0.42]; denDz = [1 -2 1]; Ts = 1/50; ball_d = tf(numDz,denDz,Ts); kp=0; kd=0; ki=0; T=0.2; %PI num = [2*kp+T*ki -2*kp+T*ki]; den = [2 -2]; con = tf(num,den,Ts) sys_clll = feedback(con*ball_d,22.48); [x,t] = step(0.25*sys_cl,5); [y,t] = step(0.25*sys_cll,5); [z,t] = step(0.25*sys_clll,5); stairs(t,z)

13

CONTROL DIGITAL

Cálculos Del PI(Z) Para el Micro Ki Pi  Kp  s TKi  z  1  Pi ( z )  Kp    2  z 1  Kp(2 z  2)  TKi( z  1) Pi ( z )  2z  2 (2 Kp  TKi) z  2 Kp  TKi  z 1   1  Pi ( z )  Tz z 

Pi ( z ) 

(2 Kp  TKi)  2 Kpz 1  TKiz 1 2  2 z 1

U ( z)  Pi ( z ) E( z) U (k )  U (k 1)  E(k )(2kp  Tki)  2 pkE(k 1)  TkiE(k 1)

U (k ) 

(2kp  Tki) E (k )  (Tki  2 Kp) E (k  1)  2U (k  1) 2

E(k )  setpo int  sensor  error E(k 1)  erroranterior Código en Matlab:

clc close all numDz = 0.0001*[0.42 0.42]; denDz = [1 -2 1]; Ts = 1/50; ball_d = tf(numDz,denDz,Ts); kp=0; kd=0; ki=0; T=0.2; %PD nump = [Kp*T+Kd -Kd]; denp = [T 0]; cont = tf(nump,denp,Ts) sys_cll = feedback(cont*ball_d,22.48); [y,t] = step(0.25*sys_cll,5); stairs(t,y)

Código Del Microcontrolador pic #include #device adc=10 #fuses XT,NOWDT,NOPROTECT #use delay(clock=4000000)

void main() { int16 sen=0,set=330;//de=0,ea=0,pid=0,lin=326,ls u=334; signed long e0=0, e1=0, e2=0, u=0, u1=0, q0=0, q1=0, q2=0, kp=0, ki=0, kd=0; double t=0; setup_adc_ports(ALL_ANALOG); setup_adc(ADC_CLOCK_INTERNAL); // DEFINICION DE CONSTANTES KP KI KD kp=0; ki=0; kd=0; t=0.02; for (;;) { //sensor set_adc_channel(0); delay_us(20); sen=read_adc(); //setpoint set_adc_channel(1); delay_us(20); set=read_adc(); //CALCULO DEL PID ECUACION EN DIFERENCIAS e0=set-sen; q0=(t*t*ki+kp*t+kd)/t; q1=(t*kp-2*kd)/t; q2=(kd/t); u=u1+q0*e0-q1*e1+q2*e2; u1=u; e2=e1; e1=e0; //CALCULO DEL PD ECUACION EN DIFERENCIAS e0=set-sen; u=(kp*t+kd)*e0-kd*e1; e1=e0; //CALCULO DEL PI ECUACION EN DIFERENCIAS e0=set-sen; u=(2*kp+t*ki)*e0+(t*ki-2*kp)*e1+2*u1; u1=u; e1=e0; //Rango de la salida del PID

14

CONTROL DIGITAL if(u