Modulazione automatica resistenza boiler PWM [GUIDA]
Inviato: 07/05/2016, 0:00
Vediamo di seguito come sia possibile ottimizzare o meglio massimizzare l'autoconsumo, utilizzando il nostro sistema di monitoraggio energetico con 123solar e Metern.
Quello che andremo a fare è di dirottare l'esubero di produzione del nostro impianto fotovoltaico verso una resistenza del boiler ACS per produrre acqua calda, andando a modulare il consumo della resistenza per sfruttare il più possibile l'esubero.
In pratica, sempre con lo stesso raspberry su cui è installato 123solar e metern, si usa anche per fare una modulazione della resistenza del boiler mediante l'uscita PWM del raspberry con un semplice relè SSR zero crossing (acquistato per pochi euro sulla baia).
In questo modo si riesce a fare una regolazione a treni di sinusoidi, regolando la potenza con 20 step (che su 1200W di resistenza significa gradini incrementali da 60W).
La scelta dei 200ms di periodo non è casuale ma deriva da una sperimentazione che ho fatto confrontando l'energia immessa rilevata dal contatore di scambio, in quanto utilizzando periodi più lunghi si rilevavano delle immissioni in rete che non dovevano esserci, per via dei "buchi" troppo lunghi della regolazione a treni d'onda.
Servono:
• Raspberry con 123solar e MeterN
• Un relè SSR zero crossing FOTEK SSR-25DA
• una resistenza R1=1Kohm 1/4W
• una resistenza R2=100Kohm 1/4W
• un transistor NPN tipo P2N2222A o BC238B
• una basetta millefori, saldatore e un minimo di buona volontà
• tocco finale ...... il mio script per la regolazione PWM ....
Il transistor e le due resistenze montate opportunamente su una basetta millefori, servono per convertire i 3,3V del raspi a 5V perchè ogni tanto l'SSR non rilevava lo stato logico 1 in ingresso in quanto i 3,3V sono al limite per attivare l'SSR e con attivazioni così veloci ogni tanto ne fallava qualcuna (da datasheet danno 4-32V per l'ingresso dell'SSR). In soldoni è un semplice transistor che lavora in saturazione facendo la semplice funzione di un interruttore ON-OFF.
Questo è lo schema del circuito montato sulla basetta:
e questo il circuitino finito:
Il tutto andrà collegato come da schema seguente:
Per chi non se la cava bene con il saldatore, in sostituzione della schedina con il transistor appena vista è anche possibile utilizzare l'integrato ULN2003A, che è un array di 7 transistor darlington, che sopportano correnti fino a 0,5A e tensioni fino a 50V.
Potete prendere direttamente l'integrato e saldarvi i fili, oppure utilizzare queste schedine che si trovano facilmente ad a basso costo in rete:
Questo è lo schema della schedina con l'ULN2003A:
e questo lo schema interno di funzionamento dell'integrato ULN2003A
Di seguito invece lo schema di collegamento al Raspberry e SSR:
Il positivo (+) per l'SSR eventualmente è possibile prenderlo anche dal secondo pin a +5V del Raspberry
Normalmente, queste schedine sono utilizzate per pilotare i motori passo passo, ma vanno benissimo anche al nostro scopo.
Regolazione a treni d'onda
Il software invece provvede mediante l'uscita PWM del raspberry (GPIO18) ad effettuare una regolazione della resistenza a TRENI DI SEMIONDE (QUI spiegano come funziona questo metodo di regolazione)
La regolazione della potenza a treni d'onda presenta notevoli vantaggi.
Rispetto ai sistemi che parzializzano la sinusoide della tensione (sistemi a taglio di fase) presenta infatti i seguenti vantaggi:
• funzionamento del sistema a fattore di potenza (cos fi) unitario se il carico è resistivo;
• assenza di armoniche in rete;
• assenza di disturbi a radio frequenza reiettati in rete;
• l'SSR scalda molto poco (non servono alette per 1200-1500W regolati)
Il mio software
Considerato che una semionda della tensione di rete a 50Hz dura 10ms si devono fare degli intervalli di accensione multipli di 10ms.
Infatti per poter lavorare su periodi PWM più brevi (200ms) ma avere un sufficiente numero di regolazioni (20step) la mia regolazione lavora sulla singola semionda e non su un'onda completa. Questo mi permette appunto di avere 20 step da 10ms su un periodo PWM di 200ms.
In questo modo ci si assicura di beccare un passaggio per lo zero della sinusoide e quindi l'SSR si accende, e così non serve la sincronizzazione dei comandi con la frequenza di rete (una complicazione circuitale in meno).
Di seguito è schematizzato il funzionamento di un relè SSR zero crossing, che si attiva e disattiva sempre e solo al passaggio per lo zero della tensione.
Quindi usando un periodo PWM di 200ms si possono fare 20 intervalli di accensione (20 gradini di regolazione della resistenza cioè incrementi del 5%):
• accendi per 10ms (1 semionda) e spegni per 190ms (19 semionde) e la potenza è 1/20 (5%) P resistenza
• accendi per 20ms (2 semionde) e spegni per 180ms (18 semionde) e la potenza è 2/20 (10%) P resistenza
• accendi per 100ms (10 semionde) e spegni per 100ms (10 semionde) e la potenza è 10/20 = 1/2 (50%)P resistenza
• accendi per 150ms (15 semionde) e spegni per 50ms (5 semionde) e la potenza è 15/20 = 3/4 (75%) P resistenza
• accendi per 200ms (20 semionde) e spegni per 0ms (0 semionde) e la potenza è 100% P resistenza
Con il PWM la cosa è semplice, solo che tutti i parametri del PWM devono essere impostati correttamente:
• modo funzionamento PWM: Mark Space (di default il raspberry è impostato in modalità "Balanced")
• impostare correttamente PWM range e PWM clock ed utilizzare il corretto multiplo del duty cycle, per far si di avere degli intervalli multipli di 10 ms
Di seguito le impostazioni per avere una regolazione su 200ms da 20 step di 10ms ciascuno
dove il "duty cycle" è il valore che si invia all'uscita PWM.
Trovate il mio script su GITHUB: Raspberry-PWM-Water-heater
Su Github troverete anche una guida all'installazione del software.
Risultato finale
Questo è quello che si ottiene in una giornata tipo:
Ovviamente quando la produzione e alta, la resistenza da 1200W non è sufficiente per mangiarsi tutta la produzione, ma comunque basta ed avanza visto che mi ritrovo 600l di acqua a 75°C ...
Quello che andremo a fare è di dirottare l'esubero di produzione del nostro impianto fotovoltaico verso una resistenza del boiler ACS per produrre acqua calda, andando a modulare il consumo della resistenza per sfruttare il più possibile l'esubero.
In pratica, sempre con lo stesso raspberry su cui è installato 123solar e metern, si usa anche per fare una modulazione della resistenza del boiler mediante l'uscita PWM del raspberry con un semplice relè SSR zero crossing (acquistato per pochi euro sulla baia).
In questo modo si riesce a fare una regolazione a treni di sinusoidi, regolando la potenza con 20 step (che su 1200W di resistenza significa gradini incrementali da 60W).
La scelta dei 200ms di periodo non è casuale ma deriva da una sperimentazione che ho fatto confrontando l'energia immessa rilevata dal contatore di scambio, in quanto utilizzando periodi più lunghi si rilevavano delle immissioni in rete che non dovevano esserci, per via dei "buchi" troppo lunghi della regolazione a treni d'onda.
Servono:
• Raspberry con 123solar e MeterN
• Un relè SSR zero crossing FOTEK SSR-25DA
• una resistenza R1=1Kohm 1/4W
• una resistenza R2=100Kohm 1/4W
• un transistor NPN tipo P2N2222A o BC238B
• una basetta millefori, saldatore e un minimo di buona volontà
• tocco finale ...... il mio script per la regolazione PWM ....
Il transistor e le due resistenze montate opportunamente su una basetta millefori, servono per convertire i 3,3V del raspi a 5V perchè ogni tanto l'SSR non rilevava lo stato logico 1 in ingresso in quanto i 3,3V sono al limite per attivare l'SSR e con attivazioni così veloci ogni tanto ne fallava qualcuna (da datasheet danno 4-32V per l'ingresso dell'SSR). In soldoni è un semplice transistor che lavora in saturazione facendo la semplice funzione di un interruttore ON-OFF.
Questo è lo schema del circuito montato sulla basetta:
e questo il circuitino finito:
Il tutto andrà collegato come da schema seguente:
Per chi non se la cava bene con il saldatore, in sostituzione della schedina con il transistor appena vista è anche possibile utilizzare l'integrato ULN2003A, che è un array di 7 transistor darlington, che sopportano correnti fino a 0,5A e tensioni fino a 50V.
Potete prendere direttamente l'integrato e saldarvi i fili, oppure utilizzare queste schedine che si trovano facilmente ad a basso costo in rete:
Questo è lo schema della schedina con l'ULN2003A:
e questo lo schema interno di funzionamento dell'integrato ULN2003A
Di seguito invece lo schema di collegamento al Raspberry e SSR:
Il positivo (+) per l'SSR eventualmente è possibile prenderlo anche dal secondo pin a +5V del Raspberry
Normalmente, queste schedine sono utilizzate per pilotare i motori passo passo, ma vanno benissimo anche al nostro scopo.
Regolazione a treni d'onda
Il software invece provvede mediante l'uscita PWM del raspberry (GPIO18) ad effettuare una regolazione della resistenza a TRENI DI SEMIONDE (QUI spiegano come funziona questo metodo di regolazione)
La regolazione della potenza a treni d'onda presenta notevoli vantaggi.
Rispetto ai sistemi che parzializzano la sinusoide della tensione (sistemi a taglio di fase) presenta infatti i seguenti vantaggi:
• funzionamento del sistema a fattore di potenza (cos fi) unitario se il carico è resistivo;
• assenza di armoniche in rete;
• assenza di disturbi a radio frequenza reiettati in rete;
• l'SSR scalda molto poco (non servono alette per 1200-1500W regolati)
Il mio software
Considerato che una semionda della tensione di rete a 50Hz dura 10ms si devono fare degli intervalli di accensione multipli di 10ms.
Infatti per poter lavorare su periodi PWM più brevi (200ms) ma avere un sufficiente numero di regolazioni (20step) la mia regolazione lavora sulla singola semionda e non su un'onda completa. Questo mi permette appunto di avere 20 step da 10ms su un periodo PWM di 200ms.
In questo modo ci si assicura di beccare un passaggio per lo zero della sinusoide e quindi l'SSR si accende, e così non serve la sincronizzazione dei comandi con la frequenza di rete (una complicazione circuitale in meno).
Di seguito è schematizzato il funzionamento di un relè SSR zero crossing, che si attiva e disattiva sempre e solo al passaggio per lo zero della tensione.
Quindi usando un periodo PWM di 200ms si possono fare 20 intervalli di accensione (20 gradini di regolazione della resistenza cioè incrementi del 5%):
• accendi per 10ms (1 semionda) e spegni per 190ms (19 semionde) e la potenza è 1/20 (5%) P resistenza
• accendi per 20ms (2 semionde) e spegni per 180ms (18 semionde) e la potenza è 2/20 (10%) P resistenza
• accendi per 100ms (10 semionde) e spegni per 100ms (10 semionde) e la potenza è 10/20 = 1/2 (50%)P resistenza
• accendi per 150ms (15 semionde) e spegni per 50ms (5 semionde) e la potenza è 15/20 = 3/4 (75%) P resistenza
• accendi per 200ms (20 semionde) e spegni per 0ms (0 semionde) e la potenza è 100% P resistenza
Con il PWM la cosa è semplice, solo che tutti i parametri del PWM devono essere impostati correttamente:
• modo funzionamento PWM: Mark Space (di default il raspberry è impostato in modalità "Balanced")
• impostare correttamente PWM range e PWM clock ed utilizzare il corretto multiplo del duty cycle, per far si di avere degli intervalli multipli di 10 ms
Di seguito le impostazioni per avere una regolazione su 200ms da 20 step di 10ms ciascuno
dove il "duty cycle" è il valore che si invia all'uscita PWM.
Trovate il mio script su GITHUB: Raspberry-PWM-Water-heater
Su Github troverete anche una guida all'installazione del software.
Risultato finale
Questo è quello che si ottiene in una giornata tipo:
Ovviamente quando la produzione e alta, la resistenza da 1200W non è sufficiente per mangiarsi tutta la produzione, ma comunque basta ed avanza visto che mi ritrovo 600l di acqua a 75°C ...