PPTEA
PPTEA: REGOLATORE DI CARICA REALIZZATO IN PWM

VISUALIZZA L'ALBUM

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


FinePagina

NonSoloBolleDiA...

Avatar
PetaWatt


AMMINISTRATORE
Msg:13786

Stato:



Inviato il: 25/5/2012,19:57

Dopo una lunga attesa dovuta sia al parto del PPTEA ( faccine/alien.gif ) sia al gruppotto che si è creato ...iniziamo qualche progetto utile agli appassionati di energie rinnovabili faccine/angel1.gif . Ovviamente non si dovranno avere competenze di programmazione e il codice eabasic sarà contenuto nel firmware...quindi non si dovranno conoscere tante informazioni riguardanti il pptea: l'obiettivo sarà replicare un progetto a basso impatto di competenze...deve essere a prova di scimmia...a prova di stupido ( è chi lo stupido fa) .
Ovviamente chi avrà le dovute competenze potrà modificare il progetto a piacimento.

Cominciamo con un oggetto fondamentale IL REGOLATORE DI CARICA.
Lo realizzeremo mediante il PWM, così facendo i vantaggi rispetto i metodi tradizionali saranno rilevanti...quasi da non credere. faccine/biggrin.gif ...ma ne parleremo nell'evoluzione della discussione.
Un saluto
Bolle




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

 

jumpy75

Avatar
GigaWatt


MODERATORE
Msg:686

Stato:



Inviato il: 25/5/2012,20:03

E andiamo!!!!
Non vedo l'ora di iniziare a scaldare il saldatore!!!! ehehehehehehhe faccine/clap.gif faccine/clap.gif faccine/clap.gif

PS: se serve una mano a scrivere un pò di codice per la gestione, sono disposto a dare due mano e un piede, hehehheheheeheh


Jumpy



---------------



 

PinoTux

Avatar
GigaWatt


AMMINISTRATORE
Msg:3509

Stato:



Inviato il: 29/5/2012,12:58

Spero che questa discussione prosegua.... release varie permettendo! faccine/happy.gif



---------------
"Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza"

http://iv3gfn.al...

 

Luca450Mhz

Avatar
GigaWatt


Utente
Msg:3204

Stato:



Inviato il: 29/5/2012,13:06

Ma è un modo di invogliare qualche volontario, oppure qualcosa nelle pentole di Bolle, bolle già?! faccine/smile.gif e scusate il gioco di parole...



---------------
Pannelli: 6975 Wp (poli e mono). Inverter UPS PSW7 6kW 48V toroidale con switch comandato dal mio si...

 

jumpy75

Avatar
GigaWatt


MODERATORE
Msg:686

Stato:



Inviato il: 29/5/2012,13:07

Sicuramente sarà molto interessante e seguita da un bel po' di persone... faccine/biggrin.gif



---------------



 

marpad65
KiloWatt


Utente
Msg:230

Stato:



Inviato il: 12/6/2012,09:50

Ciao Bolle,

Purtroppo la mia ignoranza non ha limite!!

Ho provato ad usare il PWM2 e PWM3 come indicato nel manuale ma aime non ci sono riuscito.

Ti posto questo codice creato tempo fa, originariamente è molto piu vasto quindi non fare caso a riferimenti non utilizzati.

Quando hai tempo, me lo puoi modificare come se fosse il PWM2 e il 3.


10 REM
20 PRAGMA EXTERNAL_EEPROM
30 CADS=3
40 '
50 CONSTANT V_CAR_MANT = 544 '13.6 / 27.2 / 54.4
60 CONSTANT V_CAR_FONDO = 568 '14.2 / 28.4 / 56.8
70 CONSTANT A_CAR_MANT = 65 ' 6A = 1/21 DI 130Ah
80 CONSTANT A_CAR_FONDO = 130 '13A = 1/10 DI 130Ah

125 SETIO=&H100FF
142 GRPILOTAV=V_CAR_FONDO
143 GRPILOTAA=A_CAR_FONDO

165 PWMFQ1=7 '------------------------------- imposto la frequenza di oscillazione
170 VPWM=12
175 LCDCLEAR

210 GOSUB :LEGGIDATI
219 '--------------------------
220 GOSUB :PWM
229 '--------------------------

290 GOTO 210

300 :LEGGIDATI
305 VB1=CADS1*600/1023
320 AB1=((CADS2-511)*600/1024)
340 AP=((CADS3-511)*600/1024)
400 RETURN

500 :PWM
520 IF AB1>GRPILOTAA THEN 562 ELSE 550 '- verifico la CORRENTE di carica
550 IF VB1<>GRPILOTAV THEN 560 ELSE 599 '- verifico la tensione della batteria
560 IF VB1>GRPILOTAV THEN 562 ELSE 580 '- la tensione della batteria > Sp
562 IF VPWM=100 THEN 599 ELSE 564
564 VPWM++
566 PWMDC1=VPWM
570 GOTO 599
580 IF VB1<grpilotav THEN 582 ELSE 599 '- la tensione della batteria < Sp
582 IF VPWM=0 THEN 599 ELSE 584
584 VPWM--
586 PWMDC1=VPWM
599 lcdpos=1
600 lcdwrite = % &VPWM
601 lcdpos=65
602 lcdwrite = VB1= & VB1 & " " & "AB1= " & AB1
603 RETURN

grazie



---------------



 

NonSoloBolleDiA...

Avatar
PetaWatt


AMMINISTRATORE
Msg:13786

Stato:



Inviato il: 12/6/2012,10:13

Ok, ma cerca di spiegare cosa vuoi fare...cercando di mettere più informazioni possibili: I/O utilizzati ( a cosa servono o cosa devono fare) , periferiche utilizzate (DISPLAY ...) in modo che anche i non esperti capiscano.
Ciao
Bolle



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

 

NonSoloBolleDiA...

Avatar
PetaWatt


AMMINISTRATORE
Msg:13786

Stato:



Inviato il: 12/6/2012,14:38

Ma non funge nel debug oppure non funge sul PPTEA? Non ho capito il problema.
Altra cosa posta tutto il codice...così capisco tutto...almeno ci provo faccine/biggrin.gif
Il codice è ottimo, si capisce per bene, ma un consiglio ...ma solo a livello visivo/cognitivo ...per rendere il codice leggibile soprattutto agli altri è utile lasciare i dati 'importanti' visibili ad occhio...faccio un esempio sulle tue linee di codice 50 e 60...è meglio lasciare i valori di tensione modificabili 'al volo' che valori oscici alla comprensione...un ulteriore passo è definire in testa anche il 13.6 e il 14.2 in modo da poterli avere bene sotto occhio...


CODICE
40 CONSTANT FATT_PROP_V = 40
50 CONSTANT V_CAR_MANT   =  13.6*FATT_PROP_V   '-------------> 544 ->13.6
60 CONSTANT V_CAR_FONDO = 14.2*FATT_PROP_V  '-------------> 568 -> 14.2

Ciao
Bolle



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

 

marpad65
KiloWatt


Utente
Msg:230

Stato:



Inviato il: 12/6/2012,16:45

CITAZIONE (NonSoloBolleDiAcqua @ 12/6/2012, 15:38)
Ma non funge nel debug oppure non funge sul PPTEA? Non ho capito il problema.

No, No funziona bene, sicuramente da migliorare ma funziona. Considera che questo è un prototipo in funzione da 8 giorni, e per il momento ... tocco ferro!!.
è stato scritto con la versione 2.15 ed ora lo vorrei aggiornare con la ver. attuale per ampliarlo e snellirlo un po. Le I/O utilizzate sono quelle di default per il PWM1

Quello che ti chiedo è di utilizzare questa base di codice come esempio, impostandolo come se fosse il PWM2 o il PWM3.

Se qualcuno ha voglia di ridere pubblico il prototipo, come base è un po contorta ma può far nascere qualche altra idea




---------------



 

marpad65
KiloWatt


Utente
Msg:230

Stato:



Inviato il: 12/6/2012,17:03

CITAZIONE (NonSoloBolleDiAcqua @ 12/6/2012, 15:38)
Ma non funge nel debug oppure non funge sul PPTEA? Non ho capito il problema.
Altra cosa posta tutto il codice...così capisco tutto...almeno ci provo faccine/biggrin.gif
Il codice è ottimo, si capisce per bene, ma un consiglio ...ma solo a livello visivo/cognitivo ...per rendere il codice leggibile soprattutto agli altri è utile lasciare i dati 'importanti' visibili ad occhio...faccio un esempio sulle tue linee di codice 50 e 60...è meglio lasciare i valori di tensione modificabili 'al volo' che valori oscici alla comprensione...un ulteriore passo è definire in testa anche il 13.6 e il 14.2 in modo da poterli avere bene sotto occhio...


CODICE
40 CONSTANT FATT_PROP_V = 40
50 CONSTANT V_CAR_MANT   =  13.6*FATT_PROP_V   '-------------> 544 ->13.6
60 CONSTANT V_CAR_FONDO = 14.2*FATT_PROP_V  '-------------> 568 -> 14.2

Ciao
Bolle

Come vedi (per non perdersi dietro alle virgole) i valori calcolati sono interi per facilitare la lettura ed evitare il rincorrersi del set-point. Il mio progetto è per un impianto a 48V quindi la tensione di sp del PWM è 56,8V(568) modificabile per impianti a 24 o 12 Volt. Il fondo scala di lettura è di 60V(600) impostabile a 30 o 15 Volt
Come già detto è un prototipo ... per le descrizioni aspettavo di farlo più avanti

Marco



---------------



 

NonSoloBolleDiA...

Avatar
PetaWatt


AMMINISTRATORE
Msg:13786

Stato:



Inviato il: 12/6/2012,17:06

CITAZIONE (marpad65 @ 12/6/2012, 17:45)
Se qualcuno ha voglia di ridere pubblico il prototipo....

Questo circuito interessa molto al forum...se lo hai testato e va bene...vuol dire che hai fatto un bel lavoro: faccine/clap.gif .Se qualcuno ride lo prendiamo a calci...ma non mi sembra che il tuo codice faccia ridere...tutt'altro. Se vuoi posta il circuito con i componenti che hai utilizzato...tutti potremo trarre spunto e/o darti consigli.
BRAVO! faccine/clap.gif faccine/clap.gif faccine/clap.gif
Ciao
Bolle
PS:Ti conviene aggiornare la versione...anche se è in perenne evoluzione...ma ora entriamo nella parte di calma.



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

 

NonSoloBolleDiA...

Avatar
PetaWatt


AMMINISTRATORE
Msg:13786

Stato:



Inviato il: 12/6/2012,19:34

Penso sia giunto il momento di passare agli schemi a blocchi...sono un modo, soprattutto per chi inizia e non ha molta esperienza, per focalizzare il flusso del software...piano piano...faremo anche questo. Iniziamo a discutere il sw che ha realizzato marpad. Nonostante pensi sia contorto, non lo è affatto. Il suo codice è suddiviso in blocchi:
1.Blocco di dichiarazione e di inizializzazione (linee 10-175)
2.Programma principale (chiuso in un loop infinito che chiama soubroutine linee 210-290)
3.Due soubroutine (PWM, LEGGIDATI linee 500-603)
Inoltre ha dato un nome sensato alle variabili/costanti...di fatto ha realizzato un sw impeccabile!!!
In questo modo abbiamo descritto l'architettura del SW...vediamo poi di descrivere cosa fa.


Passiamo ad utilizzare il PWM2 invece che il PWM1...per utilizzare il PWM2 (anche per liberare il timer che può far comodo) , possiamo commentare la linea 165, la linea 566 deve diventare PWMDC2=VPWM e linea 586 deve diventare PWMDC2=VPWM. L'uscita del PWM2 deve essere preso sul pin 27 anzichè 28...tutto qua.
Ciao
Bolle



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

 

NonSoloBolleDiA...

Avatar
PetaWatt


AMMINISTRATORE
Msg:13786

Stato:



Inviato il: 13/6/2012,06:49

Passiamo ad analizzare le due subroutine:
1. LEGGIDATI:
Legge la tensione della batteria e la corrente di carica/scarica.

2.PWM
Confronta la tensione di batteria e la corrente con dei valori...ma alcuni controlli mi sembrano non congruenti...forse occorre aspettare che posti il codice completo...non ci sono controlli sulla tensione di mantenimento etc...

Cmq un buon regolatore di carica necessita anche di un sensore di temperatura...che in questo codice non vedo...ma attendiamo il resto...oppure proviamoci noi a tirare giù un programma. Inoltre un buon regolatore gestisce anche il carico...cioè non solo si deve caricare la batteria ma si deve anche prevedere se un carico può essere agganciato alla batteria oppure no.
Un saluto
Bolle



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

 

NonSoloBolleDiA...

Avatar
PetaWatt


AMMINISTRATORE
Msg:13786

Stato:



Inviato il: 13/6/2012,07:23

Questo è lo schema del regolatore.
Bolle



http://www.energialternativa.info/public/newforum/ForumEA/C/SchemaRegolatoreDiCarica.jpg



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

 

marpad65
KiloWatt


Utente
Msg:230

Stato:



Inviato il: 13/6/2012,08:16

Buongiorno Bolle,

Visto che stai avanzando a passi lunghi e ben distesi ti posto il codice. Avrei voluto sistemarlo un po prima di pubblicarlo.

Piccola descrizione delle funzioni.

Fase di carica:
-visualizzazione tensione batteria
-visualizzazione corrente batteria
-visualizzazione potenza istantanea pannelli
- regolazione PWM
--regolazione con set-ppint in tensione, carica di fondo
--regolazione con sp in corrente, carica di fondo
--regolazione con sp in tensione, carica di mantenimento
--regolazione con sp in corrente, carica di mantenimento
--passaggio automatico tipo di carica

Fase scarica
-visualizzazione in % stato batteria

Punti di prelievo dei dati
-tensione, ai poli del pacco batterie
-corrente, al negativo dei pannelli
-corrente, al positivo della batteria(riconosce se la batteria è in carica o scarica. Sensore All)

-"NON RILEVA LA TEMPERATURE"

ho creato il codice per misurare la capacità accumulata ma le variabili sono finite, studierò qualcos'altro

In fase di simulazione non accetta il cads5 < a 0 (corrente pannelli)

10 REM
20 PRAGMA EXTERNAL_EEPROM
30 CADS=5
40 '
50 CONSTANT V_CAR_MANT = 544 '13.6 / 27.2 / 54.4
60 CONSTANT V_CAR_FONDO = 568 '14.2 / 28.4 / 56.8
70 CONSTANT A_CAR_MANT = 65 ' 6A = 1/21 DI 130Ah
80 CONSTANT A_CAR_FONDO = 130 '13A = 1/10 DI 130Ah
85 CONSTANT M=0
87 CONSTANT F=1

125 SETIO=&H100FF
142 GRPILOTAV=V_CAR_FONDO
143 GRPILOTAA=A_CAR_FONDO
145 PWMIO1=&HC000'------------------------ led indicativo funzionamento PWM
150 WAITS 2
165 PWMFQ1=7 '------------------------------- imposto la frequenza di oscillazione
170 VPWM=12'--------------------------------- D.C. indicativo per non partire da zero
171 TWp=1'-------------------------------------% tot Watt-Picco memorizza il picco + alto e confronta con l'instantaneo
173 FASECARICA=F---------------------------- avviamento in fase carica di fondo
175 LCDCLEAR

210 GOSUB :LEGGIDATI
219 '--------------------------
220 GOSUB :PWM
229 '--------------------------
230 '
231 IF DP<>1 THEN 233 ELSE 271
233 GOSUB :VISDATIB1
235 DP++
236 GOTO 210
239 '--------------------------

260 '
271 IF DVC<>5 THEN 275 ELSE 272
272 CLR DVC
273 GOSUB :VERCARICA
274 GOTO 283
275 DVC++
279 '--------------------------
283 CLR DP'
290 GOTO 210

300 :LEGGIDATI
305 VB1=CADS1*600/1023
310 'VB2=CADS2*600/1023
320 AB1=((CADS3-511)*600/1024)
330 'AB2=((CADS4-511)*600/1024)
340 AP=((CADS5-511)*600/1024)
400 RETURN

500 :PWM'------------------------------------------------regolazione PWM
520 IF AB1>GRPILOTAA THEN 562 ELSE 550 '- verifico la CORRENTE di carica
550 IF VB1<>GRPILOTAV THEN 560 ELSE 599 '- verifico la tensione della batteria
560 IF VB1>GRPILOTAV THEN 562 ELSE 580 '- la tensione della batteria > Sp
562 IF VPWM=100 THEN 599 ELSE 564
564 VPWM++
566 PWMDC1=VPWM
570 GOTO 599
580 IF VB1<grpilotav THEN 582 ELSE 599 '- la tensione della batteria < Sp
582 IF VPWM=0 THEN 599 ELSE 584
584 VPWM--
586 PWMDC1=VPWM
599 RETURN

3000 :VISDATIB1'------------------------------visualiza i dati batteria e la D.C in stato di carica
3001 IF AB1<0 THEN 3002 ELSE 3010
3002 GOSUB :PERCBATTERIA
3003 GOTO 3510
3010 LCDPOS=1
3013 VPWM2=VPWM*10.0
3015 LCDWRITE=PWM D.C. %= & LEFT(VPWM2&"",3)
3020 '
3025 '
3030 '
3510 LCDPOS=65
3515 Wp=LEFT(((VP*AP))&"",5)
3516 'WpV=VB1*AP

3530 '
3533 VISVB1=LEFT((VB1/1.0)&"",5)
3535 LCDWRITE=BATTERIA V=&VISVB1
3540 LCDPOS=21
3543 VISAB1=LEFT(((AB1/1.0))&"",5)
3545 LCDWRITE=BATTERIA A=&VISAB1
3550 GOTO :PRESTAZIONIIMPIANTO
3900 RETURN

4000 :VERCARICA'---------------------------------------verifica se passare a carica di fondo o mantenimento
4005 IF FASECARICA=F THEN 4010 ELSE 4080
4010 IF VB1=V_CAR_FONDO THEN 4020 ELSE 4080
4020 CVC++
4030 IF CVC>=2 THEN 4040 ELSE 4900
4040 GRPILOTAA=A_CAR_MANT
4050 GRPILOTAV=V_CAR_MANT
4055 FASECARICA=M
4060 CVC=0
4070 GOTO 4900
4080 IF VB1<520 THEN 4090 ELSE 4900
4090 CVC++
4100 IF CVC=2 THEN 4110 ELSE 4900
4110 GRPILOTAA=A_CAR_FONDO
4120 GRPILOTAV=V_CAR_FONDO
4125 FASECARICA=F
4130 CVC=0
4900 RETURN


5000 :PRESTAZIONIIMPIANTO'-----------------------------indica la potenza del pannello con scorrimento dei dati
5005 IF START=1 THEN 5057
5010 CLR C,D
5015 D=20
5020 WpV=LEFT((VB1*AP)/10.0&"",3)
5025 '
5030 IF WpV>TWp THEN 5035 ELSE 5040
5035 TWp = WpV
5040 PERCWp=LEFT(WpV/(TWp/100)&"",4)
5042 STR1="PANNELLO Wpp= " & WpV & " <-> "'----------------22 caratteri
5052 STR2="RESA PANNELLO % " &PERCWp & " <-> "'------------25 caratteri
5054 '
5055 Z=STR1&STR2
5057 LCDPOS=85
5059 C++
5061 b=MID(z,C,D)
5065 LCDWRITE=b
5068 IF C=47 THEN 5078
5070 IF C>27 THEN 5071 ELSE 5072
5071 D--
5072 SET START
5073 RETURN'GOTO 5057
5078 CLR START
5900 RETURN

6000 :PERCBATTERIA'-------------------------------------------% stato della batteria visibile in stato di scarica
6010 IF VB1>=516 THEN 6015 ELSE 6020'99 12.91 11
6015 PERCB1=99
6016 GOTO 6120
6020 IF VB1>=512 THEN 6025 ELSE 6030'90 12.80 14
6025 PERCB1=90
6026 GOTO 6120
6030 IF VB1>=504 THEN 6035 ELSE 6040'80 12.66 14
6035 PERCB1=80
6036 GOTO 6120
6040 IF VB1>=500 THEN 6045 ELSE 6050'70 12.52 14
6045 PERCB1=70
6046 GOTO 6120
6050 IF VB1>=492 THEN 6055 ELSE 6060'60 12.38 16
6055 PERCB1=60
6056 GOTO 6120
6060 IF VB1>=488 THEN 6065 ELSE 6070'50 12.22 16
6065 PERCB1=50
6066 GOTO 6120
6070 IF VB1>=480 THEN 6075 ELSE 6080'40 12.06 16
6075 PERCB1=40
6076 GOTO 6120
6080 IF VB1>=476 THEN 6085 ELSE 6090'30 11.90 20
6085 PERCB1=30
6086 GOTO 6120
6090 IF VB1>=468 THEN 6095 ELSE 6100'20 11.70 28
6095 PERCB1=20
6096 GOTO 6120
6100 IF VB1>=448 THEN 6105 ELSE 6115'10 11.42 0
6105 PERCB1=10
6106 GOTO 6120
6110 '
6115 PERCB1=00
6120 LCDPOS=1
6124 PERCB1=LEFT((PERCB1)&"",2)
6125 LCDWRITE="PERC.BATT. "&PERCB1&" %"
6900 RETURN

ho provato come da te descritto ma in simulazione non visualizzo niente
Cosa dicevi a proposito della riga 165?????

Marco




Modificato da marpad65 - 14/6/2012, 00:00


---------------



 
 InizioPagina
 

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

Versione Completa!

Home page     TOP100-SOLAR    Home page forum