beelogger

beelogger-Solar – Kalibrierung & Test

Der Test-Programmcode ermöglicht es, die speziellen Funktionen des beelogger-Solar zu testen. Hierzu gehören die Einstellung und Alarmfunktion der RTC (Echtzeituhr), der Test des Temperatursensors der RTC, der Sleep-Mode des ATmega, welcher durch den Alarm der RTC über einen Interrupt aufgeweckt wird, das Auslesen der Akku- und Solarspannung, sowie die Akku-Schutzfunktion. Für den Test-Programmcode werden daher keine Sensoren oder Module benötigt.

Der Kalibrierung-Programmcode dient dazu, die fertigungsbedingten Toleranzen der verwendeten Bauteile eines beelogger-Solar bei der Spannungsmessung von Akku und Solarzelle auszugleichen. Da die Akkuspannung für eine Software-Funktion zum Akku-Schutz verwendet wird, ist die Kaliberiung zwingen notwendig, damit der Test- und Haupt-Programmcode lauffähig ist.

FTDI-Adapter auswählen

Um den Programmcode aufzuspielen und die serielle Ausgabe nutzen zu können, wird mit dem FTDI-Adapter als Programmer gearbeitet. Hierfür muss in der Software unter ‘Tools’ -> ‘Programmer’ der ‘USBtinyISP’ ausgewählt werden.

Es ist sehr wichtig darauf zu achten, dass der FTDI-Adapter auf 3,3V eingestellt ist, damit das System und insbesondere der Akku keinen Schaden nimmt! Prinzipiell braucht VCC vom FTDI-Adapter zur Programmierung nicht verbunden werden, sofern der beelogger-Solar über den Akku versorgt wird. Allerdings ist dies zu empfehlen, um mögliche Probleme durch eine zu geringe Akkuspannung zu vermeiden. Die Beschaltung des FTDI-Adapters sowie weitere Informationen sind unter ‘beelogger ISP & FTDI‘ zu finden.

beelogger  Software Adapter

Libraries

<Wire.h> –  in der Arduino-Software bereits enthalten
<Sodaq_DS3231.h> –  https://github.com/SodaqMoja/Sodaq_DS3231  
<LowPower.h> –  https://github.com/rocketscream/Low-Power

Kalibrierung-Programmcode

Alle elektronischen Komponenten des beelogger-Solar mit seinen Spannungsreglern, Widerständen und dem ATmega unterliegen fertigungsbedingten Toleranzen. Um diese Toleranzen bei der Messung der Spannung von Akku und Solarzelle möglicht gut zu kompensieren, muss eine Kalibrierung für jeden beelogger-Solar durchgeführt werden. Hierfür sind zwei Werte zu ermitteln:

  • Kalib_Spannung
  • Kalib_Bitwert

Für die Variable ‘Kalib_Spannung’ sollte mit einem möglichst hochwertigen Multimeter die Spannung des Akkus direkt gemessen und in Millivolt hinterlegt werden. Der Akku sollte bei dieser Messung nicht eingebaut sein. 
Der Wert der Variable ‘Kalib_Bitwert’ wird über den Kalibrierung-Programmcode ermittelt. Dieser Wert gibt die mit allen Toleranzen gemessene Akku-Spannung durch den beelogger-Solar wieder.

Für die Messung der Solarspannung werden die gleichen Werte zur Kompensation verwendet, da diese Messung ohnehin nur eine Momentaufnahme darstellt und auch keine weiteren Auswirkungen auf den Programmablauf hat. 

Der Programmcode zur Kalibrierung stellt zudem sicher, dass zukünftig automatisch mit dem Upload des Test- oder Haupt-Programmcodes, die korrekte Uhrzeit der RTC eingestellt werden kann.

Bevor der Kalibrierung-Programmcode aufgespielt wird, muss die Spannung des Akkus in Millivolt in der Variable ‘Kalib_Spannung’ hinterlegt werden. Wenn der FTDI-Adapter das System zusätzlich mit Strom versorgt, könnte dieser das Ergebnis der Spannungsmessung bzw. Kalibrierung beeinflussen. Daher sollte nach dem Upload und vor der Ausführung des Kalibrierung-Programmcode, VCC des FTDI-Adapters vom beelogger-Solar getrennt werden, damit das System ausschließlich vom Akku versorgt wird. Die serielle Konsole wird hierbei weiterhin funktionieren. 

Ausgabe des seriellen Monitors (9600 baud): 

Programmcode downloaden:

Download

 

Test-Programmcode

beelogger Solar TestsystemIm Programmcode ist zunächst das Weckintervall in Stunden und Minuten anzugeben. Mit diesem regelmäßigen Intervall wird der ATmega aus dem Schlafmodus geweckt, um Messungen und den Versand der Daten vorzunehmen. Hierfür stehen die Variablen ‘WeckIntervallStunden’ und ‘WeckIntervallMinuten’ zur Verfügung. 

Der Test-Programmcode wurde mit einem Intervall von einer Minute vorkonfiguriert. Generell ist es bei einem regelmäßigen Intervall nicht notwenig, zuvor die korrekte Uhrzeit einzustellen. Für eigene Entwicklungen oder zukünftige Erweiterungen wurde diese Option jedoch im Programmcode aufgenommen. Hierfür übernimmt die RTC die Uhrzeit aus dem Programmcode, die automatisch während der Compilierung im Rahmen des Uploads auf den ATmega hinterlegt wird. Voraussetzung ist natürlich eine korrekt eingestellte Uhrzeit am PC.

 

 

 

Der Programmcode enthält zudem zwei besondere Funktionen, die speziell für den Akku- bzw. Solarbetrieb entwickelt wurden:

  1. Um den Akku zu schonen und ihm somit eine lange Lebensdauer zu ermöglichen, kann über die Variable ‘VMinimum’ die maximale Spannung eingestellt werden, ab der keine Messungen und auch kein Versand von Daten mehr erfolgt. Aber auch um den korrekten Betrieb des GSM-Moduls, welches eine minimale Spannung von 3,7V benötigt, sicherzustellen, kann die Funktion eingesetzt werden. Diese Lösung ersetzt natürlich keine im Akku integrierte Schutzschaltung vor Tiefenentladung
  2. Damit der beelogger-Solar auch während einer längeren Zeitspanne ohne Aufladung (beispielsweise im Winter mit zugescheiten Solarzellen) Sensordaten ermittelt und versendet, kann über die Variable ‘VAlternativ’ die maximale Spannung eingestellt werden, ab der das Weckintervall verändert bzw. verlängert wird. Die Länge dieses temporären Weckintervalls wird über ‘AlternativIntervallStunden’ und ‘AlternativIntervallMinuten’ eingestellt. 

Beispiel:

WeckIntervallMinuten = 30
WeckIntervallStunden = 1
VMinimum = 3.6
VAlternativ = 3.65
AlternativIntervallStunden = 6
AlternativIntervallMinuten = 0

Bei einer Spannung die höher ist als 3,65V, werden die Messwerte alle 90 Minuten (1 Stunde + 30 Minuten) abgefragt und versendet. Ab einer Spannung von 3,65V und geringer, werden Messungen und Versand der Daten nur noch alle 6 Stunden durchgeführt. Bei einer Spannung die kleiner oder gleich 3,6V ist, werden weder Messungen vorgenommen, noch Daten versendet. Solabld der Akku durch die Solarzelle aufgeladen wird und die Akkuspannung die eingestellten Werte erreicht bzw. überschreitet, nimmt der beelogger-Solar seinen Betrieb wieder auf.

Da der Test-Programmcode weder Sensoren, noch einen nRF24L01 oder ein GSM-Modul verwendet, dient diese Erläuterung primär der Konfiguation des Haupt-Programmcodes für den beelogger-Solar.

 

Die Batterie CR1220 des DS3231 muss für den Test eingelegt sein, da auch die RTC während der Schlafphase von der Stromversorgung getrennt wird, um eine weitere Stromeinsparung zu erreichen. Alternativ kann mit Hilfe der Lötfelder, wie unter Aufbau beschrieben, der Batterieanschluss der RTC mit dem Lipo-Akku verbunden werden.

beelogger Solar RTC Lipo 

Die RTC verfügt zudem über einen eingebauten Temperatursensor. Sofern kein oder nur ein Temperatursensor aktiviert ist und keine andere Konfiguration vorgenommen wurde, liefert die RTC im Haupt-Programmcode die Daten für ‘TempOut’, welche auch für die Temperaturkompensation der Stockwaage verwendet wird.

Ohne die Werte der Kalibrierung für die Spannungsmessung, wird immer eine Batteriespannung von 0V ermittelt. Dadurch greift der Programmcode zum Schutz des Akkus und es wird nach der Messung der Akkuspannung keine weitere Aktion mehr vorgenommen. Diese zuvor ermittelten Werte sind somit vor dem Upload einzutragen.

Ausgabe des seriellen Monitors (9600 baud): 

Programmcode downloaden:

Download

Der komplette Programmcode für den Arduino Datenlogger mit Stockwaage für Imker ist unter Programmcode zu finden.