Skip to content

Arduino-based intelligent ventilation controller that automatically adjusts PWM fan speed based on DHT11 temperature readings. Features real-time RPM monitoring, JSON serial communication, and manual override capabilities for precise temperature control.

Notifications You must be signed in to change notification settings

fabietto01/vent_controller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Sistema di Controllo Ventilazione Arduino

Un sistema intelligente di controllo ventola basato su Arduino che regola automaticamente la velocità di una ventola PWM in base alla temperatura ambientale rilevata da un sensore DHT11.

Caratteristiche Principali

  • Controllo automatico della velocità della ventola basato su soglie di temperatura configurabili
  • Monitoraggio RPM della ventola tramite segnale tachimetrico
  • Comunicazione seriale con protocollo JSON per controllo remoto
  • Override manuale della velocità ventola (durata 30 secondi)
  • Output dati in tempo reale via seriale in formato JSON
  • Controllo PWM preciso con Timer1 (~25kHz)

Requisiti Hardware

Componenti Necessari

  • Arduino Uno/Nano/Pro Mini
  • Sensore DHT11 (temperatura e umidità)
  • Ventola PWM con uscita tachimetrica (es. ventole PC a 4 pin)
  • Resistore pull-up per il segnale tachimetrico (10kΩ raccomandato)
  • Alimentatore esterno (se necessario, vedi sezione alimentazione)

⚠️ Limiti di Corrente Arduino

Pin/Alimentazione Corrente Massima Note
Pin digitale singolo 40 mA Limite assoluto per pin
Tutti i pin I/O combinati 200 mA Limite totale
Pin 5V 500 mA Con alimentazione USB
Pin 5V 1000 mA Con alimentazione esterna 7-12V
Pin 3.3V 50 mA Limite del regolatore interno

Schema di Collegamento

Componente Pin Arduino Note
DHT11 Data Pin 4 Digitale
DHT11 VCC 5V Alimentazione
DHT11 GND GND Ground
Ventola PWM Pin 9 PWM Output (Timer1)
Ventola Tach Pin 2 Interrupt (con pull-up)
Ventola VCC 12V/5V Secondo specifiche ventola
Ventola GND GND Ground comune

Configurazione Resistore Pull-up

Il segnale tachimetrico richiede un resistore pull-up da 10kΩ collegato tra il pin tachimetrico della ventola e VCC.

⚡ Considerazioni sull'Alimentazione

IMPORTANTE: La maggior parte delle ventole PC richiede corrente superiore ai limiti di Arduino:

Tipo Ventola Assorbimento Tipico Alimentazione Richiesta
Ventola 40mm 5V 50-200 mA ✅ Alimentabile da Arduino
Ventola 80mm 5V 100-400 mA ⚠️ Possibile con alimentazione esterna
Ventola 120mm 5V 200-600 mA ❌ Richiede alimentazione esterna
Ventole 12V Qualsiasi SEMPRE alimentazione esterna

Soluzioni Raccomandate:

  1. Ventole piccole 5V (<200mA): Collegamento diretto ai 5V Arduino
  2. Ventole medie/grandi o 12V: Utilizzare MOSFET o relay per commutare alimentazione esterna
  3. Controllo PWM: Il segnale PWM (pin 9) rimane sempre collegato ad Arduino (consuma <1mA)

Configurazione Software

Parametri Temperatura

#define MIN_TEMP 25    // Temperatura minima (°C) - ventola spenta sotto questo valore
#define MAX_TEMP 40    // Temperatura massima (°C) - ventola al massimo sopra questo valore

Logica di Controllo

  • T < 25°C: Ventola spenta (0%)
  • 25°C ≤ T ≤ 40°C: Controllo lineare (0% - 95%)
  • T > 40°C: Ventola al massimo (95%)

Protocollo di Comunicazione

Output JSON (ogni 500ms)

{
  "humidity": 45.2,
  "temperature": 28.5,
  "heat index": 29.1,
  "fan set": 0.35,
  "rpm": 1240,
  "override": false
}

Comandi Input JSON

Per impostare manualmente la velocità della ventola:

{"fan set": 0.75}

Nota: L'override ha durata di 30 secondi

Installazione e Uso

1. Preparazione IDE Arduino

// Librerie richieste:
#include "DHT.h"          // per sensore DHT11
#include <ArduinoJson.h>  // per comunicazione JSON

2. Upload del Codice

  1. Collega l'Arduino al PC
  2. Apri main.ino nell'IDE Arduino
  3. Seleziona il tipo di board Arduino corretto
  4. Upload del codice

3. Monitoraggio

  • Apri il Serial Monitor (9600 baud)
  • Osserva l'output JSON in tempo reale
  • Invia comandi JSON per controllo manuale

Specifiche Tecniche

Parametro Valore
Frequenza PWM ~25kHz
Risoluzione PWM 320 steps
Frequenza campionamento 2 Hz (500ms)
Debounce tachimetro 1ms
Soglia ventola bloccata 500ms
Durata override 30 secondi
Baud rate seriale 9600

Monitoraggio e Debug

Indicatori di Stato

  • rpm: 0 = Ventola ferma o bloccata
  • override: true = Modalità controllo manuale attiva
  • override: false = Controllo automatico attivo

Risoluzione Problemi

  1. Ventola non gira: Verificare collegamenti PWM e alimentazione
  2. RPM sempre 0: Controllare resistore pull-up e collegamento tachimetrico
  3. Lettura sensore fallita: Verificare collegamenti DHT11
  4. Controllo non risponde: Verificare formato JSON dei comandi
  5. Arduino si riavvia: Probabile sovraccarico di corrente - usare alimentazione esterna per ventola
  6. Ventola gira lentamente: Controllare che l'alimentazione sia sufficiente (tensione e corrente)

Struttura del Progetto

vent_controller/
├── README.md
└── scr/
    └── main/
        └── main.ino

Licenza e Crediti

  • Autore: Fabio
  • Data: Settembre 2025
  • Versione: 1.0

Sviluppi Futuri

  • Interfaccia web per controllo remoto

Riferimenti e Documentazione

Documentazione Tecnica

Risorse Aggiuntive

  • Standard PWM per ventole PC (4-pin connector)
  • Protocolli di comunicazione tachimetrici
  • Best practices per controllo temperatura

Nota: Questo progetto è basato su tecniche di controllo ventole PWM per Arduino. Assicurarsi sempre di utilizzare ventole compatibili e resistenze pull-up appropriate per il corretto funzionamento del sistema tachimetrico.

About

Arduino-based intelligent ventilation controller that automatically adjusts PWM fan speed based on DHT11 temperature readings. Features real-time RPM monitoring, JSON serial communication, and manual override capabilities for precise temperature control.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages