| Prius2008
| 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!
--------------- 8 kwp di pannelli disposti a sud con inclinazione di 41 gradi. 3kw di pannelli a sud inclinazione 25 gradi. n°4 regolatori da 60A mppt collegati in parallelo. Inverter ibrido 48v 5KW Mppt per casa. 4 pacchi Lifepo4 da 105ah con relativo bms ed equalizzatore in parallelo. Inverter ibrido Pwm 48v 5Kw per ricarica auto elettrica.
| | | | Prius2008
| 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!
--------------- 8 kwp di pannelli disposti a sud con inclinazione di 41 gradi. 3kw di pannelli a sud inclinazione 25 gradi. n°4 regolatori da 60A mppt collegati in parallelo. Inverter ibrido 48v 5KW Mppt per casa. 4 pacchi Lifepo4 da 105ah con relativo bms ed equalizzatore in parallelo. Inverter ibrido Pwm 48v 5Kw per ricarica auto elettrica.
| | | | calcola
| Inviato il: 20/03/2014 16:54:50
|
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
| 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!
--------------- 8 kwp di pannelli disposti a sud con inclinazione di 41 gradi. 3kw di pannelli a sud inclinazione 25 gradi. n°4 regolatori da 60A mppt collegati in parallelo. Inverter ibrido 48v 5KW Mppt per casa. 4 pacchi Lifepo4 da 105ah con relativo bms ed equalizzatore in parallelo. Inverter ibrido Pwm 48v 5Kw per ricarica auto elettrica.
| | | | calcola
| 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
| 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
| Inviato il: 24/03/2014 21:29:31
|
Grazie Jackie2_it, controllertò, se ho problemi ti faccio un fischio!
ciao ciao e grazie
--------------- 8 kwp di pannelli disposti a sud con inclinazione di 41 gradi. 3kw di pannelli a sud inclinazione 25 gradi. n°4 regolatori da 60A mppt collegati in parallelo. Inverter ibrido 48v 5KW Mppt per casa. 4 pacchi Lifepo4 da 105ah con relativo bms ed equalizzatore in parallelo. Inverter ibrido Pwm 48v 5Kw per ricarica auto elettrica.
| | | | Prius2008
| 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
--------------- 8 kwp di pannelli disposti a sud con inclinazione di 41 gradi. 3kw di pannelli a sud inclinazione 25 gradi. n°4 regolatori da 60A mppt collegati in parallelo. Inverter ibrido 48v 5KW Mppt per casa. 4 pacchi Lifepo4 da 105ah con relativo bms ed equalizzatore in parallelo. Inverter ibrido Pwm 48v 5Kw per ricarica auto elettrica.
| | | | 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
| Inviato il: 06/04/2014 09:17:54
|
CITAZIONE (jackie2_it, 05/04/2014 23:03:58 )
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
| 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
--------------- 8 kwp di pannelli disposti a sud con inclinazione di 41 gradi. 3kw di pannelli a sud inclinazione 25 gradi. n°4 regolatori da 60A mppt collegati in parallelo. Inverter ibrido 48v 5KW Mppt per casa. 4 pacchi Lifepo4 da 105ah con relativo bms ed equalizzatore in parallelo. Inverter ibrido Pwm 48v 5Kw per ricarica auto elettrica.
| | | | jackie2_it
| 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
| 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
--------------- 8 kwp di pannelli disposti a sud con inclinazione di 41 gradi. 3kw di pannelli a sud inclinazione 25 gradi. n°4 regolatori da 60A mppt collegati in parallelo. Inverter ibrido 48v 5KW Mppt per casa. 4 pacchi Lifepo4 da 105ah con relativo bms ed equalizzatore in parallelo. Inverter ibrido Pwm 48v 5Kw per ricarica auto elettrica.
| | | | Luca450Mhz
| 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: 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.
| | | | Prius2008
| 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.
--------------- 8 kwp di pannelli disposti a sud con inclinazione di 41 gradi. 3kw di pannelli a sud inclinazione 25 gradi. n°4 regolatori da 60A mppt collegati in parallelo. Inverter ibrido 48v 5KW Mppt per casa. 4 pacchi Lifepo4 da 105ah con relativo bms ed equalizzatore in parallelo. Inverter ibrido Pwm 48v 5Kw per ricarica auto elettrica.
| |
| | |
|
Versione Mobile!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|