Perché costruire un Power Meter basato su Microcontroller?

I monitor di energia commerciali spesso costano centinaia di dollari e non hanno la flessibilità di interfacciarsi con i sistemi di automazione domestica personalizzati. Un contatore di potenza basato su microcontroller offre un'alternativa a basso costo che è possibile personalizzare alle vostre esigenze specifiche. Misurando tensione, corrente e calcolando la potenza reale, questi dispositivi forniscono informazioni attuabili che aiutano a spostare le tendenze hardware, identificare i misuratori di tempo e tempo.

Componenti core: cosa ti serve e perché

Ogni misuratore di potenza si incerniere su alcuni componenti critici. La selezione di parti di qualità influisce direttamente sull'accuratezza, sulla sicurezza e sulla facilità d'uso.

Microcontroller (MCU) – Il cervello

Per il monitoraggio dell'energia domestica, l'ESP32 è una scelta forte perché integra WiFi e Bluetooth, funziona su 3.3V, e offre un'elaborazione dual-core. Se si preferisce la semplicità, un Arduino Uno (5V logica) funziona bene per la prototipazione, ma richiede uno schermo WiFi esterno per la connettività.

Sensamento di tensione

La misura della tensione principale (di solito 110-240 VAC) è la prima sfida. Direttamente il collegamento dell'ADC del microcontrollore sarebbe pericoloso e illegale. L'approccio più sicuro utilizza un trasformatore potenziale o un divisore di tensione di precisione] seguito da un amplificatore di isolamento secondario.

Sensamento attuale

Per la misurazione corrente, i trasformatori di corrente a doppio core (CT) sono ideali perché si bloccano intorno a un filo live senza interrompere il servizio. La famiglia SCT‐013 è popolare: la variante 30A/1V produce una potenza di 0–1V AC proporzionale alla corrente, che un ADC può leggere dopo il biasing DC. I sensori a effetto Hall come l'ACS712 o l'ACS758 offrono la misurazione DC/AC in un pacchetto di corrente continua compatta, ma richiedono il taglio del circuito.

Conversione analogica a digitale (ADC)

Il sensore integrato di microcontrollore ADC è adeguato per i contatori di base, ma la sua risoluzione limitata (10 bit su Arduino, 12 bit su ESP32) e il pavimento del rumore può introdurre errori. Per una maggiore precisione, considerare un ADC esterno come il MCP3208 (12-bit, SPI) o ADS1115 (16-bit, I2C).

Visualizzazione e connettività

Un display locale (OLED 128×64, TFT o LCD del carattere) mostra potenza in tempo reale in watt, kilowatt-hours e costi.Per l'accesso remoto, WiFi (ESP32 built-in) o un modulo ESP‐01 esterno consente di spingere i dati a MQTT, ThingsBoard, o un semplice server web. Bluetooth BLE è un'opzione per le applicazioni mobili di breve durata.

Circuit Design e considerazioni di sicurezza

Prima di assemblare qualsiasi cosa, progettare il circuito su carta. I percorsi di misura di tensione e corrente devono essere completamente isolati l'uno dall'altro e dal lato MCU a bassa tensione. Utilizzare un alimentatore regolamentato 5V o 3.3V derivato da un piccolo adattatore di parete, non dalla rete. Tutti i collegamenti alla rete devono essere chiusi in una scatola isolata e valutato per la tensione prevista e corrente.

Un circuito tipico per un metro monofase:

  • Canal di tensione:[] Trasformatore a discesa (ad esempio, uscita 9V AC) → divisore di tensione per ridurre al picco 1V → offset DC (Vcc/2) → RC filtro (100Ω/10μF) → ingresso ADC.
  • Current channel:[] CT (ad esempio, SCT‐013 con resistore al peso incorporato) → DC offset (Vcc/2) → RC filter → Input ADC.
  • Alimentazione:[[] 5V o 3.3V regolato da una banca di alimentazione USB o adattatore dedicato.

Aggiungete un trimpot 10kΩ per regolare l'offset DC esattamente a metà del riferimento ADC, assicurando che la forma d'onda AC sia al centro e il microcontrollore può leggere sia le metà positive che negative.

Firmware: Sampling, Calcolo RMS e Computazione di Potenza

Il firmware deve campionare entrambi i canali in modo sincrono, calcolare i veri valori RMS (per carichi non inusoidali come il commutare gli alimentatori), e derivare la potenza attiva, la potenza apparente e il fattore di potenza.

Strategia di campionamento

Per una rete di 50/60 Hz, campione di almeno 64 punti per ciclo (ad esempio, 3840 campioni/secondo per 60 Hz) per catturare armoniche fino al 15 °. Una frequenza di campionamento superiore (2-4 kHz) migliora l'accuratezza.

Calcolo della tensione e delle attuali RMS

Utilizzare la seguente formula per ogni canale:

sum_squared = 0;
for (int i = 0; i < N; i++) {
 read = analogRead(pin);
 // Remove DC offset
 sample = read - DC_OFFSET;
 sum_squared += sample * sample;
}
rms = sqrt(sum_squared / N) * (ADC_VREF / ADC_RESOLUTION) * SCALE_FACTOR;

Il converte la lettura ADC (valore digitale in basso) a volt o amplificatori. Determinalo sperimentalmente: alimenta un riferimento noto (ad esempio, 10V AC) e regola il fattore fino a quando la lettura RMS non corrisponde a un vero multimetro RMS.

Calcolo del potere

L'alimentazione apparente (S = V rms × I rms) è semplice, ma la potenza attiva (P) richiede una moltiplicazione istantanea e una media:

sum_active = 0;
for (int i = 0; i < N; i++) {
 v = (analogRead(V_PIN) - V_OFFSET) * V_SCALE;
 i = (analogRead(I_PIN) - I_OFFSET) * I_SCALE;
 sum_active += v * i;
}
active_power = sum_active / N;

Fattore di potenza = attivo power / apparent power. Per carichi puramente resistivi, PF ≈ 1.0; per carichi induttivi (motori), PF scende sotto 1.0, e la vera misura della potenza attiva è essenziale per la fatturazione accurata.

Accumulazione energetica (kWh)

Per monitorare il consumo energetico, integrare la potenza attiva nel tempo:

uint32_t lastMillis = 0;
float energy_Wh = 0;
void loop() {
 if (millis() - lastMillis >= 1000) { // every second
 float power_watts = compute_active_power();
 energy_Wh += power_watts * (1.0 / 3600.0);
 lastMillis = millis();
 }
}

Conservare il valore accumulato nella memoria EEPROM o RTC in modo da sopravvivere alla perdita di potenza. Per un metro interno, aspetta valori nella gamma di 500–2000 Wh all'ora a seconda dell'utilizzo.

Calibrazione: Il segreto per i dati affidabili

Senza calibrazione, le tue letture potrebbero essere spente del 10-20% o più. Il processo comporta tre passaggi:

  • Cautazione dello stato:[ Senza carico, leggere l'offset DC per ogni canale e regolare le costanti del firmware fino a quando il RMS non legge il più possibile (tipicamente <0.1 W).
  • Calibrazione del guadagno per la tensione:[ Applicare una tensione stabile nota (ad esempio, un adattatore di corrente 12V misurato con un multimetro) e regolare il fattore di scala della tensione fino a quando il metro non si abbina.
  • Calibrazione del guadagno per corrente:[ Collegare un carico resistivo noto (ad esempio, una lampadina a incandescenza da 100W) e regolare il fattore di scala corrente.

Registra le costanti di calibrazione finali nel codice sorgente o conservale in memoria non volatile in modo da poter ottimizzare senza riattivare il firmware.

Registrazione e visualizzazione dei dati

Per il monitoraggio remoto, inviare dati tramite WiFi a piattaforme come EmonCMS, ThingsBoard o un dashboard Node‐RED personalizzato. L'ESP32 rende questo grafico leggero triviale – basta connettersi alla rete domestica e pubblicare JSON su MQTT. Se si preferisce una soluzione self-hosted, scrivere un semplice server di pagina web.

Per il registrazione a lungo termine, un modulo SD card scrive i file CSV. Questo è utile quando il WiFi è inaffidabile o per l'analisi offline. Assicurarsi che la scheda sia formattata correttamente e la libreria SD è inizializzata in modo sicuro per evitare la corruzione dei file.

Più di una fase: sistemi trifase e polifase

Le case con potenza trifase (comune in Europa e nelle case americane più grandi) richiedono tre canali di tensione e tre canali correnti. È possibile utilizzare un MCU con abbastanza ingressi analogici (ad esempio, ESP32 ha due ADC multiplexed a 16 pin, ma il rumore analogico aumenta quando si utilizzano più canali).

Sincronizzazione del tempo

Per una potenza attiva accurata per fase, campiona tutte le coppie di tensione e corrente in un unico scoppio (entro microsecondi) per preservare le relazioni di fase. Se si campionano i canali sequenziali (come con un multiplexer), il tempo si introdurrà un errore di fase che aumenta con frequenze più elevate.

Caratteristiche avanzate per estendere il tuo Meter

Una volta che il contatore di potenza di base sta funzionando, prendere in considerazione l'aggiunta di questi miglioramenti:

  • La correzione dei fattori di potenza avvisa: Se PF scende sotto 0.8, contrassegnare l'utente per indagare eventuali carichi reattivi.
  • Identificazione dell'appliance:[] Analizzando le firme armoniche (utilizzando FFT), si può distinguere tra un frigorifero, un forno a microonde e una lavatrice.
  • Monitoraggio della generazione solare:[] Aggiungi un secondo trasformatore corrente sulla linea di alimentazione solare (CCT bidirezionale) per misurare l'esportazione/importazione netta.
  • Clibrazione automatica:[] Utilizzare un relè per passare in una nota resistenza di riferimento per l'autocalibrazione durante i periodi di inattività.
  • Spegnimento di potenza superiore:[] Collegare un relè a stato solido per disconnettere i carichi quando il consumo supera una soglia (ad esempio, per evitare il tripping di rottura).

Confronto con i monitor dell'energia commerciale

I prodotti commerciali come il Sense, Emporia Vue, o Shelly EM offrono app levigate, integrazione cloud e sicurezza UL-list. Tuttavia, ti bloccano in un ecosistema proprietario e spesso richiedono un abbonamento mensile per i dati storici. Un misuratore DIY ti dà la piena proprietà dei dati, senza costi ricorrenti e la capacità di interfacciarsi con qualsiasi standard domestico intelligente (Home Assistant, OpenHAB).

Risorse e lettura

Per una comprensione più approfondita, consultare le seguenti risorse:

Portare tutto insieme: una lista di controllo di costruzione pratica

Per aiutarti a iniziare, ecco una lista di controllo passo per passo per un metro basato su ESP32:

  1. Componenti di selezione e ordine: ESP32 DevKitC, SCT‐013‐000 (100A/50mA), trasformatore CA 230V‐to‐9V, resistenze 1kΩ e 10kΩ, condensatori 10μF/25V, perfboard, custodia.
  2. Assemblare i circuiti di tensione e di divisione corrente su una tavola da pane prima. Prova con un multimetro per verificare che l'offset DC sia esattamente Vcc/2.
  3. Scrivere un semplice schizzo che stampa i valori ADC grezzi. Applicare una tensione AC nota (attraverso il trasformatore) e verificare la forma delle forme d'onda su un plotter seriale.
  4. Calcolo RMS di implementazione con una media di oltre 50 cicli. Confronta la lettura a un multimetro.
  5. Aggiungere il sensore corrente e ripetere la calibrazione. Prova con una lampadina da 100W (dovrebbe leggere ~0.43A su 230V).
  6. Combinare la tensione e il campionamento corrente in un unico loop. Computare la potenza attiva. Controllare con un carico resistivo (potenza attiva ≈ apparente).
  7. Aggiungi connessione WiFi e pubblicazione MQTT. Utilizzare uno strumento come MQTT Explorer per verificare il flusso di dati.
  8. Progettare e stampare un caso che assicura il flusso d'aria e previene il contatto accidentale con il cablaggio di rete.
  9. Eseguire il contatore per 24 ore e confrontare il totale energetico giornaliero con la bolletta di utilità per confermare l'accuratezza entro il 2–5%.

Costruire un contatore di potenza basato su microcontroller è un progetto gratificante che offre vantaggi pratici immediati. Con un'attenta progettazione e calibrazione, il monitor fatto in casa fornirà anni di dati energetici affidabili, aiutando a ridurre i rifiuti e risparmiare denaro.