Studienarbeit

Werbung
Fakultät für Elektrotechnik und Informationstechnik
Professur Schaltkreis- und Systementwurf
Studienarbeit
Implementierung eines Leistungsmesssystem
auf dem MSP430
Luis Lutnyk
Chemnitz, den 22. Februar 2013
Betreuender
Hochschullehrer:
Prof. Dr.-Ing. habil. Göran Herrmann
Betreuer:
Prof. Dr.-Ing. Christian Pätz
Dipl.-Ing. Christian Roßberg
Inhaltsverzeichnis
Abbildungsverzeichnis
6
Abkürzungsverzeichnis
7
1 Einleitung
8
2 Konzept
2.1 Leistungs- und Energiemessung
2.2 Aufbau . . . . . . . . . . . . . .
2.3 UART Modus . . . . . . . . . .
2.4 SD Card Modus . . . . . . . . .
2.5 Verarbeitung auf Host-System .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
10
11
12
13
3 Implementierung
3.1 Hardware Entwurf . . . . . . . . . . .
3.1.1 MSP430 Mikrocontroller . . . .
3.1.2 Spannungsversorgung . . . . . .
3.1.3 Strommessschaltung . . . . . .
3.1.4 Ein- und Ausgänge . . . . . . .
3.1.5 Benutzerschnittstelle . . . . . .
3.1.6 Gehäuse . . . . . . . . . . . . .
3.2 Mikrocontrollerprogramm . . . . . . .
3.2.1 Leistungs- und Energiemessung
3.2.2 UART . . . . . . . . . . . . . .
3.2.3 SD Card . . . . . . . . . . . . .
Dateisystem . . . . . . . . . . .
3.2.4 Konfiguration des Messsystems
3.3 Auswertungs-/Empfängerprogramm . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
14
14
15
15
16
16
17
18
19
19
22
23
24
27
29
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4 Benutzungshinweise
32
4.1 Auswahl des Shuntwiderstands . . . . . . . . . . . . . . . . . . . 32
4.2 Auswahl der Abtastrate . . . . . . . . . . . . . . . . . . . . . . 33
4.3 Verbinden der Messleitungen . . . . . . . . . . . . . . . . . . . . 33
4
Inhaltsverzeichnis
4.4
4.5
Messung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Auswertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5 Beispielmessung an Temperaturlogger
36
6 Verbesserungsmöglichkeiten
40
7 Zusammenfassung
42
Anhang
45
5
Abbildungsverzeichnis
2.1
2.2
2.3
Spannungsrichtige Messung mit Shunt . . . . . . . . . . . . . . 10
Blockschaltbild Messsystem . . . . . . . . . . . . . . . . . . . . 11
Schreibzugriff Einzelblock [2, S. 117] . . . . . . . . . . . . . . . 12
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12
Bestückte Platine, Oberseite . . . . . . . . . . . . . . .
Belegung Mini-DIN Buchse [5] . . . . . . . . . . . . . .
Programmablauf: Mikrocontroller . . . . . . . . . . . .
Berechnung Eingangsspannung . . . . . . . . . . . . . .
Übertragungsreihenfolge im UART Modus . . . . . . .
Flussgraph zur Initialisierung im SPI Modus[2, S. 115]
Layout Simples Dateisystem . . . . . . . . . . . . . . .
Layout der Messreihen Tabelle . . . . . . . . . . . . . .
Beispiel einer Datenreihe . . . . . . . . . . . . . . . . .
Automatengraph - Konfiguration über UART . . . . .
Graphische Oberfläche des Auswertungsprogrammes . .
Aufbau CSV Datei . . . . . . . . . . . . . . . . . . . .
4.1
4.2
Dimensionierung Shunt Widerstand . . . . . . . . . . . . . . . . 33
Verbindung mit dem Messobjekt . . . . . . . . . . . . . . . . . . 34
5.1
5.2
5.3
5.4
Abgeschlossene Beispielmessung . . . . . .
Auslesen des Temperatursensors . . . . . .
Auslesen des Temperatursensors Detail . .
Controller verschickt gebündelte Werte per
6
. . . .
. . . .
. . . .
UART
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
14
16
19
21
23
24
25
26
27
28
29
31
36
37
38
38
Abkürzungsverzeichnis
PC
Personal Computer
RISC
Reduced Instruction Set Computer
ADC
Analog-to-Digital Converter
ISR
Interrupt Service Routine
UART
Universal Asynchronous Receiver/Transmitter
SPI
Serial Peripheral Interface
MOSI
Master Out-Slave In
SD
Secure Digital
MOSFET Metal–oxide–semiconductor field-effect transistor
USB
Universal Serial Bus
JTAG
Joint Test Action Group
IC
Integrated Circuit
LED
Light-emitting Diode
CSV
Comma-separated Values
ASCII
American Standard Code for Information Interchange
FIFO
First In First Out
CPU
Central Processing Unit
DMA
Direct Memory Access
7
1 Einleitung
Die Verbreitung von Sensorsystemen und -netzen nimmt stetig zu. Die Weiterentwicklung der Halbleitertechnologie, der Batterietechnik und verbesserte
Möglichkeiten des Energy Harvesting erschließen neue Einsatzmöglichkeiten,
deren Anforderungen an Miniaturisierung, Laufzeit und Leistungsfähigkeit zuvor nicht erfüllt werden konnten. Eine besondere Bedeutung hat bei der Entwicklung dieser Systeme die Minimierung der Leistungsaufnahme. Neben sorgfältiger Dimensionierung der Hardware muss hierzu auch bei der Softwareentwicklung auf die Auswirkungen auf den Energieverbrauch geachtet werden.
Um die Wirksamkeit von Änderungen bewerten zu können und die Bereiche
mit dem größten Optimierungspotential zu identifizieren bedarf es eines Messsystems, das die Leistungsaufnahme in verschiedener zeitlicher Auflösung beobachtbar macht. Es muss möglich sein Vorgänge im Submillisekundenbereich
zu analysieren, aber auch eine Übersicht über verschiedene Aktivitätsphasen
zu gewinnen, die sich über längere Zeiträume verteilen. Genauso lassen sich auf
dem Markt verfügbare Systeme vergleichen und bewerten und es kann mit eigenen Messungen eine bessere Auswahl zwischen mehreren Lösungen getroffen
werden.
Die vorliegende Arbeit beschreibt den Entwurf des Messsystems. Es wird
zunächst die Grundlage des Messverfahrens erarbeitet und die Anforderungen
an die Messmodi beschrieben. Anschließend werden detailliert die Entwurfsentscheidungen zu Hardware, Mikrocontrollersoftware und dem Auswertungsprogramm, und die Implementierung dargelegt. Nach kurzen Erklärungen zur
Benutzung wird eine Testmessung an einem Temperaturlogger analysiert und
Ideen zur Weiterentwicklung des Systems beschrieben.
8
2 Konzept
2.1 Leistungs- und Energiemessung
Die elektrische Leistung in einem Gleichstromsystem ist wie folgt definiert:
P =U ·I
(2.1)
Kann man zu einem Zeitpunkt Spannung über und Stromstärke durch eine
Last zuverlässig bestimmen, kennt man auch die momentane Leistungsaufnahme dieser Last. Diese kann sich bei einem Sensorsystem schnell ändern.
So ist es denkbar, dass ein Sensor lange in einem Ruhezustand verweilt, in
dem er wenig Leistung benötigt, dann aber zeitgesteuert aktiviert wird und
für die Dauer der Messung eine erheblich höhere Leistung aus seiner Energieversorgung bezieht. Besitzt ein Sensorsystem eine Funkschnittstelle, so ist bei
einer Datenübertragung für kürzeste Zeit ein hoher Leistungsbedarf zu erwarten. Die Leistungsaufnahme eines Sensormesssystems muss demnach mit einer
angepassten Abtastrate überwacht werden, welche die auftretenden Leistungsspitzen detektierbar macht.
Ist das Ziel einer Sensorsystemanalyse eine Aussage bezüglich dessen Laufzeit im Batteriebetrieb zu treffen, so ist es nötig von Samples der momentanen
Leistungsaufnahme auf die verbrauchte Energie zu schließen.
Für die elektrische Energie, bzw. die elektr. Arbeit gilt allgemein:
E=
Z t1
u(t) · i(t) dt
(2.2)
t0
Für den Fall zeit- und wertdiskreter Abtastwerte nimmt man vereinfachend
an, dass Strom und Spannung zwischen zwei Samples konstant sind und erhält
näherungsweise:
E=
n
X
Uk · Ik · ∆t
(2.3)
k=1
Worin Uk und Ik Spannung und Stromstärke über den Zeitraum zwischen 2
Samples sind und ∆t die Samplingperiode.
Abbildung 2.1 zeigt den prinzipiellen Aufbau zur Leistungsmessung mit Hilfe zweier Voltmeter und eines Shunts. Kennt man den Widerstandswert des
9
2 Konzept
Abbildung 2.1: Spannungsrichtige Messung mit Shunt
Shunts hinreichend genau, so lässt sich mit Hilfe des Spannungsabfalls über
diesen sehr einfach die Stromstärke durch Shuntwiderstand und Last, welche
in Reihe geschalten sind, berechnen. Es gilt das Ohmsche Gesetz:
IL = IS =
US
RS
(2.4)
Ist der Widerstandswert des Shunts mit einer großen Toleranz versehen, so
multipliziert sich diese mit der Messungenauigkeit des verwendeten Voltmeters.
Auch muss der Widerstandswert so an die Last angepasst werden, dass zum
einen der Spannungsabfall über dem Shunt im Messbereich des Voltmeters
liegt, zum anderen die Messgrößen an der Last nicht über Gebühr beeinflusst
werden. Hilfreich kann hier bei kleinen Stromstärken eine Verstärkung der
Shuntspannung vor der Messung sein. Dann kann der Widerstand um den
Faktor der Verstärkung kleiner dimensioniert werden.
2.2 Aufbau
Herzstück des Messsystems ist ein MSP430 Mikrocontroller von Texas Instruments. Mit dem integrierten Analog Digital Wandler werden die zwei Messgrößen, Spannungsabfall über dem Messobjekt und Spannung am Shuntwiderstand RS , periodisch abgetastet. Die Weiterverarbeitung der Messdaten kann
je nach Betriebsmodus unterschiedlich erfolgen. Bei Messungen, bei denen eine
hohe Abtastrate entscheidend ist, werden die Daten unmittelbar an den Auswertungsrechner übertragen und dort von der Empfängersoftware gespeichert.
Die verwendete Kommunikationsschnittstelle auf Seiten des MSP430 ist ein
UART, welcher über einen Umsetzer an den USB Port des Rechners angebunden ist.
10
2 Konzept
Abbildung 2.2: Blockschaltbild Messsystem
Dieser Betriebsmodus heißt im Folgenden “UART Modus“. Bei Messungen
über einen längeren Zeitraum ist es von Vorteil, keine Verbindung mit einem
PC aufrechterhalten zu müssen. Bei solchen autarken Messungen speichert der
Mikrocontroller die Daten auf einer SD Speicherkarte und nach Abschluss der
Messung können die Messwerte mit einem Kartenleser auf den PC übertragen
und ausgewertet werden. Die Abtastrate ist niedriger als im UART Modus.
Dieser Betriebsmodus heißt im Folgenden “SD Card Modus“.
2.3 UART Modus
Beim Betriebsmodus mit hoher Abtastrate werden die Messdaten unmittelbar
nach Erfassung und Vorverarbeitung im Mikrocontroller über den UART an
den Host PC übertragen. Bei Mikrocontrollern ist die Kommunikation asynchron mit zumindest einem Start und einem Stopp Bit, zwischen denen 8
Nutzbits eingefasst sind, ein Prüfbit ist optional. Zudem muss auf Sende- und
Empfängerseite die Baudrate eingestellt werden. Das Baudratentaktsignal wird
im Mikrocontroller durch einen externen Schwingquarz mit nachgeschalteter
interner Frequenzteilung erzeugt.
11
2 Konzept
2.4 SD Card Modus
Beim Betriebsmodus mit niedriger Abtastrate werden die Messdaten auf einer
Speicherkarte nach dem Secure Digital (SD) Standard gespeichert. Das System
ist dadurch während einer Messung nicht mehr auf die Verbindung mit einem
Host PC angewiesen. Nach einer oder mehrerer Messungen können die Daten
auf der SD Card mit einem handelsüblichen USB Kartenleser auf den PC
übertragen werden.
Die SD Card ist ein äußerst kostengünstiges Flash Speichermedium mit integriertem Controller, welches sich mit vertretbarem Aufwand an einen Mikrocontroller anbinden lässt. Die Kommunikation erfolgt über den SPI Bus.
Eine SD Card lässt sich neben SPI auch über 2 Arten des ihr eigenen SD Busses ansteuern.[6] Für eine einfachere Implementierung ist der SPI Bus jedoch
vorzuziehen, da der MSP430 ein konfigurierbares SPI Modul besitzt und mit
diesem CPU Rechenzeit eingespart werden kann.
Über den SPI Bus sendet der Mikrocontroller im SD Standard[2] definierte
Befehle, auf die die SD Card je nach Befehl mit verschiedenen Antworttypen
reagiert.
Der Flash Speicher der SD Card ist in 512 Byte Blöcke aufgeteilt. Ein Block
ist die kleinste adressierbare Einheit und bei einem Schreib- oder Lesezugriff
muss immer ein ganzer Block übertragen werden.[1] Lässt man Betrachtungen bezüglich eines Filesystems zunächst außen vor, lässt sich trotzdem leicht
einsehen, dass zum Hinzufügen von einigen Byte zu einem 512 Byte Block
der ganze Block zunächst gelesen, die neuen Daten eingefügt und dann der
veränderte Block komplett an seine ursprüngliche Adresse zurückgeschrieben
werden muss. Dies bedeutet einigen Zusatzaufwand von Speicher und Zeit.
Geht man von einer Datengröße pro Sample von 4 Byte aus, so stellt der
blockweise Zugriff innerhalb der festen Samplingperiode eine besondere Herausforderung dar.
Abbildung 2.3: Schreibzugriff Einzelblock [2, S. 117]
Ein naheliegender Ansatz zur Vermeidung des Lesezugriffs beim Hinzufügen
12
2 Konzept
von Daten zu einem Block ist die Nutzung eines ganzen Blockes pro Sample.
ihrer
Dies reduziert allerdings die Kapazität der Speicherkarte auf N utzbytes
512
eigentlichen Kapazität und es müssen trotzdem pro Sample 512 Byte über den
Bus verschickt werden wenn man den Rest des Blocks z.B. mit Nullen auffüllt.
Der Ansatz scheint wenig praktikabel.
Die durch den Befehlssatz des SD Standards festgelegte Beschränkung auf
512 Byte Daten Blöcke lässt sich allerdings doch umgehen wenn man sich
die Master-Slave Beziehung zwischen Mikrocontroller und SD Card im SPI
Bussystem zu Nutze macht. Der Master eines synchronen also taktgetriebenen
Bussystems wie SPI treibt den Takt und bestimmt die Taktfrequenz. Findet am
Takteingang des Slaves, in diesem Fall die SD Card, keine Zustandsänderung
statt, so wertet dieser auch die Master Out-Slave In (MOSI) Datenleitung nicht
aus.
Es ist also möglich einen Block Schreibzugriff zu beginnen, indem der Mikrocontroller den WRITE_BLOCK Befehl sendet (in Abb. 2.3: command)
und die Antwort auswertet. Damit wird der Controller der SD Card in einen
Zustand versetzt, in dem er nun den Empfang eines 512 Byte Blocks erwartet.
Liegt kein Takt an, bleibt der Zustandsautomat im SD Card Controller ewig
in diesem Zustand. Man kann jetzt Byte für Byte Daten liefern, wobei immer
nur dann das Taktsignal getrieben wird, wenn gültige Daten am Bus anliegen.
Man führt aus Sicht des SD Card Controllers quasi einen normalen Transfer
durch, welcher vom Master eben mit langen Pausen versehen wurde, in denen
sich der Pegel der Taktleitung nicht ändert. In diesen Pausen wird Sampling
und Verarbeitung durch die CPU durchgeführt. Nach dem 512ten Byte schließt
man den Transfer gültig ab. Die Speicherkarte sendet eine sog. Data Response
und geht nach Verarbeitung des Flash Zugriffs in ihren Grundzustand zurück.
Sie ist dann bereit für den nächsten Blockzugriff oder einen anderen Befehl.
2.5 Verarbeitung auf Host-System
Sind die aufgenommenen Messdaten über eine Speicherkarte oder während der
Messung über USB an den Verarbeitungsrechner übertragen worden, müssen
sie dort visualisiert und in einem für die weitere Auswertung nutzbaren Format abgespeichert werden. Es sollte ein Graph der gesamten Messung gezeigt
werden, in dem interessante Zeitabschnitte der Messung zur genaueren Betrachtung ausgewählt werden können. Die Speicherung sollte in einer einfach
aufgebauten Struktur erfolgen, so dass die Messreihe von gängigen Programmen zur Datenvisualisierung eingelesen werden kann.
13
3 Implementierung
3.1 Hardware Entwurf
Bei Tests mit zwei MSP430 Testboards wurde deutlich, dass die Anforderungen an das Messsystem mit auf Evaluierungsplattformen aufsetzender Hardware nicht zu erfüllen sind. Problematisch zeigte sich dabei die Vielzahl der
benötigten Zusatzbauteile und deren Verbindung mit dem Testboard. Nötig
sind eine externe Strommessschaltung und die Kontaktierung dieser zum Messobjekt, eine stabile Referenzspannung für den Analog-Digital-Wandler, die
Möglichkeit zum Batteriebetrieb, eine schnelle Kommunikation mit dem Auswertungsrechner und ein Speicher für Messdaten bei vom Rechner getrennter
Messung. Ebenso suboptimal schienen die Bedienelemente und die grundsätzliche Handhabung des zusammengefügten Systems. Unter diesen Eindrücken
entstand der Entwurf für eine auf die Anwendung zugeschnittene Schaltung.
Ein Foto der entworfenen Platine ist in Abb. 3.1 dargestellt. Sie lässt sich in 5
Abbildung 3.1: Bestückte Platine, Oberseite
Hauptbestandteile gliedern:
MSP430 Mikrocontroller, Spannungsversorgung, Strommessschaltung, Ein- und
Ausgänge und Benutzerschnittstelle.
14
3 Implementierung
3.1.1 MSP430 Mikrocontroller
Zum Einsatz kommt die F2618 Variante der 16Bit Controller von Texas Instruments. Die gewählte Variante besitzt 8KB RAM und 116KB Flash Speicher.
Der Haupttakt wird aus einem 16MHz Quarz Oszillator gespeist und die
Programmierung erfolgt über ein JTAG Interface. Die Versorgungsspannung
kann zwischen 1,8 V und 3,3 V liegen. Da sie das obere Limit der messbaren
Spannung durch den ADC festlegt, wird sie auf der Platine mit 3,3 V gespeist.
3.1.2 Spannungsversorgung
Die Versorgungsspannung für Mikrocontroller, SD Card, Strommessschaltung
und USB Interface wird von einem LTC3534 Buck-Boost Spannungswandler
bereitgestellt. Es handelt sich um einen Schaltregler, was bei einem batteriebetriebenen System wegen der höheren Effizienz unbedingt der Verwendung eines Linearreglers vorzuziehen ist. Der Einsatz eines Auf- und Abwärtswandlers
(Buck-Boost) erlaubt die Speisung sowohl von 5V USB Versorgungsspannung,
als auch von einem Akku. Gegenüber einem reinen Abwärtswandler kann der
Auf- und Abwärtswandler auch noch bei einem fast entladenen Akku, dessen
Spannung sich im Bereich der 3,3 V Versorgungsspannung des Messsystems
bewegt, arbeiten. Der Spannungswandler benötigt als Außenbeschaltung eine
Spule als Energiespeicher und ein Netzwerk von Spannungsteilern und Kondensatoren, welche die Rückführung des Regelkreises bilden. Bei Erstbestückung
und -test der Platine wurde festgestellt, dass eine Störung des Regelkreises
durch Berühren der Außenbeschaltung zu einer Beeinträchtigung oder gar Zerstörung des Spannungswandlers führen kann. Diese Bauelemente müssen daher
mechanisch vor Fremdeinwirkung geschützt werden um versehentliche Berührung bei z.B. Messungen an der Platine auszuschließen.
Als Akkumulator wurde eine moderne Lithium-Ionen Rundzelle vom Typ
18650 ausgewählt, wie sie z.B. in leistungsstarken LED Taschenlampen Verwendung findet. Die Nennspannung solcher Zellen beträgt 3,7V und sie besitzen eine Kapazität zwischen 1000 und 3000 mAh. Damit der Akku zum Laden
nicht aus dem Gehäuse entnommen werden muss, besitzt das Messsystem eine
Ladeschaltung direkt auf der Platine. Sie ist aufgebaut aus einem LTC4056
Li-Ion Charger Baustein und einem PNP Transistor über den der IC den Ladestrom durch den Akku steuert. Aktiviert wird ein Laden des Akkus automatisch wenn dieser eine Spannung von unter 4,05V besitzt und das System
über die USB Buchse an einen Rechner oder ein USB Netzteil angesteckt wird.
Da es sich um einen speziellen Li-Ionen Lade IC handelt, ist die Ladekennlinie
genau angepasst und eine automatische Umschaltung auf Erhaltungsladung
15
3 Implementierung
vorgesehen. Zur Einhaltung der USB Spezifikation ist die Stromstärke, welche
über die USB Verbindung gezogen wird, auf 500 mA begrenzt.
Ist das System mit einer externen Spannungsversorgung verbunden, wird
auch der 3,3V Spannungswandler und damit der funktionale Teil der Platine
von extern gespeist. Dies erfordert den Einsatz eines sog. Power Path Controllers, der zwischen autonomer und externer Versorgung umschaltet. Der
verwendete LTC4412 steuert dazu zwei MOSFETs, wovon einer im Batterie
und einer im 5V USB Zweig sitzt. Bei vorhandener USB Verbindung wird der
Batterie MOSFET nichtleitend und der USB MOSFET leitend geschalten, bei
Versorgung durch den Akku andersherum.
3.1.3 Strommessschaltung
Als Shunt für die Strommessung wird ein Widerstand in Durchsteckmontage
(Genauigkeit ±1%) genutzt. Der Spannungsabfall an diesem wird in von einem
Shunt Monitor INA195 verstärkt. Dieser besitzt eine Verstärkung von V /V =
100, es sind aber im gleichen Gehäusetyp Varianten mit V /V = 50 (INA194)
und V /V = 20 (INA193) verfügbar.
3.1.4 Ein- und Ausgänge
Das Messsystem ist prinzipiell mit zwei anderen Geräten verbunden, dem Messobjekt und dem Auswertungsrechner.
Über eine Mini-DIN Steckverbindung sind die Messleitungen an das Messobjekt geführt. Die Pin Belegung der Buchse kann Abb. 3.2 entnommen werden.
Shunt+ wird mit dem Plus Pol der Spannungsversorgung (z.B. eine Batterie)
Pin
Pin
Pin
Pin
1:
2:
3:
4:
Ref−/GND
Ref−/GND
Shunt−
Shunt+
Abbildung 3.2: Belegung Mini-DIN Buchse [5]
des Messobjekts verbunden. Der Strom durchläuft den Shunt des Messsystems
und fließt über Shunt− zum Messobjekt zurück (z.B. Plus Pol der Batteriefassung). Da nicht nur der Strom durch das Messobjekt, sondern auch der
Spannungsabfall über selbigem zu messen ist, muss auch die Masse (im Bsp.
Minus Pol der Batteriefassung) mit dem Bezugspotential Ref− des Messsystems verbunden werden.
16
3 Implementierung
Mit dem Auswertungsrechner kann entweder direkt über USB kommuniziert
werden oder indirekt, indem die Messdaten auf einer SD Speicherkarte gespeichert und vom Rechner ausgelesen werden. Das USB Interface stellt ein FTDI
FT232RL Schaltkreis zur Verfügung. Dieser ist mit dem UART des MSP430
Controllers verbunden und setzt in Sende- und Empfangsrichtung byteweise
zwischen der USB Verbindung mit dem Auswertungsrechner und dem UART
um. Die Verbindung ist auf 920000 Baud konfiguriert, was nahe der maximal
möglichen Rate liegt, bei der noch eine zuverlässige Übertragung möglich ist.
Auch teilt der FTDI Chip dem angeschlossenen Rechner mit, dass das System
bis zu 500mA Stromstärke benötigen kann. Aus der Vielzahl von möglichen
USB Steckverbindungen wurde wegen seiner kompakten Bauform der Mini-B
Typ gewählt.
Der Speicherkarteneinschub hat SD Standardgröße. Es können einfache SD
Karten, Karten vom Typ SD-HC (High Capacity) und über einen Adapter die
jeweiligen micro Varianten verwendet werden. Um eine Kartendetektierung im
Mikrocontroller zu ermöglichen wird bei Pin 1 (Card Select) des Einschubes im
Gegensatz zu den Daten Pins kein Pull Up Widerstand verwendet. Wenn auch
nicht im SD Standard vorgesehen, so treiben quasi alle Karten diese Leitung
initial auf HIGH Pegel, was eine leichte Erkennung ermöglicht.
3.1.5 Benutzerschnittstelle
Der Benutzer interagiert mit dem Messsystem über zwei Schnittstellen. Mittels
der Software auf dem Auswertungsrechner werden Messparameter eingestellt
und die aufgenommenen Daten ausgewertet. Am Gerät selbst wird dessen Status über Leuchtdioden angezeigt und über zwei Taster kann der Messmodus
gewählt und eine Messung gestartet werden. Mit dem grünen Taster wird der
Modus zwischen autonomer und gekoppelter Messung umgeschaltet. Einzelne Messreihen werden mit dem gelben Taster gestartet und bei nochmaligem
Druck wieder gestoppt.
Die Status LEDs können nicht direkt über die Logik Pins des Mikrocontrollers getrieben werden, wie es bei Hobby Mikrocontroller Projekten oft Praxis
ist. Die Spezifikation gibt bereits bei einer Gesamtbelastung der Ausgänge mit
über 12 mA eine Verfälschung des High und Low Ausgangspegels um über 250
mV an. [4, S. 36] Geschalten werden alle LEDs deshalb über MOSFETs. Im
Gegensatz zu Bipolartransistoren, bei deren Einsatz der Logik Pin immer noch
mit dem Basis Strom belastet wird, ist im statischen Zustand bei MOSFETs
quasi keine Last an der Ausgangsstufe des Controllers. Verwendet werden NXP
NX3008NBK (VGSth ≈ 0, 9V ) und die LED Vorwiderstände sind auf 10 mA
Stromstärke pro Leuchtdiode dimensioniert. Eine Besonderheit bildet die LED
17
3 Implementierung
zur Anzeige des Messmodus, bei der ein zweifarbiger LED Typ verwendet wird.
Die Ansteuerung findet über komplementäre Transistoren statt. So schaltet ein
n-Kanal MOSFET die Farbe Rot und ein p-Kanal MOSFET die Farbe Grün.
Dadurch ist es möglich den selben Logik Ausgang des Controllers für die Gate
Anschlüsse von beiden Transistoren zu verwenden. Das hat zur Folge, dass
immer eine Farbe leuchtet bzw. die LED nie ausgeschalten ist, was aber zur
Modusanzeige passt, da immer entweder der UART oder der SD Modus aktiv
ist.
Im weitesten Sinne zur Benutzerschnittstelle gehörig ist auch der Ein-Aus
Schalter. Dieser trennt im Aus Zustand den Plus Pol des Akkus vom Rest
der Schaltung. Ohne externe Versorgung ist das Gerät dann folglich aus. Bei
vorhandener USB Verbindung wird mit dem Schalter jedoch nur das Laden
des Akkus deaktiviert. Der funktionelle Teil der Schaltung ist in diesem Fall
unabhängig von der Stellung des Schalters aktiv!
3.1.6 Gehäuse
Platz findet die beschriebene Hardware in einem Kunststoffgehäuse. Für den
Prototypen wird ein angepasstes Universalgehäuse verwendet. Die Abmaße der
Platine ermöglichen jedoch ein für einen späteren Einsatz besser geeignetes
schmaleres und vor allem kürzeres Gehäuse.
18
3 Implementierung
3.2 Mikrocontrollerprogramm
Abbildung 3.3: Programmablauf: Mikrocontroller
3.2.1 Leistungs- und Energiemessung
Die Spannung über dem Shuntwiderstand und die Spannung über der Last
werden periodisch durch den 12bit ADC des MSP430 gesamplet. Ein Sample
wird ausgelöst durch den Ablauf des Timer B. Dieser zählt bis zu dem im
Timer Capture/Compare Register festgelegten Wert und bezieht sein Taktsignal von einem externen Quarz. Nach Ablauf beginnt der Timer sofort erneut
zu zählen. Der ADC wird so ohne Nutzung der CPU mit wählbarer Periode
zum Sampling angeregt. Ist die Analog-Digitalwandlung abgeschlossen erhält
die CPU einen Interrupt, kopiert die zwei Werte aus den ADC Ergebnisregistern und hat jetzt Zeit bis zum nächsten Interrupt eine Vorverarbeitung und
Speicherung/Übertragung der Messwerte vorzunehmen. Die Interrupt Service
19
3 Implementierung
Routine (ISR) ist im Programmablaufplan in Abb. 3.3 rechts dargestellt. Die
richtige Konfiguration des Analog-Digitalwandlers ist für die zeitlich korrekte
Abtastung der zwei Eingangskanäle äußerst wichtig. Soll pro Abtastzeitpunkt
mehr als ein Kanal abgetastet werden kann der ADC nicht im Repeat Sequence
of Channels Modus betrieben werden. Die Bezeichnung leitet hier in die Irre.
Die Automatengraphen zur Funktion der ADC Modi [3, S. 581ff] zeigen, dass
pro Anregungsimpuls durch den Timer nur ein Kanal gesampelt wird und ein
Interrupt erst nach dem Ende der Sequenz, also dem Sampling aller gewählten
Kanäle, ausgelöst wird. Für ein Spannungs- und Stromwertepaar wären also 2
Impulse nötig. Der Timer müsste demnach mit halber Periodendauer betrieben werden. Eine solche Konfiguration bedeutet aber, dass Spannungs- und
Stromsample nicht zum gleichen zeitlichen Abtastpunkt gehören. Zwischen ihnen liegt genau eine Periodendauer des Timers. Besser geeignet ist der Sequence
of Channels Modus. Hier ist eine Konfiguration möglich, in der der ADC nach
einer Anregung durch den Timer alle gewählten Kanäle schnellstmöglich abarbeitet. Nach Analog-Digital-Wandlung des letzten Kanals wird ein Interrupt
ausgelöst. Damit der Wandler auf den nächsten Timer Impuls wieder reagiert muss aber in der ADC Interrupt Service Routine das Enable Conversion
(ENC) Bit im ADC12 Control Register 0 herunter- und wieder heraufgesetzt
werden. Für jeden ADC-Kanal erhält man einen 12bit Wert (0..4095), welcher
das Verhältnis der abgetasteten Spannung zur verwendeten Referenzspannung
des ADC angibt.
Es gilt nach [3, S. 576]:
UIN = NADC ·
Uref + − Uref −
4096
(3.1)
Absolutes Maximum für eine messbare Eingangsspannung mit Uref − als Bezugspotential ist demnach die Referenzspannung. Diese kann aus verschiedenen
Quellen gewählt werden, wobei sie immer im Bereich 1.4V-VAV CC liegen muss.
VAV CC ist im Allgemeinen auf 3,3V festgelegt. Negatives Bezugspotential ist
das Massepotential.
Es ist wünschenswert bereits nach der Analog-Digital-Wandlung von den
12bit Rohwerten zu abstrahieren und in nachfolgender Verarbeitung Spannungs- und Stromwerte zu verwenden. Die dazu nötige Vorverabeitung muss
im Mikrocontroller aus Performance Gründen in Ganzzahlarithmetik durchgeführt werden. Die implizierte Kommaverschiebung muss bei der Auswertung
in Volt am Hostsystem rückgängig gemacht werden.
Listing 3.4 zeigt den zugehörigen C-Code. Die Referenzspannung wird hier
als Konstante mit L Suffix angegeben. Nur so erzeugt der Compiler msp430gcc Assemblercode, der die Multiplikation effizient ausführt. Prinzipiell müsste
20
3 Implementierung
union long_union{
unsigned long value;
struct{
unsigned int lower; //lsb
unsigned int upper; //msb
}split;
};
union long_union un_adc_v;
// Vref = 3.298V
un_adc_v.value = adc_n_v.value * 32980L;
un_adc_v.value = un_adc_v.value << 4;
sd_writesample(un_adc_v.split.upper);
// (N*Vref) * 1E4
// /4096
Listing 3.4: Berechnung Eingangsspannung
die Konstante als vorzeichenlose, ganzzahlige 16bit Konstante gekennzeichnet
werden (U Suffix), was aber zu einer fehlerhaften Berechnung führt. Nur mit
L Suffix erfolgt die korrekte Adressierung der Multiplikationseinheit, wie sie
unten beschrieben ist.
Die Division durch 4096 lässt sich günstig mit einer binären Schiebeoperation realisieren. Sie entspricht einer Rechtsverschiebung um 12 Stellen. Die
Berechnung kann in diesem Fall aber noch besser gelöst werden. Der Zwischenwert liegt durch die vorherige Multiplikation in einem 32 Bit breiten Datentyp
vor (16·16 => 32Bit) und belegt im schlimmsten Fall ((NADC = 4095)·32980)
maximal 28 Bit. Dadurch kann die Rechtsverschiebung durch eine Linksverschiebung um 4 Stellen ersetzt werden, nach der das Ergebnis in den oberen 16
Bit der Variable liegt. Für deren Heraustrennung wird mit einem union Typ
gearbeitet.
An dieser Stelle sollte genauer auf den Memory Mapped Hardware Multiplizierer eingegangen werden. In vielen MSP430 CPUs gibt es eine Multiplikationseinheit obwohl der Befehlssatz (RISC Architektur) keinen Multiplikationsbefehl beinhaltet. Anstatt eines Befehlsaufrufs MULT füllt man spezielle
Operandenregister und 3 CPU-Takte später liegt das Ergebnis ohne weiteres Zutun gültig in einem Ergebnisregister vor. Die Verwendung erfolgt nur
über Zugriff auf die im Datenblatt definierten Registeradressen, ist also memory mapped. Zur Unterscheidung von vorzeichenbehafteter und vorzeichenloser
Multiplikation existieren separate Register für Operand 1. So wird Operand
2 immer an die selbe Adresse geschrieben, Operand 1 aber für vorzeichenlose
21
3 Implementierung
Multiplikation nach 0x0130, für vorzeichenbehaftete Mult. nach 0x0132. [3, S.
358 ff] Die Operandenregister sind jeweils 16 Bit breit, das Ergebnis besitzt
32 Bit Breite und liegt geteilt in einem “Lower 16 Bit“- und einem “Upper 16
Bit“ Register. Teilt man dem Compiler msp430-gcc mit, dass die Ziel-CPU eine Multiplikationseinheit besitzt, kann man im erzeugten Assembler Code die
beschriebenen Abläufe bei Multiplikationen beobachten. Auch werden bis zum
Vorliegen des Ergebnisses alle Interrupts mit dem DINT Befehl deaktiviert um
das Timing der Operation in jedem Fall einzuhalten. Der Programmierer muss
sich bewusst sein, dass in dieser Zeit auftretende Interrupts nicht sofort in der
zugehörigen ISR verarbeitet werden.
3.2.2 UART
Ist das Messsystem über die USB Schnittstelle mit einem Rechner verbunden,
auf dem das Auswertungsprogramm ausgeführt wird, können die Messdaten
während der laufenden Messung mit hoher Datenrate übertragen werden. Ursprünglich sollte auch im Modus mit hoher Abtastrate die Umrechnung auf
Spannungswerte in Volt, respektive Stromstärkewerte in mA, im Mikrocontroller Programm erfolgen. Damit wäre ein gleiches Datenformat für beide Betriebsmodi möglich gewesen und das Auswertungsprogramm hätte ohne Kenntnis von Shuntwiderstandswert, Referenzspannung oder Verstärkungsfaktor des
Shunt Monitors die Anzeige der Daten übernommen. Die für diese Berechnungen nötige Rechenzeit ist neben der Datenübertragungsrate ein entscheidender
Faktor für die maximal erreichbare Abtastrate des Gesamtsystems. Während
der Entwicklung zeigte sich, dass eine ausreichend hohe Rate so nicht zu erreichen ist. Der MSP430 lässt sich aufgrund seiner Ausrichtung auf geringe Leistungsaufnahme nur mit maximal 16 MHz CPU Takt betreiben. Da auch bei
der maximalen Taktfrequenz die benötigte Rechenzeit zu lange war wurde für
den Zugewinn an möglicher Abtastrate die Umrechnung in das Auswertungs/Empfängerprogramm verlagert. Damit werden im Mikrocontroller zwischen
2 Abtastzeitpunkten nur noch die 24 Bit Rohdaten aus den zwei Kanälen
des Analog-Digital-Wanders umkopiert und gesendet. Da die Rohwerte der
Spannungs- und Strommessung jeweils 12 Bit groß sind, die Übertragung aber
byteweise (8 Bit) erfolgt, werden diese aufgetrennt. Die jeweils höherwertigsten
4 Bit der zwei Rohwerte werden zusammengefügt und als erstes gesendet. Das
zweite Byte bilden die verbliebenen 8 Bit des Spannungswertes und der Rest
des Stromstärkewertes bildet das dritte und letzte Byte.
Die Senderoutine ist als kurzes Precompiler Makro realisiert. In diesem wird
das UCBUSY Flag im Statusregister des UART Moduls abgefragt und falls
dieses gesetzt ist, gewartet bis das Modul bereit ist. Danach wird das an das
22
3 Implementierung
Sendereihenfolge
Byte 1
Byte 2
Byte 3
Inhalt
NU [11..8] NI [11..8]
NU [7..0]
NI [7..0]
Variable[Bits]
Abbildung 3.5: Übertragungsreihenfolge im UART Modus
Makro übergebene Byte ins Senderegister kopiert. Die Verwendung eines Makros vermeidet für die wenigen Befehle einen Unterprogrammaufruf, welcher
mehr Zeit in Anspruch nehmen würde.
Mit der beschriebenen Implementierung lassen sich Abtastraten bis zu 9200
Samples pro Sekunde erreichen.
3.2.3 SD Card
Bei autonomen Betrieb des Messsystems werden die Messdaten auf einer SD
Card gespeichert. Die Benutzung von Speicherkarten erfordert allerdings etwas
Zusatzaufwand.
Nach dem Einschieben der SD Card in den dafür vorgesehenen Slot muss
die Speicherkarte zunächst initialisiert werden.
Die Speicherkarte erwacht im SD Modus und muss erst nach Abb. 3.6 umkonfiguriert werden. Man wechselt in den SPI Modus durch Senden des Reset
Befehls bei auf LOW Pegel gezogener nCS Leitung. Da alle Befehle des SD Protokolls mit einer gültigen Prüfsumme versehen sind, muss auch der Wechsel
in den SPI Modus noch mit Prüfsumme gesendet werden. Diese kann anstatt
sie aufwändig zu berechnen jedoch für den Reset Befehl (CMD0) im Speicher abgelegt werden, da danach keine Prüfsumme mehr benötigt wird. Dann
muss eine Sequenz von Befehlen durchlaufen werden, um die Art der Karte zu
erkennen.
Besonders wichtig ist hierbei ob es sich um eine High Capacity Karte handelt.
Der Standard sieht bei diesem Typ eine andere Adressierung vor. Der Grund
für die unterschiedliche Adressierung ist die maximale Größe von Standard
Capacity Karten. Beim Standard Capacity Typ werden die Adressen byteweise gezählt. Die kleinste adressierbare Einheit ist aber ein 512 Byte Block und
eine Standard Capacity Karte quittiert einen Speicherzugriff auf eine Adresse,
die nicht Vielfaches von 512 ist, mit einem Fehler. Es liegt also nahe, die Speicheradressen bei High Capacity Karten den ohnehin schon atomaren Blöcken
zuzuordnen, was auch so im Standard umgesetzt wurde. Damit überwindet
23
3 Implementierung
Abbildung 3.6: Flussgraph zur Initialisierung im SPI Modus[2, S. 115]
man die sich bei Byteadressierung und 32 Bit Adressbreite ergebende theoretische Obergrenze von 4095 Megabyte.
Dateisystem
Soll eine Reihe von Messdaten auf einem Speicher abgelegt und später wieder
zuordenbar ausgelesen werden bedarf es grundsätzlich einer Konvention bezüglich des Ortes und der Ordnung der Daten. Dieses Dateisystem kann sehr
einfach ausfallen, wenn es nur einer speziellen Anwendung genügen muss.
Wichtig ist im Fall des Messsystems die in 2.4 beschriebenen Blockzugriffe
auf das Nötigste zu beschränken. Das Konzept, den Block Schreibzugriff über
eine Folge von Samples zu dehnen wird mit dem hier beschriebenen Dateisystem aufgegriffen.
24
3 Implementierung
SD Card
----------------------------------| Addr.
| Inhalt
|
|-----------------------------------|
|0x00000000| Reserviert
|
|...
| Boot Sector, MBR
|
|-----------------------------------|
|0x00F00000| Messreihen Tabelle
|
|-----------------------------------|
|0x00F00200| 1.Datenreihe
|
|
| Variable Länge
|
|
| Bsp: 4 SD Card blocks |
|0x00F00800|
4*512bytes
|
|-----------------------------------|
|0x00F00A00| 2.Datenreihe
|
|
| Variable Länge
|
|
| Bsp: 10 SD Card blocks |
|
|
10*512bytes
|
|...
|
|
|0x00F01C00|
|
|-----------------------------------|
|...
|
|-----------------------------------|
|0x????????| n.Datenreihe
|
|...
|
|
|0x????????| n maximal 63
|
-----------------------------------
Abbildung 3.7: Layout Simples Dateisystem
Abb. 3.7 stellt die Partitionierung der Speicherkarte dar. Entscheidend ist
die Messreihen Tabelle, welche an einer definierten Adresse abgelegt ist, die
dem Messsystem und der Auswertesoftware bekannt ist. Sie enthält Anfangsund Endpointer auf die von den Datenreihen belegten Blöcken. Setzt man
die Größe der Tabelle auf genau einen 512 Byte Block lassen sich maximal
63 Datenreihen referenzieren. Dies sollte für den Einsatzzweck zunächst genügen. Sind mehr Datenreihen gefordert, so lässt sich das Dateisystem erweitern
indem der nächste Block als Fortführung der Tabelle verwendet wird. Die Datenreihen selbst können beliebige Länge besitzen wenn der Platzbedarf nicht
die Kapazität der Karte überschreitet.
Die ersten 4 Byte des Blocks, in dem die Tabelle abgelegt wird, sind ein
festes Muster zur Vermeidung von ungültigen Zugriffen durch Interpretation
eines falschen Blocks als Messreihen Tabelle. Daran schließt sich die Anzahl
der Datenreihen auf der Karte an. Mit dieser Zahl wird die Anzahl gültiger
25
3 Implementierung
Byte
---0-3
Bedeutung
-------------------------------Muster zur Erkennung einer
validen Messreihen Tabelle
(0x4D594653 - ASCII "MYFS")
4-5
Anzahl Datenreihen (0..65535d)
6-7
Reserviert
8-11
12-15
1. Datenreihe: Adresse Anfangsblock
1. Datenreihe: Adresse Endblock
16-19
20-23
2. Datenreihe: Adresse Anfangsblock
2. Datenreihe: Adresse Endblock
...
...
504-507 63. Datenreihe: Adresse Anfangsblock
508-511 63. Datenreihe: Adresse Endblock
Abbildung 3.8: Layout der Messreihen Tabelle
Anfangs- und Endadressen kontrolliert. (Nicht genutzte Plätze in der Tabelle
werden mit 0x00000000 gekennzeichnet)
Für jede Messreihe wird die Adresse des ersten und des letzten Blocks, in
dem Daten der Messreihe gespeichert sind, abgelegt. Die Messreihe schließt
die referenzierten Blöcke und alle dazwischenliegenden Blöcke ein. Ist nur ein
Block mit Daten belegt, so sind Anfangs- und Endadresse identisch.
Eine Datenreihe über 2 Blöcke ist in Abb. 3.9 dargestellt. Hier ist die Ordnung der Spannungs- und Stromsamples zu erkennen, die sich aus der Verarbeitung im Mikrocontroller ergibt. Um eine reguläre Anordnung der Daten zu
gewährleisten wurden jedem Spannungs- oder Stromwert 2 Byte zugeteilt obwohl sie eigentlich nur maximal 12 Bit breit sein können (Auflösung des ADC).
Dadurch lässt sich auch 0xFFFF als ein Marker für das Ende einer Messreihe
bzw. für ungenutzte Bytes eines Blockes verwenden, da ein gültiger Messwert
maximal 0xFFF betragen kann.
26
3 Implementierung
Bsp: Datenreihe mit 200 Samples
Speicher 800 Bytes ->2Blöcke
Block
----1
1
1
...
1
1
2
2
...
2
2
2
Byte
---0-1
2-3
4-5
Bedeutung
-----------------------------1.
Sample: Spannung (16bit)
1.
Sample: Strom (16bit)
2.
Sample: Spannung (16bit)
508-509
510-511
0-1
2-3
128.
128.
129.
129.
Sample:
Sample:
Sample:
Sample:
Spannung (16bit)
Strom (16bit)
Spannung (16bit)
Strom (16bit)
284-285 200. Sample: Spannung (16it)
286-287 200. Sample: Strom (16bit)
288-511 0xFFFF
Abbildung 3.9: Beispiel einer Datenreihe
3.2.4 Konfiguration des Messsystems
Verschiedene Parameter müssen zur Nutzung des Messsystems festgelegt werden. Die Speicherung dieser Parameter sollte zum einen nichtflüchtig sein, also
auch das Abschalteten des Systems überdauern, zum anderen sollte sie nicht
auf einem externen Rechner erfolgen, sondern auf dem Mikrocontroller. Diese
Forderung ergibt sich direkt aus der Möglichkeit des autonomen Messens, ist
aber auch dann äußerst nützlich wenn das Messsystem mit mehreren Auswertungsrechnern genutzt wird. Unter den Rechnern muss so keine Konfigurationsdatei ausgetauscht werden, da die Konfiguration immer vom Gerät übertragen
wird. Abgelegt werden die Einstellungen im Flash Speicher des MSP430 und
bleiben damit auch ohne Spannungsversorgung erhalten.
Der Austausch von Parameterwerten zwischen Messsystem und Auswertungsrechner erfolgt wie die Messdatenübertragung über den UART und gehorcht einem simplen Protokoll. Die Abläufe lassen sich leicht anhand des in
Abb. 3.10 dargestellten Automatengraphen nachvollziehen, der das Verhalten
der Mikrocontroller Software darstellt. Das Auswertungsprogramm kann die
aktuell im Flash gespeicherten Parameter mit einem Lesekommando anfordern, welches auf ein Byte mit Inhalt 0x55 festgelegt ist. Hierauf antwortet der
Mikrocontroller mit der gespeicherten Konfiguration, die in der abgebildeten
Reihenfolge Byte für Byte aus dem Flash gelesen wird.
Soll die Konfiguration geändert werden muss die Übertragung der neuen
Parameter mit dem Schreibkommando 0x11 initiiert und mit 0x22 gültig ab-
27
3 Implementierung
geschlossen werden. Andernfalls werden die Änderungen verworfen. Außerdem
prüft das Auswertungsprogramm anschließend selbst die neue Konfiguration
indem es die Parameter wieder ausliest und mit den neu eingestellten Werten
vergleicht.
Abbildung 3.10: Automatengraph - Konfiguration über UART
Beim Zugriff auf den im MSP430 integrierten Flash Speicher muss dessen
Segmentierung beachtet werden. Ein Löschvorgang kann nicht auf Byteebene
erfolgen, sondern umfasst immer ein ganzes Segment, welches mindestens 64
Byte groß ist. Da die Speicherzellen ihren Zustand einzeln nur von logisch
“1“ auf logisch “0“ ändern können, muss vor dem Schreiben von einem oder
mehreren Bytes der Zielbereich gelöscht, also auf “1“ gesetzt werden. Wie
beschrieben wird dazu das gesamte betroffene Segment gelöscht. Aus diesem
Grund werden die Parameter immer gemeinsam geschrieben. Eine Funktion
flash_settings(..) kapselt die dazu nötigen Schritte: Entsperren, Löschen des
Segments, Schreiben der Parameter, Sperren.
Die Daten liegen von Adresse 0x1000 bis 0x1004 in Segment D des Information Bereichs des Flash Speichers, in dem keine zusätzlichen Daten abgelegt
sind.
28
3 Implementierung
3.3 Auswertungs-/Empfängerprogramm
Das kombinierte Empfänger- und Auswertungsprogramm ist in der Skriptsprache Python umgesetzt und bietet eine graphische Benutzeroberfläche auf Basis
der Qt Bibliothek. Durch die Verwendung von Python und Qt lässt sich das
Programm auf verschiedenen Betriebssystemen nutzen, sofern die verwendeten
Bibliotheken1 installiert wurden.
Abbildung 3.11: Graphische Oberfläche des Auswertungsprogrammes
Das Programm ist nach den zwei Modi des Messsystems in UART und SD
Card Funktionalität geteilt. Dies gilt sowohl für die graphische Oberfläche, in
der die Modi durch zwei Karteireiter getrennt sind, als auch für den darunterliegenden Entwurf. Hier fungieren eine UART Klasse und eine SD Klasse als
Datenquellen und eine gemeinsame Darstellungsklasse visualisiert deren Daten
in einem Graph oder exportiert sie in eine CSV Datei. Diese Datei kann dann
zu einem späteren Zeitpunkt im Reiter “CSV Import“ wieder eingelesen und
die Auswertung fortgesetzt werden.
Im UART Modus wird die serielle Schnittstelle geöffnet und dann der Eingangspuffer (FIFO) periodisch abgefragt. Zunächst wartet das Programm auf
das Auftauchen des Start Symbols, mit dem das Messsystem den Beginn einer Messung signalisiert. Die UART Übertragung ist bytebasiert, so ist das
1
Verwendete Bibliotheken: PySerial, PyQt, Matplotlib
29
3 Implementierung
Start Symbol auf ASCII Start of Text 2 festgelegt. Auf das Start Symbol folgen
unmittelbar die Daten des ersten Samples. Pro zeitlichem Abtastpunkt fallen
3 Byte (24 Bit) Daten im Eingangspuffer des UART an. Da die Rohwerte
der Spannungs- und Strommessung jeweils 12 Bit groß sind, die Übertragung
aber byteweise (8 Bit) erfolgt, werden die jeweils höherwertigsten 4 Bit der
Rohwerte zusammen übertragen. Der Empfänger trennt deswegen das erste
(gemischte) Byte auf, und fügt aus dem oberen Halbbyte und dem zweiten
empfangenen Byte den Spannungsrohwert zusammen, sowie aus dem unteren
Halbbyte und dem dritten Byte den Stromstärkerohwert. Die Berechnung des
Spannungswertes in Volt aus dem Rohwert NU ergibt sich nach Gleichung 3.1
zu:
Uref + − Uref −
3, 298V
= NU ·
(3.2)
U = NU ·
4096
4096
Die Umrechnung des Stromstärkewertes erfolgt nach:
I = NI ·
1
VIN A195
·
Uref + − Uref −
1
·
4096
RShunt
(3.3)
1 3, 298V
1
·
·
(3.4)
100
4096
RShunt
Bei dieser Berechnung wird berücksichtigt, dass die Spannung über dem Shuntwiderstand vor der Analog-Digital-Wandlung durch den Shuntmonitor INA195
verstärkt wurde. Dessen Verstärkungsfaktor (V=100) wird im UART Modus
an dieser Stelle herausgerechnet. Die so erhaltenen Werte werden im Python
Sequenztyp list abgelegt. Neben den Listen für Spannung und Stromstärkewerte wird eine Liste mit deren Produkt, der Momentanleistung, geführt. Nach
Ende der Messung können diese Datensätze leicht in einem Graphen über der
Zeit aufgetragen dargestellt oder in eine CSV Datei exportiert werden.
Die Visualisierung erfolgt mittels der Bibliothek Matplotlib. Bereits bei kurzen Messungen mit hoher Abtastrate fallen Datenmengen an, deren vollständige
graphische Darstellung für Probleme sorgen kann. Tests mit Gnuplot, Excel
und LibreOffice Calc zeigten, dass manche Programme hierfür sehr viel Rechenzeit benötigen oder im Falle von Excel schlicht mit einer Warnung abbrechen.
Vor diesem Hintergrund zeigt sich die leistungsstarke Matplotlib wesentlich
besser geeignet. Bei Testmessungen verlief die Darstellung und Bereichsauswahl konstant flüssig.
Als Möglichkeit zum Export der Messdaten in andere Auswertungsprogramme und zur Archivierung kann eine CSV Datei erstellt werden. Es handelt sich
um eine Textdatei, in die Daten mit simpler Konvention geschrieben werden
I = NI ·
2
ASCII STX: Wert 02h
30
3 Implementierung
können. Die erzeugten Dateien enthalten eine Kopfzeile mit den Spaltenüberschriften, die restlichen Zeilen enthalten durch Semikolon getrennte Zahlenwerte. Abb. 3.12 zeigt ein Minimalbeispiel.
Time(s);Voltage(V);Current(mA);Power(mW)
0.00000;2.39108137;73.82745983;176.52746379
Abbildung 3.12: Aufbau CSV Datei
Neben direkt über UART übertragenen Messwerten können mit dem Programm auch auf einer SD Card gespeicherte Messreihen ausgewertet werden.
Das Programm öffnet über die SD Card Klasse die entsprechende Gerätedatei (z.B. /dev/sdc) und liest die in 3.2.3 beschriebene Messreihen Tabelle. Die
in der Tabelle eingetragenen Messreihen werden dem Nutzer nummeriert in
einer Liste angezeigt und bei Auswahl einer Messreihe die zugehörigen Messwerte von der Speicherkarte gelesen und verarbeitet. Es finden dabei mehrere
Tests auf Validität der Daten auf der Speicherkarte statt. Zunächst wird überprüft ob sich ein Marker “MYFS“ an der vorgesehenen Stelle befindet und ob
das Feld “Anzahl Datenreihen“ einen sinnvollen Wert enthält. Damit wird sichergestellt, dass auf dem Speichermedium überhaupt eine Messreihen Tabelle
existiert. Weiterhin wird immer geprüft, ob die Adresse des letzten Blocks einer Datenreihe hinter der Anfangsadresse liegt und dass sich Endmarker nur
innerhalb des letzten Blocks befinden.
31
4 Benutzungshinweise
In diesem Kapitel wird eine kurze Anleitung zur richtigen Benutzung des Messsystems gegeben. Es ist in Schritte gegliedert, um ein schnelles Nachschlagen
des Anwenders zu vereinfachen.
4.1 Auswahl des Shuntwiderstands
Zunächst muss eine Abschätzung getroffen werden, welche maximale Stromstärke gemessen werden soll. Bei Leistungsmessung an einem Sensorsystem
handelt es sich um die Stromstärke, die das Objekt von seiner Stromversorgung
bezieht. Diese Stromstärke fließt auch durch den Shuntwiderstand des Messsystems und der Widerstandswert muss an den zu erwartenden Wert angepasst
sein. Ist der Widerstandswert zu hoch für die auftretende Stromstärke, fällt
eine zu hohe Spannung über dem Shuntwiderstand ab. Die verstärkte Spannung liegt möglicherweise oberhalb des messbaren Bereichs des Mikrocontrollers oder es wird sogar die maximal zulässige Verlustleistung am Widerstand
überschritten. Dies kann zu einer Beschädigung des Messwiderstands oder von
anderen Teilen des Messsystems führen.
Ist die erwartete Stromstärke sehr klein, kann diese mit einem zu klein gewählten Shuntwiderstand nicht messbar sein. Der Shunt Monitor INA195 benötigt als Eingangsspannung Usense mindestens 5 mV um am Ausgang den
korrekt verstärkten Wert zu liefern. Die aufgenommene Uout − Uin Kennlinie
zeigte zwar bereits ab 1 mV Linearität, doch durch Variation bei Bauteilen
muss dies nicht garantiert sein.
Nach den Gleichungen 4.1 und 4.2 wurde die in Abb. 4.1 dargestellte Tabelle erstellt, welche die Grenzwerte für verschiedene Präzisionswiderstände
beinhaltet.
Imess,max =
1
3, 3V
1
Umess,max
·
=
·
VIN A195 RShunt
100 RShunt
(4.1)
Usense,min
5mV
=
RShunt
RShunt
(4.2)
Imess,min =
32
4 Benutzungshinweise
Widerstand
0, 3Ω ± 1%
3Ω ± 1%
30Ω ± 1%
Ptot
Imess
5W
16,7 .. 110 mA
600 mW 1,67 .. 11,0 mA
500 mW 0,167 .. 1,10 mA
Abbildung 4.1: Dimensionierung Shunt Widerstand
4.2 Auswahl der Abtastrate
Bei kurzen Messungen sollte mit der maximalen Abtastrate von 9,2 kS/s gemessen werden. Die Abtastrate legt fest welche kürzeste Änderung der Eingangsgrößen noch erfasst wird. Die Zeitdauer ergibt sich nach:
tmin = 2 ·
1
fSample
(4.3)
Für 9,2 kS/s liegt diese Grenze bei 217 µs.
Bei Langzeitmessungen sollte die Abtastrate verringert werden um die Datenmenge der aufgenommenen Messdaten zu begrenzen. Bei maximaler Abtastrate steigt die Rohdatenmenge mit folgender Rate:
R = 24Bit · 9200Hz = 220800Bit/s = 26, 95KB/s
(4.4)
Es ist anzumerken, dass eine Textdatei (bzw. CSV), in der diese Daten gespeichert werden, wesentlich schneller wächst, da nicht vorzeichenlose Binärwerte
abgelegt werden, sondern die Dezimalzahlen in einem Zeichensatz wie ASCII kodiert werden. Im Auswertungsprogramm macht sich dieser Effekt noch
deutlicher bemerkbar. In die CSV Dateien werden die Werte als Kommazahlen
geschrieben, wobei jede Ziffer der Zahlen ein Zeichen darstellt, für dass kodiert
ein Byte benötigt wird.
4.3 Verbinden der Messleitungen
Es müssen 3 Verbindungen zwischen dem Messsystem und dem Messobjekt
hergestellt werden. Die Shunt+ Messleitung wird mit dem Plus Pol der Spannungsversorgung des zu messenden Gerätes verbunden, die Shunt- Messleitung
mit dem Plus Anschluss des Gerätes. Damit ist der Shuntwiderstand zur High
Side Messung der Stromstärke in den Zuleitungspfad eingesetzt. Die Ref- Messleitung wird mit dem Minus Pol bzw. der Masse verbunden. Die Messung des
Spannungsabfalls erfolgt von Shunt- nach Ref-.
33
4 Benutzungshinweise
Abbildung 4.2: Verbindung mit dem Messobjekt
Mit dem Auswertungsrechner kann entweder direkt über USB kommuniziert
werden oder indirekt, indem die Messdaten auf einer SD Card gespeichert und
vom Rechner ausgelesen werden. Soll mit hoher Abtastrate gemessen werden,
ist die Verbindung zum PC mit einem Mikro USB Kabel herzustellen. Soll
ohne PC gemessen werden, muss vor dem Einschalten des Messsystems eine
SD Card in den Speicherkarteneinschub gesteckt werden.
4.4 Messung
Der eingestellte Betriebsmodus kann mit der zweifarbigen LED überprüft und
mit dem grünen Taster gewechselt werden. Ist keine SD Card vorhanden, kann
dieser Modus nicht ausgewählt werden. Im UART Modus muss am PC die
Auswertungssoftware gestartet und in dieser die UART Schnittstelle geöffnet
werden. Das Starten und Stoppen der Messung erfolgt mit dem gelben Taster.
4.5 Auswertung
Im UART Modus können nach Stoppen der Messung die aufgenommenen Daten mit dem Button “Plot“ in einem Graphen über der Zeit dargestellt werden.
Im unten rechts zu findenden Drop-Down Menü lässt sich die Darstellung zwischen Spannungs-, Stromstärke und Leistungswerten umschalten. Mit “Export
to CSV“ werden diese drei Datenreihen zur weiteren Auswertung in eine kommaseparierte Datei geschrieben. Der “Clear Data“ Button bereitet eine neue
Messung vor und verwirft die zuletzt empfangenen Daten.
Wurden Messdaten auf eine SD Card geschrieben, lassen sie sich im zweiten
Karteireiter des Auswertungsprogramms importieren. Die SD Card muss in
einem Kartenleser an den PC angeschlossen werden und kann dann geöffnet
werden. Die enthaltenen Datenreihen werden rechts nummeriert aufgelistet und
lassen sich per Mausklick auswählen. Dann erst erfolgt die Übertragung der
34
4 Benutzungshinweise
Daten von der SD Card und sie können gleich wie im UART Modus ausgewertet
werden.
35
5 Beispielmessung an
Temperaturlogger
Als Beispiel für mit dem Messsystem mögliche Untersuchungen soll die Analyse eines Datenloggers für Temperaturwerte dienen. Der Datenlogger besteht
im wesentlichen aus einem digitalen Temperatursensor vom Typ TMP275 und
einem MSP430 Mikrocontroller, der diesen ausliest. Für die Messung wurde
der Datenlogger an einem Labornetzteil betrieben und zwischen Netzteil und
Datenlogger das Messsystem angeschlossen. Es wurde für ca. 20 Sekunden im
UART Modus gemessen und eine Auswertung mit der entwickelten Software
durchgeführt.
Abbildung 5.1: Abgeschlossene Beispielmessung
Ein Aufnahme des Programmfensters direkt nach der Messung mit dem Graph
36
5 Beispielmessung an Temperaturlogger
der gemessenen Stromstärke über der gesamten Messzeit ist in Abb. 5.1 dargestellt. Da die durch das Netzteil erzeugte Versorgungsspannung bei der geringen Belastung durch den Datenlogger über den Messzeitraum konstant ist
und daher der Verlauf der Leistungskurve dem der Stromstärke gleicht, kann
die Auswertung am Stromstärkegraph vorgenommen werden. Anhand der sich
ändernden Stromstärke und Leistungsaufnahme des Datenloggers lässt sich
dessen Arbeitsweise leicht nachvollziehen und es sind gut die verschiedenen
aktiven Phasen erkennbar. Der Mikrocontroller liest den Sensor 12 mal über
dessen I2 C Schnittstelle aus und legt die Werte im Arbeitsspeicher ab. Dieses
periodische Auslesen ist im Graph an den wiederholten “kleinen“ Peaks im Abstand von 2 Sekunden erkennbar. Auf die Erfassung aller 12 Peaks wurde bei
der in Abb. 5.1 dargestellten Messung verzichtet. Nach der Übertragung des
12. Wertes versendet der Mikrocontroller die aggregierten Daten über einen
UART, was im Graphen durch den “großen“ Peak repräsentiert ist. Umschlossen sind diese Ereignisse von längeren Phasen geringer Leistungsaufnahme.
Abbildung 5.2: Auslesen des Temperatursensors
Abbildung 5.2 zeigt die Vergrößerung von einem der “kleinen“ Peaks. Der
schnelle Anstieg markiert den Zeitpunkt, zu dem der Mikrocontroller von einem Timer ausgelöst aus dem Low Power Mode erwacht und vorher abgeschaltete Module wieder in Betrieb nimmt. Nachdem der Temperaturwert ausgelesen und zwischengespeichert ist kehrt er in den Stromsparmodus zurück. Es
fällt auf, dass nach dieser Aktivität die vom Temperaturlogger aufgenommene
Stromstärke noch für 200 ms auf einem um 50 µA erhöhten Plateau bleibt. In
diesem Zeitraum führt der Sensor die eigentliche Temperaturerfassung durch.
Die Messung erfolgt automatisch nach dem Auslesen des alten Wertes und der
37
5 Beispielmessung an Temperaturlogger
TMP275 hält den ermittelten Wert dann bis zur nächsten Abfrage vor.
Eine weitere zeitlich genauere Darstellung des Peaks ist in Abb. 5.3 abgebildet. Der Mikrocontroller aktiviert seine CPU, wobei sich der Haupttakt
im Bereich einiger hundert Kilohertz bewegt. Zusätzlich wird die I2 C Übertragung initiiert und die fließende Stromstärke steigt steil bis auf 470 µA.
Abbildung 5.3: Auslesen des Temperatursensors Detail
Abbildung 5.4: Controller verschickt gebündelte Werte per UART
In Abbildung 5.4 ist der Zeitraum um den “großen“ Peak dargestellt. Im direkten Vergleich zur vorherigen Abbildung muss die unterschiedliche Einteilung
der Stromstärkenachse beachtet werden. Der Mikrocontroller holt in dieser
38
5 Beispielmessung an Temperaturlogger
Phase zunächst wie oben beschrieben den letzten Temperaturwert vom Sensor, deaktiviert sich aber nicht sofort, sondern initiiert eine Übertragung der
gesammelten Daten über den UART. Hierbei wird der Haupttakt von einem 8
MHz Quarz gespeist, was sich in einer Gesamtstromstärke von maximal 3,56
mA bemerkbar macht. Nach abgeschlossener Übertragung wird wieder in den
Low Power Mode umgeschaltet und die Kurve fällt steil ab.
39
6 Verbesserungsmöglichkeiten
Auch wenn das entworfene Messsystem in der beschriebenen Form gut nutzbar
ist, lassen sich einige Möglichkeiten zur Verbesserung des Systems nennen,
die während der Entwicklung und des Tests des Prototypen deutlich wurden.
Bei einer Revision könnten damit unter Umständen die Einsatzmöglichkeiten
erweitert werden.
Eine signifikante Steigerung der Abtastrate lässt sich unter Umständen mit
der Nutzung des im MSP430 integrierten Direct Memory Access Controllers
erreichen. Diese Steigerung lässt sich dann erreichen wenn die Interrupt Service Routine für das Umkopieren der ADC Werte komplett entfallen kann
weil deren Aufgabe im Hintergrund vom DMA Controller übernommen wird.
Zusätzlich muss eine Lösung gefunden werden, mit der der Repeat Sequence
of Channels Modus verwendet werden kann, bei der Spannungs- und Stromsample ebenfalls zeitlich kurz hintereinander ausgelöst werden. Sonst besteht
weiterhin die in 3.2.1 beschriebene Notwendigkeit in der ISR das Steuerbit
ENC neu zu setzen.
Etwas umständlich für den Nutzer ist die Auswahl des Shuntwiderstandes.
Es ist denkbar mehrere Widerstände mit gestaffeltem Widerstandswert auf
der Platine einzusetzen, welche über einen Multiplexer oder eine vergleichbare
Schaltung vom Mikrocontroller ausgewählt werden können. Damit ließe sich
in Software eine automatische Bereichsauswahl implementieren, die langsam
Widerstände mit höherem Widerstandswerte wählt bis eine Detektion der fließenden Stromstärke möglich wird.
Derzeit ist die Messung auf Systeme mit einer Versorgungsspannung von
maximal 3,3 V beschränkt. Die Ursache ist der im MSP430 integrierte Analog
Digital Wandler, der nur Referenzspannungen zulässt, die die eigene Versorgungsspannung nicht überschreiten. Soll ein System mit höherer Spannung
untersucht werden, muss diese über einen Spannungsteiler in den zulässigen
Bereich gebracht werden. Alternativ könnte für diese Fälle ein anderer ADC
verwendet oder das bestehende System für reine Stromstärkemessung angepasst werden. Oft würde dies bei kurzen Messzeiträumen für eine Analyse ausreichen, da die Spannung in vielen Fällen keiner beobachtbaren Schwankung
unterliegt. Es wäre es nötig, die Leiterbahn, die die Spannung and den Eingangspin A7 führt zu unterbrechen. Im Layout ist dies bereits berücksichtigt.
40
6 Verbesserungsmöglichkeiten
Im Pfad zum Spannungseingangspin ist ein Null-Ohm Widerstand (R29) plaziert, der für ein Exemplar des Systems zur reinen Stromstärkemessung nicht
bestückt wird. Dann könnte über die PC Software das Messsystem umkonfiguriert werden, dass nur noch die Stromstärkewerte aufgenommen werden.
Dieser neue Modus hätte zwei Vorteile. Es könnten vorher nicht untersuchbare
Systeme verbunden werden und der durch das Weglassen der Spannungswerte
halbierte Datendurchsatz könnte eine höhere Samplingrate für die Stromstärkewerte ermöglichen.
Bei der Implementierung der Auswertungssoftware musste auf eine nützliche Funktion verzichtet werden. Es war geplant den Graphen während der
Messung kontinuierlich aufzubauen bzw. diesen ständig zu aktualisieren. Beim
Test mit der Live Graphendarstellung zeigte sich, dass die dadurch erhöhte Auslastung des PCs einen gelegentlichen Pufferüberlauf beim Messdatenempfang verursachte. Es wird dabei die Abfrage des USB Treibers durch die
Berechnung der Darstellung verzögert und ein Durchgangspuffer im Treiber
scheint vollzulaufen. Dieser Effekt wurde mit kurzen Testprogrammen für PC
und Mikrocontroller weiter untersucht. Der Mikrocontroller wurde so programmiert, dass mit maximaler Geschwindigkeit Daten über den UART an den PC
geschickt werden. Die Testdaten wurden dabei durch einfaches Hochzählen generiert, womit für das Empfängerprogramm Datenverlust dadurch erkennbar
ist, dass eine Lücke in der Zahlenreihe entsteht. Die nicht empfangenen Datenpakete wurden gezählt und der Prozentsatz zur Gesamtpaketzahl angegeben.
Datenverlust trat dabei nur auf wenn die empfangenen Zahlen in der Konsole
ausgegeben wurden. Schon diese Aktivität verzögert die USB Abfrage und löst
bei den schnell eintreffenden Daten einen Pufferüberlauf aus.
Trotzdem sollte die Live Darstellung möglich sein. Die Menge an darzustellenden Messpunkten muss dafür geschickt beschränkt werden. So ist es z.B.
denkbar zunächst nur jeden 10ten Wert zu zeichnen oder zu einem gegebenen
Zeitpunkt immer nur die Messwerte der letzten 5 Sekunden im Live Graph
darzustellen.
41
7 Zusammenfassung
In der Arbeit wurde ein System zur Leistungsmessung an batteriebetriebenen
Sensorsystemen konzipiert und entwickelt. Realisiert wurden dabei Hardware,
Software für den eingesetzten Mikrocontroller und eine plattformübergreifende
PC Software. Damit ist eine komplette Lösung für Messung und Auswertung
entstanden, die sich vielseitig einsetzen lässt.
Das Messsystem kann zur Untersuchung von schnellen Änderungen der Leistungsaufnahme eines Messobjekts verwendet werden. In diesem Betriebsmodus
ist es mit einem Auswertungs-PC gekoppelt, der die Messdaten speichert und
darstellt. Eine Langzeitmessung kann durch die Verwendung einer SD Card
autark, also ohne die Verbindung zu einem PC, durchgeführt werden.
Bei der Implementierung des aufgestellten Konzepts mussten Lösungen für
die effektive Bewältigung der auftretenden Datenmengen und die strikte Einhaltung der konstanten Samplingrate mit den knappen Ressourcen des Mikrocontrollers gefunden werden.
Das System ist auf verschiedene Messbereiche und Abtastraten anpass- und
umkonfigurierbar und eignet sich so gut als Hilfsmittel bei der Programmierung von Sensor- und Mikrocontrollersystemen, bei denen eine Optimierung
auf geringen Energieverbrauch erforderlich ist. Ebenfalls nützlich kann das
Messsystem bei der Überprüfung von Leistungsbeschreibungen kommerziell
vertriebenener, autarker Systeme z.B. im Bereich Heimautomatisierung sein.
42
Literaturverzeichnis
[1] Chan ELM. How to use mmc/sdc, 2012. [Online; accessed 15-August-2012].
[2] SD Group. SD Specifications - Part 1 Physical Layer Simplified Specification, Mai 2010. [Version 3.01].
[3] Texas Instruments. Msp430x2xx family - user’s guide. http://www.ti.
com/litv/pdf/slau144i, Dezember 2004. [Rev. I 01/2012].
[4] Texas Instruments. Msp430f241x, msp430f261x mixed signal microcontroller. http://www.ti.com/litv/pdf/slas541k, Juni 2007. [Rev. K
11/2012].
[5] Wikimedia. File:minidin-4 connector pinout.svg — wikimedia commons,
2006. [Online; accessed 04-December-2012].
[6] Wikipedia. Secure digital — wikipedia, the free encyclopedia, 2012. [Online; accessed 15-August-2012].
43
Selbstständigkeitserklärung
Hiermit erkläre ich, daß ich die vorliegende Arbeit selbstständig angefertigt,
nicht anderweitig zu Prüfungszwecken vorgelegt und keine anderen als die
angegebenen Hilfsmittel verwendet habe. Sämtliche wissentlich verwendete
Textausschnitte, Zitate oder Inhalte anderer Verfasser wurden ausdrücklich
als solche gekennzeichnet.
Chemnitz, den 22. Februar 2013
Luis Lutnyk
44
Anhang
45
E
11.12.12
letzte Änderung: 11.12.12
1
2
Name:
Datum:
Maßstab:
3
50,00%
4
Projekt:
5
6
7
E
D
D
7
C
6
C
5
B
4
B
3
A
2
A
1
3
IC5
Projekt:
5
6
7
E
D
C
11.12.12
letzte Änderung: 11.12.12
1
2
Name:
Datum:
Maßstab:
50,00%
LTC4412
Vin
GND
CTL
4
SENSE
GATE
STAT
5
6
7
E
D
C
B
4
B
3
A
2
A
1
E
11.12.12
letzte Änderung: 11.12.12
1
2
Name:
Datum:
Maßstab:
3
50,00%
4
Projekt:
5
6
7
E
D
D
7
C
6
C
5
B
4
B
3
A
2
A
1
E
11.12.12
letzte Änderung: 11.12.12
1
2
Name:
Datum:
Maßstab:
3
50,00%
4
Projekt:
5
6
7
E
D
D
7
C
6
C
5
B
4
B
3
A
2
A
1
Verzeichnisstruktur CD
|-|
|
|
|
|
|
|
|
|
|
|
|-|
|
|
|-|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-|
|-|
|
|
|
|
|
|
|-|
|
|
|
|-|-‘--
datasheets
|-- ti
|
|-- ina195.pdf
|
|-- msp430f1611.pdf
|
|-- msp430f2618.pdf
|
|-- slau049f.pdf
|
‘-- slau144i.pdf
|-- 3534f.pdf
|-- 405642f.pdf
|-- 4412fa.pdf
|-- DS_FT232R.pdf
‘-- sdcard_Physical_Layer.pdf
ftdi_drivers
|-- CDM 2.08.24 WHQL Certified.zip
|-- FTDIUSBSerialDriver_v2_2_18.dmg
‘-- FT_Prog v2.6.8.zip
msp430
|-- adc12_init.c
|-- error_led.c
|-- flash_settings.c
|-- isrs.c
|-- main.c
|-- Makefile
|-- msp430.elf
|-- msp430_test.h
|-- sd_card.c
|-- sd_card.h
|-- send2serial.c
|-- set_rate.c
|-- start_stop.c
‘-- toggle_mode.c
pictures_pcb
|-- ...
receiver
|-- csv_example
|
‘-- tempsensi2c.csv
|-- mplwidget.py
|-- README.txt
|-- receiver_gui.py
|-- receiver.py
‘-- receiver_tab.ui
schematics
|-- libs_2012_12.7z
|-- msp_mess_Rev.0.1.T3000
|-- Schaltplan_msp_mess_Rev01.pdf
‘-- stueckliste.xls
gnuplot.sh
mails_dlbeer_on_mspdebug.pdf
studienarbeit.pdf
50
Herunterladen