Tabla de contenido:
- Paso 1: configuración
- Paso 2: configurar relés
- Paso 3: controlador de histéresis
- Paso 4: controlador PID
- Paso 5: Bus de mensajes
- Paso 6: Libs
Video: Termostato basado en Arduino: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:44
En esta ocasión vamos a construir un Termostato basado en Arduino, sensor de temperatura y relé. Puedes encontrarlo en github.
Paso 1: configuración
Toda la configuración se almacena en Config.h. Puede cambiar los PIN que controlan los relés, la temperatura de lectura, los umbrales o los tiempos.
Paso 2: configurar relés
Supongamos que nos gustaría tener 3 relés:
- ID: 0, PIN: 1, punto de ajuste de temperatura: 20
- ID: 1, PIN: 10, punto de ajuste de temperatura: 30
- ID: 2, PIN: 11, punto de ajuste de temperatura: 40
Primero debe asegurarse de que el PIN de su elección no esté ya tomado. Todos los pines se pueden encontrar en Config.h, están definidos por variables que comienzan con DIG_PIN.
Tienes que editar Config.h y configurar PIN, umbrales y cantidad de relés. Obviamente, algunas propiedades ya existen, por lo que solo tiene que editarlas.
const static uint8_t DIG_PIN_RELAY_0 = 1; const static uint8_t DIG_PIN_RELAY_1 = 10; const static uint8_t DIG_PIN_RELAY_2 = 11;
const static uint8_t RELAYS_AMOUNT = 3;
const static int16_t RELAY_TEMP_SET_POINT_0 = 20;
const static int16_t RELAY_TEMP_SET_POINT_1 = 30; const static int16_t RELAY_TEMP_SET_POINT_2 = 40;
Ahora tenemos que configurar los relés y el controlador, esto sucede en RelayDriver.cpp
initRelayHysteresisController (0, DIG_PIN_RELAY_0, RELAY_TEMP_SET_POINT_0); initRelayHysteresisController (1, DIG_PIN_RELAY_1, RELAY_TEMP_SET_POINT_1); initRelayHysteresisController (2, DIG_PIN_RELAY_2, RELAY_TEMP_SET_POINT_2);
xxx
Paso 3: controlador de histéresis
Es el elegido en el ejemplo anterior, tiene algunas configuraciones adicionales:
const static uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 minutos constantes estáticos uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS da tiempo de espera para cambiar el siguiente relé. Imagine que la configuración de nuestro ejemplo comenzaría a funcionar en un entorno de 40 grados. Esto daría como resultado la habilitación de los tres relés al mismo tiempo. Esto eventualmente podría conducir a un alto consumo de energía; dependiendo de lo que esté controlando, el motor eléctrico, por ejemplo, consume más energía durante el arranque. En nuestro caso, los relés de conmutación tienen el siguiente flujo: el primer relé se activa, espera 5 minutos, el segundo se enciende, espera 5 minutos y el tercero se enciende.
RHC_RELAY_MIN_SWITCH_MS define histéresis, es la frecuencia mínima para que un relé particular cambie su estado. Una vez encendido, permanecerá encendido al menos durante este período de tiempo, ignorando los cambios de temperatura. Esto es muy útil si está controlando motores eléctricos, ya que cada interruptor tiene un impacto negativo en el tiempo de vida.
Paso 4: controlador PID
Este es un tema avanzado. Implementar dicho controlador es una tarea simple, encontrar la configuración de amplitud correcta es una historia diferente.
Para utilizar el controlador PID, debe cambiar initRelayHysteresisController (…..) a initRelayPiDController (….) Y debe encontrar la configuración correcta para ello. Como de costumbre, los encontrará en Config.h
Implementé un simulador simple en Java, para que sea posible visualizar los resultados. Se puede encontrar en la carpeta: pidsimulator. A continuación se pueden ver simulaciones para dos controladores PID a P. PID no es perfectamente estable porque no apliqué ningún algoritmo sofisticado para encontrar los valores correctos.
En ambas parcelas, la temperatura requerida se establece en 30 (azul). La temperatura actual indica la línea de lectura. El relé tiene dos estados ON y OFF. Cuando está habilitado, la temperatura baja en 1,5, cuando está deshabilitado, aumenta en 0,5.
Paso 5: Bus de mensajes
Los diferentes módulos de software deben comunicarse entre sí, con suerte no en ambos sentidos;)
Por ejemplo:
- El módulo de estadísticas debe saber cuándo se enciende y apaga un relé en particular,
- presionar un botón tiene que cambiar el contenido de la pantalla y también tiene que suspender los servicios que consumirían muchos ciclos de la CPU, por ejemplo, la lectura de temperatura del sensor,
- después de un tiempo se debe renovar la lectura de temperatura,
- etcétera….
Cada módulo está conectado a Message Bus y puede registrarse para eventos particulares y puede producir cualquier evento (primer diagrama).
En el segundo diagrama podemos ver el flujo de eventos al presionar el botón.
Algunos componentes tienen algunas tareas que deben ejecutarse periódicamente. Podríamos llamar a sus métodos correspondientes desde el bucle principal, ya que tenemos Message Bus solo es necesario propagar el evento correcto (tercer diagrama)
Paso 6: Libs
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Recomendado:
Termostato de ambiente - Arduino + Ethernet: 3 pasos
Termostato de ambiente - Arduino + Ethernet: En términos de hardware, el proyecto utiliza: Arduino Uno / Mega 2560 Escudo Ethernet Wiznet W5100 / Módulo Ethernet Wiznet W5200-W5500 Sensor de temperatura DS18B20 en el bus OneWire Relay SRD-5VDC-SL-C usado para caldera traspuesta
Termómetro infrarrojo sin contacto basado en Arduino - Termómetro basado en infrarrojos con Arduino: 4 pasos
Termómetro infrarrojo sin contacto basado en Arduino | Termómetro basado en infrarrojos con Arduino: Hola chicos, en este instructivo, haremos un termómetro sin contacto con arduino, ya que a veces la temperatura del líquido / sólido es demasiado alta o demasiado baja y luego es difícil hacer contacto con él y leer su temperatura entonces en ese escenario
Generador de música basado en el clima (generador Midi basado en ESP8266): 4 pasos (con imágenes)
Generador de música basado en el clima (Generador Midi basado en ESP8266): Hola, hoy explicaré cómo hacer tu propio generador de música basado en el clima. Está basado en un ESP8266, que es como un Arduino, y responde a la temperatura, la lluvia y la intensidad de la luz. No espere que haga canciones completas o programas de acordes
Termostato Arduino Kombucha: 3 pasos (con imágenes)
Termostato Arduino Kombucha: Siempre me ha gustado Kombucha, pero en la tienda es muy caro. Alrededor de $ 4 por 12 oz. no hay forma de que pueda permitirme beberlo tanto como quisiera. Busqué hacer mi propia kombucha y me di cuenta de que no era tan difícil en absoluto y que no requería
Servo termostato / controlador Arduino HVAC: 5 pasos (con imágenes)
Servo termostato / controlador Arduino HVAC: ¡Bienvenido a mi instructable 'verde'! Le mostraré cómo usar un Arduino, dos servomotores, un sensor de temperatura y algo de metal (o madera) para hacer un termostato digital para una unidad HVAC de pared. Según CB Richard Ellis (un gran real