De Arossini

Calificación del usuario: 1  / 5

Estrellas activasEstrellas inactivasEstrellas inactivasEstrellas inactivasEstrellas inactivas
 

Seguimos con el  módulo de potencia con  transistor TIP122 de 5 Amper y 50 Volt.

Controlaremos la temperatura 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. Lo nuevo es que la salida en lugar de ser PWM, será on/off controlando un Relay. En el esquema, en lugar de Relay hay un transistor, pero los resultados se ven igualmente. 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 un trabajo tomado del ejemplo de Arduino.cc, para PID Relay Output. Usa la librería PID_v1.h, que está en la misma página.

Lo presento porque lo estuve estudiando, pero no le encontré resultados prácticos, porque la salida no se puede aplicar a un Relay mecánico, por la cantidad de veces que conecta/ desconecta.

No pude encontrar si hay algo mal, y si a alguien le interesa y lo modifica, bienvenido.

En el grafico pueden ver, en el trazo verde, como actúa el Relay.

El trazo amarillo es el Setpoint y el rojo, la medición de temperatura.

La conclusión es que un control Proporcional podría ser más efectivo, y ese será el próximo trabajo.

Para generalidades sobre PID ver cualquiera de los trabajos anteriores.

Imagen del ArduGraficador

La tensión de alimentación es de 10 Volt. Los valores de constantes están en el programa.

  

Esquema

Es igual a los anteriores trabajos, sin potenciómetro para variar el Setpoint. El LM35 está atado con un cablecito a la porcelana de la resistencia.

Programa PID_RelayOutput.ino

#include <PID_v1.h>

int RelayPin = 6;

 double Setpoint, Input, Output;

                                  // Kp, Kd, Ki

PID myPID(&Input, &Output, &Setpoint,400,0.4,0.2, DIRECT);

int WindowSize = 100;

unsigned long windowStartTime;

void setup()

{

  Serial.begin(115200);

  Setpoint = 44;

  pinMode(RelayPin, OUTPUT);

  windowStartTime = millis();

  myPID.SetOutputLimits(0, WindowSize);

  myPID.SetMode(AUTOMATIC);

}

 void loop()

{

    // Leer la entrada 30 veces para evitar oscilaciones perjudiciales.

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

Input = Input /30;

Input = Input * 100 * 5 / 1024;    // Convertir a grados entigrados

  myPID.Compute();

  unsigned long now = millis();

  if(now - windowStartTime>WindowSize)

  { //time to shift the Relay Window

    windowStartTime += WindowSize;

  }

  if(Output > now - windowStartTime) digitalWrite(RelayPin,HIGH);

  else digitalWrite(RelayPin,LOW);

Imprimir_para_ArduGraficador();    // Graficar las tres variables 

}

 void Imprimir_para_ArduGraficador()  // Graficar las tres variables.

{

 double x = Input;

 double y = Output;

 double 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");

}

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