Sommario:

Arduino - Caricatore solare PV MPPT: 6 passaggi (con immagini)
Arduino - Caricatore solare PV MPPT: 6 passaggi (con immagini)

Video: Arduino - Caricatore solare PV MPPT: 6 passaggi (con immagini)

Video: Arduino - Caricatore solare PV MPPT: 6 passaggi (con immagini)
Video: PANNELLI E REGOLATORI DI CARICA (proporzione) 2024, Dicembre
Anonim
Image
Image
Convertitore buck
Convertitore buck

Ci sono molti regolatori di carica disponibili sul mercato. i normali regolatori di carica economici non sono efficienti per utilizzare la massima potenza dai pannelli solari. Quelli che sono efficienti, sono molto costosi.

Quindi ho deciso di creare il mio controller di carica che è efficiente e abbastanza intelligente da comprendere le esigenze della batteria e le condizioni solari. prende le azioni appropriate per prelevare la massima potenza disponibile dal solare e metterla all'interno della batteria in modo molto efficiente.

SE TI PIACE IL MIO SFORZO, PER FAVORE, VOTA QUESTO ISTRUZIONI.

Passaggio 1: cos'è l'MPPT e perché ne abbiamo bisogno?

I nostri pannelli solari sono stupidi e non intelligenti per capire le condizioni della batteria. Supponiamo di avere un pannello solare da 12 V/100 watt e darà un'uscita tra 18 V-21 V dipende dai produttori, ma le batterie sono classificate per una tensione nominale di 12 V, a condizioni di carica completa saranno 13,6 V e saranno 11,0 V a pieno scarico. ora supponiamo che le nostre batterie siano a 13 V in carica, i pannelli forniscano 18 V, 5,5 A al 100% di efficienza di lavoro (non è possibile avere il 100% ma supponiamo). i normali controller hanno un regolatore di tensione PWM ckt che abbassa la tensione a 13,6, ma nessun guadagno in corrente. fornisce solo protezione contro il sovraccarico e la corrente di dispersione ai pannelli durante le notti.

Quindi abbiamo 13,6 V * 5,5 A = 74,8 watt.

Perdiamo circa 25 watt.

Per riscontrare questo problema ho usato il convertitore buck smps. questo tipo di convertitori ha un'efficienza superiore al 90%.

Il secondo problema che abbiamo è l'uscita non lineare dei pannelli solari. devono essere azionati a una certa tensione per raccogliere la massima potenza disponibile. La loro produzione varia durante il giorno.

Per risolvere questo problema vengono utilizzati algoritmi MPPT. MPPT (Maximum Power Point Tracking) come suggerisce il nome, questo algoritmo tiene traccia della massima potenza disponibile dai pannelli e varia i parametri di uscita per sostenere la condizione.

Quindi, utilizzando MPPT, i nostri pannelli genereranno la massima potenza disponibile e il convertitore buck metterà questa carica in modo efficiente nelle batterie.

Passaggio 2: COME FUNZIONA MPPT?

Non ne parlerò in dettaglio. quindi se vuoi capirlo dai un'occhiata a questo link -Cos'è l'MPPT?

In questo progetto ho monitorato le caratteristiche dell'ingresso V-I e anche l'uscita V-I. moltiplicando l'ingresso V-I e l'uscita V-I possiamo avere la potenza in watt.

diciamo che abbiamo 17 V, 5 A cioè 17x5 = 85 watt in qualsiasi momento della giornata. allo stesso tempo la nostra uscita è 13 V, 6A cioè 13x6 = 78 Watt.

Ora MPPT aumenterà o diminuirà la tensione di uscita confrontandola con la precedente potenza di ingresso/uscita.

se la precedente potenza di ingresso era alta e la tensione di uscita era inferiore a quella presente, la tensione di uscita sarà di nuovo più bassa per tornare all'alta potenza e se la tensione di uscita era alta, la tensione presente verrà aumentata al livello precedente. quindi continua a oscillare attorno al punto di massima potenza. queste oscillazioni sono minimizzate da efficienti algoritmi MPPT.

Passaggio 3: implementazione di MPPT su Arduino

Questo è il cervello di questo caricabatterie. Di seguito è riportato il codice Arduino per regolare l'output e implementare MPPT in un unico blocco di codice.

// Iout = corrente di uscita

// Vout = tensione di uscita

// Vin = tensione di ingresso

// Pin = potenza in ingresso, Pin_previous = ultima potenza in ingresso

// Vout_last = ultima tensione di uscita, Vout_sense = tensione di uscita attuale

void regola(float Iout, float Vin, float Vout) { if((Vout>Vout_max) || (Iout>Iout_max) || ((Pin>Pin_previous && Vout_sense<Vout_last) || (PinVout_last)))

{

if(duty_cycle>0)

{

duty_cycle -=1;

}

analogWrite(buck_pin, duty_cycle);

}

altrimenti se ((VoutVout_last) || (Pi

{

if(duty_cycle<240)

{ duty_cycle+=1;

}

analogWrite(buck_pin, duty_cycle);

}

Pin_previous = Pin;

Vin_last = Vin;

Vout_last = Vout;

}

Passaggio 4: convertitore buck

Ho usato il mosfet a canale N per realizzare il convertitore buck. di solito le persone scelgono il mosfet a canale P per la commutazione high-side e se scelgono il mosfet a canale N per lo stesso scopo di un driver IC sarà richiesto o boot strapping ckt.

ma ho modificato il convertitore buck ckt per avere una commutazione low side usando il mosfet a canale N. i, m utilizzando il canale N perché questi sono a basso costo, alta potenza nominale e minore dissipazione di potenza. questo progetto utilizza il mosfet a livello logico IRFz44n, quindi può essere pilotato direttamente da un pin PWM di arduino.

per una corrente di carico più elevata si dovrebbe usare un transistor per applicare 10V al gate per portare il mosfet in saturazione completamente e ridurre al minimo la dissipazione di potenza, anche io ho fatto lo stesso.

come puoi vedere in ckt sopra ho posizionato il mosfet sulla tensione -ve, quindi usando +12v dal pannello come massa. questa configurazione mi permette di utilizzare un mosfet a canale N per convertitore buck con componenti minimi.

ma ha anche alcuni inconvenienti. poiché hai entrambi i lati -ve tensione separati, non hai più una massa di riferimento comune. quindi la misurazione delle tensioni è molto complicata.

ho collegato Arduino ai terminali di ingresso Solar e ho usato la sua linea -ve come massa per arduino. possiamo facilmente misurare la volateg in ingresso a questo punto utilizzando un partitore di tensione ckt come da nostra richiesta. ma non possiamo misurare la tensione di uscita così facilmente perché non abbiamo una massa comune.

Ora per fare questo c'è un trucco. invece di misurare la tensione sul condensatore di uscita, ho misurato la tensione tra due linee -ve. usando solar -ve come massa per arduino e output -ve come segnale/tensione da misurare. il valore che hai ottenuto con questa misurazione dovrebbe essere sottratto dalla tensione di ingresso misurata e otterrai la reale tensione di uscita attraverso il condensatore di uscita.

Vout_sense_temp=Vout_sense_temp*0.92+float(raw_vout)*volt_factor*0.08; //misura la tensione tra input gnd e output gnd.

Vout_sense=Vin_sense-Vout_sense_temp-diode_volt; //cambia la differenza di tensione tra due masse in tensione di uscita..

Per le misurazioni della corrente ho utilizzato i moduli di rilevamento della corrente ACS-712. Sono stati alimentati da arduino e collegati all'ingresso gnd.

i timer interni sono modificati per guadagnare 62,5 Khz PWM al pin D6. che viene utilizzato per pilotare il mosfet. sarà necessario un diodo di blocco dell'uscita per fornire protezione contro la dispersione inversa e l'inversione di polarità, utilizzare un diodo Schottky della corrente nominale desiderata per questo scopo. Il valore dell'induttore dipende dai requisiti di frequenza e corrente di uscita. è possibile utilizzare i calcolatori di convertitori buck disponibili online o utilizzare un carico di 100uH 5A-10A. non superare mai la corrente di uscita massima dell'induttore dell'80%-90%.

Passaggio 5: ritocco finale -

Image
Image

puoi anche aggiungere funzionalità aggiuntive al tuo caricabatterie. come il mio, anche il display LCD mostra i parametri e 2 interruttori per ricevere input dall'utente.

Aggiornerò il codice finale e completerò lo schema ckt molto presto.

Passaggio 6: AGGIORNAMENTO: - Schema del circuito effettivo, distinta materiali e codice

Concorso Luci 2017
Concorso Luci 2017

AGGIORNARE:-

Ho caricato il codice, bom e circuito. è leggermente diverso dal mio, perché è più facile fare questo.

Consigliato: