Sie sind auf Seite 1von 7

Instituto Tecnolgico de Morelia

Asignatura: CONTROL ll
Profesor: Vctor Manuel Ypez Garca
Control PID motor CC
Alumno: Roberto Rodrguez Valencia
Numero de control: 14121352

A 31 de mayo del 2017 Morelia Michoacn.


INTRODUCCION
El control en cualquier tipo de planta tiene una gran importancia, porque como
sabemos en nuestro entorno real nada tiene un comportamiento lineal eso solo es
una idealizacin matemtica para simplificar las matemticas que puede conllevar
eso. Dado esto no podemos disear una maquina lineal porque la carga o el
trabajo que esta lleve a cabo siempre ser diferente. De aqu partimos con nuestro
ejemplo prctico que es el control de un motor de corriente continua, actualmente
estos motores son los ms usados para trabajos de pequeas potencias, pero
recordemos que estos trabajos podrn ser de pequeas potencias ms no de
pequea importancia, de nada nos sirve tener la parte de potencia trabajando si
por ejemplo la direccin de esta falla y esa direccin es nuestro trabajo de baja
potencia.
Tambin un buen control ayuda a aumentar la eficiencia de nuestro sistema y sus
tiempos de respuesta, ya que al llegar con ms velocidad a su rea de trabajo
gastara menos energa lo cual es nuestro objetivo.

DESARROLLO
Para el desarrollo de la prctica se hizo uso del motor de CC con el que cuenta el
kid de instrumentacin del laboratorio de ingeniera elctrica, as como los dems
elementos del kid para la parte de instrumentacin, para la parte de control se
utiliz un Arduino Mega con el procesador Atmel 2560 y el software de
programacin propio de arduino.
Se comenz haciendo la instrumentacin requerida para el acoplamiento de las
seales entre nuestros 2 dispositivos, ya que, nuestro controlador maneja seales
de amplitud mxima de 5Vcc y lecturas analgicas de 0 a 5Vcc discretadas a 10
bits. Y por el otro lado el kid de instrumentacin maneja seales de 12Vcc
internamente, dado esto ya que tenemos 2 acoplamientos entre nuestros
dispositivos, uno para la transmisin de la seal al motor y el otro para la
retroalimentacin al microcontrolador.
Al ser solo establecer lmites en niveles de voltaje esto se realiz de una manera
muy emprica, el procedimiento fue dar 0Vcc al motor y verificar que el nivel de
voltaje de la salida fuera de igual manera 0Vcc, si esto no se cumpla ajustbamos
nuestro compensador ya sea de ganancia o de offset hasta conseguirlo.
El siguiente paso fue alimentar nuestro motor con 12Vcc que esto establecera el
lmite mximo de voltaje generado y verificar que nuestra salida sea de 5Vcc, de
igual manera si esto no se cumpla deberamos hacer que se cumpla con ayuda
del compensador, verificado el lmite superior regresbamos a inyectar 0Vcc para
verificar que todo estuviera en orden.
El procedimiento para acoplar la seal de control de salida del microcontrolador
fue el mismo, pero acoplamos de 0Vcc a 0Vcc (aunque suene absurdo esto puede
no cumplirse) y de 5Vcc de la salida del micro a 12Vcc para alimentar la etapa de
potencia del kid.
Finalizado esto los valores de los compensadores fueron
Compensado de entrada al kid:
OFFSET = 0 , Ganancia = +2.4

Compensador de salida al microcontrolador:


OFFSET = 0 , Ganancia = +0.41666666

Y el cdigo que es cargado en el microcontrolador est estructurado de la


siguiente manera.
// Variables utilizadas en el controlador PID Modificado.
unsigned long lastTime=0;
double retro, salida, ref;
double errSum, lastErr=0;
double kp, ki, kd;
int h = 10; // Fijamos el tiempo de muestreo en 0.01 segundos.
int motor=9; //variables fisicas
int dir=13;
int paro=2;
int retroalimentacion = A0;
int velocidad = 0;

Esta seccin del cdigo es la asignacin de nuestras variables tanto para el


control PID como las variables fsicas de conexiones, con esto podemos obtener el
armado del circuito para controlar que lo mostraremos a continuacin.
/////////////////////////////////////

void setup()
{
Serial.begin(9600);
pinMode(motor,OUTPUT);
pinMode(dir,OUTPUT);
pinMode(paro,INPUT_PULLUP);
digitalWrite(dir,HIGH);
Sintonizacion( 30, 5, 0.0 ); // Kp, Ki, Kd del Controlador PID
}

La funcin del setup de arduino es una funcin que solo ser leda por el micro al
inicio del programa (similar al BIOS de una PC) en esta se establece la funcin (si
son salidas o entradas digitales) de los pines declarados en la seccin anterior del
programa tambin se establecen los valores de ganancias para el controlador PID,
para este caso como se puede ver en el cdigo la ganancia de la parte derivativa
es nula, esto por la cuestin de que un sistema deber cumplir siempre el criterio
de tener ms ceros que polos.
void PID()

unsigned long now = millis();

int ttrans = (now - lastTime);

// Determina si hay que ejecutar el PID o retornar de la funcin.

if(ttrans>=h)

// Calcula todas las variables de error.

double error = ref - retro;

Serial.println(error);

errSum += error;

double dErr = (error - lastErr);

// Calculamos la funcin de salida del PID.

salida = kp * error + ki * errSum - kd * dErr;

// Guardamos el valor de algunas variables para el prximo ciclo de clculo.

lastErr = error;

lastTime = now;

} }

Esta seccin es la digitalizacin del filtro PID que bsicamente es leer la


retroalimentacin calcular el error con el estado predicho y luego aplicarlo segn
los criterios de las ganancias del algoritmo.
if (Serial.available()){ // Si hay algun valor en la Consola Serial

char a = Serial.read();

if (a>='0' && a<='9'){

velocidad = map(a,'0','9',0,255); //Variable para escalar el valor ingresado a rango de PWM

ref=velocidad;

Serial.println("Velocidad: ");

Serial.print(a);

Serial.print(" PWM: ");

Serial.println(velocidad);

analogWrite(motor,salida);

} }

if(digitalRead(paro)==LOW){

digitalWrite(motor,LOW);

Serial.println("PARO DE EMERGENCIA ACTIVADO");

digitalWrite(motor,LOW);

ref=0;

delay(20);

retro=map(analogRead(retroalimentacion),0,1023,0,255);

PID();

salida=constrain(salida,0,255);

analogWrite(motor,salida); }

El cdigo restante es para la seleccin de velocidad del motor, no se mencion en


este reporte anteriormente, pero estamos usando una seal PWM que al variar el
ciclo de trabajo de un 0% a un 100% con lo que variamos el voltaje RMS aplicado
a la etapa de potencia esta misma varia el voltaje de armadura del motor lo que es
un control de velocidad muy usado.
Armado de la practica

Este es el armado bsico que se debe de hacer para controlar con el PID
digitalizado y cargado a una placa arduino, a esto se le pueden aadir accesorios
como podra ser un filtro pasa bajas para eliminar ruidos de altas frecuencias que
se puedan generar, como se pudo ver en el programa se cuenta con un botn de
paro de emergencia, este al detectar el pin un 0 detiene por completo el motor y
este no arrancara hasta que se indique por algn comando de nuevo.

CONCLUCION
Con esta prctica se analiz el comportamiento real de los compensadores, se
pudieron observar varias cosas como la importancia de las ganancias en la
digitalizacin, en este caso las ganancias fueron dadas aleatoriamente hasta que
obtuvimos un buen desempeo del compensador, como se mencion no usamos
la parte derivativa del compensador, pero en un momento de la practica si lo
hicimos (con precaucin) y observamos como lo dice el teorema de los ceros y
polos que al momento de aadir ms ceros que polos el sistema se comport de
manera inestable, en nuestro caso oscilo en todas las velocidades dadas
incluyendo al 0 (detenido).

Das könnte Ihnen auch gefallen