Die Solar-Ladestation: Das Programm und Display

So 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

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