De Arossini
Estrellas inactivasEstrellas inactivasEstrellas inactivasEstrellas inactivasEstrellas inactivas
 

Seguimos con el módulo de potencia con transistor TIP122 de 5 Amper y 50 Volt. Este trabajo usa la Librería PID_v1 de Arduino. Controlaremos el encendido y luminosidad de la Lámpara de 12 Volt, 10 Watt con la Librería Arduino PID. Para ajustar los valores de las constantes que ahora son tres, Kp, Kd y Ki, usaremos el programa Ardu Graficador (Trabajo Número 128) que nos permite ver las curvas de Setpoint, Input y Output. La salida es PWM. Como siempre, en el archivo Zipeado está la información necesaria y los archivos.INO. Pueden bajar un DOC, con el procedimiento y un ZIP con la información y los archivos INO.

Este es otro trabajo de PID, para experimentar y dominarlo.

Está basado en el ejemplo de Arduino, PID_Basic, con algunas modificaciones, como eliminar alguna línea innecesaria en el Setup, agregado de un potenciómetro para seleccionar manualmente el Setpoint, agregado de promedios en las medicines de LDR, y agregado de las líneas necesarias para Graficar en el Ardu Graficador, trabajo número 128 - Graficador de 3 canales para PC y Visual Basic 6.0.

Generalidades sobre Control PID

PID (Proporcional, Integral, Diferencial) es un algoritmo de control que trata de compensar las características de un sistema.

Hay tres componentes principales en un lazo de control PID. Cada componente se prefija con una ganancia constante, y cuando se suman, le dan el valor de control instantánea que utiliza para controlar el sistema.

Por lo general, se está generando una tensión para controlar el sistema, por lo que cada componente puede ser pensado como una contribución con un voltaje determinado a su salida final.

Va a haber una tensión correspondiente al estado actual del sistema (posición, temperatura, etc) que se llama Variable de proceso o PV. El PV es el valor que se pasa al lazo de control PID para decirle el estado del sistema.

Tenemos una (SP) Tensión de consigna, correspondiente al estado que desea PV para llegar. Básicamente, queremos el lazo PID para impulsar el sistema a que SP y PV sean iguales.

En tercer lugar, tenemos una tensión de control, u, que corresponde al valor de la tensión instantánea que utiliza para conducir el sistema hacia el voltaje SP. La tensión de control u puede ser pensada como lo que se envía realmente al sistema para dirigirlo hacia donde se quiere que vaya. Es análogo a un acelerador de automóvil.

El algoritmo PID es mostrado en la Ecuación siguiente:

Está la parte proporcional, integral y diferencial en la ecuación.

Las constantes   son usadas para “setear” el signo y la ganancia de cada parte de esta ecuación.

 es el “error” proporcional que es 

La variable t corresponde al tiempo que corre en el sistema, y es simplemente una variable de integración.

La parte proporcional de la ecuación tiene en cuenta la separación entre PV y SP.

La parte diferencial tiene en cuenta lo rápido que nos estamos moviendo ( si se acerca al SP muy rápido puede pasarse de largo) , y se puede utilizar para reducir la parte proporcional si nos estamos acercando , o nos acelerará si no llegamos a pesar de nuestra contribución proporcional.

La parte integral de la ecuación tiene en cuenta el tiempo que hemos estado fuera del punto de ajuste , lo que contribuye más a nuestra salida cuanto más tiempo nos falta el PS . Esto es importante porque nuestras contribuciones P y D se suele llevar a nuestro PV a ceder ligeramente por encima o por debajo de nuestra variable SP .

Las tres variables se grafican en el Ardu Graficador, o se pueden ver los valores en el Serial.

La diferencia con los trabajos anteriormente presentador de Resistencia calefactora y Sensor de temperatura, es que la reacción es extremadamente rápida, lo que nos lleva a jugar con otro set de valores de constantes(Kp = 1, Ki= 3, Kd= .1)

Imagen del Ardu Graficador

Secuencia completa desde el  inicio del proceso.

El error es de 0.09 unidades.

Programa PID_Basic_LampLDR.ino

#include <PID_v1.h>

#define PIN_INPUT 0      // Sensor LDR

#define PIN_OUTPUT 9     // Salida PWM

 double Setpoint, Input, Output;  // Variables del PID

double x, y, z;                  // Variables para el Ardu Graficador

double Kp = 1, Ki= 3, Kd= .1;   // Constantes del PID

PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT); // Seteos del PID_v1.h

 void setup()

{

Serial.begin(115200);      // Inicio del Serial

myPID.SetMode(AUTOMATIC);  // Inicio del PID_v1.h

}

 void loop()

{

  for (int A = 0; A <= 29; A++) { Input = Input + analogRead(PIN_INPUT); }

      Input = Input/30;                  // Input es entrada LDR (Promediada)

  Input = map(Input,900,1050,100,0);

  Input = Input * .999; // Para obligar a X que trabaje con decimales, lo que mejora la precisión.

     Setpoint = 90;                     // Fijado en

  myPID.Compute();                   // Calcular el Output

  if (Output >200) {Output = 200;}   // Limitar el máximo del PWM

  if (Output < 50) {Output = 50;}

  analogWrite(PIN_OUTPUT, Output);   // Escribir el PWM

  Imprimir_para_ArduGraficador();    // Graficar las tres variables

  delay(100);                        // Retardo

} // FIN del void loop()

 

void Imprimir_para_ArduGraficador()  // Graficar las tres variables.

{

  x = Input;

  y = Output;

  z = Setpoint;

  // Enviar al Serial para Graficar. Se debe mantener obligadamente este formato,

  // para que el Ardu Graficador no cometa errores.

  Serial.print("ini");

  Serial.print("x"); Serial.print(x); Serial.print("    ");

  Serial.print("y"); Serial.print(y); Serial.print("    ");

  Serial.print("z"); Serial.print(z); Serial.print("    ");

  Serial.println("fin");

  delay(100);

}

  

Esquema

     

SONIDO AMBIENTAL

SONIDO AMBIENTAL

Ladelec instala el sonido ambiental a Centros Comerciales, Aeropuertos, Iglesias, escuelas, Colegios, Universidades, academias, oficinas, salas de espera, Clínicas...

leer mas

ASESORIA EN TESIS DE GRADO

MADRID1

Ladelec ofrece a estudiantes de ingeniería electrónica y afines, asi como a técnicos, tecnólogos y aficionados los servicios personalizados de ayuda para todo nivel de aprendizaje de la ciencia electrónica.

leer mas