Control temperatura con pid

Hola que tal, queria aprender sobre pid pero encuentro muy poca informacion y no ecuentro mucho material por lo que la mayoria esta en ingles. lo que quiero hacer es probar como funciona el pid en arduino. tengo un lm35z como sensor de temperatura..queria saber si puede demostrar de la sgte manera. configurar el setup en 32° por ejemplo, cuando el pid vea que supera los 32 active un ventilador para enfriarlo. y si es menos de 32 active algun calentador para volver a calentarlo y mantenerlo siempre a la temperatura que quiero..

No funciona asi la cosa.

El PID intentará mantener el error al mínimo de tu planta de control Entonces debes tener definida previamente tu planta. Si hace calor y enfrias con el ventilador sería una alternativa Si esta mas frio y debes calentar para mantener el setpoint será otro caso.

Asi que supongamos que hace frio ambiente o estas en un recipiente y quieres que la temperatua este a 32 grados.

Entonces tendrás tu sensor LM35 y tendras una resistencia calefactora. Dicha resistencia debe poder controlarse para entregar mas o menos calor. Asi que requiere de una interfaz de potencia. Si vas a trabajar en PWM para controloar la potencia de la resistencia, esta deberá ser de Continua. De lo contrario tendras que controlar la fase de una corriente alterna para calentar mas o menos con una resistencia que funciona a 220VAC.

Vamos bien hasta ahi?

Ya que no sabes control automático (toda una especialización electrónica) tendrás que usar un PID autotuneable. O sea que se ajuste solo.

y si.. disiento contigo, hay mucha información aún en castellando.

Escribe en tu buscador las palabras mágicas : Arduino PID

La librería esta en inglés. Eso es cierto, pero puedes usar el traductor de google si no entiendes.

Esto es lo que necesitas, PID AUTOTUNE LIBRARY

Una demostración que buscaste poco o no buscaste: Repito: Palabras mágicas Arduino PID

PID en español

gracias por tu respuesta rapida, lo que estoy intentando hacer es un trabajo practico nada mas, el objetivo es controlar la temperatura con pid. me podrias ayudar porfavor!?

Ya lo hice.. el ultimo post esta completito. Con esquema electronico, sketch todo

En que varia si reemplazo la ntc por un lm35?

Nooo . yo no te estoy sugiriendo que uses el NTC. El artículo está asi.
Ahora si me dices como introduces el LM35 en lugar del NTC es otro tema.
Dejame verlo y te digo.
En principio ese dividor resistivo NTC mas Resistor, sería reemplazado por el LM35
Ahora miro el sketch y te sugiero mas cosas.

También eliminaras la tabla de conversión de valores leidos del NTC a temperatura, ya que tu lectura es directa o casi directa.

solo hay que modificar float calcTemp(uint16_t myADC) para que sea congruente con tu LM35
Eliminamos la tabla.
A ver… investiga como se lee el LM35
Vamos hombre ponte a trabajar que si no contactaré a tu profesor!!!

Acá otro posible ejemplo resuelto. Usa las palabras mágicas en GOOGLE: Arduino PID LM35 y encontré esto

Hola! (me acabo de registrar y me queda 1% de pila en el lap)

te paso mi codigo, hice algo como tu, pero con un sensor LM35

espero te sea util, saludos!

// termostato 29< temperatura

const int sensor = 0; // declarar una constante “sensor” en el pin analogico 0 (LM35)
const int ledRojo = 5; // pin del LED Rojo
const int ledAzul = 6; // pin del LED azul
int fan = 8; // pin donde se va a conectar el ventilador, osea el 8
long miliVolts;
long temperatura;

void setup(){
Serial.begin(9600);
}
void loop (){
miliVolts = (analogRead(sensor) * 5000L) / 1023; //calculamos los mV en la entrada
temperatura = miliVolts / 10; //calculamos la temperatura del sensor

Serial.print(“Temperatura: “); //mandamos la temperatura por
Serial.print(temperatura); //serial
Serial.println(” oC”);
delay(1000); //Esperamos para no saturar el monitor
if (temperatura < 29){
digitalWrite(8,LOW);
}
else
digitalWrite(8,HIGH);
}

te comento, la idea original era un tipo “termostato” que a cierta temperatura activase un ventilador (29grados centigrados) y que tuviese un indicador con un led RGB de como va aumentando la temperatura o bajando, te comento; ahora se que el LM35 funciona, pero enfrento el problema de que tengo 5V de entrada en el arduino, y para lograr encender el ventilador necesito 12v y .30Amps, cosa que aun no resuelvo, tmpc los leds los he puesto, pero he notado que el codigo sirve por que he medido con el multimetro, espero esto te sea de ayuda (de paso si resuelves lo del ventilador me ayudas a mi!)

Saludos y suerte en tu proyecto :slight_smile:

NekroDoll no tienes idea lo que es un PID no? Se nota por el codigo que pusiste. Lo que pusiste es cuanto mucho un P me falta la parte integral y diferencial.

Lo tuyo es un control proporcional basico. Pero luego se mide el error acumulado en el tiempo (integral) y la variacion del error (diferencial) de ese modo logras que el sistema llegue al setpoint seleccionado y ante variaciones externas puede anticiparse y corregir.

Sorry, no llegue a la parte de PID, solo lei el mismo lm35, una disculpa.

Y no, no se que es un pid

Saludos

No hay problema. PID Proportional Integral Diferencial Control o en español, Control Proporcional Integral Diferencial Ahi te dejé una muy buena guia en espaÑol para que te informes. Es el siguiente nivel de control de temperatura para lograr temperaturas mas precisas.

Hola yo quería saber como hacer un control PID para controlar dos electrovalvulas regulables para controlar dos tanques de agua y que en un tercero haya la temperatura que yo desee mezclando agua caliente de un tanque con agua a temperatura ambiente. GRACIAS

Hola yo quería saber como hacer un control PID para controlar dos electrovalvulas regulables para controlar dos tanques de agua y que en un tercero haya la temperatura que yo desee mezclando agua caliente de un tanque con agua a temperatura ambiente. GRACIAS

Es un trabajo profesional, es decir, cobrarás tu trabajo por hacerlo?

No es un trabajo que tengo que realizar para la universidad tengo la maqueta realizada pero la programación me cuesta trabajo por si me podríais ayudar. Gracias

Bueno si es para la Universidad no hay problema. Dime que has hecho hasta ahora?

Al final lo he podido realizar con mis conocimientos. Gracias

Al final lo he podido realizar con mis conocimientos. Gracias

Este foro intenta compartir tu esfuerzo. Si lograste algo pues compártelo. Muchos compañeros y yo lo hacemos todos los dias y no pedimos nada a cambio. Tu comentario no es constructivo si me permites decirlo.

me alegro por otro lado que lo resolvieras pero es el espíritu de esto post justamente mostrar nuestras experiencias.

surbyte: Ya lo hice.. el ultimo post esta completito. Con esquema electronico, sketch todo

hola disculpa, esque estamos en un proyecto con el cual tenemos que controlar la temperatura a través de la resistencia calefactora, unida con el LM35, la cual le proporciona el calor para que sense cierta temperatura, tambien con PID, lo que intentamos hacer es que la resistencia mantenga cierto calor para mantener la temperatura controlada, mas sin embargo no sabemos como programarlo para cargarlo al arduino. podriamos ponernos en contacto para ver si nos puede ayudar un poco porfavor?

Jorge Guzman y dime. NO leiste el post? hay varias respuestas que responden lo que pides.

si vi los posts,solo que talvez no comprendi bien, porque nosotros tenemos una planta asi como en la imagen, entoces no sabemos como conectarnos al arduino el circuito y tampoco el programa, porque los que mostraste como no entendemos mucho por eso creemos que no nos servira eso pero mira nuestra fuente que tenemos que conectar al arduino...

Imagenes