P. 1
CONTROL MANUAL Y AUTOMÁTICO DE PÉNDULO INVERTIDO

CONTROL MANUAL Y AUTOMÁTICO DE PÉNDULO INVERTIDO

|Views: 19|Likes:
Publicado porOskr Maldonado

More info:

Published by: Oskr Maldonado on Mar 23, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

01/10/2014

pdf

text

original

% CONTROL MANUAL Y AUTOMÁTICO DE PÉNDULO INVERTIDO % % Este script ejecuta la simulación de un péndulo que puede ser controlado manualmente

(accionando % una barra deslizante o "slider") o de forma automática, mediante lazos de control PID. El control % automático incorpora un doble lazo incluyendo un lazo con control del ángulo del péndulo (para que se sitúe en % posición vertical) y otro lazo más lento para hacer que la posición de la base se sitúe en un punto dado % en el estado de equilibrio. % % El script puede ser utilizado tanto como un "equipo de prácticas", en el que pueden % estudiarse diversos conceptos de control, así como servir de base para que el profesor (o el % alumno) elaboren otros ejemplos interactivos totalmente distintos mediante el procedimiento % de "cortar y pegar". % % % Fecha: 2006-11-02 % Autor: Ignacio Díaz % Area de Ingeniería de Sistemas y Automática % Universidad de Oviedo

clear; close all; clc; disp('Instrucciones:'); disp('- Pulsar ''0'' para desactivar el sistema de control'); disp('- Pulsar otra tecla para restaurar el sistema de control'); disp(' '); disp('Control manual: actuar sobre la barra deslizante para modificar la base del péndulo.'); pause(2);

% l m J B g

PARÁMETROS DEL PÉNDULO = 2; % Longitud del péndulo = 1; % Masa del péndulo = m*l^2; % Momento de inercia referido al eje = 1; % Coeficiente de fricción = 10; % Aceleración de la gravedad

0]. k = k + 1. Ki = 100.'Value').Tm.0001/(0. Cth = c2d(Kp + Ki/s + Kd*s/(0.700 700]). a0 = [0.'tustin'). pos = 0.% ESTADO INICIAL DEL PÉNDULO x = [pi-0. .'pos'.Tm.'min'. % Período de muestreo e0 = zeros(2. Kd = .0].[20 20 680 20].01*s+1). set(f.1. h = uicontrol('style'. x0 = [0. % Valor inicial de la posición de la base del péndulo k = 2. % Para que se vea el efecto del control.-4.4).'slider'.0001/s + s*0.1. s = tf('s'). % Empezamos en k=2 para tener acceso al menos a dos muestras anteriores while 1.'pos'. empezamos % con el péndulo casi vertical (theta = pi +/"algo") % DEFINICIÓN DE UN "SLIDER" PARA CONTROLAR MANUALMENTE EL PÉNDULO f = figure(1). % BUFFER CON LA POSICIÓN (X(3) TIENE LA POSICIÓN ACTUAL) % X(k) = get(h.04 + 0. xmin = -2.01. xmax = +2.200. ep0 = zeros(2.'tustin').01*s+1). % PARÁMETROS DEL CONTROL PID DE LA POSICIÓN DE LA BASE Cpos = c2d(.[200. y = x(1). % Condiciones iniciales del control de ángulo % Condiciones iniciales del control de posición % Condiciones iniciales del péndulo % PARÁMETROS DEL CONTROL PID DEL ÁNGULO Kp = 10.'max'.1).0]. Tm = 0.1).

e0).'value'). e(k) = e(k) .x0).X(k).pos. porque el movimiento del % objeto "slider" con un ratón se produce a saltos.[1 0 0]. salida th = y.a0).e(k).9]).poly([.2*pi)-pi. A(k) = a.e(k) = pi-y. otherwise [pos. % RESTRINGIMOS EL VALOR DEL ERROR AL INTERVALO [-pi. % CONTROL DE LA POSICIÓN DE LA BASE DEL PÉNDULO ep = 0-pos. [dpos.ep0] = filter(Cpos. % Asignamos la entrada % Ecuación de x(1) = x(1) + x(2) = x(2) + % Ecuación de y = x(1). dando lugar a segundas % derivadas muy elevadas) [X(k). switch tecla case '0' pos = get(h.num{1}.Cpos.num{1}.ep0). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ECUACIONES EN ESPACIO DE ESTADOS (NO LINEALES) DEL PÉNDULO u = -a.den{1}.x0] = filter(.dpos.a0] = filter((1/Tm^2)*[1 -2 1]. % SELECCIÓN DE CONTROL MANUAL / CONTROL AUTOMÁTICO tecla = get(f.e0] = filter(Cth. end % Suavizado de la aceleración (muy conveniente.01.'currentchar'). [a. Tm*(1/J*(-B*x(2)-m*g*l*sin(x(1))+m*u*l*cos(x(1)))).Cth.9 .pi] e(k) = mod(e(k)+pi. estados Tm*x(2). % Asignamos la salida .den{1}.ep.

plot(X(k).0.1.'. xmax = xmax + 0. % Refresco de la imagen drawnow. axis([xmin-3 xmax+3 -5 5]).'.').imag(p2).p2]).%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % REPRESENTACIÓN GRÁFICA DE LA SIMULACIÓN figure(1).1.40).imag([p1. plot(real(p2). elseif X(k)<xmin+1 xmin = xmin . end grid on. hold on.1. p1 = X(k).1.'.'markersize'.0. hold off. p2 = X(k)+l*exp(j*(th-pi/2)). % Sugerencia: pueden dibujarse también otras flechas indicando en tiempo real las fuerzas reales % o de inercia que actúan en cada elemento del sistema % Centrado automático de la perspectiva sobre el objeto de control if X(k)>xmax-1 xmin = xmin + 0.0.p2])). line(real([p1. xmax = xmax . end .

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->