| jumpy75
| 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
| Inviato il: 8/9/2012,14:00
|
Com'è sta storia, vi tenete gli schemi per voi? Non lo sapete che due sono meglio che uàn?
--------------- "Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza" http://iv3gfn.altervista.org/ http://pptea.altervista.org/
| | | | marpad65
| 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
| Inviato il: 8/9/2012,21:14
|
CITAZIONE (PinoTux @ 8/9/2012, 15:00) Com'è sta storia, vi tenete gli schemi per voi? Non lo sapete che due sono meglio che uàn? 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
| | | | jumpy75
| 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.
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
| 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
| Inviato il: 12/9/2012,23:01
|
Volendo realizzare un partitore preciso e regolabile si può usare questo schema:
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
| 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
| 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
| 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. 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. 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
| 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&ERE&";" 1410 LCDWRITE="A="&ERE&" - 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
| 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. 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. 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
| 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&ERE&";" 1410 LCDWRITE="A="&ERE&" - 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
| 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
| 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&ERE&";" 1410 LCDWRITE="A="&ERE&" - 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
| |
| | |
|
Versione Mobile!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|