Inhaltsverzeichnis:

Arduino - PV MPPT Solarladegerät - Gunook
Arduino - PV MPPT Solarladegerät - Gunook

Video: Arduino - PV MPPT Solarladegerät - Gunook

Video: Arduino - PV MPPT Solarladegerät - Gunook
Video: 400W Solar Laderegler selber bauen Anleitung mit 2N3055 ohne Mikrokontroller ELH#213 2024, November
Anonim
Image
Image
Abwärtswandler
Abwärtswandler

Es gibt viele Laderegler auf dem Markt. Gewöhnliche billige Laderegler sind nicht effizient, um die maximale Leistung von Sonnenkollektoren zu nutzen. Diejenigen, die effizient sind, sind sehr teuer.

Also beschloss ich, meinen eigenen Laderegler zu entwickeln, der effizient und intelligent genug ist, um den Batteriebedarf und die Solarbedingungen zu verstehen. Es ergreift geeignete Maßnahmen, um die maximal verfügbare Energie aus der Solarenergie zu beziehen und sehr effizient in die Batterie zu legen.

WENN SIE MEINE BEMÜHUNG MÖGEN, ALS BITTE DIESE ANLEITUNG ABSTIMMEN.

Schritt 1: Was ist MPPT und warum brauchen wir es?

Unsere Solarmodule sind dumm und nicht schlau, um den Batteriezustand zu verstehen. Angenommen, wir haben ein 12V/100-Watt-Solarpanel und es wird je nach Hersteller eine Leistung zwischen 18V-21V liefern, aber Batterien sind für eine Nennspannung von 12V ausgelegt, bei voller Ladung werden sie 13,6V und bei voller Ladung 11,0V betragen entladen. Nehmen wir nun an, unsere Batterien werden mit 13 V geladen, die Panels geben 18 V, 5,5 A bei 100% Arbeitseffizienz (nicht möglich, 100% zu haben, aber nehmen wir an). gewöhnliche Controller haben einen PWM-Spannungsregler ckt, der die Spannung auf 13,6 absenkt, aber keine Stromverstärkung. es bietet nur nachts Schutz gegen Überladung und Kriechströme der Panels.

Wir haben also 13,6 V * 5,5 A = 74,8 Watt.

Wir verlieren ca. 25 Watt.

Um dieses Problem zu beheben, habe ich den smps-Abwärtswandler verwendet. diese Art von Konvertern haben einen Wirkungsgrad von über 90%.

Das zweite Problem, das wir haben, ist die nichtlineare Leistung von Sonnenkollektoren. Sie müssen mit einer bestimmten Spannung betrieben werden, um die maximal verfügbare Leistung zu ernten. Ihre Leistung variiert im Laufe des Tages.

Um dieses Problem zu lösen, werden MPPT-Algorithmen verwendet. MPPT (Maximum Power Point Tracking), wie der Name schon sagt, verfolgt dieser Algorithmus die maximal verfügbare Leistung von Panels und variiert die Ausgangsparameter, um den Zustand aufrechtzuerhalten.

Durch die Verwendung von MPPT erzeugen unsere Panels also die maximal verfügbare Leistung und der Abwärtswandler wird diese Ladung effizient in die Batterien einspeisen.

Schritt 2: WIE FUNKTIONIERT MPPT?

Ich werde das nicht im Detail besprechen. Wenn Sie es also verstehen wollen, schauen Sie sich diesen Link an -Was ist MPPT?

In diesem Projekt habe ich die Eingangs-V-I-Eigenschaften und auch die Ausgangs-V-I verfolgt. Durch Multiplizieren der Eingangs-V-I und Ausgangs-V-I können wir die Leistung in Watt erhalten.

Sagen wir, wir haben zu jeder Tageszeit 17 V, 5 A, also 17x5 = 85 Watt. gleichzeitig beträgt unsere Leistung 13 V, 6A also 13x6 = 78 Watt.

Jetzt erhöht oder verringert MPPT die Ausgangsspannung durch Vergleich mit der vorherigen Eingangs-/Ausgangsleistung.

Wenn die vorherige Eingangsleistung hoch und die Ausgangsspannung niedriger als die aktuelle war, wird die Ausgangsspannung wieder niedriger, um zur hohen Leistung zurückzukehren, und wenn die Ausgangsspannung hoch war, wird die aktuelle Spannung auf das vorherige Niveau erhöht. Daher schwingt es um den maximalen Leistungspunkt herum. diese Schwingungen werden durch effiziente MPPT-Algorithmen minimiert.

Schritt 3: Implementieren von MPPT auf Arduino

Dies ist das Gehirn dieses Ladegeräts. Unten ist der Arduino-Code, um die Ausgabe zu regulieren und MPPT in einem einzigen Codeblock zu implementieren.

// Iout = Ausgangsstrom

// Vout = Ausgangsspannung

// Vin = Eingangsspannung

// Pin = Eingangsleistung, Pin_vorheriger = letzte Eingangsleistung

// Vout_last = letzte Ausgangsspannung, Vout_sense = aktuelle Ausgangsspannung

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

{

if(duty_cycle>0)

{

Arbeitszyklus -=1;

}

analogWrite (buck_pin, duty_cycle);

}

sonst wenn ((VoutVout_last) || (Pi

{

if(duty_cycle<240)

{ Arbeitszyklus+=1;

}

analogWrite (buck_pin, duty_cycle);

}

Pin_vorheriger = Pin;

Vin_last = Vin;

Vout_last = Vout;

}

Schritt 4: Buck-Konverter

Ich habe N-Kanal-Mosfet verwendet, um den Abwärtswandler zu machen. normalerweise wählen die Leute P-Kanal-Mosfet für High-Side-Switching, und wenn sie N-Kanal-Mosfet für den gleichen Zweck wählen, ist ein Treiber-IC erforderlich oder Boot-Strapping ckt.

aber ich habe den Abwärtswandler ckt so modifiziert, dass er eine Low-Side-Umschaltung mit N-Kanal-Mosfet hat. i, m unter Verwendung des N-Kanals, da diese geringe Kosten, hohe Nennleistungen und eine geringere Verlustleistung aufweisen. Dieses Projekt verwendet IRFz44n-Mosfet mit Logikpegel, sodass es direkt von einem Arduino-PWM-Pin angesteuert werden kann.

Für einen höheren Laststrom sollte man einen Transistor verwenden, um 10 V am Gate anzulegen, um den Mosfet vollständig in die Sättigung zu bringen und die Verlustleistung zu minimieren, das habe ich auch getan.

Wie Sie in ckt oben sehen können, habe ich den Mosfet auf -ve-Spannung gelegt und somit +12 V vom Panel als Masse verwendet. Diese Konfiguration ermöglicht es mir, einen N-Kanal-Mosfet für Abwärtswandler mit minimalen Komponenten zu verwenden.

aber es hat auch einige nachteile. Da Sie beide Seiten -ve Spannung getrennt haben, haben Sie keine gemeinsame Bezugsmasse mehr. Daher ist das Messen von Spannungen sehr schwierig.

Ich habe das Arduino an Solar-Eingangsklemmen angeschlossen und seine -ve-Leitung als Masse für Arduino verwendet. Wir können die Eingangsspannung an dieser Stelle leicht messen, indem wir einen Spannungsteiler ckt gemäß unserer Anforderung verwenden. kann aber die Ausgangsspannung nicht so einfach messen, da wir keine gemeinsame Masse haben.

Dafür gibt es jetzt einen Trick. Anstatt die Spannung am Ausgangskondensator zu messen, habe ich die Spannung zwischen zwei -ve-Leitungen gemessen. Verwenden von Solar -ve als Masse für Arduino und Ausgang -ve als zu messendes Signal / Spannung. Der Wert, den Sie mit dieser Messung erhalten haben, sollte von der gemessenen Eingangsspannung abgezogen werden und Sie erhalten die tatsächliche Ausgangsspannung am Ausgangskondensator.

Vout_sense_temp=Vout_sense_temp*0.92+float(raw_vout)*volt_factor*0.08; // volatge über Input-Gnd und Output-Gnd messen.

Vout_sense=Vin_sense-Vout_sense_temp-diode_volt; // Spannungsdifferenz zwischen zwei Erdungen auf Ausgangsspannung ändern..

Für Strommessungen habe ich ACS-712 Strommessmodule verwendet. Sie wurden von Arduino mit Strom versorgt und mit dem Eingang Gnd verbunden.

interne Timer werden modifiziert, um 62,5 kHz PWM an Pin D6 zu gewinnen. die verwendet wird, um den Mosfet anzutreiben. eine ausgangssperrdiode wird benötigt, um einen sperrstrom- und verpolungsschutz bereitzustellen. Der Wert des Induktors hängt von den Anforderungen an die Frequenz und den Ausgangsstrom ab. Sie können online verfügbare Abwärtswandler-Rechner verwenden oder 100uH 5A-10A Last verwenden. Überschreiten Sie niemals den maximalen Ausgangsstrom der Induktivität um 80%-90%.

Schritt 5: Letzte Ausbesserung -

Image
Image

Sie können Ihrem Ladegerät auch zusätzliche Funktionen hinzufügen. wie meins haben LCD auch die Parameter und 2 Schalter, um Eingaben vom Benutzer zu übernehmen.

Ich werde den endgültigen Code aktualisieren und das ckt-Diagramm sehr bald vervollständigen.

Schritt 6: AKTUALISIEREN: - Tatsächlicher Schaltplan, Stückliste und Code

Lichterwettbewerb 2017
Lichterwettbewerb 2017

AKTUALISIEREN:-

Ich habe den Code, die BOM und die Schaltung hochgeladen. es ist etwas anders als meins, weil es einfacher ist, dieses zu machen.

Empfohlen: