Se sei già registrato           oppure    

Orario: 13/05/2024 03:56:29  

 

Energia Alternativa ed Energia Fai Da Te > PPTEA

VISUALIZZA L'ALBUM

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


PPTEA: REGOLATORE DI CARICA REALIZZATO IN PWM
FinePagina

jumpy75

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:686

Stato:



Inviato il: 8/9/2012,10:50

Ciao Luca, ho iniziato anch'io a realizzare un regolatore di carica PWM con il pptea grazie al supporto di Bolle che gentilmente mi ha realizzato lo schema. Appena pronto posterò tutto con un minimo di spiegazio e.

Jan

 

PinoTux

Avatar
GigaWatt


Gruppo:AMMINISTRATORE
Messaggi:3509

Stato:



Inviato il: 8/9/2012,14:00

Com'è sta storia, vi tenete gli schemi per voi? faccine/biggrin.gif
Non lo sapete che due sono meglio che uàn? faccine/tongue.gif



---------------
"Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza"
http://iv3gfn.altervista.org/
http://pptea.altervista.org/

 

marpad65
KiloWatt


Gruppo:Utente
Messaggi:230

Stato:



Inviato il: 8/9/2012,19:39

Ciao Luca,
Lo schema è completo, forse non nei dettagli ma sicuramente può essere personalizzato per il proprio impianto.

Inverter:
Ho un UPS modello APC 3000-2,1Kw del 2001, vecchio ma funzionante. La caratteristica di questo UPS è quella di avere al suo interno 2 inverter : 1 alimentato dalle sue batterie interne originariamente 4x12V/18Ah sostituite con 4x12V/130Ah e il 2° alimentato con batterie esterne al momento da spunto 60Ah (usate e solo per queste prove), preticamente devo ricaricare due pacchi batterie da 48V.
In più alcuni accorgimenti per consentire il suo funzionamento, ogni UPS ha le sue necessità.

Pannelli
I pannelli utilizzati sono dei Trina Solar da 230Wpp ed il tetto è al 40% rivolto a SE ed il rimanente a SO, ho creato 3 stringhe composte per ognuna da 2 pannelli in serie per avere una tensione massima di 66V/7,8A , tensione necessaria per caricare le 4 batterie in serie con un caricatore unico. Le stringhe sono posizionate 1 a SE inclinata di 15° a est e 2 a SO, la 3° stringa è inclinata di 15° verso Ovest. La scelta di inclinare le stringhe laterali è nata per cercare di avere più continuità possibile di irraggiamento, in futuro realizzero un inseguitore.

Penso che ora sia piu facile capire lo schema

SCHEMA PUBBLICATO
Nella parte inferiore dello schema sono rappresentate le 3 stringhe, il negativo è comune a tutte le stringhe per misurare la corrente generata, mentre il positivo attraversa il diodo. Come si può vedere sono presenti 3 diodi per alimentare 3 rami di uscita indicati come:Pacco Batteria 1, Pacco Batteria 2 e OVER. Ho adottato questo sistema per evitare che ci siano tensioni inverse sia tra i panneli e i Pacchi Batterie cercando di limitare l'attraversamento di + diodi in serie.

Nella parte superiore è indicato il circuito di controllo a mosfet (modalità seriale) che consente di inviare la tensione al Pacco batteria "X", sono necessari 1 per ogni pacco batterie. Il circuito è auto alimentato dal pannello mediante il transistor BC547C e lo zener da 9,1V sopportando una tensione max di ingresso di 80V. Il fototransistor 4n35, una volta ricevuto l'impulso dal pin 28 (PWM1) del PPtea mette in conduzione 3 IRF3710 (BUZ11 o altro per tensioni inferiori) indicati come MF1-2-3.

Nella parte centrale è indicato il circuito di lettura della tensione, circuito modificato ma già indicato nel forum.


OVER
Nel mio impianto ho utilizzato i 3 PWM del PPtea : PWM1 controlla il PB1, PWM2 controlla il PB2 e il PWM3 pilota un mosfet per gestire una resistenza modificata all'interno di un Boiler da 80Lt. Il controllo OVER interviene quando la tensione delle batterie oltrepassa il set-point impostato.

Con correnti oltre i 10A di carica sconsiglio il collegamento dei mosfet in modalità parallela

Questi schemi sono stati la mia base di test e sono funzionali e personalizzabili per i propri impianti. Attualmente sto testando un circuito che mi permette di controllare tutte le 8 batterie e lo scambio enel/fv simile a quello che sta realizzando Bolle per ronwal nel PlatForm

Per domande .......

Marco




Modificato da marpad65 - 9/9/2012, 17:53
 

jumpy75

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:686

Stato:



Inviato il: 8/9/2012,21:14

CITAZIONE (PinoTux @ 8/9/2012, 15:00)
Com'è sta storia, vi tenete gli schemi per voi? faccine/biggrin.gif
Non lo sapete che due sono meglio che uàn? faccine/tongue.gif

Ciao Pino, non ci teniemo gli schemi per noi tranquillo.... Se riesco, faccio una foto o una scansione al disegno che mi ha fatto bolle, poi capirai perche' non ho postato ancora nulla.....

ehheheheheh

faccine/biggrin.gif faccine/biggrin.gif faccine/biggrin.gif faccine/biggrin.gif

 

jumpy75

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:686

Stato:



Inviato il: 12/9/2012,07:21

Buon giorno a tutti, ieri sera ho trovato un pò di tempo e sono riuscito a scansionare lo schema che gentilmente mi ha dato Bolle per realizzare il regolatore di carica PWM.
Mi sono permesso di aggiungere il partitore di tensione, in questo modo anche i meno esperti non avranno difficoltà a realizare il tutto.

http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/file/Appoggio_Scambio/Schema_RegolatorePWM.jpg
Corretto lo schema il giorno 16 settembre 2012.

Nel caso in cui i test di oggi pomeriggio avranno esito positivo, posterò anche il codice da inserire nel PPTEA.

Jan





Modificato da NonSoloBolleDiAcqua - 27/9/2012, 11:11
 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 12/9/2012,20:54

Jumpy c'è un problemino sul partitore...devi invertire i poli...la massa va a massa....
Ciao
Bolle



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

Master Digit

Avatar
GigaWatt


Gruppo:Utente
Messaggi:1425

Stato:



Inviato il: 12/9/2012,23:01

Volendo realizzare un partitore preciso e regolabile si può usare questo schema:

http://www.energialternativa.info/Public/NewForum/ForumEA/6/6/2/6/2/9/0/1347487056.jpg

Il partitore sopra divide x10 la tensione in ingresso, necessita solo di regolazione del trimmer multigiri da 1Kohm per leggere con il PPTEA l'esatta tensione divisa X10.
Si può utilizzare fino a tensioni di 48 Volt.

Master Digit



---------------
Sono sempre disponibile...quando ci sono!

 

PinoTux

Avatar
GigaWatt


Gruppo:AMMINISTRATORE
Messaggi:3509

Stato:



Inviato il: 13/9/2012,19:30

Fai attenzione che usando uno zener da 5.1 volt questo comincia a condurre ben prima della tensione nominale, quello che succede è un errore di lettura verso il fondo scala, abbiamo già scritto di questo e si risolve montandone uno da 5,6V...

Saluti
Pino



---------------
"Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza"
http://iv3gfn.altervista.org/
http://pptea.altervista.org/

 

Master Digit

Avatar
GigaWatt


Gruppo:Utente
Messaggi:1425

Stato:



Inviato il: 13/9/2012,20:30

Per questo ho scritto che va bene fino ad una tensione massima di 48 volt e non 51!!!
Lo zener da 5,6 puo' in alcuni casi danneggiare il pic se la tensione supera i 51 volt specialmente se impulsiva.
Meglio lo zener da 5,1 volt e al limite cambiare il partitore per tensioni superiori.

Master Digit



---------------
Sono sempre disponibile...quando ci sono!

 

PinoTux

Avatar
GigaWatt


Gruppo:AMMINISTRATORE
Messaggi:3509

Stato:



Inviato il: 13/9/2012,22:16

Master, ma hai letto il link?
Guarda che prima di scrivere delle cose, di solito faccio le mie sperimentazioni e faccio le mie belle misure, non è mio costume fare teorie campate in aria, basta che ti guardi la curva della caratteristica inversa di un qualsiasi zener e ti renderai conto che è una curva, non un angolo retto. faccine/rolleyes.gif
Se per disgrazia il tuo zener comincia a condurre in prossimità del ginocchio già a 4,5 volt, come nel mio caso, per leggere i tuoi 48V devi applicare una tensione ben più elevata di quella che leggerai sul display.
Se poi hai la fortuna di possedere uno zener esogeno al nostro mondo, tanto meglio per te. faccine/cool.gif
Per eliminare eventuali impulsi, a parte lo zener che tosa di suo sia quelli positivi che negativi, ci monti un condensatore da 100nF -> 1uF, in parallelo all'ingresso CADS, che con la resistenza che si trova in serie forma un efficiente filtro passa basso.



---------------
"Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza"
http://iv3gfn.altervista.org/
http://pptea.altervista.org/

 

jumpy75

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:686

Stato:



Inviato il: 14/9/2012,19:02

Ciao a tutti, sono ormai tre giorni che mi stò sbattendo sul regolatore di carica e posso finalmente dire che funziona (almeno il circuito), grazie anche alla pazienza del mio amico elettricista, senza la sua pazienza sarei perso!!!

Ora, il problema si è spostato lato software.... Vorrei cambiare il valore del PWM senza dargli un valore di inizio, è possibile farlo?

Vi posto il codice che ho scritto, ma non funziona se il valore PWMDC2 alla rige 80 non viene impostato. L'intenzione è quella di impostare il valore del PWMDC2 in automatico tramite una funzione riportata alla riga 838.
Ovviamente in questo modo non funziona, domani con calma studierò meglio il tutto e vi terrò aggiornati!!!

Jan


CODICE
10 PRAGMA EXTERNAL_EEPROM
30 ' REGOLATORE DI CARICA PWM
50 SETIO=&H100BF
70 SOGLIAH2 = 0.01

75 PWMIO2=&H8000
80 'PWMDC2=100

130 '------------------------------------------PRESENTAZIONE PPTEA------------------------------------
150 LCDCLEAR
170 LCDPOS=1
190 LCDWRITE="  PPTEA V.2.16R"
210 LCDPOS=21
230 LCDWRITE=" CHARGE PWM"
250 WAITS 2
270 LCDCLEAR
290 '-----------------------------------------FINE PRESENTAZIONE PROGRAMMA ---------------------------

310 GIORNO=LEFT(DATE,8)
330 FDATE=1

350 ORARIOL=LEFT(DATE,2)
370 USCITAUSB=""

390 'LCDCLEAR

410 IF ORARIOL>=18 OR ORARIOL<07 THEN 860 ELSE 890
430 LCDPOS=1
450 LCDWRITE=GIORNO & " " & ORARIO

470 '----------------------------------------- LETTURA TEMPERATURA ---------------------------------
490 T=CADS1
510 GOSUB :TORNATEMPERATURA
530 '----------------------------------------- LETTURA TENSIONE ------------------------------------
550 V=CADS2
570 GOSUB :TORNATENSIONE
590 '----------------------------------------- LETTURA CORRENTE ------------------------------------
610 AMP=CADS3
630 GOSUB :TORNAAMPERE
650 '---------------------------------------- LETTURA IDROGENO ------------------------------------
670 'H2=CADS4
690 GOSUB :IDROGENO
710 USBOUT=USCITAUSB '---------INVIO I VALORI ALLA PORTA USB!
730 WAITS 1


750 ' CICLO DI RICARICA PER BATTERIA 12Volt - 12Ah
770 CONSTANT VMIN= 11       '13.6
790 CONSTANT VMAX=12.3     '14.2
810 CONSTANT AmpMAX=0.5 'Massima Corrente di ricarica per batteria al Piombo 12Ah di prova.
830 'GOTO  350

831 'CONFRONTO LA TENSIONE DELLA BATTERIA CON LA COSTANTE
832 IF VBATT = VMAX THEN 390 ' LA BATTERIA E' CARICA RITORNO ALLA LETTURA DEI VALORI

833 'LEGGERE LA CORRENTE DI RICARICA NON DEVE SUPERARE LA COSTANTE AmpMAX
834 IF AMPERE>AmpMax THEN 838 ELSE  852'Ho più corrente di quanta ne posso immettere nella batteria
835 'VERIFICO LA TEMPERATURA DELLE BATTERIE E PER OGNI °C SOPRA I 20,
836 'DIMINUISCO LA CORRENTE DI RICARICA DI UN 0.2% SUL TOTALE

838 PWMDC2 = (AmpMAX*100)/AMPERE
839 WAITS 5
850 GOTO 390

852 PWMDC2 = 0
853 WAITS 5
854 GOTO 390

860 GOSUB :LEDON
870 GOTO  430
890 GOSUB :LEDOFF
910 GOTO  430
930 ' ----------------------------------INIZIO FUNZIONI VARIE - ----------------------

950 :TORNATEMPERATURA
970 LCDPOS=42
990 TEMP=T*5.0/10.23
1010 STRTEMP=LEFT(TEMP&"",4)
1030 LCDWRITE="T=" & STRTEMP & CHR(223) & "C - %­P=" & (AmpMAX*100)/AMPERE & ""
1050 USCITAUSB=STRTEMP&";"
1070 RETURN


1090 :TORNATENSIONE
1110 LCDPOS=21
1130 'VOLT=V*30.0/1023 ' VALORE PER TENSIONI FINO A 30 VOLT!!!
1150 VOLT=V*5.0/102.3
1170 VBATT=LEFT(VOLT&"",3)
1190 USCITAUSB=USCITAUSB&VBATT&";"
1210 LCDWRITE="BAT=" & VBATT & "V"
1230 RETURN

1250 :TORNAAMPERE
1270 LCDPOS=85
1290 AMP=AMP*5.0/1023
1291 'CALCOLO IL MOLTIPLICATORE SECONDO IL SENSORE CHE HO A DISPOSIZIONE.
1310 CORRENTE=1/0.028 'ADATTO A SENSORE DI CORRENTE 75AMPER
1330 AMPERE=(AMP-2.5)*CORRENTE
1350 AMPERE=LEFT(AMPERE&"",4)

1370 USCITAUSB=USCITAUSB&AMPERE&";"
1410 LCDWRITE="A="&AMPERE&" - Am=" & LEFT(AmpMax, 4) &""
1430 RETURN



1450 :LEDON
1470 OUTBIT(6)=0
1490 ORARIO=DATE
1510 RETURN

1530 :LEDOFF
1550 OUTBIT(6)=1
1570 ORARIO=DATE
1590 RETURN


1610 ' ---------------------------------------------SENSORE IDROGENO
1630 :IDROGENO
1650 H2=LEFT(CADS3*5/102300.0, 4)
1670 IF H2 > SOGLIAH2 THEN 1750
1690 LCDPOS=62
1710 LCDWRITE="H2=" & H2 & "%"
1730 'USCITAUSB=USCITAUSB&"|"&H2
1750 RETURN

1770 GOSUB :ALLARMEIDROGENO
1790 GOTO  430

1810 ' ---------------------------------------------ALLARME IDROGENO
1830 :ALLARMEIDROGENO
1850 LCDCLEAR
1870 LCDPOS=1
1890 LCDWRITE="SOGLIA H2 SUPERATA"
1910 LCDPOS=21
1930 LCDWRITE="ACCENSIONE VENTOLA"
1950 'ACCENDO LA VENTOLA PER
1970 WAITS 10
1990 GOTO  430





 

Master Digit

Avatar
GigaWatt


Gruppo:Utente
Messaggi:1425

Stato:



Inviato il: 15/9/2012,23:01

CITAZIONE (PinoTux @ 13/9/2012, 23:16)
Master, ma hai letto il link?
Guarda che prima di scrivere delle cose, di solito faccio le mie sperimentazioni e faccio le mie belle misure, non è mio costume fare teorie campate in aria, basta che ti guardi la curva della caratteristica inversa di un qualsiasi zener e ti renderai conto che è una curva, non un angolo retto. faccine/rolleyes.gif
Se per disgrazia il tuo zener comincia a condurre in prossimità del ginocchio già a 4,5 volt, come nel mio caso, per leggere i tuoi 48V devi applicare una tensione ben più elevata di quella che leggerai sul display.
Se poi hai la fortuna di possedere uno zener esogeno al nostro mondo, tanto meglio per te. faccine/cool.gif
Per eliminare eventuali impulsi, a parte lo zener che tosa di suo sia quelli positivi che negativi, ci monti un condensatore da 100nF -> 1uF, in parallelo all'ingresso CADS, che con la resistenza che si trova in serie forma un efficiente filtro passa basso.

Anche io ho questa abitudine quando posso, posseggo alcuni zener esogeni da 5,1 Volt (zpd) che, in serie ad una Resistenza di 9Kohm (che se cortocircuitata a massa scorrerrebero meno di 6mA), a 48 Volt mi permette di avere dopo il partitore 4,8 Volt con tolleranza +/-1% fondo scala del tutto rispettabile visto le variazioni dovute dalla temperatura sui componenti.
Se poi vogliamo costruire un strumento di misura con tolleranze molto inferiori o inferiori all'1% allora i componenti diventano un pò di più ed anche la costruzione deve essere eseguita meccanicamente in un certo modo.
Ma ragazzi qui stiamo parlando di un partitore semplice e alla portata di tutti, anche di chi non ha sofisticate apparacchiature per la taratura e quindi non ambisce a valori di misura con tolleranze precise al milliVolt.
Vedo molto più logico far capire che sull'ingresso di un CAD alimentato a 5Volt non devo superare questo limite e quindi farmi un partitore adeguato, piuttosto che far arrivare per sbaglio 5,6/5,7 Volt.
Comunque sono solo opinioni e ognuno ha le sue, chi vuole lavorare sull'INIZIO del ginocchio metta pure uno zener da 5,6Volt.......io no! Tutto quì

Master Digit



---------------
Sono sempre disponibile...quando ci sono!

 

jumpy75

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:686

Stato:



Inviato il: 16/9/2012,20:21

Sera a tutti, finalmente ho terminato e rivisto il codice per il regolatore di carica realizzato tramite il PPTEA.
Di seguito riporto la nuova versione del codice corretta e ridotta della funzionalita' di controllo idrogeno che non serve in questo caso:

CODICE
10 PRAGMA EXTERNAL_EEPROM
30 ' REGOLATORE DI CARICA PWM
50 SETIO=&H100BF

75 PWMIO2=&H8000
80 'PWMDC2=100

130 '------------------------------------------PRESENTAZIONE PPTEA------------------------------------
150 LCDCLEAR
170 LCDPOS=1
190 LCDWRITE="  PPTEA V.2.16R "
210 LCDPOS=21
230 LCDWRITE="  CHARGE PWM V.1"
250 WAITS 2
270 LCDCLEAR
290 '-----------------------------------------FINE PRESENTAZIONE PROGRAMMA ---------------------------

310 GIORNO=LEFT(DATE,8)
330 FDATE=1

350 ORARIOL=LEFT(DATE,2)
370 USCITAUSB=""

410 IF ORARIOL>=18 OR ORARIOL<07 THEN 860 ELSE 890
430 LCDPOS=1
450 LCDWRITE=GIORNO & " " & ORARIO

470 '----------------------------------------- LETTURA TEMPERATURA ---------------------------------
490 T=CADS1
510 GOSUB :TORNATEMPERATURA
530 '----------------------------------------- LETTURA TENSIONE ------------------------------------
550 V=CADS2
570 GOSUB :TORNATENSIONE
590 '----------------------------------------- LETTURA CORRENTE ------------------------------------
610 AMP=CADS3
630 GOSUB :TORNAAMPERE

750 ' CICLO DI RICARICA PER BATTERIA 12Volt - 12Ah
770 CONSTANT VMIN= 11
790 CONSTANT VMAX=14.2
810 CONSTANT AmpMAX=2.0 'Massima Corrente di ricarica per batteria al Piombo 12Ah di prova.

815 'CONFRONTO LA TENSIONE DELLA BATTERIA CON LA COSTANTE
820 IF VBATT >= VMAX THEN  852 ELSE 838

838 PWMDC2 = 100
850 GOTO 390

852 PWMDC2 = 0
854 GOTO 390

860 GOSUB :LEDON
870 GOTO  430
890 GOSUB :LEDOFF
910 GOTO  430
930 ' ----------------------------------INIZIO FUNZIONI VARIE - ----------------------

950 :TORNATEMPERATURA
970 LCDPOS=42
990 TEMP=T*5.0/10.23
1010 STRTEMP=LEFT(TEMP&"",4)
1030 LCDWRITE="T=" & STRTEMP & CHR(223) & "C - %­P=" & (AmpMAX*100)/AMPERE & ""
1050 USCITAUSB=STRTEMP&";"
1070 RETURN


1090 :TORNATENSIONE
1110 LCDPOS=21
1130 'VOLT=V*30.0/1023 ' VALORE PER TENSIONI FINO A 30 VOLT!!!
1150 VOLT=V*5.0/102.3
1170 VBATT=LEFT(VOLT&"",3)
1190 USCITAUSB=USCITAUSB&VBATT&";"
1210 LCDWRITE="BAT=" & VBATT & "V"
1230 RETURN

1250 :TORNAAMPERE
1270 LCDPOS=85
1290 AMP=AMP*5.0/1023
1291 'CALCOLO IL MOLTIPLICATORE SECONDO IL SENSORE CHE HO A DISPOSIZIONE.
1310 CORRENTE=1/0.028 'ADATTO A SENSORE DI CORRENTE 75AMPER
1330 AMPERE=(AMP-2.5)*CORRENTE
1350 AMPERE=LEFT(AMPERE&"",4)

1370 USCITAUSB=USCITAUSB&AMPERE&";"
1410 LCDWRITE="A="&AMPERE&" - Am=" & LEFT(AmpMax, 4) &""
1430 RETURN



1450 :LEDON
1470 OUTBIT(6)=0
1490 ORARIO=DATE
1510 RETURN

1530 :LEDOFF
1550 OUTBIT(6)=1
1570 ORARIO=DATE
1590 RETURN


Jan

 

marpad65
KiloWatt


Gruppo:Utente
Messaggi:230

Stato:



Inviato il: 16/9/2012,22:18

..questo è il codice eabasic creato per il regolatore di carica a 1 PWM. Lo schema, se ridotto, va benissimo quello pubblicato in precedenza
il codice, creato mesi fa, dovrebbe essere molto semplice da capire ed è modificabile per le proprie esigenze. Ho implementato la possibilità di essere monitorato con il PlatForm di Bolle


CARATTERISTICHE
---identifica lo stato di carica a fondo (14,2V) o di mantenimento (13,6V)
---passaggio automatico per il tipo di carica
---controllo della tensione di carica (a gradino 1024)
---controllo della corrente di carica (a gradino 1024)
---correzione di carica a due stadi (passo-passo o percentuale per scostamento dal set-point +/- 1 V)

VISUALIZZAZIONE LCD
Creato per display 2x40 oppure 4x20
---percentuale D.C. PWM1
---tensione batteria
---corrente batteria
---corrente pannelli
---Wpp istantanea prodotta
---W istantanea uscita
---set-point tensione
---indicatore di sopravvivenza con conteggio

Le costanti di carica possono essere personalizzate con il Compiler

CODICE
5 'REGOLAZIONE 1 PWM ----------- SPOSTAMENTO A DUE STADI
10 DIM ELDATI(10) AS WORD
20 PRAGMA EXTERNAL_EEPROM
30 CADS=3
40 '
50 CONSTANT V_CAR_MANT = 939 '13.6 / 27.2 / 54.4 ------- per fondo scala V=15-30-60
60 CONSTANT V_CAR_FONDO = 980 '14.2 / 28.4 / 56.8
70 CONSTANT A_CAR_MANT = 601 ' 6,5A = 1/20 DI 130Ah
80 CONSTANT A_CAR_FONDO = 689 '13,0A = 1/10 DI 130Ah
83 CONSTANT V_SCOSTAMENTO=17' equivale a 1 Volt
108 CONSTANT ED_VPB1=1
110 CONSTANT ED_APB1=2
112 CONSTANT ED_ATB=3
113 CONSTANT ED_ATOUT=4
118 CONSTANT ED_ATSTR=5
119 CONSTANT ED_WTSTR=6
120 CONSTANT ED_WTOUT=7
153 CONSTANT SEPARATORE="/"

325 SETIO=&H100FF
342 GRPILOTAV=V_CAR_MANT
343 GRPILOTAA=A_CAR_MANT
350 WAITS 2
365 PWMFQ=7
370 VPWM1=50
375 LCDCLEAR

410 '
422 GOSUB :PWM
423 '--------------------------
430 GOSUB :VISDATIB1
433 '-------------------------
440 GOSUB :VERSTATO
490 GOTO 410
492 '

500 :PWM'-----------------------------\
505 FOR I=1 TO 30 STEP 1'--------------\
506 ELDATI(ED_VPB1)=CADS1'-----------\
507 ELDATI(ED_APB1)=CADS2'------------\
508 ELDATI(ED_ATSTR)=CADS3'-----------I creo una lettura media di dati
509 MVB1+=ELDATI(ED_VPB1)'------------/
511 MAB1+=ELDATI(ED_APB1)'-----------/
512 MAP+= ELDATI(ED_ATSTR)'---------/
513 NEXT I'----------------------------/
515 MVB1=INT(MVB1/31)'-------------/
517 MAB1=INT(MAB1/31)'-----------/
520 IF MAB1>GRPILOTAA THEN 526 ELSE 522 '----------------------------------- verifico la CORRENTE di carica, se> di Sp calo 1%
522 IF MVB1<>GRPILOTAV THEN 524 ELSE 699 '- --------------------------------verifico la tensione della batteria, se OK esco ELSE verifico lo scostamento
524 IF MVB1>GRPILOTAV THEN 526 ELSE 554 '- ----------------------------------la tensione della batteria > Sp proseguo ELSE controllo se < Sp
526 IF VPWM1=0 THEN 699 ELSE 528'-----------------------------------------------% a 0 esco ELSE proseguo
528 IF MVB1>(GRPILOTAV+V_SCOSTAMENTO) THEN 530 ELSE 534'------------la tensione della batteria è > di Sp+1V proseguo ELSE calo di 1%
530 VPWM1=INT(VPWM1*0.8)'-------------------------------------------------------calo la % del 20%
532 GOTO 586'-------------------------------------------------------------------------vado a comandare il D.C.
534 VPWM1--'---------------------------------------------------------------------------calo di 1%
538 GOTO 586'-------------------------------------------------------------------------vado a comandare il D.C.
540 '
554 IF MVB1<grpilotav THEN 556 ELSE 699 '------------------------------------ la tensione della batteria < Sp
556 IF VPWM1=100 THEN 699 ELSE 558'---------------------------------------------% a 100 esco ELSE proseguo
558 IF MVB1<(GRPILOTAV-V_SCOSTAMENTO) THEN 559 ELSE 564'--------------la tensione della batteria è < di Sp-1V proseguo ELSE calo di 1%
559 IF VPWM1>=82 THEN 564 ELSE 560'---------------------------------------------% >= a 82% aumento di 1% ELSE aumento in %
560 VPWM1=INT(VPWM1*1.2)'--------------------------------------------------------aumento la & del 20%
564 VPWM1++'--------------------------------------------------------------------------aumento di 1%
586 PWMDC1=VPWM1'-----------------------------------------------------------------piloto il D.C. del PWM
599 LCDPOS=1
600 '
601 LCDWRITE = "% " &VPWM1&" "'--------------------------------------------------Visualizzo la & sul display
699 RETURN

2000 :VERSTATO
2010 IF MVB1>=GRPILOTAV AND GRPILOTAV=V_CAR_FONDO THEN 2020 ELSE 2110 '- verifico la tensione della batteria
2020 COUNTSTATO++
2030 IF COUNTSTATO<>5 THEN 2200
2040 GRPILOTAV=V_CAR_MANT
2050 GRPILOTAA=A_CAR_MANT
2055 CLR COUNTSTATO
2060 GOTO 2200
2110 IF VAP<0.1 AND GRPILOTAV=V_CAR_MANT THEN 2120 ELSE 2200
2120 COUNTSTATO++
2130 IF COUNTSTATO<>5 THEN 2200
2140 GRPILOTAV=V_CAR_FONDO
2150 GRPILOTAA=A_CAR_FONDO
2155 CLR COUNTSTATO
2200 LCDPOS=28
2210 LCDWRITE=LEFT(GRPILOTAV*59.34/4092,5) & " -"&COUNTSTATO&" "
2999 RETURN

3000 :VISDATIB1
3112 VVB1=LEFT(MVB1*59.34/1023,5)
3114 VVVB1=LEFT(VVB1/4,5)
3122 VAB1=LEFT((MAB1-510)*4.96*15.151515/1024,5)
3130 MAP=INT(MAP)/31)
3132 VAP=LEFT((MAP-510)*4.96*15.151515/1024,5)
3140 LCDPOS=8
3150 LCDWRITE = "PANN. A="&VAP
3160 LCDPOS=65
3170 LCDWRITE = "BATT.V="&VVVB1&" A="&VAB1
3180 LCDPOS=86
3182 ELDATI(ED_WTSTR)=INT(VVB1*VAP)
3183 OAI=(0-VAB1)+VAP
3184 ELDATI(ED_WTOUT)=INT(VVB1*OAI)
3185 LCDWRITE="Wpp=" & ELDATI(ED_WTSTR) & " OUT W=" &ELDATI(ED_WTOUT)&" "
3190 LCDPOS=23
3191 SALTO++
3192 LCDWRITE = "-"&SALTO&" "
3200 TOAI+=OAI
3210 TVVB1+=VVB1
3215 TVAP+=VAP
3220 TPWM1+=VPWM1

3250 IF SALTO<15 THEN 3900
3251 TPWM1=LEFT(TPWM1/46,5)
3252 TOAI=LEFT(TOAI/15,5)
3253 TVVB1=LEFT(TVVB1/15,5)
3254 TVAP=LEFT(TVAP/15,5)
3255 CLR SALTO

3261 WAITMS 5
3262 USCITAUSB="START"& SEPARATORE & TPWM1 & SEPARATORE
3263 USBOUT=USCITAUSB
3264 USCITAUSB= TVVB1 & SEPARATORE
3265 USBOUT=USCITAUSB
3266 USCITAUSB=TVAP & SEPARATORE & "STOP"
3268 USBOUT=USCITAUSB

3270 CLR TOAI
3271 CLR TVVB1
3272 CLR TVAP
3274 CLR TPWM1
3330 WAITS 1
3335 ' ----------------------------
3900 RETURN


Buon Divertimento......

Ciao
MarPad




Modificato da marpad65 - 17/9/2012, 13:00
 

jumpy75

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:686

Stato:



Inviato il: 17/9/2012,14:12

Di seguito l'ultma versione del codice d inserire nel PIC:

CODICE
10 PRAGMA EXTERNAL_EEPROM
30 ' REGOLATORE DI CARICA PWM
50 SETIO=&H100BF
75 PWMIO2=&H8000

130 '------------------------------------------PRESENTAZIONE PPTEA------------------------------------
150 LCDCLEAR
170 LCDPOS=1
190 LCDWRITE="  PPTEA V.2.16V "
210 LCDPOS=21
230 LCDWRITE="CHARGE-PWM V.1.2 "
250 WAITS 2
270 LCDCLEAR
290 '-----------------------------------------FINE PRESENTAZIONE PROGRAMMA ---------------------------

310 GIORNO=LEFT(DATE,8)
330 FDATE=1

350 ORARIOL=LEFT(DATE,2)
370 USCITAUSB=""

390 ' AGGIORNAMENTO OROLOGIO
410 IF ORARIOL>=18 OR ORARIOL<07 THEN 1450 ELSE 1530
430 LCDPOS=1
450 LCDWRITE=GIORNO & " " & ORARIO

470 '----------------------------------------- LETTURA TEMPERATURA ---------------------------------
490 T=CADS1
510 GOSUB :TORNATEMPERATURA
530 '----------------------------------------- LETTURA TENSIONE ------------------------------------
550 V=CADS2
570 GOSUB :TORNATENSIONE
590 '----------------------------------------- LETTURA CORRENTE ------------------------------------
610 AMP=CADS3
620 GOSUB :TORNAAMPERE

621 ' RICHIAMO LA FUNZIONE CHE MI GESTISCE LA PERCENTUALE DEL PWM
622 GOSUB :PERCENTUALEPWM

630 ' VALORI DA UTILIZZARE SOLTANTO IN CASO DI DEBUG
631 'VBATT=14.1
632 'AMPERE= 55
633 'TEMPERATURA=80

750 ' CICLO DI RICARICA PER BATTERIA 12Volt - 12Ah
770 CONSTANT VMIN= 11
790 CONSTANT VMAX=14.2
810 CONSTANT AmpMAX=2.0 'Massima Corrente di ricarica per batteria al Piombo 12Ah di prova.
815 CONSTANT TEMPERATURAMAX =80.0 ' TEMPERATURA LIMITE DI LAVORO PER IL MOSFET UTILIZATO "IRF640"

850 ' IMPOSTO IL VALORE PERCENTUALE DEL PWM
852 PWMDC2 = PERCENTUALEPWM
854 GOTO 390

930 ' ----------------------------------INIZIO FUNZIONI VARIE - ----------------------
950 :TORNATEMPERATURA
970 LCDPOS=42
990 TEMP=T*5.0/10.23
1010 TEMPERATURA=LEFT(TEMP&"",4)
1030 LCDWRITE="T=" & TEMPERATURA & CHR(223) & "C"
1050 USCITAUSB=TEMPERATURA&";"
1070 RETURN

1090 :TORNATENSIONE
1110 LCDPOS=21
1120 VOLT=V*5.0/102.3
1130 VBATT=LEFT(VOLT&"",3)
1140 USCITAUSB=USCITAUSB&VBATT&";"
1141 LCDWRITE="BAT=" & VBATT & "V"
1145 GOSUB :PERCENTUALEBATTERIA
1150 RETURN

1250 :TORNAAMPERE
1270 LCDPOS=85
1290 AMP=AMP*5.0/1023
1291 'MOLTIPLICATORE PER SENSORE DI CORRENTE > ACS709 Current Sensor Carrier -75 to +75A
1310 CORRENTE=1/0.028 'ADATTO A SENSORE DI CORRENTE 75AMPER
1330 AMPERE=(AMP-2.5)*CORRENTE
1350 AMPERE=LEFT(AMPERE&"",4)
1370 USCITAUSB=USCITAUSB&AMPERE&";"
1410 LCDWRITE="A="&AMPERE&" - Am=" & LEFT(AmpMax, 4) &""
1430 RETURN

1450 :LEDON
1470 OUTBIT(6)=0
1490 ORARIO=DATE
1510 GOTO 430

1530 :LEDOFF
1550 OUTBIT(6)=1
1570 ORARIO=DATE
1590 GOTO 430

1600 :PERCENTUALEBATTERIA
1605 PERCENTUALEBATT = LEFT(((VBATT-VMIN)*100)/(VMAX-VMIN), 2)
1610 LCDPOS=30
1615 LCDWRITE= " %=" & PERCENTUALEBATT & ""
1620 RETURN

1700 :PERCENTUALEPWM
1720 'VERIFICO LA TEMPERATURA DEL MOSFET, SE TROPPO ALTA SPENGO
1721 IF TEMPERATURA > TEMPERATURAMAX THEN 1790 ELSE 1780

1780 'CONFRONTO LA TENSIONE DELLA BATTERIA CON LA COSTANTE
1785 IF VBATT >= VMAX THEN 1800
1787  IF AMPERE<= AmpMAX THEN 1830 ELSE 1840

1790 ' SPENGO IL PWM IMPOSTANDO A 0% IL VALORE
1800 PERCENTUALEPWM = 0
1801 RETURN

1830 ' ACCENDO IL PWM METTENDO AL 100% IL VALORE
1831 PERCENTUALEPWM = 100
1832 RETURN

1840 ' IMPOSTO IL VALORE % DEL PWM PERCHè LA CORRENTE è SUPERIORE A QUELLA CONSENTITA.
1850 PERCENTUALEPWM=LEFT((AmpMax*100)/AMPERE,3)
1851 RETURN





Modificato da jumpy75 - 18/9/2012, 14:20
 
 InizioPagina
 

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

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum