Solar Charger

Es ist Zeit für ein neues Projekt. Dieses hat aber eher weniger mit Einrichtungsgegenständen bzw. Möbelstücken zu tun sondern mit nackter, gnadenloser Technik 😀 Aber vielleicht findet ja der ein oder andere doch gefallen daran. Was ich also vorhabe: Das ganze soll eine kleine Ladestation für USB-Geräte (z.B. Handy’s, Tablet’s, alles andere USB-aufladbare), für meine Bohrmaschinen Akkus und normale „Batterie Akkus“ (also AA,AAA, usw.) sowie einzelne Li-Ion Akkus (z.B.18650, 3.7V) werden.

An sich ist das wohl nichts besonderes. Allerdings möchte ich dazu das ganze mittels Arduino überwachen, protokollieren und in gewisserweiße auch steuern. Hier mal eine Liste wie ich mir das ganze vorstelle 😉

  • Der Arduino (Nano) wird selbst über das Solarpanel bzw. Akku betrieben
  • Es soll die Temperatur von Akku, Solarpanel und Spannungsregulatoren überwacht werden und bei Bedarf Einspeisung bzw. Entnahme in den Akku gestoppt werden.
  • Es wird eine Anzeige über alle aktuellen Temperaturen, Akkufüllstand & Akkuspannung, aktuelle Einspeisung (in W), aktuelle Entnahme (in W), gesamte Einspeisung (in kWh), gesamte Entnahme (in kWh) und anderen totaaaal wichtigen Daten geben 😉
  • Der Akkuschutz (Überladung, Tiefenentladeung) wird von einem normalen Solarladeregler übernommen.
  • Damit bei „Stromausfall“ zum Beispiel im Winter die Daten gesamte Einspeisung und aktuelle Einspeisung nicht verloren gehen, werden diese Daten auf eine SD-Karte gespeichert.

Was in später Zukunft passieren soll (Das ist noch nicht sicher und hängt auch davon ab ob sich das ganze auch lohnt in Sachen Effizinzsteigerung):

  • Solarpanel soll der Sonne folgen
  • Solarpanel etc. soll gekühlt werden, mit der Abwärme soll wasser aufgewärmt werden
  • Blei Akku soll gegen LiIon Akkus ausgetauscht werden
  • Statistiken und Livedatenübertragung auf den Info-Mirror

Soviel zudem was ich vorhabe. Auch die ersten Teile sin schon angekommen, nur der Arduino lässt noch auf sich warten.

Das Herzsrück ist dieses Solarpanel Monokristallin, 10W für unter 10 Euro, da Restposten. Der Akku ist ein 12V, 2.2Ah AGM Bleivlies Akku der Firma Offgridtech. Der Laderegler ist ein ziemlich billger Solarladeregler, ohne Einstellmöglichkeiten oder Display. Für meine Zwecke reichts, da ich sowieso alles Digital mache. Es gibt dazu auch keine Beschreibungen was Ladeschlusspannung oder Entladespannung angeht. Nach ein paar selbstversuchen stellt sich herraus das alles genau so sein soll wie es muss. Dazu muss ich allerdings sagen, dass die Ladeschlussspannung mit 14.4V für herkömmliche Blei-Akkus recht hoch gewählt ist. Für AGM-Vlies Akkus passt das allerdings perfekt!

P8160036P8160037P8160038

Das Display ist irgendein Noname Made-in-China LCD Display mit eingebautem SD Karten Slot. Dazu noch ein paar USB und DC Buchsen.

P8160047P8160048P8160042P8160041

Den Strom werde ich mit solchen Hall-Sensoren mit ASC712 Chip messen. Zur Temperaturmessung kommt ein alter Bekannter zum Einsatz: Der Dallas DS18B20. Den gabs auch schon hier. Spannungsregler sind die alten, welche ich auch schon für den Wireless Charger benutzt habe.

P8160046P6170003

Und zum Schluss fehlt nur noch der Arduino. Da kommt ein Arduino Nano inkl. USB Klon zum Einsatz. Und das wars mit der Materialliste auch schon.

Zum Schluss ist zusagen, dass das ganze eher ein „Nebenher-Projekt“ wird. Also kann es durch aus sein, dass ich zwischendrinn etwas anderes machen werde 😉 Ich bin mir auch noch nicht sicher ob ich das ganze als ganzes Projekt aufziehen soll oder eher als Mini-Projekt, da das meiste wohl programmieren als basteln & schrauben ist.

Und warum das ganze, frägst du dich? Schließlich kann man seine Akkus auch einfach an der Steckdose laden. Das geht schneller, einfacher und ist wahrscheinlich selbst auf Dauer günstiger.

Nunja die Antwort ist, weils geht! 😛

Es geht hier nicht primär um Geld sparen (kleine Noitz am Rande: Um die Materialkosten einzusparen muss man den Akku 2800x ganz voll und wieder komplett leer machen ;)) oder um Effektivität, sondern um das Projekt an sich. „Der Weg ist das Ziel“ wie es immer so schön heißt. Außerdem kann man das Teil ja später auch auf Festivals oder mit an den See nehmen und Handy, Lautsprecher oder sonstwas wird nie leer werden. Zumal ich meine (Arduinio-)Programmierkentnisse mal wieder etwas auffrischen und erneuern möchte für spätere Projekte (und die Ausbildung o.o). Und man tut auch noch was für die Umwelt – mehr oder weniger.

Die letzten Tage (während ich im Urlaub war :P) kam auch der letzte Nachzügler: Der Arduino Nano (Klon). Sieht so aus wie ein original Arduino, arbeitet wie ein original Ardunio, riecht wie ein original Arduino und funktioniert wie ein original Arduino. Allerdings gibts einen Haken: und dieser heißt Serial to USB Chip. Auf normalen Arduinos wird ein Chip von FTDI verbaut. Da der Hersteller nun die Treiber so verändert hat, das gefälscht Chips nichtmehr funktionieren hat China reagiert und einen CH341 Chip verbaut. Dieser funktioniert wunderbar – wenn man ihn zum laufen bringt. Denn für diesen Chip findet weder Windows noch die Arduino IDE Treiber. Jedoch habe ich nach ewigem googlen und Foren-Durchsuchen einen Treiber vom Hersteller gefunden. Ist zwas auf Chinesisch aber funktioniert. Hier gehts zum Download. An dieser Stelle möchte ich aber noch sagen, das jeder der Arduinos benutzt oder kaufen möchte zumindest einen Originalen kaufen sollte. Einfach um dieses Projekt und den tollen Support der Community zu Unterstützen, denn ohne die Jungs gäbe es auch keine Klons!

P8270064

Und da ich es nicht lassen konnte habe ich natürlich auch gleich mal losgelegt mit dem zusammen löten und schrauben. Als erstes ging es ans Display. Dieses wurde ohne alles geliefert. Keine Beschreibung, kein Datenblatt, kein garnix. Also wieder Google angeworfen und fündig geworden. Auf der eBay Seite steht, dass das Display 5V oder 3.3V verträgt. Also eigentlich perfekt für sowohl Arduino als auch Raspberry. Tja Pustekuchen. Man kann das Display zwar bei GND und VCC an 5V anschließen, da es einen eingebauten Spannungsregler hat, jedoch können sämtliche restlichen Pins nur über eine 3.3V Logik gesteuert werden. Das hieß für mich: Ersteinmal 6 Spannungsteiler bauen. (ArduinoPin — 4.7k –TFT–10k–GND). Dann alles zusammen gewurstelt. Das Display muss dann so angeschlossen werden:

SCK – Arduino Pin 13
SDO(MISO) – Arduino Pin 12
SDI(MOSI) – Arduino Pin 11
CS – Arduino Pin 10
D/C – Arduino Pin 9
RESET – Arduino Pin 8
LED – 3.3V
VCC – 3.3V / 5V
GND – GND

P8270065

Danach ging es auf die Suche nach passenden Librarys für den Arduino. Fündig wurde ich mit der Adafruit GXF Library, SPI Library und der ILI9340 Library. Schnell den Graphic-Test auf den Arduino gespielt und – Tadaa – wer hätte es gedacht, es funktioniert auf Anhieb. Das gab es wohl noch nie! 😀 Und soviel Sucherei auch nicht! 😉

P8270066 P8270067 P8270070 P8270076 P8270078

Nachdem der Teil ersteinmal abgeschlossen war, wollte ich als nächstes die Temperatur-Sensoren anschließen. Das war wieder zur Abwechslung sehr einfach. Die zwei äußeren Pins auf Masse, der mittlere Pin auf einen Arduino Digital Pin und 5V über einen 4.7k Ohm Widerstand auf die Datenleitung. Dazu noch die OneWire Library und die DallasTemperature Library. Das Wars. Die Werte werden mit wenigen Zeilen direkt als °C ausgegeben (also so 22.34) und müssen nichtmehr extrahiert oder umgerechnet werden. Allerdings hat das auch seine Kehrseite: Um die Daten abzufragen usw. braucht es fast 500ms, also eine halbe Sekunde. Im Microcontroller Universum eine ziemlich lange Zeit.

P8270080

Die zwei Hall-Sensoren zur Strommessung waren auch ziemlich einfach anzuschließen. VCC an 5V, GND auf GND und der Messpin auf einen Analogeingang. Die Spannung wird dann vom Arduino als 0-1023 angegeben. Der Wert muss dann wieder zurrückgerechnet werden. Ist garnicht so einfach. Wie das dann geht seht ihr beim nächsten mal! 😉 Außerdem ist noch ein anderes Problem aufgetaucht. Ich wollte ja 2 Sensoren, einen für die Entnahme und einen für die Einspeisung, einbauen. So hätte man sehen können wieviel Strom direkt vom Solarpanel zum Verbaucher und nicht in die Batterie geflossen wäre. Und wie ihr lesen könnt ist das alles im Konjuntiv geschrieben. Denn die Sensoren sind so empfindlich, dass selbst wenn nur durch einen Sensor Strom fließt und der andere ca. 30cm entfernt liegt, beide(!) den selben Strom anzeigen. Also gibt es jetz nur einen Sensor, der die Strom Entnahme anzeigt. Wenn man es recht Überlegt, reicht dass ja auch. 😉

Um die Batteriespannung zu messen, braucht es ebenfalls nicht sehr viel. Ein simpler Spannungsteiler (12V–10k–Arduino–4.7k–GND) reicht. Die Spannung zwischen den Widerständen kommt dann auf einen Analogeingang und muss ebenfalls umgerechnet werden. Dazu habe ich dann noch 2 DC-DC Wandler miteingebaut, um 5V für die USB Buchsen zu haben. Als das alles getan war, wollte ich einmal alles gleichzeitig anschließen und laufen lassen, sprich Spannung und Temperatur am Display ausgeben. Die Betonung liegt auf wollte! Das Display macht keinen Mucks mehr, denn leider ist ein hauchdünner Draht abgebrochen. Reparieren, also löten, ist nicht möglich. Somit ist das erstmal ins Wasser gefallen und ein neues Display muss her. Ich konnte somit auch den SD Slot nicht ausprobieren. Aber wie heißt es immer so schön: „Wer billig kauft, kauft zweimal“. In diesem Fall nichts als die Wahrheit. Auch wenn das neue Display genau so teuer oder billig war wie das alte. Aber vielleicht habe ich ja Glück und es bleibt ganz 😉

P8270081 P8280082

Zum Schluss habe ich noch die Abdeckung des Ladereglers abgenommen, damit die Wärme besser abgegeben werden kann. Außerdem habe ich die LED’s die immer leuchten alle weggezwickt. Brauch ich ja nicht und verbrauchen sonst nur unnötig Strom 😉 Und dann gings auch schon an die ersten Tests. Und die sagen mir, dass mein Smartphone mit nur 500mA lädt. Das kam mir ziemlich komisch vor. Es stellt sich herraus, dass es mit dem USB Port zu tun hat, den ich angelötet hatte. Viele wissen sicherlich, dass ein normaler PC-USB-Port nur für max. 500mA Stromfluss zugelassen ist, damit das Motherboard usw. nicht durchschmort. Genau so bei vielen Auto USB Adaptern. Aber wie weiß das Smartphone ob es nun am PC angeschlossen ist, ober am richtigen AC-Ladegerät, welches viel höhere Ströme verträgt. Ganz einfach: Die zwei mittleren Datenpins (welche eigentlich nicht gebraucht werden um zu laden) müssen kurzgeschlossen werden. Das Gerät misst beim anschließen ob diese Pins kurzgeschlossen sind oder nicht und regelt so ob nun 500mA fließen sollen oder mehr. Also schnell eine Lötbrücke draufgemacht und jetzt funktioniert alles wie es soll! Naja bis auf das Display eben…

P8280087P8280083 P8280084 P8280085 P8280086

Das wars fürs erste mit der Hardware und nach gefühlten 10 Jahren sind endlich mein Ersatzdisplay und noch ein paar Jumper-Kabel gekommen. Da musste ich dann natürlich gleich wieder loslegen, denn bald ist die Sonne nur noch ab und zu da 😉 Aber eins nach dem anderen.

Zu ersteinmal zur Platine: Die habe ich nämlich weggeworfen. Zu groß, zu hässlich, zu viel Pfusch. Und nachdem ich eh ein paar Tage auf die Lieferung warten musste habe ich nochmal von ganz vorne angefangen und eine kleine schöne Platine mit ganz vielen Pin-Headern gelötet, damit man bei Bedarf alles abstöpseln kann. So sieht das ganze jetzt aus:

P9020107 P9020108 P9020109

Man sieht einige Spannungsteiler für das Display. Dieses benutzt 3.3V Logik. Daher hier 8 Spannungsteiler mit 4.7k und 10k Widerständen. Dann ein Spannungsteiler um die Batteriespannung zu messen. Hier muss man also von ~12V auf max 5V runter. Daher hier ebenfalls ein 4.7k und 10k Spannungsteiler nur andersrum. Dazu noch einer um die Solarspannung zu messen mit 4.7k und 15k, da falls mal die Batterie abgeklemmt ist uch mal 20V anliegen können. Dann noch ein Widerstand und 2 Pin-Header für die Temperatur Sensoren. Zu guterletzt noch ein paar Header um allen Bauteilen 5V zu geben. Außerdem habe ich die komplett übertrieben helle LED vom Stromsensor abgelötet. Braucht kein Mensch sowas 😉

P9020091

Dann ist irgendwann die gelaserte Plexi-Abdeckung gekommen. Das ganze habe ich mit 4 Ausschnitten versehen für 2x 12V DC Buchse und 2x USB Buchse. Dazu ein kleines Loch in das eine LED reinkommt und ein größeres Loch für einen Taster. Wofür die sind schreibe ich gleich. Eine Seite war mit einer weißen Schutzfolie beklebt. Da die aber komplett unbeschadet ist und irgendwie garnicht schlecht aussah, hab ich die direkt draufgelassen 😀 Ich habe nur ein kleines Fenster für das Display reingeschnitten. Der Taster ist dazu da, um Strom zu sparen. Heißt im Klartext: Das Display leuchtet für 20 Sekunden wenn man auf den Button gedrückt hat und geht danach wieder aus. Denn das Display dürfte, zusammen mit dem Arduino selbst, am meisten Strom fressen. Allerdings habe ich damit natürlich ein neues Problem. Ich sehe nicht wenn z.B. die Batterie ein gefährliches Niveau erreicht oder die DC Wandler zu heiß werden, außer ich drücke jeden Tag auf den Button. Um dies zu lösen ist das zweite Loch für eine LED da. Sobald ein Messwert kritische Bereiche erreicht, leuchtet diese und signalisiert sofort, dass etwas nicht stimmt. Neben Taster und LED habe ich dann auch noch die Buchsen mit viel Heißkleber eingeklebt. Bei den USB Buchsen die Datenleitungsbrücke nicht vergessen! Befestigt wird die Scheibe mittels 4 Schrauben und Abstandshaltern aus einem Stück Aluröhrchen an den Ecken.

P8310089 P9020099 P9020100 P9020101 P9020102 P9020106

Nachdem dass dann alles gepasst hat, ging es nun endlich (ein zweites mal) an das Display. Geschätzte 20 Jumper Kabel auf die Platine und Arduino gesteckt und wieder getestet. Und wieder auf Anhieb geklappt. Ein Traum 😀

P9080002 P9080003 P9080004

Nun dann ging es an den Code. Als erstes müssen 5 Librarys eingebunden werden. Dann habe ich mir aus dieversen Tutorials die nötigen Kommandos rausgezogen:

  1. Die Temperatur Sensoren: Dafür braucht man die OneWire Library und die DallasTemperatur Library. Dann kann man mittels sensor_inhouse.requestTemperatures(); und sensor_inhouse.getTempCByIndex(0) die Temperaturen in Celsius ausgeben lassen.
  2. Die Spannungen werden einfach über jeweils einen Analogen Eingang eingelesen. Diese muss mann dann nur wieder umrechnen, da diese vom Arduino AD-Wandler immer in 1024 Schritten angegeben werden. Also 0V = 0 und 5V = 1023. Das heißt liegen am Arduino 2.5V an gibt er das als 512 aus. Umrechnen geht aber auch relativ einfach wenn man weiß wie: Spannung = Messwert*5/1024 Das ist aber noch nicht alles. Da wir ja keine 5V Batterie haben, sondern 12V müssen die Spannungen noch über den Spannungsteiler zurückgerechnet werden. Dazu multipliziert man das ganze einfach mit (R1+R2) und teilt wieder durch R2. (Bei VCC–R1–Arduino–R2–GND). Da ich gleich 5 Messungen vornehme um das Ergebnis zu mitteln, sieht die fertige Zeile dann so aus:
    Spannung = ((dummy[0]+dummy[1]+dummy[2]+dummy[3]+dummy[4])/5.0)*5/1024.0*14700.0/4700.0; wobei dummy nur ein Platzhalter ist 😉 Das macht man sowohl bei Batterie als auch bei Solarpanel Spannung.
  3. Mit dem Strom sieht das recht ähnlich aus, da ja auch hier nur eine Spannung gemessen wird. Ich habe wieder meinen Messwert in 0-1023. Hier ziehe ich gleich 512 ab. Warum? Da der Hall-Sensor bei 0A Stromfluss die Hälfte von VCC (bei uns also 2.5V) ausgibt, damit er in beide Richtungen messen kann. Das was jetzt übrig bleibt ist unser Strom. Also rechnet man diesen Wert wieder in Volt um, alo *5/1024. Da wir hier jetzt Spannung in Strom umrechnen müssen teilen wir den Wert durch 0.066. Den habe ich mir nicht aus dem Ärmel gezogen, sondern der wird im Datenblatt vom Hersteller angegeben. Das heißt pro 1A Strom werden 66mV mehr ausgegeben.
  4. Für die Leistungsbrechnung nehmen wie einfach nur Strom * (Batterie-)Spannung. Da W = U * I * t ist fehlt natürlich noch die Zeit. Da ich genau alle 10s eine Messung vornehme, rechne ich also mit 10s. Wenn man mit 10s rechnet bekommt man kWs heraus. Da ich aber kWh haben will, kann man die kWs jetzt entweder geteilt durch 3600 nehmen oder man nimmt gleich Spannung*Strom/360.
  5. Nun zum Display. Hier braucht man gleich 3 Librarys. Einmal die SPI dann die Adafruit_GFX und die Adafruit_ILI9340 Library. Letztere hängt immer davon ab, welches Display man nutzt. Bei meinem Made-in-China Display ohne Datenblatt o.ä. funktioniert diese bestens. Hat man hier alles richtig verbunden und eingestellt kann man das ganze ziemlich einfach benutzen. Zum schreiben werden die selben Commands wie diefür Serial benutzt. Anstatt Serial.print() oder Serial.println() schreibt man einfach tft.print(). Ansonsten sind auch die restichen Befehle recht einfach gehalten. Meistens tft.Befehl(Parameter). Da das ganze die Adafruit Library benutzt gibt es dazu 1A Anleitungen und eine tolle Community die einem weiterhilft.
  6. Den SD Card reader habe ich bis jetzt immernoch nicht zum laufen gebracht. Sollte dies irgendwann mal der Fall sein, dann werde ich das natürlich nachtragen 😉

Das war glaube ich ersteinmal alles wichtige zum Code. Ich hoffe ich habe das alles einigermaßen verständlich erklärt. Natürlich habe ich den Code inkl. Librarys auch hochgeladen. Der ist frei zur Benutzung und/oder Verbesserung 😉

Dann habe ich das erstemal alles zusammengestöpselt und habe die Batterie angeschlossen.

Nichts.

Nichts und ein dezentes Brutzeln. Batterie wieder angesteckt und gedacht „F!’#&%“! nicht schonwieder. So eine Scheiße.“ Dann erstmal Schluck Bier getrunken um mich zu beruhigen um dann auf Fehlersuche zu gehen. Und keine 2 Sekunden später ist mir aufgefallen, dass ich die Batterie verpolt angesteckt habe. Nein, also bin ich auch noch selbst Schuld…

Dann erstmal wieder alles abgestöpselt und an den PC angeschlossen um zu sehen was alles kaputt geganen ist. Arduino, Temperatur Sensoren, Display, Stromsensor… Ich habe das Schlimmste befürchtet. Und ZUM GLÜCK funktioniert trotzdem noch alles wunderbar – trotz brutzeln. Selbst das Display geht noch. Nochmal richtig Schwein gehabt 😀 Ansonsten wäre das ganze wohl erstmal in einer Kiste gelandet und ich hätte es in nem Jahr oder so weitergemacht. Das Projekt ist jetzt „Quasi-fertig“. Irgendwann, vielleicht im nächsten Frühling, werde ich evtl. wieder etwas von meiner To-Do List in Angriff nehmen. Allem vorran die „Solarpanel-soll-der-Sonne-folgen“ Geschichte oder die Umrüstung auf Li-Ion. Aber für den Herbst und Winter bleibt das genze jetzt erstmal wie es ist. Und zum Abschluss gibt es hier jetz erstmal ein paar Bilder und natürlich auch ein kleines Video. Bis zum nächsten Projekt!

P9080010 P9080011 P9080012 P9080013P9090014P9090016P9090021P9090022P9090024P9090030P9090031P9090034

 

5 Kommentare zu “Solar Charger”

  1. Hallo,
    Ich bin von Smart Mirror hier bei deinem Projekt Solarlader gelandet.
    Etwas ähnliches habe ich auch vor, bloß möchte ich die Alkakizellen per Solar laden.
    Damals noch teuer und es hätte der Ökonomie nicht geschadet, heute nur zum Basteln gedacht.

    Meine Frage nach einem Schaltplan für diesen Lader?
    paulaner

    Gefällt mir

    1. Hallo,
      leider habe ich von diesem hier keinen Schaltplan. Aber ich plane hier an einer neuen Version mit LiPo oder LiIon. Das werde ich dann auch besser dokumentieren 😉

      Gefällt mir

  2. Ich nochmal, so sollte es richtig sein.
    Der Plan stellt eine Variante dar, aber prinzipiell Solar, Regler, Arduino, Display, Spannungsteiler, Strommesser sollten gleich sein.
    Ich möchte nur durch die Solarenergie Alkalibatterien refreshen, also nicht gleich wegwerfen. Deshalb die CC-CV’s und einmal halt USB.
    Den DS18B20 speise ich nicht parasitär ein, sondern ganz normal.
    https://pl.vc/1wdm2

    Gefällt mir

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

Hier stelle ich meine DIY Projekte vor!

%d Bloggern gefällt das: