BWP-WS19-02/Dokumentation/Systemarchitektur&Energie: Unterschied zwischen den Versionen

Aus Verteilte Systeme - Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde geleert.)
Markierung: Geleert
 
(7 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
= Systemarchitektur =
 
 
Das Systemarchitekturteam entwickelt eine Architektur, die den verschiedenen Modulen eine Arbeitsumgebung erschafft, die Kommunikation zwischen den Modulen ermöglicht und das Scheduling der Module festlegt. Als Betriebssystem wird Zephyr verwendet, das verschiedene APIs bereitstellt, deren Nutzung nun weiter erläutert wird.
 
 
=== Threads ===
 
 
 
=== Mailboxen ===
 
 
Zur Kommunikation zwischen den verschiedenen Modulen werden Mailboxen verwendet. Zur Orientierung wie diese unter Zephyr verwendet werden findet sich im Gitlab ein Beispiel für einen [https://zenon.cs.hs-rm.de/wahlprojekt_explorativer_roboter/bwp_ws19/blob/sysArch/ITS-E/src/Module/SysArch/threadCommunication/example/sendingThread.c "Sender-Thread"], sowie einen [https://zenon.cs.hs-rm.de/wahlprojekt_explorativer_roboter/bwp_ws19/blob/sysArch/ITS-E/src/Module/SysArch/threadCommunication/example/receivingThreadB.c "Empfänger-Thread"]
 
 
= Energie =
 
 
Das Energieteam beschäftigt sich mit dem Energiemanagement des ITS-E. Dies umfasst die Energieaufnahme durch Solarpanels, die Energiespeicherung, das Handeln im Energienotstand und den Energieverbrauch.
 
 
== Energiemanagementsystem ==
 
 
 
===Funktionen===
 
 
 
Die Daten, die das Energiemanagementsystem sammelt werden den anderen Modulen in einer Mailbox zur Verfügung gestellt. Außerdem bietet es folgende Funktionalitäten :
 
 
'''getBatteryPercentage'''
 
 
Diese Funktion liefert den aktuellen Batteriezustand in Prozent.
 
 
'''getBatteryDrain'''
 
 
Diese Funktion dient der Überwachung des Batterieverbrauchs und gibt den Wert in Milliampere an.
 
 
'''SolarPower'''
 
 
Diese Funktion zeigt die generierte Energie des Solarpanels in Milliampere an.
 
 
'''isLoading'''
 
 
Diese Funktion signalisiert, ob die Batterie am Aufladen ist. Hierzu vergleicht sie die generierte Energie des Solarpanels mit dem aktuellen Energieverbrauch.
 
 
'''EnergyPerRotation'''
 
 
Diese Funktion berechnet den Energieverbrauch für x-Radumdrehungen und gibt den Wert in Milliamperestunden an.
 
 
===Schaltpläne===
 
 
 
 
[[Datei:erster_schaltplan.png | Versuchsaufbau | 900px]]
 
 
 
Das Bild zeigt den ersten elektronischen Aufbau mit allen verwendeten Komponenten.
 
 
==Bauteile==
 
 
=== Coulomb Counter LTC4150 ===
 
 
Um Energieflüsse messen zu können wird ein Coloumb Counter verwendet.
 
Dieser misst durchgehend die Menge an Strom die durch ihn durch fließt und erzeugt einen dann einen messbaren Impuls.
 
Dabei entspricht 1 Coloumb = 1 Amperesekunde, jedes mal wenn 0,614 Coloumb durch das Bauteil geflossen sind wird der Impuls erzeugt.
 
Das Bauteil stellt außerdem ein Polaritätssignal zur Verfügung, mit dessen Hilfe festgestellt werden kann ob z.B. Energie aus einem LiPo Akku entnohmen oder hinzugeführt wird.
 
 
 
'''Erster Versuchsaufbau'''
 
 
In einem Versuchsaufbau wurde zunächst mit Hilfe eines Breadboards versucht einen Impuls zu erhalten, dieser wurde mit einem Oszilloskop aufgezeichnet und ist folgend abgebildet.
 
 
[[Datei:AufbauCoulombCounterVersuch.jpg | Versuchsaufbau Energiemessung | 300px]]
 
[[Datei:CoulombCounterLTC4150Energiemessung1.png | Messung der Energieentnahme aus der Batterie mithilfe des Coulomb Counters LTC4150 | 300px]]
 
 
Ein Hookup Guide zur Verwendung des Coloumb Counters findet sich unter folgendem Link:
 
[https://learn.sparkfun.com/tutorials/ltc4150-coulomb-counter-hookup-guide?_ga=2.192998061.1667040587.1575212421-100353693.1574859857 Weiterführende Informationen]
 
 
'''Bauteilwahl zur Parameterbestimmung'''
 
 
Laut dem Datenblatt des Coloumb Counters LTC4150 liefert der IC standardmäßig 1 Interrupt pro 0,6 Coloumb (oder pro 0,1707 mAh).
 
 
Da mit dieser Konfiguration nicht genug Interrupts erzeugt werden um den Energieverbrauch genau zu tracken ist es nötig auf dem IC einen anderen Messwiderstand zu verwenden.
 
 
Zunächst ist es nötig den maximalen Stromfluss zu ermitteln, da zu diesem Zeitpunkt noch nicht alle Verbraucher am Board angeschlossen sind wird der Stromfluss auf 150 mA geschätzt.
 
 
Laut dem Datenblatt (Seite 8) ergibt sich somit ein Messwiderstand von: 50 mV / 100 mA = 0,5 Ohm.
 
 
Mit dieser Konfiguration erzeugt der IC alle 1 /( 32,7 * 0,5) = 0,06 Coloumb einen Interrupt.
 
 
 
Konfiguration Coloumb Counter Solar, tickt alle 1/(32.7*2,5) = 0.012 Coloumb !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
 
=== Mikoe Solar Energy Click ===
 
 
Um die Energie von den verwendeten Solarpanels zu sammeln wird ein Solar Energy Click Board verwendet.
 
Dessen Aufgabe besteht darin die extrem kleinen Energiemengen die geliefert werden zu sammeln und in brauchbarer Dimension weiterzuleiten. Auf dem Board ist der Chip BQ25570 verbaut der eine Vielzahl von Funktionalitäten anwendet.
 
 
In unserem Projekt wird das Board als Schnittstelle zwischen den Solarpaneln, dem LiPo Akku und dem Adafruit Featherboard verwendet, das dank direkt benutzbarer Output Pins an den Solar Click angeschlossen werden kann.
 
 
Zur Herstellerseite geht es [https://www.mikroe.com/solar-energy-click hier].
 
Die Dokumentation des internen Chips BQ25570 findet sich unter diesem [https://download.mikroe.com/documents/datasheets/bq25570.pdf Link].
 
 
= Quellen =
 
 
* Zephyr Projekt Dokumentation [https://docs.zephyrproject.org/latest/]
 
* Solar-Energy-Click Board [https://www.mikroe.com/solar-energy-click]
 
* Coulomb Counter LTC4150 [https://learn.sparkfun.com/tutorials/ltc4150-coulomb-counter-hookup-guide?_ga=2.192998061.1667040587.1575212421-100353693.1574859857]
 
* Wahlprojekt des Sommersemesters 2019 [[BWP-SS19-01]]
 

Aktuelle Version vom 10. März 2020, 18:28 Uhr