Control Motor Dc
Enviado por andrexx9 • 13 de Noviembre de 2011 • 2.068 Palabras (9 Páginas) • 901 Visitas
DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE CONTROL DIGITAL DE
POSICIÓN PARA UN MOTOR DC
OBJETIVO GENERAL
Diseñar e implementar un sistema de control digital de
posición para un motor DC, utilizando el microcontrolador
PIC16F877A.
OBJETIVOS ESPECÍFICOS
• Reconocimiento y Análisis del sistema.
• Establecer el modelo matemático del sistema.
• Simular el sistema modelado diseñando el controlador
digital para una respuesta específica (escoger
overshoot y tiempo de asentamiento).
• Implementación del sistema.
DESCRIPCION
Uno de los objetivos para el proyecto que se quiere
realizar es lograr posicionar con precisión el motor D.C,
para que así, el error de estado estacionario de la
posición del motor sea cero; además se desea que el error
de estado estacionario debido a una perturbación también
sea nulo.
Otro requerimiento es que el motor alcance muy rápidamente
su posición final. En este caso, se desea disminuir el
tiempo de establecimiento para que sea mínimo y tenga un
sobrepaso considerable.
Para lograr esto, dispondremos de un microcontrolador PIC
que incorpora todas las funciones necesarias para realizar
el diseño y control.
La eficiencia del sistema va ligada a los parámetros de la
planta, debido a que nuestro sistema es retroalimentado, es
necesario diseñar un controlador digital de tal forma que
el sistema se estabilice en la posición deseada y en el
menor tiempo posible.
La retroalimentación se hará por medio de un encoder
incremental acoplado al eje del motor, el cual enviará
constantemente códigos digitales al microcontrolador
indicándole su posición.
Ante estos códigos el microcontrolador tomará una desición
relacionando la posición actual con el Set Point o valor
deseado, enviando pulsos digitales a un integrado (L293B)
para hacer girar el motor en el sentido indicado.
MODELO MATEMATICO DE LA PLANTA
Considerando que nuestro motor tiene un eje rígido, por
medio de sus ecuaciones eléctricas y mecánicas, al
relacionarlas, podemos obtener el modelo del motor en el
cuál la entrada es el voltaje aplicado y la salida es la
velocidad rotacional del eje, para esto es necesario
conocer los diferentes parámetros de los que se encuentra
compuesto:
• momento de inercia del rotor J.
• coeficiente de amortiguamiento del sistema mecánico
(b).
• constante de fuerza electromotriz K=Ke=Kt.
• resistencia eléctrica (R).
• inductancia eléctrica (L).
• entrada (V): Fuente de Tensión.
• salida (W): velocidad rotacional del eje.
Las ecuaciones eléctricas:
-V+RI+LdI+e=0
Dt
Ecuaciones mecánicas:
Jdw + bw=KI
dt
Relacionando ambas ecuaciones y expresándolas en el dominio
s:
Como e=Kw
-V+RI(s)+SLI(s)+Kw(s)=0
JSw(s)+bw(s)=KI(s)
Obtenemos la función de transferencia de la velocidad del
rotor respecto al voltaje aplicado:
W = ___________K____________
V (JS+b)(LS+R) + K^2
Como nos interesa es la relación del ángulo que se desplaza
el rotor con respecto al voltaje aplicado integramos a
ambos lados de la ecuación multiplicando por 1/s:
θ / V = K /( S * (( J * S + b ) * ( LS + R ) + K 2 ))
Obtenido el modelo matemático del motor podemos diseñar
nuestro controlador PID, pero para esto es necesario
conocer el valor de los parámetros J, K, b, R, L del
sistema los cuales desconocemos.
La solución que proponemos para la obtención de los
parámetros del sistema, consiste en acoplar los ejes de
dos motores con similares características. Uno actuaría
como motor y el otro como generador. Esto se realizaría con
el fin de obtener por medio de una tarjeta de adquisición
de datos (DAQ) y Matlab, dos señales que serían el voltaje
aplicado al motor uno y el voltaje generado por el motor
dos, y por medio de la toolbox de Matlab ident relacionar
estas dos señales para obtener un modelo aproximado al del
motor.
Adquisición de las señales de entrada y salida
Para la adquisición de los voltajes de excitación y
generado, se uso según el criterio de estabilidad de
Nyquist, una frecuencia de muestreo de 2000Hz debido a que
el sistema trabaja con frecuencias bajas. También se
definió un tiempo de adquisición de 10 segundos suficientes
para poder observar el comportamiento del sistema.
Durante el tiempo de adquisición voltaje de entrada o de
excitación del motor se varío de forma aleatoria en un
rango entre 0V y 10V. Debido a que los datos adquiridos
presentaban alteración por ruido con una frecuencia
aproximadamente de 30Hz, se implementó un filtro Butter
pasa bajos de orden 10 y frecuencia de corte de 60Hz con
el fin de eliminar este ruido y así poder apreciar las
señales originales.
Señal de salida con ruido Señal de salida filtrada
A continuación se puede observar el algoritmo empleado para
la adquisición de datos por Matlab:
clc
clear
close all
ai=analoginput('nidaq',1);
% Canal 1 voltaje de excitación
% Canal 2 voltaje generado
chans=addchannel(ai,1:2);
% Frecuencia de muestreo
fs=2000;
set(ai,'SampleRate',fs);
% Tiempo que dura la adquisición
duration=10;
set(ai,'SamplesPerTrigger',fs*duration);
% Rango de entrada adquisición 0-10V
set(chans,'InputRange',[0 10]);
disp('Pulse ENTER para dar inicio de adquisición')
pause
% Inicio adquisición
start(ai)
[d1,t1]=getdata(ai);
u=d1(:,1);
y=d1(:,2);
% Gráfica de acción de control
figure(1)
plot(t1,u)
xlabel('Tiempo(seg)');
title('voltaje de excitación');
grid
%Gráfica del voltaje generado
figure(2)
plot(t1,y)
xlabel('Tiempo(seg)');
title('voltaje generado');
grid
%filtro pasabajos
[B,A]=butter(10,0.03,'low');
%filtramos señal de entada
H1=filter(B,A,u);
figure(3)
plot(H1)
...