Arduino Ethernet per attivare in automatico con relè dei boiler in base all'energia istantanea in produzione - EnergeticAmbiente.it

annuncio

Comprimi
Ancora nessun annuncio.

Arduino Ethernet per attivare in automatico con relè dei boiler in base all'energia istantanea in produzione

Comprimi
X
 
  • Filtro
  • Ora
  • Visualizza
Elimina tutto
nuovi messaggi

  • Arduino Ethernet per attivare in automatico con relè dei boiler in base all'energia istantanea in produzione

    Ciao a tutti, sto sviluppando un programma per Arduino Ethernet, che acceda al file minYYMMDD.csv presente sulla root del webserver del solarlog.

    Arduino legge la PAC (potenza istantanea prodotta dall'inverter) ogni minuto, e in base a questo abilita o disabilita dei relè da 16A per accendere dei sistemi di riscaldamento elettrico, solo se effettivamente c'è autoproduzione, in modo d anon prelevarne dalla rete.
    Dovrebbe leggere la potenza istantanea e poi:


    if is > 5000 watts , enables 5 relays to power 5 boilers of 1KW everyone ;
    if is > 4000 and <4999 watts , enables 4 relays to power 4 boilers of 1KW everyone ;
    if is > 3000 and <3999 watts , enables 3 relays to power 3 boilers of 1KW everyone ;
    if is > 2000 and <2999 watts , enables 2 relays to power 2 boilers of 1KW everyone ;
    if is > 1000 and <1999 watts , enables 1 relays to power 1 boilers of 1KW everyone ;
    if is < 1000 disables all relays.


    Solo che con l'ultima release del firmware del solarlog non è più possibile accedere direttamente ai file csv, me lo impedisce. Allora o mantengo un firmware vecchio oppure uso un'altra pagina web, magari anche piuù leggera possibile (arduino non legge pagine da 200 o 300kbyte, sono troppo pesanti...).

    Qualcuno sa in quale file html statico/csv/txt è possibile estrapolare istante per istante la potenza istantanea? (arduino non può cliccare può fare solo il get di un file statico html o txt con il valore di potenza già presente, non lo può elaborare tramite javascript.

    Suggerimenti?








  • #2
    Ma se non erro il SL è già dotato di 4 interruttori intelligenti per comandare altrettante utenze: 3 tramite LAN e 1 rele' a potenziale zero.
    IO sto già utilizzando una uscita che mi comanda autimaticamente una resistenza da 1300 inserita in un boiler solare termico e devo dire che funziona molto bene. Ulitizzo un power line e una presa di rete ALL NET.
    Ora vorrei implementare il sitema, visto che ho un impianto abbastanza potente ed elastico, con un dispositivo che mi accenda dentro i livelli di produzione preimpostati una pompa di calore solo che, l'accenzione della pompa di calore non avviene come la resistenza ovvero acceso/spento, ma ad impulso. Non so se arduinio ethernet potrebbe fare al caso mio ovvero trasformare il segnale acceso spento del solar log in impulso che io intercettero' con arduino e coleghero' in parallelo sul telecomando della pompa di calore. Si puo' fare?..

    Cosa ne pensi?


    *** Citazione integrale rimossa. Violazione art.3 del regolamento del forum. nll ***
    Ultima modifica di nll; 25-05-2013, 18:52.
    2.88 kyocera inverter mitsubishi 16 tilt 0° dal 21.02.2009 Jesolo ve;
    2.88 electrosolar inverter mitsubishi 16 tilt 0° dal 22.12.2010 Jesolo Ve:
    11.4 kw centro solar inverter power one Pv 10.0 15 tilt -170° dal 03.10.2011 Jesolo Ve;
    solar log 1000.

    Commenta


    • #3
      Attenzione a pilotare PdC con dispositivi che danno segnali on/off molto ravvicinati, nel caso delle resistenze non succede niente, ma penso che alle PdC non facciano proprio bene...
      Impianto 5,52 Kw Tot. Integrato allacciato il 29/12/2010 Azimut: SSE 160° - Tilt: 25° N. 24 pannelli policristallini BP Solar Endura BP-3230T Inverter Power-One PVI-6000-OUTD-S-IT [COLOR=#ff0000]- Updated - Castrignano de Greci (LE) www.castrignanometeo.eu:biker:

      Commenta


      • #4
        francamente mi fido di più di Arduino che del software del solarlog. Appate che nel mio solarlog non sono presenti relè o altro..forse il tuo è più recente? ad ogni modo ho sviluppato l'applicazione in c per Arduino. legge il valore Pac per esempio 3000w dalla pagina web del solarlog, per ora l'ho impostato con un if potenza maggiore di 1500watt attacca un relè (a cui ho collegato un vecchio boiler da 1500watt) altrimenti staccato. il boiler però una volta in temperatura spegne la resistenza e in quel caso Arduino riceve il segnale di un altro relè per fargli capire che il boiler non sta alimentando la resistenza.. a quel punto e finché le condizioni rimangono tali avvia una pompa di calore. l'algoritmo è abbastanza rudimentale ma funzionale.. il check lo fa ogni 60 secondi. se il solarlog non è raggiungibile via web stacca tutti i reley.

        Commenta


        • #5
          Ciao, intrigante il tuo progetto, anche se le informazioni le estrapoli dal web anziche' dal solar log. Complimenti
          Si hai ragione mi sono accorto che le uscite comandabili sono solo disponibili nel solar log 1000 come nella fattispecie.
          Hai installato anche il contatore ad impulsi SO per monitorare i consumi?


          *** Citazione integrale rimossa. Violazione art.3 del regolamento del forum. nll ***
          Ultima modifica di nll; 25-05-2013, 18:51.
          2.88 kyocera inverter mitsubishi 16 tilt 0° dal 21.02.2009 Jesolo ve;
          2.88 electrosolar inverter mitsubishi 16 tilt 0° dal 22.12.2010 Jesolo Ve:
          11.4 kw centro solar inverter power one Pv 10.0 15 tilt -170° dal 03.10.2011 Jesolo Ve;
          solar log 1000.

          Commenta


          • #6
            Anch'io sto tentando di arrivare allo stesso risultato, anche se con un sistema commerciale, che dovrei installare a giorni!

            Si tratta del clever trifase, munito di ben 5 uscite relè programmabili, sia in base alla produzione del fotovoltaico, che a quella della potenza immessa in rete (cioè chiudo il relè se la differenza fra prodotto e consumato è superiore ad un tot.)

            Il tutto è gestibile per ora solo da web, tramite il loro portale, ed ancora non ho ben capisto come lavoreranno i relè, con quale isteresi e con che tempi di reazione (non c'è il modo di programmarli!)

            Sui miei tripower, c'è di serie il relè programmabile tramite sunnyexplorer, ma tiene conto solo della produzione del singolo inverter, pur avendo tempi minimi impostabili prima degli interventi (sis sa che le produzioni possono ballare parecchio in certi giorni, e sarebbe un guaio se attacca e stacca centinaia di volte una pompa di calore!)

            Sul clever, impostando l' attivazione dei relativi relè su livelli crescenti di immissione di energia, vorrei a pompa di calore accesa a potenza minima, e man mano che cresce la produzione, far aumentare la potenza della poma di calore (inverter).

            Per ora gli esperimenti li faro' con delle resistenze immerse nel puffer dell' impianto di riscaldamento, usando le tre fasi per attivare in sequenza le relative resistenze.

            La sma ha realizzato un prodotto, che in abbinamento ai loro inverter, al webserver, in base al tempo (meteorologico) della zona dov'è installato l' impianto, ottimizza attivando le varie tipologie di elettrodomestici per i tempi necessari (alla lavatrice servono 2 ore, alla lavastoviglie 1,5 etc), massimizzando gli autoconsumi. Peccato che abbia costi non alla portata di tutti, soprattutto per i vari componenti necessari. Credo comunque,che per ora sia il miglior sistema commerciale presente!

            Commenta


            • #7
              io ho speso 50 euro di elettronica in tutto e 6 ore per programmare la elettronica scheda. per ora ho messo una configurazione fissa ma ho intenzione di attivare una pagina web che consenta di configurare i vari relè. la scheda me ne gestisce 10 ma per Ora me ne bastano 3 (1 boiler e 2 pompe di calore)

              Commenta


              • #8
                Si ci credo! Ma io ho poca pratica di arduino e mi manca il tempo in questo periodo. Seguo con attenzione quello che vi inventate, ma usare degli amperometri per leggeri i valori, invece che il log dei solarlog, sarebbe tanto piu' comlicato??

                Commenta


                • #9
                  Bella questa discussione ;0)
                  Anche io sto "litigando" con Arduino.
                  Nello specifico cerco di interrogare l'Inverter tramite Arduino ma sto cercando di utilizzare il protocollo UDP. Ho tentato l'SNMP ma non ci sono librerie per Arduino (c'è l'Agentuino ma è incompleta). Potrei tentare anche io la via dell'HTML.
                  Per ora il risultato più esaltante è stato interrogare l'Inverter via SNMP con un batch Java sul PC che poi invia i dati ad Arduino via UDP. Arduino si fa banali calcoletti e mi accende i classici Led Rosso/Giallo/Verde a seconda della Produzione.
                  Quello che devo riuscire a fare è eliminare il PC e far parlare Arduino direttamente con l'Inverter.
                  Non sono ancora alla fase Relè ;0)

                  Complimenti a tutti comunque.
                  Impianto FTV 7,59Kwp - Parzialmente Integrato
                  - Pannelli 33 Yingli Solar policristallini YL230PT-29b - Inverter Aros Sirio 10000P
                  - Azimuth 45° (Sud-Est) - Tilt 18°
                  Connesso 21/12/2011 - Litorale Romano

                  Commenta


                  • #10
                    programma per arduino

                    Ciao a tutti, oggi ho dovuto riprogrammare arduino perchè mi ero perso i sorgenti.

                    Ecco qui un cut and paste del listato del programma, nel caso servisse ad altri (ovviamente è migliorabile):

                    --------------------
                    /*
                    Boiler alimentato da impianto fotovoltaico solo quando c'è produzione sufficiente in watt ( Solarlog )

                    Questo sketch si connette all'interfaccia web del SolarLog 200 ethernet
                    e legge la potenza istantanea prodotta dall'inverter fotovoltaico.
                    Se la potenza è maggiore di 1600watt attiva l'uscita digitale
                    per alimentare il boiler elettrico che riscalda l'acqua sanitaria (installato in serie prima della caldaia a gas).
                    In questo modo l'acqua calda sanitaria è quasi completamente gratuita, dato che la caldaia se la ritrova
                    sempre preriscaldata nelle giornate di sole (termostato boiler impostato a 95 gradi). Nel mio caso il boiler è da 150 litri.
                    Circuit:
                    * Ethernet shield attached to pins 10, 11, 12, 13

                    created 22 May 2012
                    copyleft LGPL by Osti Fabrizio fabritrento@gmail.com

                    */

                    #include
                    #include

                    // assign a MAC address for the ethernet controller.
                    // fill in your address here:
                    byte mac[] = {
                    0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
                    // fill in an available IP address on your network here,
                    // for manual configuration:
                    IPAddress ip(192,168,0,56);

                    // fill in your Domain Name Server address here:
                    IPAddress myDns(192,168,0,1);

                    // initialize the library instance:
                    EthernetClient client;

                    char server[] = "192.168.0.55";

                    unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds
                    boolean lastConnected = false; // state of the connection last time through the main loop
                    const unsigned long postingInterval = 6L*1000L; // delay between updates, in milliseconds
                    // the "L" is needed to use long type numbers

                    void setup() {
                    // start serial port:
                    Serial.begin(9600);
                    // give the ethernet module time to boot up:
                    delay(1000);
                    // start the Ethernet connection using a fixed IP address and DNS server:
                    Ethernet.begin(mac, ip, myDns);
                    // print the Ethernet board/shield's IP address:
                    Serial.print("My IP address: ");
                    Serial.println(Ethernet.localIP());
                    }

                    void loop() {
                    // if there's incoming data from the net connection.
                    // send it out the serial port. This is for debugging
                    // purposes only:
                    int potenza;
                    if (client.available()) {
                    if (client.find("|")) { potenza = client.parseInt(); }
                    Serial.println("potenza istantanea in produzione:");
                    Serial.println(potenza);
                    client.stop();
                    pinMode(2, OUTPUT);
                    if (potenza>1600) { digitalWrite(2, LOW); Serial.println("potenza maggiore di 1600 attivo relay.");}
                    else { digitalWrite(2, HIGH);Serial.println("potenza minore di 1600 disattivo relay.");}
                    }

                    // if there's no net connection, but there was one last time
                    // through the loop, then stop the client:
                    if (!client.connected() && lastConnected) {
                    Serial.println();
                    Serial.println("disconnecting.");
                    client.stop();
                    }

                    // if you're not connected, and ten seconds have passed since
                    // your last connection, then connect again and send data:
                    if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) {
                    httpRequest();
                    }
                    // store the state of the connection for next time through
                    // the loop:
                    lastConnected = client.connected();
                    }

                    // this method makes a HTTP connection to the server:
                    void httpRequest() {
                    // if there's a successful connection:
                    if (client.connect(server, 80)) {
                    Serial.println("connecting...");
                    // send the HTTP PUT request:
                    client.println("GET /min_day.js HTTP/1.1");
                    client.println("Host: 192.168.0.56");
                    client.println("User-Agent: arduino-ethernet");
                    client.println("Connection: close");
                    client.println();

                    // note the time that the connection was made:
                    lastConnectionTime = millis();
                    }
                    else {
                    // if you couldn't make a connection:
                    Serial.println("connection failed");
                    digitalWrite(2, HIGH);Serial.println("disattivo relay.");
                    Serial.println("disconnecting.");
                    client.stop();
                    }
                    }

                    Commenta

                    Attendi un attimo...
                    X