| Pinko2
milliWatt Gruppo:Utente Messaggi:17
Stato:
| Inviato il: 06/09/2016 23:27:15
|
Era solo per chiarire il concetto del sensore, oltre il range dei 300A non e garantita la lettura, se vedi nella tabbella subito sotto è scritto I/pn 0.625V che è riferito a 100A.
In ogni caso ho risolto con i dati da me calcolati, sballava la lettura perche alimentavo da portatile.
Un saluto e grazie per esserti messo a disposizione.
Luigi | | | | calcola
| Inviato il: 07/09/2016 00:01:21
|
L'importante è risolvere.
saluti
--------------- 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.
| | | | calcola
| Inviato il: 11/09/2016 08:55:13
|
Istruzioni per l'uso di altri sensori di corrente
Occorre conoscere la tensione riferita allo zero (offset) e la sensibilità del sensore. Quest'ultimo è un valore specifico per ogni sensore e si ricava dal suo datasheet, è un valore generalmente espresso in mV/A e tiene già conto del campo di misura del sensore.
Il valore dell'offset é espresso in V, mentre quello della sensibilità in mV, quindi nel calcolo successivo occorrerà trasformare tutto in Volt o tutto in mVolt.
La formula generale é:
Tensione= (valore analogico * 5 )/1024
Che converte in volt il valore letto dal pin analogico di Arduino.
Tensione effettiva = tensione - offset
Toglie alla tensione letta il valore corrispondente allo zero.
A= tensione effettiva / sensibilità
Trasforma la tensione in Ampere.
Semplificando e riassumendo, convertendo in volt, si ha:
A= ((valore analogico * 5/1024) - offset) / (sensibilità /1000)
In mV invece diventa:
A= ((valore analogico * 5000/1024) - (offset *1000)) / sensibilità
Esempio, nel caso di un offset di 2,5V ed una sensibilità di 10 mV, in V, si ha:
A= ((valore analogico * 0,00488/0,01) - (2.5/0,01))
Quindi:
A = (valore analogico * 0,488) - 250
--------------- 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.
| | | | calcola
| Inviato il: 11/09/2016 09:22:17
|
Volendo adattare il codice al sensore usato, alle dichiarazioni iniziali si deve aggiungere:
int offset = x; // sostituire a x il corretto valore in volt
int sensibilita = y; // sostituire a y il corretto valore in mV
Nel void corrente, le formule diventano:
correntepan = correntepan + (((analogRead(curr_pan) * 5/1024)- offset)/(sensibilita / 1000))
correntebatt = correntebatt + (((analogRead(curr_bat) * 5/1024)- offset)/(sensibilita / 1000))
--------------- 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.
| | | | Elettrico
| Inviato il: 23/03/2017 15:47:56
|
Salve Calcola sto saldando i vari componenti x lo scambio batteria con due partitori x gestire due banchi diversi,
visto che vanno montati tre relè,il filo pilota n2 e n3 dove vanno messi al pro mini??.
x il caricare il software sul pc,cosa si deve caricare, visto che e con due partitori?.
grazie saluti. Giuseppe
--------------- sunny island s16.oh.11/ sunny boy sb 5000tl 21 sanny remote control n16 celle , 300A lifepo4 + n16 celle 230A.
| | | | calcola
| Inviato il: 23/03/2017 16:51:46
|
I relè sono 3: uno per il contattore che gestisce lo scambio batterie/rete, due per le batterie, i neutri delle batterie non vanno interrotti. Se non hai bisogno del primo contattore dimmelo, che preparo un software ad hoc. Ho già pronto un software, restano da fare poche modifiche.
Lo scambio del banco batterie seguirà questa logica: quando la tensione del primo banco scenderà sotto un minimo impostato, sovrappone il secondo banco per 3 secondi e poi passa al secondo banco, quando il secondo banco raggiungerà il suo minimo di tensione, ritorna al primo banco e commuta lo stato del contattore scambio enel/batterie (il primo dei 3).
Ricorda che con arduino non puoi pilotare direttamente le bobine dei contattori di potenza, ai pin devi collegare dei piccoli relè che a loro volta piloteranno le bobine dei contattori. I contattori delle batterie devono reggere tutto l'assorbimento dell'inverter + almeno un 50%. Quindi se l'inverter assorbe mettiamo 100A, come minimo il contattore deve sopportare 150A.
--------------- 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.
| | | | calcola
| Inviato il: 23/03/2017 18:59:08
|
Scordavo, quale versione della scheda stai realizzando? Ti dico già che non posso implementare la gestione del secondo banco sulla scheda ibrida arduino-esp8266, solo arduino. Oppure forse è meglio che prima d'iniziare a fare il circuito attendi il completamento del software.
--------------- 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.
| | | | Elettrico
| Inviato il: 23/03/2017 22:56:57
|
La versione della scheda che sto realizzando e solo arduino, (schema della prima pagina),con aggiunta del secondo partitore e di due relè,dopo che ho saldato il pro mini e i relè ho dato alimentazione il mini pro accende e lampeggia,i relè restano eccitati,dimmi se va bene?.
--------------- sunny island s16.oh.11/ sunny boy sb 5000tl 21 sanny remote control n16 celle , 300A lifepo4 + n16 celle 230A.
| | | | calcola
| Inviato il: 24/03/2017 06:59:07
|
La scheda va bene, i pin analogici che userai saranno A0 e A1, quelli digitali D4,D5,D6,D7. Una volta alimentata la scheda deve lampeggiare, perchè la forniscono con caricato il programma blink. Come ti dicevo in Mp, il software è praticamente pronto, durnte il fine settimana lo carico sulla scheda che uso per le prove per vedere se vi sono errori.
Posso chiederti che contattori hai acquistato per staccare le batterie?
--------------- 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.
| | | | Elettrico
| Inviato il: 24/03/2017 14:27:23
|
Calcola non ho fretta x montare la scheda,i contattori sono da 200A continui acquistati da aliexspres n2 pagati 70 euro.
--------------- sunny island s16.oh.11/ sunny boy sb 5000tl 21 sanny remote control n16 celle , 300A lifepo4 + n16 celle 230A.
| | | | calcola
| Inviato il: 24/03/2017 16:11:34
|
Le batterie sono a 24 o 48V?
--------------- 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.
| | | | calcola
| Inviato il: 24/03/2017 19:43:53
|
Ecco il software, devi modificare i parametri inclusi nella zona marcata come modificabile, prima imposta le soglie di tensione in volt. in base ai tuoi banchi.
Dopo carica il software ed apri il monitor seriale. Individua per ogni batteria il numero tra () posto dopo la tensione di ogni batteria. Misura la tensione della relativa batteria con un votmetro, poi dividi i volt per il numero tra(), quello è il coefficiente di conversione da indicare nella zona modificabile. Modificalo e ricarica il software. Devi trovare il coefficiente per ogni batteria, i due valori non saranno identici.
Logica di funzionamento.
La variabile tensione_bassa1 è la soglia minima della batteria, quella che scambia; la tensione_alta è la tensione di ritorno a batterie.
Le condizioni di scambio sono le seguenti:
Quando la tensione della prima batteria scende sotto la tensione_bassa e la seconda batteria è mediamente carica, commuta da batteria1 a batteria2.
Quando la tensione della batteria2 scende sotto la tensione_bassa2 e la batteria1 è mediamente carica, commuta sulla batteria1.
Quando entrambe le batterie sono cariche mantiene attiva sempre la batteria1, quindi se è su 2 commuta su uno.
Se sono entrambe scariche commuta su rete e collega la batteria1.
Quando la tensione della batteria1 sale sopra la soglia tensione_alta1, commuta su batteria.
Durante ogni scambio di batteria sovrappone i due banchi per 3 secondi.
La soglia bassa e la soglia alta di ogni batteria devono essere abbastanza distanti, almeno 4 volt di differenza
Quindi la batteria1 è quella master, la due è la slave.
Attenzione
Il programma l'ho verificato in condizioni statiche di tensione, simulando le due batteria. Durante l'uso in condizioni reali, potrebbero verificarsi delle anomalie.
Nel caso fammi sapere.
Per come caricare il software ed impostare la velocità di comunicazione della porta seriale, segui la guida posta all'inizio della discussione.
//INIZIO CODICE
//
//
//Inizio listato
//prodotto da calcola (calcola@inwind.it), (antrec@geocities.com)//
//ver.3_2batterie_1
//
//ATTENZIONE:
//
//CC BY-NC-SA 4.0
//Uso non commerciale, modificabile, con obbligo di condivisione-
//http://creativecommons.org/licenses/by-nc-sa/4.0/deed.it
//
//#include "OneWire.h"
//#include "Wire.h"
////////////////////////////////
//INIZIO PARTE MODIFICABILE
///////////////////////////////
#define coefficiente_conversione1 0.0560
#define coefficiente_conversione2 0.0560
#define tensione_bassa1 48.0 //valori: 11.9 (sistema 12V); 23.8 (sistema 24V) tensione di scambio verso altro banco o rete
#define tensione_alta1 56.0 //valori: 13.7 (sistema 12V); 27.4 (sistema 24V) tensione di ritorno a batterie
#define tensione_bassa2 48.0 //valori: 11.9 (sistema 12V); 23.8 (sistema 24V) tensione di scambio verso altro banco o rete
#define tensione_alta2 56.0 //valori: 13.7 (sistema 12V); 27.4 (sistema 24V)
///////////////////////////////
//FINE PARTE MODIFICABILE
///////////////////////////////
#define R_batt 4 //led batteria
#define R_rete 5 //led enel
#define R_batt1 6 // relè batteria1
#define R_batt2 7 //relè batteria 2
#define inputPin1 (A0) //Sensore collegato al pin analogico 0
#define inputPin2 (A1) //Sensore collegato al pin analogico 1
int numeroLetture = 10; //Il numero indica i valori tensione da leggere
int bassatensione1 = (tensione_bassa1/coefficiente_conversione1); // Valore della tensione stop batt ritorno rete
int altatensione1 = (tensione_alta1/coefficiente_conversione1); // Valore tensione stop rete ritorno batt.
int bassatensione2 = (tensione_bassa2/coefficiente_conversione2); // Valore della tensione stop batt ritorno rete
int altatensione2 = (tensione_alta2/coefficiente_conversione2); // Valore tensione stop rete ritorno batt.
//int readings[NUMREADINGS]; //Letture dal input analogico
int index = 0; //Indice della lettura corrente
int total = 0; //Totale letture
int total1 = 0; //Totale letture
int average = 0; //Media
float media1 = (bassatensione1 + altatensione1)/2;
float media2 = (bassatensione2 + altatensione2)/2;
int tensioneDigit1 = 0;
int tensioneDigit2 = 0;
float tensionevolt1; //Tensione espressa in Volt
float tensionevolt2; //Tensione espressa in Volt
float media_avvio1;
float media_avvio2;
byte stato_alim = 0;
byte stato_batt = 0;
void setup()
{
Serial.begin(57600); //Apro la comunicazion seriale
///// IMPOSTO PIN USCITA //////////////////////
pinMode(R_batt, OUTPUT);
pinMode(R_rete, OUTPUT);
pinMode(R_batt1, OUTPUT);
pinMode(R_batt2, OUTPUT);
pinMode(inputPin1, INPUT);
pinMode(inputPin2, INPUT);
////// SCELTA BATTERIA AVVIO ////////////////
{if ((analogRead(inputPin1) > media1) && (analogRead(inputPin2) < media2))
{Serial.println("controllo1");
stato_alim = 1;
digitalWrite(R_rete, LOW); //scelta batteria1 se batteria2 scarica
digitalWrite(R_batt, HIGH);
digitalWrite(R_batt1, HIGH);
digitalWrite(R_batt2, HIGH);
delay(3000);
digitalWrite(R_batt2, LOW);
stato_batt = 1;
}
if ((analogRead(inputPin2) > media2) && (analogRead(inputPin1) < media1))
{Serial.println("controllo2");
stato_alim = 1;
digitalWrite(R_rete, LOW); // Scelta batteria2 se batteria1 scarica
digitalWrite(R_batt, HIGH);
digitalWrite(R_batt1, HIGH);
digitalWrite(R_batt2, HIGH);
delay(3000);
digitalWrite(R_batt1, LOW);
stato_batt = 2;
}
if ((analogRead(inputPin1) > media1) && (analogRead(inputPin2) > media2))
{Serial.println("controllo3");
stato_alim = 1;
digitalWrite(R_rete, LOW); //scelta batteria1 se sono tutte cariche
digitalWrite(R_batt, HIGH);
digitalWrite(R_batt1, HIGH);
digitalWrite(R_batt2, HIGH);
delay(3000);
digitalWrite(R_batt2, LOW);
stato_batt = 1;
}
else if ((analogRead(inputPin1) < media1) && (analogRead(inputPin2) < media2)) // rete se tutte le batterie sono scariche
{Serial.println("controllo4");
stato_alim = 0;
digitalWrite(R_batt, LOW);
digitalWrite(R_rete, HIGH);
digitalWrite(R_batt1,HIGH );
digitalWrite(R_batt2,HIGH );
delay(3000);
digitalWrite(R_batt2, LOW);
stato_batt = 1;}
}
}
void loop()
{
total = 0;
total1 = 0;
for (int A = 0; A < numeroLetture; A++)
{
total = total + analogRead(inputPin1);
total1 = total1 + analogRead(inputPin2);
}
tensioneDigit1 = total / numeroLetture; //Calcola la media in digit
tensioneDigit2 = total1 / numeroLetture; //Calcola la media in digit
tensionevolt1 = coefficiente_conversione1 * tensioneDigit1; //esprime la media in volt
tensionevolt2 = coefficiente_conversione2 * tensioneDigit2; //esprime la media in volt
media_avvio1 = media1 * coefficiente_conversione1;
media_avvio2 = media2 * coefficiente_conversione2;
{if ((tensioneDigit1 < bassatensione1) && (tensioneDigit2 > media2)) //batteria1 scarica e batteria 2 carica
{stato_alim = 1;
digitalWrite(R_rete, LOW); //stato batteria batteria2 attiva
digitalWrite(R_batt, HIGH);
digitalWrite(R_batt2, HIGH);
delay(3000);
digitalWrite(R_batt1, LOW);
stato_batt = 2;
}
if ((tensioneDigit2 < bassatensione2) && (tensioneDigit1 > media1)) //batteria2 scarica e batteria1 carica
{stato_alim = 1;
digitalWrite(R_rete, LOW); //stato batteria batteria1 attiva
digitalWrite(R_batt, HIGH);
digitalWrite(R_batt1, HIGH);
delay(3000);
digitalWrite(R_batt2, LOW);
stato_batt = 1;
}
if (tensioneDigit1 > bassatensione1) // ritorno a batteria se batteria1 carica
{stato_alim = 1;
digitalWrite(R_rete, LOW);
digitalWrite(R_batt, HIGH);
digitalWrite(R_batt1, HIGH);
delay(3000);
digitalWrite(R_batt2, LOW);
stato_batt = 1;
}
else if((tensioneDigit1 < bassatensione1) && (tensioneDigit2 < bassatensione2)) // stato rete se le due batterie sono scariche
{stato_alim = 0;
digitalWrite(R_batt, LOW);
digitalWrite(R_rete, HIGH);
digitalWrite(R_batt1, HIGH);
delay(3000);
digitalWrite(R_batt2, LOW);
stato_batt = 1;
}
}
Serial.println("---------------------------------------------------");
if (stato_alim == 0) {Serial.println("Alimentazione: rete"); }
else {Serial.println("Alimentazione: batteria"); }
if (stato_batt == 1) {Serial.println("Batteria collegata n.1");}
else {Serial.println("Batteria collegata n.2");}
Serial.println("");
Serial.print(" Voltaggio batteria1 media 10 letture: ");
Serial.print(tensionevolt1); Serial.print(" ("); Serial.print(tensioneDigit1); Serial.println(" )");
Serial.print(" Voltaggio batteria2 media 10 letture: ");
Serial.print(tensionevolt2); Serial.print(" ("); Serial.print(tensioneDigit2); Serial.println(" )");
Serial.print(" Voltaggio batteria1 intermedio tra min-max: ");
Serial.println(media_avvio1);
Serial.print(" Voltaggio batteria2 intermedio tra min-max: ");
Serial.println(media_avvio2);
Serial.print(" Passa a enel quando minore di: ");
Serial.println(tensione_bassa1);
Serial.print(" Passa a batterie quando maggiore di: ");
Serial.println(tensione_alta1);
Serial.println();
//delay(2000);
}
Modificato da calcola - 25/03/2017, 07:16:26
--------------- 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.
| | | | Elettrico
| Inviato il: 24/03/2017 22:10:11
|
Le batterie sono 48v ,x caricare il software chiedo aiuto a mio figlio come ti ho detto qualche mese addietro con il pc sono a 0.
grazie se ho problemi ti faccio sapere.
--------------- sunny island s16.oh.11/ sunny boy sb 5000tl 21 sanny remote control n16 celle , 300A lifepo4 + n16 celle 230A.
| | | | calcola
| Inviato il: 25/03/2017 07:12:10
|
Scordavo di precisare che per la logica di funzionamento impostata, il dispositivo di commutazione ha senso solo se ogni banco è collegato a dei suoi pannelli. Infatti se i pannelli sono i medesimi, sarà ricaricato solo il banco collegato, se quello non collegato è scarico, non si ricaricherà mai.
--------------- 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.
| | | | Elettrico
| Inviato il: 25/03/2017 14:54:43
|
I 2 banchi saranno collegati ai medesimi pannelli,solo che al secondo banco metterò dei diodi visto che sono di diversa eta.
--------------- sunny island s16.oh.11/ sunny boy sb 5000tl 21 sanny remote control n16 celle , 300A lifepo4 + n16 celle 230A.
| |
| | |
|
Versione Mobile!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|