Se sei già registrato           oppure    

Orario: 18/07/2019 10:56:50  

 

Energia Alternativa ed Energia Fai Da Te > Arduino

VISUALIZZA L'ALBUM

Pagine: (10)   1   2   3   4   5   6   7   8   [9]   10    (Ultimo Msg)


datalogger con arduino
FinePagina

Prius2008

Avatar
MegaWatt


Gruppo:Utente
Messaggi:300

Stato:



Inviato il: 18/03/2014 17:58:45

Ancora no!
Domani, tempo permettendo, scambio i due sensori, così mi tolgo il dubbio se è il sensore o il cavo troppo lungo. Vi tengo informati.
Nel frattempo mi è arrivata la scheda per memorizzare i dati sulla SD.
Aspetto un display 20x4. Come mi arriva assemblo il tutto!
Saluti!



---------------
6 kwp di pannelli disposti a sud con inclinazione di 41 gradi
n°2 regolatori da 50A mppt collegati in parallelo, + 3 regolatori mppt da 20A. Inverter UPS 24v 3KW. Pacco batterie da trazione 24v 1150Ah

 

Prius2008

Avatar
MegaWatt


Gruppo:Utente
Messaggi:300

Stato:



Inviato il: 19/03/2014 17:36:53

Ok ragazzi! Questa mattina ho scambiato i sensori......stesso problema. Ho pensato che sicuramente era il cavo. Ho messo un condensatore elettrolitico da 22microF 16v, tra il segnale e la massa, in modo da cortocircuitare eventuali segnali spuri verso terra. Ora funziona alla grande!



---------------
6 kwp di pannelli disposti a sud con inclinazione di 41 gradi
n°2 regolatori da 50A mppt collegati in parallelo, + 3 regolatori mppt da 20A. Inverter UPS 24v 3KW. Pacco batterie da trazione 24v 1150Ah

 

calcola
GigaWatt


Gruppo:Utente
Messaggi:4335

Stato:



Inviato il: 20/03/2014 16:54:50

http://www.energialternativa.info/public/newforum/ForumEA/ACS758-circuits.jpg


CITAZIONE

Inviato il: 29/12/2013 13:05:41

Can.Cit.Can.

CITAZIONE (Prius2008, 29/12/2013 09:00:15 ) Discussione.php?55442982&5#MSG65
Mi chiedevo dove posso trovare uno schema che mi indichi i valori e i componenti da aggiungere ai sensori.

Ciao Prius,
Ti riferisci alla RF e CF dello schema di seguito ?

Lo schema sopracitato è un classico interfacciamento tra il sensore e un microcontrollore con un piccolo filtro RC (personalmente 1K e 100nF)adatto per le misurazione di correnti continue.


Elettro ti aveva già consigliato di mettere un filtro, pensavo che l'avessi già fatto, oppure ho capito male?



Modificato da calcola - 20/03/2014, 16:58:09


---------------
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.

 

Prius2008

Avatar
MegaWatt


Gruppo:Utente
Messaggi:300

Stato:



Inviato il: 20/03/2014 17:04:12

Lo schema è giusto Calcola. é quello che ho fatto, i componenti sono su una millefori vicino al sensore, il problema, era che dal sensore all'arduino ci sono circa 8 metri, e quindi captava qualche altro disturbo. Il condensatore da 22 micro, l'ho messo dove ho l'arduino. In questo modo gli eventuali segnali spuri captati, vengono eliminati, dandomi una lettura pulita!
Ieri sera ho fatto il partitore di resistenze da mettere tra l'arduino e la scheda SD. Lo schema dice di usare i pin 12,11,13,10.
Come posso fare a collegarlo se i pin 12 e 11 li sto usando per il display?
Grazie a tutti!



---------------
6 kwp di pannelli disposti a sud con inclinazione di 41 gradi
n°2 regolatori da 50A mppt collegati in parallelo, + 3 regolatori mppt da 20A. Inverter UPS 24v 3KW. Pacco batterie da trazione 24v 1150Ah

 

calcola
GigaWatt


Gruppo:Utente
Messaggi:4335

Stato:



Inviato il: 20/03/2014 23:42:11

Capito per il condensatore, e buono a sapersi.
Per la SD non so aiutarti, non la uso.



---------------
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.

 

jackie2_it
KiloWatt


Gruppo:Utente
Messaggi:207

Stato:



Inviato il: 24/03/2014 21:00:51

Ciao prius2008 se hai bisogno io ho utilizzato l'sd sul Mio datalogger che vedi tra le prime pagine di questo post



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

 

Prius2008

Avatar
MegaWatt


Gruppo:Utente
Messaggi:300

Stato:



Inviato il: 24/03/2014 21:29:31

Grazie Jackie2_it, controllertò, se ho problemi ti faccio un fischio!

ciao ciao e grazie



---------------
6 kwp di pannelli disposti a sud con inclinazione di 41 gradi
n°2 regolatori da 50A mppt collegati in parallelo, + 3 regolatori mppt da 20A. Inverter UPS 24v 3KW. Pacco batterie da trazione 24v 1150Ah

 

Prius2008

Avatar
MegaWatt


Gruppo:Utente
Messaggi:300

Stato:



Inviato il: 01/04/2014 19:26:05

Ciao ragazzi. Sono pronto, forse, per poter creare con il vostro aiuto il mio datalogger, per il mio impianto. Lo scopo è quello di misurare la produzione e il consumo giornaliero registrarlo sulla Sd ad intervalli di 5 minuti e una volta al mese scaricare i dati sul pc in modo da creare un grafico. Vi elenco i materiali in lio possesso:
Una scheda Arduino UNO, due sensori ACS da + - 200A,un display 20x4, e una scheda per leggere la SD. Fino ad ora sono riuscito, con il vostro aiuto, a fare il programmino per leggere e visualizzare sul display la produzione espressa in Watt e il consumo.
Ora non so + come andare avanti! Help.
Incollo il programmino che ora ho sull'arduino.

#include
#include

LiquidCrystal_I2C lcd(0x27,20,4);

void setup()
{
lcd.init();


lcd.backlight();
lcd.setCursor(2,0);
lcd.print("Buongiorno Angelo!");
lcd.setCursor(5,1);
lcd.print("Benvenuto");
lcd.setCursor(0,2);
lcd.print("Impianto STAND-ALONE");
lcd.setCursor(5,3);
lcd.print("BY - ANGELO");
delay(2000);
lcd.clear();
}



void loop()
{
float corrente;
float voltaggio;
float consumo;
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Fotov. Amper"); //Produzione Fotovoltaico
lcd.setCursor(12,0);
corrente=analogRead(A2);// Sensore Corrente Campo Fotovoltaico 200A fs.
corrente=(((corrente-512)*0.00448777)*100);
lcd.print(corrente);
lcd.setCursor(0,1);
lcd.print("Produz. Watt");
voltaggio=analogRead(A1);//Tensione Banco Batterie
voltaggio=(((5.0*voltaggio*10.0)/1023+2)*1000);
lcd.setCursor(12,1);
lcd.print((voltaggio*corrente)/1000);//ProduzioneCampo Fotovoltaico espresso in Watt

//Seconda riga dello schermo. Assorbimento espresso in Watt dell'Inverter

lcd.setCursor(0,2);
lcd.print("Cons. Amper");
lcd.setCursor(12,2);
consumo= (((analogRead(A3)-508)*0.004487)*100);//Leggi Sensore Corrente Inverter
lcd.print(consumo);
lcd.setCursor(0,3);
lcd.print("Consumo Watt"); voltaggio=analogRead(A3);
voltaggio=(((5.0*voltaggio*10.0)/1023+2)*1000);
lcd.setCursor(12,3);
lcd.print((voltaggio*consumo)/1000);//Consumo dell'inverter espresso in Watt
delay(1500);//Attenti due secondi

}
Grazie a tutti!



Modificato da Prius2008 - 02/04/2014, 09:52:57


---------------
6 kwp di pannelli disposti a sud con inclinazione di 41 gradi
n°2 regolatori da 50A mppt collegati in parallelo, + 3 regolatori mppt da 20A. Inverter UPS 24v 3KW. Pacco batterie da trazione 24v 1150Ah

 

giorgio54
Watt


Gruppo:Utente
Messaggi:33

Stato:



Inviato il: 05/04/2014 23:03:58

@Prius2008 se non hai fretta e ti interessa ti invio il mio sketch di datalogger (non ancora finito) fatto per il momento con un Mega2560 una scheda SD un display 16x2 una RTC DS1302 con libreria modificata per giornio e mesi in italiano + un sensore temperatura LM35Z così vedi come fare per i dati sulla SD.
Ti premetto che essendo ancora in fase sperimentale no ho potuto provare a fondo il problema del ripristino dell'SPI se si toglie la SD con l'Arduino acceso inoltre i pin a cui faccio riferimento sono dell'Arduino Mega2560 quindi devi adattarli al tuo.
fammi sapere.

 

jackie2_it
KiloWatt


Gruppo:Utente
Messaggi:207

Stato:



Inviato il: 06/04/2014 09:17:54

CITAZIONE (jackie2_it, 05/04/2014 23:03:58 ) Discussione.php?55442982&4#MSG50

Ecco il codice completo che uso sul mio arduino.
Per la lettura della corrente ho creato una funzione LeggiCorrente.


#include <LiquidCrystal.h>
#include <Wire.h>
#include "RTClib.h"
#include "DHT.h"
#include <SD.h>
 
RTC_DS1307 RTC;

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

#define DHTPIN 2     // what pin we're connected to
#define DHTTYPE DHT22   // DHT 22  (AM2302)
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5
#define NUMREADINGS 5 //Il numero indica i valori tensione da leggere
#define inputPin (A1) //Sensore tensione collegato al pin analogico 1
#define pinCorrentePannello (A2) //Sensore di corrente per il pannello (pin analogico 2).
#define pinCorrenteCarico (A3) //Sendore di corrente per il carico (pin analogico 3);
#define coefficiente_conversione 0.05471365 //0.0540789 //0.05435
#define numeroPagine 2 //indica il numero di pagine che verranno visualizzate.
const int BACKLIGH_PIN = 10;//Assegnazione Retroilluminazione
const int TempoLed = 200; //Scegli il Tempo della retroilluminazione
int timeOut = TempoLed;

DHT dht(DHTPIN, DHTTYPE);

int numeroPagina = 0;
int oldPagina = -1;
File myFile;
int minuti =0;
int giorno =0;
String nomeFile = "";
char filename[13];

float tensioneBatteria = 0;
float correntePannello = 0;
float correnteCarico = 0;
float umidita = 0;
float temperatura = 0;
 
int read_buttons() {
  
 int adc_key_in = analogRead(0);
 
 if (adc_key_in > 1000) return btnNONE;
 if (adc_key_in < 50)   return btnRIGHT;  
 if (adc_key_in < 195)  return btnUP; 
 if (adc_key_in < 380)  return btnDOWN; 
 if (adc_key_in < 555)  return btnLEFT; 
 if (adc_key_in < 790)  return btnSELECT;   
}
 
void setup()
{
  
 //Inizializzazione timer ds1307
 Serial.begin(57600);
 Wire.begin();
 RTC.begin();
 dht.begin();
 
 if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
 }
 
 //usa come chip select della sd il pin 3.
 if (!SD.begin(3)) {
    Serial.println("initialization failed!");
  }
 
 // indica il pin A0 come input.
 pinMode(inputPin, INPUT);  
  
 lcd.begin(16, 2);
 lcd.setCursor(0,0);
 lcd.print("SolarLogger - Jackie2");
 delay(1000);
}

//Legge la tensione (della batteria).
float leggiTensione(int pinAnalogico){
  int index = 0; //Indice della lettura corrente
  int total = 0; //Totale letture
  int average = 0; //Media
  int readings[NUMREADINGS]; //Letture dal input analogico
  
  //azzera il vettore.
  for (int i = 0; i < NUMREADINGS; i++)
readings[i] = 0; //Mette tutti 0 nell'array
  
  //ciclia ed effettua le letture.
  for (int A = 0; A < NUMREADINGS; A++)
  {
    total -= readings[index]; //Sottrae l'ultima lettura
    readings[index] = analogRead(pinAnalogico); //Legge i valori provenienti dal sensore e li salva nell'array
    total += readings[index]; //Aggiunge la lettura al totale
    index = (index + 1); //Incrementa l'indice

    if (index >= NUMREADINGS)
    index = 0; //Alla fine dell'array resetta l'indice a 0

    average = total / NUMREADINGS; //Calcola la media
  }

  float VoltageReading;
  VoltageReading=average*coefficiente_conversione;
  Serial.print("tens ");
  Serial.println(average);
   return VoltageReading;
}

//Restituisce la corrente letta dal sensore ACS712
float leggiCorrente(int pinAnalogico, float taratura){
  float amper = 0;
  for(int i = 0; i < 1000; i++) {
   amper = amper + ((analogRead(pinAnalogico) -512) * 0.07405) / 1000;
  }
  //tolgo 0.03 perchè quando non è collegato nulla mi dà -0.03
  amper += taratura;
  //tolgo il segno negativo.
  amper = abs(amper);
  
  return amper;
}
  
void loop()
{

 DateTime now = RTC.now();
   
 //lcd.setCursor(0,1);
 //lcd.print("Pressed:");
 
 int buttons = read_buttons();
 //lcd.setCursor(9, 1);  
 if(buttons == btnRIGHT)       Serial.print("RIGHT ");
 else if(buttons == btnLEFT)   Serial.print("LEFT  ");
 else if(buttons == btnUP){     
     Serial.print("UP    ");
     if (numeroPagina > 0) {
       oldPagina = numeroPagina;
       numeroPagina -=1;
     }
     else {
       oldPagina = numeroPagina;
       numeroPagina = numeroPagine;}
     timeOut=TempoLed;
 }
 else if(buttons == btnDOWN){
     Serial.print("DOWN  ");
     if (numeroPagina < numeroPagine) {
       oldPagina = numeroPagina;
       numeroPagina +=1;
     }
     else {
       oldPagina = numeroPagina;
       numeroPagina = 0;
     }
     timeOut=TempoLed;
 }
 else if(buttons == btnSELECT) Serial.print("SELECT");
 else if(buttons == btnNONE)   Serial.print("NONE  ");

Serial.println(numeroPagina);

delay(100);

Serial.print("timeout ");
Serial.println(timeOut);

if (timeOut>0)  {
  digitalWrite(BACKLIGH_PIN, HIGH);//accendi LCD
  timeOut--;}
else
  digitalWrite(BACKLIGH_PIN, LOW);//spegni LCD

//Determina la tensione della batteria.
tensioneBatteria = leggiTensione(inputPin);
//Determina la corrente del pannello.
correntePannello = leggiCorrente(pinCorrentePannello, 0.03);
//Determina la corrente del carico.
correnteCarico = leggiCorrente(pinCorrenteCarico, 0.08);

//umidità
umidita = dht.readHumidity();

//temperatura
temperatura = dht.readTemperature();

//Gestione delle Pagine a video. 
//if (numeroPagina != oldPagina){
// oldPagina = numeroPagina;
 switch(numeroPagina)
 {
   case 0:
     // Data e ora.
     lcd.clear();
     char buffer[10];
     sprintf(buffer, "%02d/%02d/%d %02d:%02d:%02d", now.day(), now.month(), now.year(), now.hour(), now.minute(), now.second());
     lcd.setCursor(0,0);
     lcd.print(buffer);
     lcd.setCursor(1,1);
     lcd.print(temperatura);
     lcd.print("C ");
     lcd.print(umidita);
     lcd.print("%");
     if (minuti != now.minute()) lcd.print(" *");
     break;
 
   case 1:
     //Corrente IN = Pannello, OUT = Carico.
     lcd.clear();
     lcd.setCursor(0,0);
     lcd.print("IN  ");
     //lcd.setCursor(0,6);
     lcd.print(correntePannello);
     lcd.print("A");
     lcd.setCursor(0,1);
     lcd.print("OUT ");
     //lcd.setCursor(1, 6);
     lcd.print(correnteCarico);
     lcd.print("A");
     break;
     
   case 2:
     //Tensione batteria
     lcd.clear();
     lcd.setCursor(0,0);
     lcd.print("Tensione Batteria");
     lcd.setCursor(1,1);
     lcd.print(tensioneBatteria);
     lcd.print("V");
     break;
 }
//}

if (minuti != now.minute()) {
  Serial.print("è passato un minuto");
  minuti = now.minute();

  //scrive i valori sul file ogni minuto.
  
  //now.day(), now.month(), now.year()
  
  //crea il nome del file solo se è cambiato il giorno.
  if (giorno != now.day()) {
      giorno = now.day();
    
    nomeFile = "";
    
    nomeFile += now.year();
   
    if(now.month()<10) nomeFile += "0";
    nomeFile += now.month();
    
    if(now.day()<10) nomeFile += "0";
    nomeFile += now.day();
    
    nomeFile += ".csv";
    
    //converte la stringa in vettore di caratteri.
    nomeFile.toCharArray(filename, sizeof(filename));
  }
  
  //se non esiste il file lo crea
  myFile = SD.open(filename, FILE_WRITE);
  
  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Scrivo il file ");
    //tracciato record del file.
    //DATA;ORA;BATTERIA;PANNELLO;CARICO;TEMPERATURA;UMIDITA
    
    //DATA
    myFile.print("\"");
    myFile.print(now.year());
    myFile.print("-");
    myFile.print(now.month());
    myFile.print("-");
    myFile.print(now.day());

    myFile.print(" ");
    //ORA
    myFile.print(now.hour());
    myFile.print(":");
    myFile.print(now.minute());
    myFile.print(":");
    myFile.print(now.second());
    myFile.print("\",");
    
    myFile.print("null,");
    
    //BATTERIA
    myFile.print("\"");
    myFile.print(tensioneBatteria);
    myFile.print("\",");
    
    //PANNELLO
    myFile.print("\"");
    myFile.print(correntePannello);
    myFile.print("\",");
    //CARICO
    myFile.print("\"");
    myFile.print(correnteCarico);
    myFile.print("\",");
    
    //TEMPERATURA
    myFile.print("\"");
    myFile.print(temperatura);
    myFile.print("\",");
    //UMIDITA
    myFile.print("\"");
    myFile.print(umidita);
    myFile.println("\"");
    
  	// close the file:
    myFile.close();
    Serial.println("Fatto.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("errore di apertura del file");
  }
}
}


Prius hai visto questo?



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

 

Prius2008

Avatar
MegaWatt


Gruppo:Utente
Messaggi:300

Stato:



Inviato il: 06/04/2014 12:25:42

Si grazie. l'ho visto. Secondo te devo fare qualche modifica al mio arduino? Ho un display 20x4. Non sono pratico del linguaggio C, non l'ho studiato. quando andavo a scuola non esistevaSi grazie. l'ho visto. Secondo te devo fare qualche modifica al mio arduino? Ho un display 20x4. Non sono pratico del linguaggio C, non l'ho studiato. quando andavo a scuola non esisteva



---------------
6 kwp di pannelli disposti a sud con inclinazione di 41 gradi
n°2 regolatori da 50A mppt collegati in parallelo, + 3 regolatori mppt da 20A. Inverter UPS 24v 3KW. Pacco batterie da trazione 24v 1150Ah

 

jackie2_it
KiloWatt


Gruppo:Utente
Messaggi:207

Stato:



Inviato il: 06/04/2014 22:11:27

Mi indichi quale display stai utilizzando? Il link da dove l'hai preso?



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

 

Prius2008

Avatar
MegaWatt


Gruppo:Utente
Messaggi:300

Stato:



Inviato il: 07/04/2014 13:18:52

Dettagli su 2004 Display LCD seriale 20 x 4 IIC I2C, Arduino, PicMicro, AVR. With tracking2004 Display LCD seriale 20 x 4 IIC I2C, Arduino, PicMicro, AVR. With tracking | Aggiungi a Oggetti che osservi
Informazioni sul venditore
m.m7475 (2043 ) 99,5% Feedback positivo

CITAZIONE

http://www.ebay.it/itm/360861290832?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649#ht_1723wt_1037



---------------
6 kwp di pannelli disposti a sud con inclinazione di 41 gradi
n°2 regolatori da 50A mppt collegati in parallelo, + 3 regolatori mppt da 20A. Inverter UPS 24v 3KW. Pacco batterie da trazione 24v 1150Ah

 

Luca450Mhz

Avatar
GigaWatt


Gruppo:Utente
Messaggi:2979

Stato:



Inviato il: 07/04/2014 14:16:21

Il tuo display è comandato da interfaccia I2C, ovvero usi solamente 4 pin (Vcc, Gnd, SCL, Data) però ti serve un circuitino in più per poterlo pilotare. Infatti bisogna usare uno shift register comandato tramite I2C.
Oppure puoi trovare degli adattatori già pronti.



---------------
Pannelli: 3195 Wp policristallini. Inverter UPS PSW7 6kW 48V toroidale con switch comandato dal mio sistema di domotica (ESP8266). Regolatore di carica: Finalmente di nuovo il PCM8048!
Batterie: 24 elementi trazione pesante 315Ah C5 48V
Impianto illuminazione giardino: 300Wp amorfi, regolatore MPPT EpSolar 20A, inverter onda pura 300W, 100Ah batterie auto

 

Prius2008

Avatar
MegaWatt


Gruppo:Utente
Messaggi:300

Stato:



Inviato il: 07/04/2014 20:51:16

Grazie Luca, il dispay l'ho collegato. è tutto ok, devo solo cercare di far memorizzare i dati che legge sulla SD.



---------------
6 kwp di pannelli disposti a sud con inclinazione di 41 gradi
n°2 regolatori da 50A mppt collegati in parallelo, + 3 regolatori mppt da 20A. Inverter UPS 24v 3KW. Pacco batterie da trazione 24v 1150Ah

 
 InizioPagina
 

Pagine: (10)   1   2   3   4   5   6   7   8   [9]   10    (Ultimo Msg)

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum