Se sei già registrato           oppure    

Orario: 28/03/2024 20:44:28  

 

Energia Alternativa ed Energia Fai Da Te > Arduino

VISUALIZZA L'ALBUM

Pagine: (5)   1   2   3   [4]   5    (Ultimo Msg)


Datalogger Arduino per regolatore EP Solar
FinePagina

jackie2_it
KiloWatt


Gruppo:Utente
Messaggi:212

Stato:



Inviato il: 08/04/2014 21:56:26

Ciao a tutti la costruzione del datalogger versione gestibile via web prosegue ecco alcune foto che anticipano l'interfaccia web (totalmente su Arduino)
Ecco la prima schermata che mostra i valori istantanei
http://www.energialternativa.info/public/newforum/ForumEA/A/Screenshot_2014-04-08-21-39-58.png
Subito sotto un grafico che viene generato direttamente sul vostro browser web
http://www.energialternativa.info/public/newforum/ForumEA/A/Screenshot_2014-04-08-21-40-06.png
Questa invece è la videata di configurazione dove si può decidere il tempo di aggiornamento del grafico e la modalità di gestione del log (su scheda SD o sul web con la modalità di Danye)http://www.energialternativa.info/public/newforum/ForumEA/A/Screenshot_2014-04-08-21-39-45.png
Appena terminati i test posto lo sketch per i test



---------------
2 pannelli solari da 50 watt con regolatore steca p1010
Ecco i miei pannelli solari [URL=http://www.ilampidigenio.it]qui[/URL]

 

danye

Avatar
KiloWatt


Gruppo:Utente
Messaggi:258

Stato:



Inviato il: 10/04/2014 08:33:20

Bello! Sono curioso di vedere lo sketch che costruisce la pagina web.
Vai alla grande!



---------------
1x185Wp poli direzione sud
1xRegolatore MPPT EpSolar Tracer 3015
7x batterie auto da recupero in parallelo 12volt 400 Ah molto teorici
Sistema 12 volt che alimenta le luci a led di tutto l'appartamento
Sito realtime in versione beta... solare.altervista.org

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 10/04/2014 09:09:33

.....
Un lavoro veramente eccezionale ...complimenti

 

jackie2_it
KiloWatt


Gruppo:Utente
Messaggi:212

Stato:



Inviato il: 11/04/2014 19:22:17

Grazie per i complimenti ma non sto facendo nulla di chè .
Cmq presto posto il codice della prima versione



---------------
2 pannelli solari da 50 watt con regolatore steca p1010
Ecco i miei pannelli solari [URL=http://www.ilampidigenio.it]qui[/URL]

 

jumpjack
MegaWatt


Gruppo:Utente
Messaggi:319

Stato:



Inviato il: 03/05/2014 11:49:32

Complimenti a tutti per l'ottimo lavoro.
Adesso che la prototipazione è terminata... che ne dite di passare il tutto su un bell'Ardulog? :-)
http://www.hobbytronics.co.uk/ardulog

Si è evoluto passando da un rudimentale e quasi inutile OpenLog (senza pin analogici) all' Ardulog V1, V2 e V3 (con sempre più pin a disposizione) fino ad arrivare, finalmente, all'Ardulog con RTC incorporato!

DS1338 Real Time Clock with battery backup
Datalogging Sensor input connections
Up to 4 Analog Input pins for logging analog signals (Arduino pins A0 thro A3)
3 Digital input pins D2, D3, D4
I2C pins SDA and SCL
SPI
RX/TX Serial
Dallas DS18B20 input pins

E' grande quanto una moneta, costa quanto una Arduino Uno, ma ha SD Card e RTC incorporati!

In questo post trovate una mia applicazione dell'ardulog V2:
http://jumpjack.wordpress.com/2013/04/07/powerduino-standalone-ecco-i-sorgenti/

Qui c'è lo sketh che logga il pin A1:
http://jumpjack.altervista.org/ArduLog_Analog_3_2.ino

Qui c'è il firmware originale OpenLog, molto ottimizzato... ma logga solo da seriale:
https://github.com/sparkfun/OpenLog

Nota (mia):
Per caricare uno “sketch” su Ardulog V2, bisogna collegarlo al PC tramite circuito adattatore FTDI (RS232/TTL), oppure tramite una Arduino Uno priva del microchip, collegando i pin RX-RX, TX-TX, Vcc-3.3V, GND-GND, RST-RESET, e impostando Arduino Uno sull’IDE.



Modificato da jumpjack - 04/05/2014, 14:25:25
 

jumpjack
MegaWatt


Gruppo:Utente
Messaggi:319

Stato:



Inviato il: 04/05/2014 14:24:03

Scusate, ma quest'altro thread parla della stessa cosa o sbaglio?
http://www.energialternativa.info/Public/newforum/Discussione.php?53414785&4

 

jackie2_it
KiloWatt


Gruppo:Utente
Messaggi:212

Stato:



Inviato il: 04/05/2014 21:13:04

Qui stiamo facendo l'interfacciamento dell'epsolar con Arduino, in quel post si parlava di come collegarlo con il pc

Il dispositivo da te indicato è troppo limitato per quello che sto facendo fare adesso al Arduino uno visto che ho bisogno della scheda di rete.

P.s. se parli di questo progetto sul tuo sito visto che è frutto del lavoro di altre persone citarne almeno la fonte grazie.



Modificato da jackie2_it - 04/05/2014, 21:30:43


---------------
2 pannelli solari da 50 watt con regolatore steca p1010
Ecco i miei pannelli solari [URL=http://www.ilampidigenio.it]qui[/URL]

 

jumpjack
MegaWatt


Gruppo:Utente
Messaggi:319

Stato:



Inviato il: 19/05/2014 19:48:18

CITAZIONE (jackie2_it, 04/05/2014 21:13:04 ) Discussione.php?211451&4#MSG54



Il dispositivo da te indicato è troppo limitato per quello che sto facendo fare adesso al Arduino

Io mi accontenterei di riuscire a collegarlo a un Ardulog:
http://www.hobbytronics.co.uk/ardulog-rtc

 

danye

Avatar
KiloWatt


Gruppo:Utente
Messaggi:258

Stato:



Inviato il: 26/10/2014 12:57:03

Salve gente, dopo un periodo di assenza rieccomi quì...
Vorrei completare il progetto che per motivi di tempo è rimasto fermo, ma per quanto mi riguarda il mio arduino è collegato in rete ormai da diversi mesi popolando un database mysql di molti dati su server altervista remoto. Riassumendo, ho fatto in modo che vengano registrarti sul DB, ogni 5 secondi, i valori di tensione e corrente del mio impiantino, composto da un regolatore EPsolar tracer3015, 7 batterie di recupero, ed un pannello da 180wp.
Tutto funziona bene se non fosse che l’ethernet ethernet shield w5100 ogni tanto si blocca. Il problema sembrerebbe noto, e pare sia un bug non risolvibile causato dal chip di comunicazione dello shield.
Per risolvere il problema pensavo di fare un controllo software all’interno dello shetch tipo:


if (client.connect(server, 80)) { 
String strURL = "GET /arduino/arduino.php?psw=abcd&tensione_pannello="; 
strURL += (int)tensione_pannello; 
strURL += "&corrente_pannello="; 
strURL += (int)corrente_pannello; 
strURL += "&tensione_batteria="; 
strURL += (int)tensione_batteria; 
strURL += "&corrente_batteria="; 
strURL += (int)corrente_batteria; 
strURL += "&tensione_carico="; 
strURL += (int)tensione_carico; 
strURL += "&corrente_carico="; 
strURL += (int)corrente_carico; 
strURL += " HTTP/1.0"; 

client.println(strURL); 
client.println("Host: solare.altervista.org"); 
client.println(); 

} 
else { 
<font size="+2">reset della ethernet shield se il client non è connesso</font>  
} 


e una mod hardware collegando il pin di reset della ethernet shield ad un pin di output di arduino, in modo da ricevere l’impulso di reset al verificarsi del blocco.
Appena ho tempo da dedicare inizio i test, nel frattempo se qualcuno ha una soluzione migliore può dirla.
Un saluto particolare a jackie2_it, che forse per problemi di tempo, come me, ad oggi non ha potuto portare avanti il progetto.



---------------
1x185Wp poli direzione sud
1xRegolatore MPPT EpSolar Tracer 3015
7x batterie auto da recupero in parallelo 12volt 400 Ah molto teorici
Sistema 12 volt che alimenta le luci a led di tutto l'appartamento
Sito realtime in versione beta... solare.altervista.org

 

danye

Avatar
KiloWatt


Gruppo:Utente
Messaggi:258

Stato:



Inviato il: 19/11/2014 20:43:14

Ho modificato lo sketch per il reset della ethernet shield in caso di blocco, magari a qualcuno serve la parte che gestisce il reset


#include <SPI.h>
#include <Ethernet.h>

//------------------------- Parametri Ethernet shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte server[] = {144,76,107,68};
IPAddress ip(192,168,1,7);
byte subnet[] = { 255, 255, 255, 0 }; 
byte gateway[] = { 192, 168, 1, 1 }; 
EthernetClient client;
//--------------------------

//-------------------------- Setta le varibili contenenti le letture dal regolatore di carica
String strURL = "";
int tensione_pannello;
int corrente_pannello;
int tensione_batteria;
int corrente_batteria;
int tensione_carico;
int corrente_carico;
int data_long = 0;
int data[50];

//--------------------------- Pin di uscita digitali
int led = 5; // pin di uscita dedicato al led di segnalazione di corretto funzionamento
int rst_ethernet = 2; // pin di uscita dedicato al reset della ethernet shield

//--------------------------- Variabili di temporizzazione reset ethernet shield
boolean reset = 1; // Contatore dei reset della ethernet shield
int ciclo_reset = 5;// Numero di tentativi di connessione al server remoto prima di resettare l'ethernet shield
int cont_reset = 3; // Numero massimo di reset della ethernet shield
unsigned long time_reset; //variabile di temporizzazione
unsigned long attesa_reset = 600000; //intervallo dal prossimo tentativo di reset della shield (milliseconds) 600000 = 10 minuti
//---------------------------

void setup() 
  {
  Serial.begin(9600);
  pinMode(led, OUTPUT);
  pinMode(rst_ethernet, OUTPUT);
  reset_ethernet();
  }

void reset_ethernet(void)
  {
  reset = 1;
  digitalWrite(rst_ethernet, LOW);
  digitalWrite(led, HIGH);
  delay(1000);
  digitalWrite(rst_ethernet, HIGH);
  digitalWrite(led, LOW);
  Ethernet.begin(mac, ip);
  delay(1000);
  for (int i=0; i <= 10; i++)
    {
    digitalWrite(led, HIGH);
    delay(300);               
    digitalWrite(led, LOW);    
    delay(300);
    }
  }

void update(void)
  {
  Serial.write(0xAA); 
  Serial.write(0x55); 
  Serial.write(0xAA); 
  Serial.write(0x55); 
  Serial.write(0xAA); 
  Serial.write(0x55);
  Serial.write(0xEB); 
  Serial.write(0x90); 
  Serial.write(0xEB); 
  Serial.write(0x90); 
  Serial.write(0xEB); 
  Serial.write(0x90); 
  Serial.write(0x16); // versione indico 1 
  Serial.write(0xA0); // Richiedo al regolatore i dati in tempo reale. 
  Serial.write(0x00); // Lunghezza dei dati 
  Serial.write(0xB1); // Check sum 
  Serial.write(0xA7); // Check sum 
  Serial.write(0x7F);
  delay(500); 
  if (Serial.available() > 40)
    {
    digitalWrite(5, HIGH);
    data_long = Serial.available();
    for (int n=0; n < data_long; n++)
      {       
      data[n] = Serial.read();
      }
    tensione_pannello = (data[12]<<8)|data[11];
    corrente_pannello = 0;
    tensione_batteria = (data[10]<<8)|data[9];
    corrente_batteria = (data[31]<<8)|data[30];
    tensione_carico = tensione_batteria;
    corrente_carico = (data[16]<<8)|data[15];
    if (client.connect(server, 80))
      {
      String strURL = "GET /arduino/arduino.php?psw=0000&tensione_pannello=";
      strURL += (int)tensione_pannello;    
      strURL += "&corrente_pannello=";
      strURL += (int)corrente_pannello;
      strURL += "&tensione_batteria=";
      strURL += (int)tensione_batteria;
      strURL += "&corrente_batteria=";
      strURL += (int)corrente_batteria;
      strURL += "&tensione_carico=";
      strURL += (int)tensione_carico;
      strURL += "&corrente_carico=";
      strURL += (int)corrente_carico;
      strURL += "&reset_shield=";
      strURL += reset;
      strURL += " HTTP/1.0";
      client.println(strURL);
      client.println("Host: solare.altervista.org");
      client.println();
      ciclo_reset = 5;
      cont_reset = 3;
      reset = 0;  
     }
     else
     {
      if (!ciclo_reset == 0)
        {
        ciclo_reset --;
        }
        else
        {  
        if(!cont_reset == 0)
          {
          reset_ethernet();
          cont_reset --;
          }
          else
          {
          time_reset = millis();
          while((millis() - time_reset) <= attesa_reset)
            {
            digitalWrite(led, HIGH);
            delay(100);               
            digitalWrite(led, LOW);    
            delay(100);
            }
          cont_reset = 1;
          }    
        } 
      }  
    }

    while(client.available())
    {
    char c = client.read();
    //Serial.print(c);
    }

    if (!client.connected())
    {
    client.stop();
    }
  }

void loop()
  {
  update(); 
  delay(1000);
  digitalWrite(5, LOW);
  delay(1000);
  }



---------------
1x185Wp poli direzione sud
1xRegolatore MPPT EpSolar Tracer 3015
7x batterie auto da recupero in parallelo 12volt 400 Ah molto teorici
Sistema 12 volt che alimenta le luci a led di tutto l'appartamento
Sito realtime in versione beta... solare.altervista.org

 

Luca450Mhz

Avatar
GigaWatt


Gruppo:Utente
Messaggi:3204

Stato:



Inviato il: 19/11/2014 22:26:24

Scusa una informazione vedo che tu passi i valori di tensione e corrente come interi, però nella pagina web si vedono i valori reali, con 2 cifre decimali. Come fai?
Io sto diventando matto per capire come passare tramite URL i valori double..



---------------
Pannelli: 6975 Wp (poli e mono). Inverter UPS PSW7 6kW 48V toroidale con switch comandato dal mio sistema di domotica (RaspberryPi + vari Wemos D1 Mini - ESP8266). Regolatore di carica: Mpp Solar PCM8048.
Batterie: 24 elementi trazione pesante 315Ah C5 48V.

 

danye

Avatar
KiloWatt


Gruppo:Utente
Messaggi:258

Stato:



Inviato il: 20/11/2014 07:58:56

Meglio evitare i decimali con arduino, semplicemente lo sketc invia ad esempio vbat=1250 alla pagina php sul server, che poi con una semplice divisione per 100 diventa 12.50



---------------
1x185Wp poli direzione sud
1xRegolatore MPPT EpSolar Tracer 3015
7x batterie auto da recupero in parallelo 12volt 400 Ah molto teorici
Sistema 12 volt che alimenta le luci a led di tutto l'appartamento
Sito realtime in versione beta... solare.altervista.org

 

Vale63
milliWatt


Gruppo:Utente
Messaggi:1

Stato:



Inviato il: 06/06/2015 16:46:06

Ciao a tutti,
ho un regolatore EpSolar Tracer 1210RN e volevo provare i vostri sketch con Arduino.
avete proseguito le prove o il discorso è finito così ?
Innanzitutto devo acquistare Arduino, meglio UNO+Ethernet Shield o Arduino Ethernet ?
Info per la shield Sc Card e RTC ?
Grazie, ciao Valentino

 

calcola
GigaWatt


Gruppo:Utente
Messaggi:4435

Stato:



Inviato il: 09/06/2015 07:54:00

Per il reset senza sprecare una uscita digitale si può fare anche così:

#include avr/io.h>
#include avr/wdt.h>

void setup(){

wdt_enable(WDTO_8S); //abilito il watchdog e imposto come tempo di reset 8 secondi ma anche 2,4,6
}

void loop(){

riavvio()

}

void riavvio(){
wdt_reset();//resetto il watchdog
//Serial.println("azzerato");
}

Posizionare la chiamata al sottoprogramma riavvio() alla fine del ciclo logico di loop. Funziona con il bootloader dell'arduino uno, nel 2009 occorre sostituire il bootloader.

PS: per problemi nella visualizzazione del listato ho dovuto eliminare il segno "minore" degli include, se interessa la funzione occorre rimetterlo.



Modificato da calcola - 09/06/2015, 08:02:30


---------------
Impara l'arte e mettila da parte
14 pannelli da 100w, inverter kemapower 3kw, regolatore morningstar tristar ts60, banco batterie n.1 di 12 elementi 2v 480Ah C5 corazzate per trazione pesante, banco batterie n.2 di 400Ah in C5 formato da 24 elementi 2V 200Ah corazzate al gel per fotovoltaico in due serie da 12 elementi, centralina di gestione impianto autoprodotta.

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 09/06/2015 09:57:54

CITAZIONE (calcola, 09/06/2015 07:54:00 ) Discussione.php?211451&4#MSG61

Per il reset senza sprecare una uscita digitale si può fare anche così ......

Ma lo scopo è il reset del micro con la routine riavvio ?

Normalmente il watchdog deve essere resettato costantemente nel programma nel tempo impostato del settaggio .
Se il reset del watchdog non avviene interviene l'interrupt e resetta il micro.
Nell'esempio fà quello ,quindi monitorizza se almeno una volta ogni 8 secondi viene eseguita la routine loop.

Se invece lo scopo era il reset (come ho capito che sia) bisognerebbe creare subroutine con un ciclo While(1) che mette in loop infinito il micro.
Trascorso il tempo impostato il micro và in reset.

Ciao
ElettroshockNow

 
 InizioPagina
 

Pagine: (5)   1   2   3   [4]   5    (Ultimo Msg)

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum