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.
- ✅ 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)
- 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)
| 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 |
| 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 |
Il segnale tachimetrico richiede un resistore pull-up da 10kΩ collegato tra il pin tachimetrico della ventola e VCC.
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 | |
| Ventola 120mm 5V | 200-600 mA | ❌ Richiede alimentazione esterna |
| Ventole 12V | Qualsiasi | ❌ SEMPRE alimentazione esterna |
Soluzioni Raccomandate:
- Ventole piccole 5V (<200mA): Collegamento diretto ai 5V Arduino
- Ventole medie/grandi o 12V: Utilizzare MOSFET o relay per commutare alimentazione esterna
- Controllo PWM: Il segnale PWM (pin 9) rimane sempre collegato ad Arduino (consuma <1mA)
#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- T < 25°C: Ventola spenta (0%)
- 25°C ≤ T ≤ 40°C: Controllo lineare (0% - 95%)
- T > 40°C: Ventola al massimo (95%)
{
"humidity": 45.2,
"temperature": 28.5,
"heat index": 29.1,
"fan set": 0.35,
"rpm": 1240,
"override": false
}Per impostare manualmente la velocità della ventola:
{"fan set": 0.75}Nota: L'override ha durata di 30 secondi
// Librerie richieste:
#include "DHT.h" // per sensore DHT11
#include <ArduinoJson.h> // per comunicazione JSON- Collega l'Arduino al PC
- Apri
main.inonell'IDE Arduino - Seleziona il tipo di board Arduino corretto
- Upload del codice
- Apri il Serial Monitor (9600 baud)
- Osserva l'output JSON in tempo reale
- Invia comandi JSON per controllo manuale
| 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 |
- rpm: 0 = Ventola ferma o bloccata
- override: true = Modalità controllo manuale attiva
- override: false = Controllo automatico attivo
- Ventola non gira: Verificare collegamenti PWM e alimentazione
- RPM sempre 0: Controllare resistore pull-up e collegamento tachimetrico
- Lettura sensore fallita: Verificare collegamenti DHT11
- Controllo non risponde: Verificare formato JSON dei comandi
- Arduino si riavvia: Probabile sovraccarico di corrente - usare alimentazione esterna per ventola
- Ventola gira lentamente: Controllare che l'alimentazione sia sufficiente (tensione e corrente)
vent_controller/
├── README.md
└── scr/
└── main/
└── main.ino
- Autore: Fabio
- Data: Settembre 2025
- Versione: 1.0
- Interfaccia web per controllo remoto
- Arduino Fan Control Guide - Guida completa per il controllo ventole PWM con Arduino
- Noctua PWM Specifications White Paper - Specifiche tecniche dettagliate per ventole PWM
- 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.