Modulazione automatica resistenza boiler PWM [GUIDA]

Progetti domotici con il Raspberry .... con o senza il supporto di MeterN e 123Solar
debugasm
Messaggi: 22
Iscritto il: 29/04/2017, 18:11

Re: Modulazione automatica resistenza boiler PWM

Messaggioda debugasm » 04/06/2017, 11:06

Nonostante qualche difficoltà sono riuscito ad avviare il boiler.

Grazie allo script di Flane e qualche modifica posso autoconsumarmi l'energia che produco.

Ho a disposizione un SDM120 sulla linea del boiler, quindi ho modificato lo script di Flane per utilizzare il consumo con il contatore invece di utilizzare quello software, che non ho provato.

La prima modifica riguarda l'inizio e la fine del processo, ho utilizzato la funzione "date_sun_info" per avviare ed interrompere il processo (in pratica come fa 123solar). Posso così utilizzate lo script come servizio, lasciandolo sempre attivo.

Codice: Seleziona tutto

/* Data attuale */
$nowUTC = strtotime(date('Ymd H:i'));

/**
 * Ricavo informazioni giornata solare
 * sunrise: Alba
 * sunset: Tramonto
 * transit: Zenith
 * civil_twilight_begin: Inizio crepuscolo civile
 * civil_twilight_end: Fine crepuscolo civile
 * nautical_twilight_begin: Inizio crepuscolo nautico
 * nautical_twilight_end: Fine crepuscolo nautico
 * astronomical_twilight_begin: Inizio crepuscolo astronomico
 * astronomical_twilight_end: Fine crepuscolo astronomico
 */
$sun_info = date_sun_info((strtotime(date('Ymd'))), LATITUDE, LONGITUDE);


Ho inserito anche la gestione della terminazione processo con "pkill" utilizzando (con kill -9 non funziona):

Codice: Seleziona tutto

/* Task monitor signal event */
declare(ticks = 1);

/* Catch Fatal Error */
register_shutdown_function('fatalErrorShutdown');

/* Catch Ctrl+C, kill and SIGTERM */
pcntl_signal(SIGTERM, 'sigintShutdown');
pcntl_signal(SIGINT, 'sigintShutdown');


Come ultima cosa ho inserito il log eventi del boiler direttamente nel file di MeterN "events.txt".

A prima vista sembra funzionate tutto. Ogni tanto però ho dei prelievi dalla rete (visualizzati dal gauge principale, il conteggio nel "Cruscotto" non riporta nessun consumo), solo alcuni secondi, il tempo necessario afficnhè lo script ricalcoli il nuovo setpoint.

La connessione di tutto (schema da wiki di Flane):

Immagine

Analizzando la cosa, i prelievi dalla rete sono dovuti ad una non perfetta misura sul contatore dei consumi, che risulta essere "ballerino", immagino dovuto al fatto che il tempo acceso/spento del boiler ha comunque una frequenza lenta (5Hz - 0.2 sec).

Qualcuno ha notato questo tipo di prelievo, oppure sono io che sbaglio qualcosa ?

Ho voluto fare un ulteriore prova apportato una modifica alla lettura dei consumi: facendo una media. Cerco così di stabilizzare la lettura. In questo modo la risposta sarà più lenta, ma prevedo di migliorare la cosa.

debugasm


flopy
Messaggi: 6
Iscritto il: 05/03/2017, 20:50

Re: Modulazione automatica resistenza boiler PWM

Messaggioda flopy » 04/06/2017, 20:55

Anche a me risulta lievi prelievi dalla rete ,pero non in modo preoccupante .
Per Debugasm : Potresti gentilmente darmi delle indicazioni per poter usare un contatore sdm120c sulla linea boiler per favore ? Grazie

debugasm
Messaggi: 22
Iscritto il: 29/04/2017, 18:11

Re: Modulazione automatica resistenza boiler PWM

Messaggioda debugasm » 06/06/2017, 8:56

Scua il ritardo flopy. In allegato trovi lo script di Flane modificato "pwm_ssr_dimmer.php" per la lettura dei consumi del boiler utilizzando SDM120C.

Codice: Seleziona tutto

const mode = 0;         // 0 - Modalita' software / 1 - Modalita' hardware (lettura boiler con SDM120)


Funzione aggiunta per lettura contatore SDM120. Modificare i parametri in base alla propria configurazione:

Codice: Seleziona tutto

/**
 * Lettura contatore boiler
 *
 * @return array Parametri lettura contatore boiler
 */
function power_boiler_read()
{
    /* SDM boiler config */
    $address = 6;
    $bitrate = 9600;
    $port = '/dev/rs485';
   
    /* Inizializzo risposta */
    $boiler = array(
        'power' => 0,
        'imported' => 0
    );

    /* Leggo potenza istantanea e consumo totale (Es. "536.50 1858 OK\n") */
    $raw = shell_exec('sdm120c -a ' . $address . ' -b ' . $bitrate . ' -P N -p -i -z 10 -w 5 -j 10 -d 0 -q '. $port);

    /* Controllo risposta */
    if($raw == null) 
    {
        /* Invalidate */
        $raw = "";
    }

    /* Esplodo campi ricevuti */
    $value = explode (' ', $raw, 3 );

    /* Lunghezza risposta */
    $len = sizeof($value);

    /* In base al numero di parametri della risposta controllo */
    if($len > 0)
    {
        /* Possibile risposta valida, in base al numero di parametri ricevuti */
        if($len == 3)
        {
            /* Controllo risposta OK */
            if($value[2] == "OK\n")
            {
                /* Estrazione parametri */
                $power = floatval($value[0]);
                $imported = floatval($value[1]);

                /* Salvo valori risposta */
                $boiler = array(
                    'power' => $power,
                    'imported' => $imported
                );
            }
        }
    }

    /* Esco con array risposta */
    return $boiler;
}


Ho fatto la stessa modifica al file "pwm_test.php".

Nello script definitivo leggo anche la potenza istantanea con SDM120, ma necessità di qualche altro test.

debugasm
Allegati
pwm_ssr_dimmer.7z
Modifica a file di Flane per lettura consumo boiler con SMD120
(4.68 KiB) Scaricato 302 volte

flopy
Messaggi: 6
Iscritto il: 05/03/2017, 20:50

Re: Modulazione automatica resistenza boiler PWM

Messaggioda flopy » 06/06/2017, 23:18

Grazie debugasm .Premesso che non mi intendo troppo ...inserendo il tuo script modificato mi da questo errore :
ERROR Can't open the device /dev/rs485 (No such file or directory).
Perche rs485 non ce nella dir dev. Allora ho cambiato il percorso /dev/ttyUSB0. Pero ce qualcosa che non quadra. Facendo il test del contatore:
Voltage: 235.70 V Current: 0.02 A Power: 0.00 W Active Apparent Power: 6.08 VA Reactive Apparent Power: 5.00 VAR Power Factor: 1.00
Phase Angle: 0.00 Degree Frequency: 50.04 Hz Import Active Energy: 106389 Wh Export Active Energy: 9 Wh Total Active Energy: 106398 Wh
Import Reactive Energy: 13721 VARh Export Reactive Energy: 0 VARh Total Reactive Energy: 13721 VARh
Invece lanciando pwm_test:
Consumo OFF 3 : 106388 W
Consumo ON 3 : 106389 W
Pot. Resistenza 3: 1 W
Mi potresti dare una diritta ?
Grazie.Flopy

debugasm
Messaggi: 22
Iscritto il: 29/04/2017, 18:11

Re: Modulazione automatica resistenza boiler PWM

Messaggioda debugasm » 07/06/2017, 8:29

Come ho spiegato, forse non in modo abbastanza chiaro, è necessario modificare i parametri del proprio SDM120.

ERROR Can't open the device /dev/rs485 (No such file or directory).


La mia porta RS485 si trova in "dev" con quel nome, nel tuo hardware ha magari un altro nome, sostituiscilo. Controlla anche l'indirizzo hardware del misuratore, la veloticà e la parità, devono corrispondere a quelle che hai impostato altrimenti non riceveri nessuna risposta.

Se attivi il boiler manualmente e lanci il comando:

Codice: Seleziona tutto

sdm120c -a 6 -b 9600 -P N -p -i -z 10 -w 5 -j 10 -d 0 -q /dev/rs485


sostituendo i parametri (indirizzo, velocità, parità e dispositivo) dovresti avere potenza istantanea e il consumo totale.

Sul display del contatore non vedi la potenza istantanea ? Se il boiler è attivo qualcosa dovrebbe segnare non credi ? Eventualmente controlla i collegamenti.

Ho corretto lo script "pwm_test.php", se vuoi riprovare.

debugasm
Allegati
pwm_ssr_dimmer.7z
Modifica a file di Flane per lettura consumo boiler con SMD120
(4.69 KiB) Scaricato 306 volte

flopy
Messaggi: 6
Iscritto il: 05/03/2017, 20:50

Re: Modulazione automatica resistenza boiler PWM

Messaggioda flopy » 08/06/2017, 19:50

Grazie infinite debugasm per la tua disponibilità.Ok confermo ho modificato i parametri del proprio SDM120 ,il pwm test funziona alla grande :
root@raspberrypi:~# sdm120c -a 6 -b 9600 -P N -p -i -z 10 -w 5 -j 10 -d 0 -q /dev/ttyUSB0
2390 141289 OK
pero mi arrendo non voglio disturbarti troppo .Non so per cosa e dovuto ma il tuo script non funziona sul mio raspberry3 con Solarjessie v 2.6 - immagine preconfigurata di 123Solar e Meter da Flane ,nonostante volevo tanto, fare in modo che il script iniziale di Flane (che non smetto mai di ringraziare per il suo lavoro svolto ) leggessi effettivo consumo dei boiler ( perché realmente ho 2 boiler da 150 l) tramite il contatore sdm120c.
Grazie ancora
flopy

debugasm
Messaggi: 22
Iscritto il: 29/04/2017, 18:11

Re: Modulazione automatica resistenza boiler PWM

Messaggioda debugasm » 09/06/2017, 8:30

Nessun problema flopy, cerchiamo di risolvere.

Prima di procedere con altre prove, mi confermi che lo script "originale" di Flane funziona normalmente ?

Con lo script modificato hai qualche errore ? Di che tipo ?

Togli i commenti a tutte le riche "//" che hanno "echo ... " e avviandolo manualmente da terminale vediamo dove si blocca se si blocca.

Non preoccuparti, vedrai che con pochi passaggi risolviamo.

debugasm

flopy
Messaggi: 6
Iscritto il: 05/03/2017, 20:50

Re: Modulazione automatica resistenza boiler PWM

Messaggioda flopy » 10/06/2017, 11:27

Scusa tanto debugasm , non so proprio cosa possa essere (forse la formattazione cambia ?).Allora :Il script di Flane funziona dopo aver riportato qualche correzione come spiegato nel mio post alla pag. 24, pero nonostante il script funziona per la regolazione PWM ,quando la temperatura del sensore arriva a soglia impostata 70°C lo script non si ferma.?! Ho provato come mi hai suggerito .Dopo aver coretto anche qui la su detta riga ,la prossima errore di sintassi mi da :
PHP Parse error: syntax error, unexpected '$pwm_range' (T_VARIABLE) in /var/www/MyScripts/PWM/pwm_ssr_dimmer.php on line 221.
Che sarebbe questa riga: $duty $pwm_range;
Se proprio credi che si può risolvere ti posso dare l'accesso da remoto .
Grazie
Flopy

nicolaVR
Messaggi: 8
Iscritto il: 23/07/2016, 19:22

Re: Modulazione automatica resistenza boiler PWM

Messaggioda nicolaVR » 10/06/2017, 14:44

Ieri è finalmente arrivato l'hardware! ;)

Ma siccome sono di coccio, e non sono riuscito a trovare datasheet per la schedina blu per innalzare la tensione, consigliata da Flane, cercavo di interpretare il suo schema della millefori per traslarlo alla schedina.
Sono un profano che vorrebbe capire, ma evidentemente non ci riesco.
(mi parrebbe che GND venga modulata dal transistor, mentre +5 è in bypass , alimentando direttamente il SSR. ???) (da totale ignorante, mi parrebbe comunque strano)

Qualcuno che ha usato la schedina blu potrebbe dare indicazioni?
Ovvero, dati :

+ 5
GND
GPIO18


OUT +
OUT -


disponendo sulla schedina dei pin
GND
VCC
e delle file da IN1 a 7
nonchè da A a F
(oltre al connettore P3)

Immagine

su quali pin collegare i cavi ???
grazie in anticipo a chi riuscirà a sbloccarmi.

Nicola

debugasm
Messaggi: 22
Iscritto il: 29/04/2017, 18:11

Re: Modulazione automatica resistenza boiler PWM

Messaggioda debugasm » 10/06/2017, 18:01

Ciao nicolaVR

il rele' SSR viene fatto lavorare controllanto il polo negativo "-" per non dover invertire il segnale PWM. In pratica il polo positivo "+" di SSR viene mantenuto a +5V, il polo negativo "-" raggiunge il collettore del transistor. L'emettitore del transistor a massa. Controllando la base si controlla direttamente SSR. Base alta (> 0.6V) SSR si attiva, base bassa (< 0.6V) SSR di disattiva.

La schedina blu utilizza il chip "ULN2003" che non è altro che un driver invertente.

Collega quindi alla schedina:

"VCC" a +5Volt
"GND" a GND
"IN1" al pin del PWM GPIO18, magari con in serie una resistenza da 100 Ohm

"SSR +" a +5Volt
"SSR -" al pin "A" della schedina blu

PIN "G" collegare a +5Volt

Così dovrebbe andare se ho capito come funziona la schedina blu, anche se non capisco perchè ha 7 ingressi e solo 4 led :roll:

debugasm


Torna a “Domotica”

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite