PDF, 7,1 MB - emsp.tu

Werbung
Technische Universität Berlin
Projekt Elektronik SoSe 2009
Projekt: Habitatsteuerung
Abschlussbericht
Teilnehmer:
Louai Barake, Fabian Cordes,
Michael Döring, Mohamed Goni,
Bilal Khaled, Miruna Raceala,
Felix Schmidt, Sebastian Tiesler
Betreuer:
Janis Döbler
17. Juli 2009
Inhaltsverzeichnis
I
1
Projektübersicht
1
allgemeine Projektbeschreibung
1
1.1
1.2
1
1
Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Projektidee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
angestrebte Funktionen
3
3
Projektstruktur
4
4
Arbeits- und Zeitplan
5
II
5
Komponenten
MCU - Master Control Unit
5.1
5.2
5.3
5.4
6
6
Hardware . . . . . . . . . . . . . . . . . . . . .
5.1.1 SD/MMC Kartenslot . . . . . . . . . . .
5.1.2 LC Display und Port . . . . . . . . . . .
5.1.3 Bedienpanel . . . . . . . . . . . . . . . .
5.1.4 RS232 Schnittstelle . . . . . . . . . . . .
5.1.5 ISP Programmierport . . . . . . . . . . .
5.1.6 Externer Quartzresonator . . . . . . . . .
5.1.7 RS485 Schnittstelle . . . . . . . . . . . .
5.1.8 GPIO (General purpose I/O) Schnittstelle
5.1.9 DCF-77 Modul . . . . . . . . . . . . . .
Firmware . . . . . . . . . . . . . . . . . . . . .
5.2.1 Scheduler . . . . . . . . . . . . . . . . .
5.2.2 Fenster und Nachrichtencodes . . . . . .
5.2.3 Verwaltung der Event-Handler . . . . . .
5.2.4 Zeichensystem . . . . . . . . . . . . . .
5.2.5 Fensterspezifische Zeichenfunktionen . .
5.2.6 Eingabe . . . . . . . . . . . . . . . . . .
Regelung . . . . . . . . . . . . . . . . . . . . .
Logging . . . . . . . . . . . . . . . . . . . . . .
5.4.1 Steuerlogik . . . . . . . . . . . . . . . .
5.4.2 Regler . . . . . . . . . . . . . . . . . . .
6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
6
7
8
8
8
9
9
9
10
13
13
14
15
17
17
18
18
19
19
19
Bussystem
20
6.1
6.2
6.3
20
20
22
Busspezifikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Beschreibung des Grundmoduls . . . . . . . . . . . . . . . . . . . . . . . . .
Software für das Grundmodul . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3.1
6.3.2
6.3.3
6.3.4
6.3.5
7
7.2
7.3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Temperaturmessung . . . . . . .
7.1.1 Einleitung . . . . . . . .
7.1.2 Schaltungsbeschreibung
Luftfeuchtemessung . . . . . . .
Bodenfeuchtemessung . . . . .
7.3.1 Schaltungsentwurf . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8.3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Lichtsteuerung . . . . . . . . . . . . . . . . . . . .
Heiz-/Kühlsteuerung . . . . . . . . . . . . . . . . .
8.2.1 Einleitung . . . . . . . . . . . . . . . . . . .
8.2.2 Aufbau und Struktur des Moduls (Hardware)
8.2.3 Regelung (Software) . . . . . . . . . . . . .
Futterklappe . . . . . . . . . . . . . . . . . . . . . .
8.3.1 Einleitung . . . . . . . . . . . . . . . . . . .
8.3.2 Beschreibung der Schaltung . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
41
50
50
50
59
63
63
63
I
A Entwurf der Reglerstrecke
I
B Schaltpläne/Layouts
Master Control Unit . . . . . . .
Busteilnehmergrundmodul . . .
Busteilnehmer Piggyback Board
Temperatursensor . . . . . . . .
Luftfeuchtemessung . . . . . . .
Bodenfeuchtesensor . . . . . . .
Lichtsteuerung . . . . . . . . .
Heiz-/Kühlelement . . . . . . .
Futterklappe . . . . . . . . . . .
26
26
27
31
34
38
41
Anhang
B.1
B.2
B.3
B.4
B.5
B.6
B.7
B.8
B.9
22
23
23
24
24
26
.
.
.
.
.
.
Aktuatoren
8.1
8.2
III
.
.
.
.
.
Sensoren
7.1
8
Grundstruktur . . . . . . . . . .
Beschreibung der Paketstruktur
Beschreibung der Enumeration .
Ablauf der Kommunikation . .
Softwareendbetrachtung . . . .
XI
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
XI
XIII
XV
XVI
XVIII
XX
XXI
XXIII
XXV
C Abbildungsverzeichnis
XXVII
D Referenzen
XXIX
1
ALLGEMEINE PROJEKTBESCHREIBUNG
Teil I
Projektübersicht
1 allgemeine Projektbeschreibung
1.1 Einleitung
Die Gruppe ele21 hat sich zur Aufgabe gemacht, eine Terrarien- bzw. Habitatsteuerung zu entwickeln. Diese Begriffe werden im Folgenden synonym verwendet.
Doch was ist das überhaupt? Wikipedia, als erste Anlaufstelle, gibt dazu folgende Auskunft:
”Terrarien (v. lat. terra: ”Land, Erde”) sind Behälter und Anlagen, die Terrarianer zur Haltung
verschiedenster Tiere und Pflanzen betreiben. [...] Oft wird der Lebensraum der gepflegten Tiere
oder Pflanzen im Terrarium auf kleinerem Raum nachgebildet. Der Terrarianer bemüht sich um
angepasste Klimatisierung: Temperatur, Luftfeuchtigkeit, Wasserwerte und Beleuchtung werden gesteuert, inklusive ihrer jahreszeitlichen und täglichen Schwankungen.” Wikipedia vom
22.04.09 17.21Uhr)
Eine Habitatsteuerung dient demnach im Allgemeinen dazu diese Klimaanpassung automatisch
vorzunehmen, um für die im Terrarium befindlichen Lebewesen die in ihrem ursprünglichen
Lebensraum herrschenden Umweltfaktoren zu simulieren. Der Terrarianer braucht sich keine
Gedanken mehr darüber zu machen, da dies zentral über eine automatische Steuerung geschehen
soll.
Weiterhin ist hierbei nicht nur die Steuerung der Klimadaten interessant. Diese sollten nach
Möglichkeit auch gespeichert und später zu Auswertung wiedergegeben werden können.
Im Extremfall könnte man sich das Terrarium auch als ”Klimazelle” vorstellen, in dem auf
Knopfdruck ein völlig anderer Lebensraum erzeugt wird, wie z.B. der Übergang vom immerfeuchten Regenwald in ein Sahara-ähnliches Wüstenklima.
1.2 Projektidee
Die Grundidee besteht darin ein modulares und vielseitiges Steuerungssystem zu entwickeln, das
dem Anwender später eine einfache Anpassung an seine Bedürfnisse ermöglicht. Desweiteren ist
es auch denkbar diese Steuerung beispielsweise für die Aufzucht von Pflanzen zu modifizieren
oder mit dem erlangten Wissen ein eigenes Hausbussystem aufzubauen.
In Abbildung 1 ist eine Designstudie zur Illustration zu sehen und in Abbildung 2 ein möglicher
Beispielaufbau. Es handelt sich hierbei um ein Terrarium für einen Wüstenbewohner.
Im Folgenden sollen kurz die enthaltenen Komponenten vorgestellt werden, um dem Leser einen
schnellen Überblick zu ermöglichen, näheres ist den entsprechenden Teilen in diesem Bericht
zu finden. Oben in der Mitte des Bildes sieht man verschiedene Lampen. Die Gelbe stellt exemplarisch die Grundbeleuchtung dar, die Blaue zusätzlich benötigtes UV-Licht. Rechts daneben
ist eine Vorrichtung zum Heizen und/oder Kühlen vorgesehen, um eine dem Lebensraum entsprechende Temperatur zu erzeugen. Links oben ist ein Sprühsystem abgebildet, welches zur
1
1.2
Projektidee
1
ALLGEMEINE PROJEKTBESCHREIBUNG
Abbildung 1: Designstudie
Abbildung 2: Beispielaufbau
2
2
ANGESTREBTE FUNKTIONEN
Feuchtigkeitsregulierung zum Einsatz kommt. Das Thermometer und der Wassertropfen stehen
exemplarisch für die Temperatur- und Feuchtigkeitssensoren, welche unterschiedlich für die Luft
und den Boden vorhanden sein sollten.
Das Strukturbild in Abbildung 3 zeigt den technischen Aufbau: Die MCU (Master Control Unit),
welche auch in der Designstudie gut zu erkennen ist, ist die allgemeine Steuereinheit. Hier laufen
alle Informationen zusammen, werden analysiert und es wird entsprechend reagiert. Sie enthält
die Ein- und Ausgabekomponenten in Form eines graphischen Displays, Drehencodern sowie
die Speicherung auf einer SD/MMC-Card. Als Zeitgeber ist ein DCF-77 Modul vorhanden. Diese Einheit ist über einen Bus auf RS485-Basis mit den Sensoren und Aktuatoren verbunden. Der
Bus soll in der Lage sein mit IDs die einzelnen Teilnehmer zu identifizieren. Es gibt Temperaturund zwei verschiedene Arten von Feuchtesensoren. Als Aktuatoren sind die Lichtsteuerung von
verschiedenen Lampenarten, eine Heiz-/Kühlsteuerung und eine Sprühanlage vorgesehen. Das
Besondere eines Bussystems ist die Möglichkeit es nahezu beliebig zu erweitern. So kann im
Prinzip eine beliebige Anzahl von Sensoren und Aktuatoren verwendet werden. Durch den modularen Aufbau der Busteilnehmer sind auch Erweiterungen und neue Module sehr leicht zu
realisieren.
+,-
1-"/%2
-"344
+"-
,)(./0&
!"#
;#1
"$%&'#()*
516
1&(=$%&(
> ?&@A&%/*B%'C6?DEEF
> G&HH).I&)*:'#J
> 3&BKLM.I&)*
> 3NHH=*/(2
> OOO
;B=*&)H(&L@&%'5PI*B/*$%&(
> G&)QB(.:RNLHB(.
> +)KL*
> +NS&%
> 5@ABH=.&0&%'C7&H/)=OOOF
> OOO
6$<&%
71898:#1;
Abbildung 3: Blockbild des Steuerungssystems
2 angestrebte Funktionen
Grundfunktionen
Grundfunktionen sind Funktionen die das Mindestziel des Projektes darstellen. Unsere Gruppe
hat sich hierbei auf folgende Grundfunktionen verständigt:
• Sonnenauf-/untergangssimulation tagesabhängig
• Überwachung, Steuerung und Speicherung von Temperatur, Luftfeuchtigkeit
• vorgefertigte ”Klimaumgebungen”, mit der Möglichkeit der nachträglichen Modifizierung
3
3
PROJEKTSTRUKTUR
• Sensoren: Luft- und Bodentemperatur, Luft- und Bodenfeuchtigkeit
• Aktuatoren: Heizen/Kühlen, Lichtdimmung, Sprühsystem
• Master-/Slave-Bussystem
• modularer Aufbau
• Master zur Steuerung des gesamten Systems, enthält LC-Display, Eingabemöglichkeit,
SD-Speicher
• Slaves sind sämtliche Sensoren und Aktuatoren
Zusätzliche Funktionen
Zusatzfunktionen sind Funktionen, welche nicht unbedingt notwendig sind um das erstellte
Gerät sinnvoll zu betreiben. Diese Funktionen sind demnach als variabel anzusehen und werden unter Beachtung des Zeit- bzw. Budgetlimits realisiert. Unsere Gruppe hat hierbei folgende,
in der Priorität absteigend aufgezählte, Funktionen beschlossen:
• PCinterface über RS232 und/oder USB
• weitere Aktuatoren: Futterklappe
• weitere Sensoren: UV-Lichtsensor
• Bluetooth-Schnittstelle zur Datenkommunikation
• GSM-Modul zur Nutzerbenachrichtigung
• Ethernetanschluß über xport
• Regelung von mehr als einem Aktuator durch verschiedene Sensoren (abhängige Regelkreise)
3 Projektstruktur
Da das Projekt sehr kleingliedrig ist wurden die Aufgaben ebenso kleingliedrig verteilt. Jeder
Teilnehmer der Projektgruppe suchte sich einen Busteilnehmer heraus und bearbeitete diesen
nach seinen Vorstellungen bzw. nach Gruppendiskussionen und Anforderungen. Einzige Ausnahme bildet die MCU, sie wurde in großen Teilen von Fabian bearbeitet wobei ihn bei einzelnen Punkten unterschiedliche Gruppenmitglieder zur Hand gingen. Im Bericht ist daher jeder
Abschnitt durch den Namen des bearbeitenden Studenten gekennzeichnet.
4
4
ARBEITS- UND ZEITPLAN
4 Arbeits- und Zeitplan
Der Zeitplan folgt den Vorgaben des Merkblatts und wurde versucht vollständig einzuhalten.
5. Termin
19.05.09 Wandplakat, Zwischenbericht
6. Termin
26.05.09 Platinenlayouts
12. Termin
07.07.09 Präsentationsfolien, Homepage
Abschlussbericht:
13.07.09
Präsentationstermin: 15.07.09
5
5
MCU - MASTER CONTROL UNIT
Teil II
Komponenten
5 MCU - Master Control Unit
Fabian Cordes
Die Master-Einheit (MCU) dient zur Steuerung der der Busteilnehmer, und gleichzeitig zur Anzeige der Steuerdaten auf einem angeschlossenen LCD-Display. Die verschiedenen Komponenten werden im folgenden Erläutert.
5.1 Hardware
Bei den Layouts wurde darauf geachtet, die Massen der Peripheriegeräte von der (haupt)-Gerätemasse
zu trennen und nur stellenweise miteinander zu verbinden. Dies hat den Vorteil, dass Interferenzen zwischen zwei Peripheriegeräten unterdrückt werden.
Weiterhin wurde darauf Wert gelegt, eine möglichst geringe Zahl von Vias (Durchkontaktierungen) zu verwenden, da das Löten ebensolcher relativ viel Zeit in Anspruch nimmt. Nahezu
alle eingesetzten Komponenten sind SMD-Bauteile, da diese einerseits wesentlich kleiner sind,
andererseits erspart dies sehr, sehr viele Bohrlöcher.
Der Hauptprozessor muss mit einer Vielzahl von Peripheriegeräten kommunizieren. Es befinden
sich die folgenden Komponenten auf dem MCU-Board:
5.1.1 SD/MMC Kartenslot
Hier kann eine handelsübliche SD-Karte eingesetzt werden, auf der das Gerät Logging-Informationen
aufzeichnet. Eine solche Karte wird mit 3.3V betrieben, was es erforderlich macht, eine dementsprechende Versorgungsspannung bereitzustellen und die Signalpegel des AVRs anzupassen.
Für die Erzeugung der 3.3V Versorgungsspannung ist ein Spannungsregler vorgesehen, der von
der +5V-Versorgung gespeist wird. Die Beschaltung entspricht dem Datenblatt [20]. Bei einem
Betrieb an einem PC-Netzteil wird dieser redundant und sollte nicht bestückt werden.
Im zweiten Fall muss man unterscheiden zwischen der Umsetzung von 5V auf 3.3V, die sich
auf triviale Weise durch einen Spannungsteiler oder - besser, weil stabiler - mithilfe Z-Dioden
(dimensioniert auf einen Querstrom von ca. 2 mA) realisieren lässt, und einer Umsetzung von
3.3V auf 5V. Für diese verwendet die Schaltung einen 74HCT125D [10]. Dies ist ein Bustreiber,
der mit +5V versorgt wird, der aber laut diverser Quellen im Internet geeignet ist, die 3.3V-Pegel
korrekt zu identifizieren. Eine andere Möglichkeit ist, die Eingänge des AVR mit Widerständen
auf 5V zu legen, und dann über eine Diode die 3.3V-Seite gegen Masse ziehen lassen. Dies
wäre offensichtlich einfacher als die Verwendung eines integrierten Schaltkreises (keine Versorgungsspannung nötig, kleiner, ...). Nachteilig daran ist allerdings, dass so ein permanenter
Stromfluss unvermeidbar ist. Deshalb wird in der Schaltung trotzdem der 74*125 eingesetzt. Es
wird die Hardware-SPI-Schnittstelle des AVRs genutzt, wodurch ein Konflikt am SCK-Pin entsteht. Dieser wird durch einen 4066D [9] aufgelöst. Dies ist ein Schalter, der gesteuert durch die
6
5.1
Hardware
5
MCU - MASTER CONTROL UNIT
Resetleitung SCK entweder mit der SD-Karte oder mit dem ISP-Stecker verbindet. Die Schalter
sind aktiv bei HI-Pegeln an den Control-Eingängen (C). Es wird durch den 4049D [8] eine invertierte Version des Reset-Signals gebildet und zum durchschalten des jeweils anderen Schalters
verwendet. Da die Resetleitung während des Programmiervorganges auf LOW gezogen wird,
wird automatisch zwischen Programmiermodus und Zugriff auf die SD-Karte umgeschaltet. Im
Programmiermodus erhält die SD-Karte keine Signale an SCK.
5.1.2 LC Display und Port
Dieser besteht im wesentlichen aus einem Stecker für ein 20-Pol. Flachbandkabel und einem
Schaltregler zur Erzeugung der Kontrastspannung (+15V). Der Schaltregler wurde direkt aus
der Dokumentation des Bausatzes für eine Anschlussplatine des Displays von Pollin (Bezugsquelle siehe Schaltplan) übernommen, da die Bauteile hierfür bereits vorhanden sind. Das Display an sich ist ein Sharp M078CKA [13] mit einer Auflösung von 240x64 Pixeln. Der Zugriff
auf das Display erfolgt über einen IC vom Typ LH155 [12]. Der Displaycontroller bietet einen
integrierten Grafikpuffer, in den das darzustellende Bild geschrieben wird. Das dazu verwendete
Protokoll ist im Datenblatt des LH155 ausführlich dokumentiert. Da die Datenleitungen (D0..7)
Bidirektional arbeiten, d.h. beide Seiten als Ausgang fungieren können, sind Schutzwiderstände
(R14-21) vorgesehen. Es könnte sonst geschehen, dass durch einen Softwarefehler Displaycontroller oder AVR dauerhauft beschädigt werden. Es ist möglich, dass durch diese Widerstände ein
Fehlverhalten der Schaltung bedingt wird, weil die parasitären Kapazitäten innerhalb des Displaycontrollers nicht schnell genug umgeladen werden. Während der Entwicklung sollten die
Signaltimings deshalb konservativ angesetzt werden, im Release-Betrieb die Schutzwiderstände
durch Lötbrücken ersetzt und die Timings optimiert werden. Jedoch zeigte sich, dass eine zu
langsame Taktung der Zugriffe zu einem Versagen des Displaycontrollers führt. Bei Betrieb mit
den optimierten Parametern funktionierte die Kommunikation im weiteren Problemlos.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
GND
!RESB
!CSB
RS
M86
+5V
!WRB
!RDB
D0
D1
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
D2
D3
D4
D5
D6
D7
GND
+5V
+15V
GND
Tabelle 1: Pinbelegung des Displaysteckers (2x10P. Steckerleiste)
7
5.1
Hardware
5
MCU - MASTER CONTROL UNIT
5.1.3 Bedienpanel
Das Bedienpanel besteht aus zwei Drehencodern mit integrierten Tastern, zwei einzelnen Tastern
und einem ATMega 48. Der Mikroprozessor fragt kontinuierlich den Zustand der Taster ab, und
wandelt Tastendrücke in binäre Codes entsprechend Tabelle 9 im Abschnitt 5.2.6. Zur Anbindung des Bedienpanels wird der GPIO-Port auf der Hauptplatine verwendet. Desweiteren gibt
es eine LED mit mehreren Kanälen (RGB) die zur Anzeige des Systemstatus verwendet wird.
Im normalfall leuchtet die LED grün, im Fehlerfall rot. Tasten werden durch kurzes Aufleuchten
des blauen Kanals signalisiert.
Hauptplatine
12pol. Federleiste
1
2
3
4
5
6
7
8
9
10
11
12
↔
↔
↔
↔
↔
↔
↔
↔
↔
↔
↔
↔
↔
↔
Bedienplatine
10pol. Federleiste
1
4
2
3
5
6
7
8
N/C
N/C
10
9
Beschreibung
Beschreibung
+5V
GPIOSIG
IO 0
IO 1
IO 2
IO 3
IO 4
IO 5
IO 6
IO 7
GND
GPIOINT
Tabelle 2: Pinbelegung des Kabels zwischen Bedienpanel und Hauptplatine (2x3P.
Steckerleiste)
5.1.4 RS232 Schnittstelle
Wird mit einem MAX232 realisiert. Dies ist ein Pegelwandler, der die Pegel der RS232 Schnittstelle von (12V/-12V) zu (5V/0V) umsetzt. Der Schaltplan ist aus dem Datenblatt des MAX232
[16] übernommen. Es sind im wesentlichen nur einige Kapazitäten zur Stabilisierung der Versorungsspannung und der intern erzeugten Spannungen (+12V, -12V) notwendig. Es sind nicht
unbedingt notwendige Leitungen für RTS/CTS (Ready to send, Clear to send) vorgesehen, die
ein softwarebasiertes Handshaking ermöglichen, das die Zuverlässigkeit der übertragung stark
erhöht.
5.1.5 ISP Programmierport
über diesen Port kann die Firmware eingespielt werden. Die Beschaltung des ATMega128 Programmierinterfaces weicht vom Standard ab [23]. Anstatt der üblichen Beschaltung an MISO/MOSI werden die MISO/MOSI an PDI/PDO (Program Data In/Out) gelegt. Es ergibt sich
8
5.1
Hardware
5
MCU - MASTER CONTROL UNIT
ein Konflikt mit der RS485-Schnittstelle (RXD, TXD), der wieder über 4066 als Schalter aufgelöst wird. Ein 2-Pin-Header kann die Resetleitung auch manuell auslösen indem die Kontakte
überbrückt werden. Die Resetleitung ist wie üblich mit einem Widerstand (R13) auf +5V gezogen.
1.
2.
3.
4.
5.
6.
+5V
ISP MISO
ISP MOSI
ISP SCK
GND
ISP RESET
Tabelle 3: Pinbelegung des Programmiersteckers (2x3P. Steckerleiste)
5.1.6 Externer Quartzresonator
Aufgrund der vorraussichtlich hohen Last wird der AVR mit den maximal möglichen 16 MHz
betrieben.
5.1.7 RS485 Schnittstelle
Diese Schnittstelle dient zum Anschluss der Busleitungen. Es sind dafür +12V Versorgungsspannung, sowie die RXD/TXD Datenleitungen nach aussen geführt. Die +5V werden nicht
weiter verwendet. Als Transceiverchip wird ein MAX481CSA verwendet. Details zum Protokoll finden sich im Abschnitt 6.1.
1.
2.
3.
4.
5.
6.
7.
8.
9.
GND
RXD
GND
TXD
GND
+12V
GND
GND
+5V
Tabelle 4: Pinbelegung des RS485-Ports
5.1.8 GPIO (General purpose I/O) Schnittstelle
Diese Schnittstelle ist einerseits für den Anschluss von Tastern und anderen Bedienelementen
gedacht, kann aber zukünftig zum Anschluss von Erweiterungen verwendet werden. Dazu sind 8
9
5.1
Hardware
5
MCU - MASTER CONTROL UNIT
Parallele Datenleitungen (IO0..7) und zwei Steuerleitungen (IOSIG und IOINT) vorgesehen. Eine der Steuerleitungen (IOINT) führt auf einen Interrupteingang des AVR. Damit ist es möglich,
bspw. einen zweiten Prozessor anzubinden, und funktionalität dorthin auszulagern. Komplett
zufällig, aber sehr vorteilhaft ist, dass die GPIO-Pins gleichzeitig auch die Eingänge für JTAG
sind. So kann zum debuggen das JTAG-Interface benutzt werden. An den Datenleitungen sind
Schutzwiderstände vorgesehen, die aber notfalls durch Lötbrücken ersetzt werden können.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
+5V
GPIOSIG
IO0
IO1
IO2
IO3
IO4
IO5
IO6
IO7
GND
GPIOINT
Tabelle 5: Pinbelegung des GPIO-Ports (12P. Steckerleiste)
5.1.9 DCF-77 Modul
Michael Döring
Dieser Abschnitt befasst sich mit dem DCF77-Modul als Hardwarekomponente der MCU.
Die gesetzliche Zeit:
In der Bundesrepublik Deutschland ist die PTB1 in Braunschweig für die Darstellung und Verbreitung der offiziellen Zeitinformation zuständig.
Die Darstellung wird durch zwei Atomuhren erreicht, welche mit Hilfe einer Caesium-Fontäne
eine Wechselspannung der Frequenz 9,192631770 ·10−13 erzeugen. Das ist genau die Zeit eines übergangs zwischen den beiden Feinstrukturniveaus des Grundzustandes des Cs133-Atoms.
Durch Teilung erhält man daraus die Normfrequenzen und somit den Sekundentakt der gesetzlichen Zeit. Die relative Standardabweichung liegt bei nur etwa 10−15 , was einer Abweichung
von einer Sekunde in 20 Millionen Jahren entspricht.
Die Verbreitung dieser Zeitinformation geschieht auf verschiedenen Wegen. Sie wird per Tele-
1
Physikalisch-Technische Bundesanstalt
10
5.1
Hardware
5
MCU - MASTER CONTROL UNIT
fon2 , Fernsehuhr, Funk, GPS3 und Internet verbreitet. Interessant für uns ist davon die Verbreitung per Langwelle auf der Frequenz 77,5MHz.
Der Sender steht in der Nähe von Frankfurt am Main und ist seit 1959 in Betrieb. Er hat eine Sendeleistung von 50kW und ist im Umkreis von etwa 1500km zu empfangen. Als Sendeantenne dient ein 150m hoher Vertikalstrahler. Ein λ/2-Dipol müsste bei dieser Frequenz eine
Länge von 1935,5m haben. Bei günstigen Wetterbedingungen können auch viel größere Entfernungen erreicht werden. So ist es schon vorgekommen, daß Funkuhren in Indien oder Kanada
über Nacht auf die deutsche Zeit eingestellt wurden. Diese ”Weiterleitungen” führen mitunter
lokal bei normalen Wetterbedingungen zu einer 2. Welle, der sogenannten Raumwelle, welche
auch stärker sein kann als die kürzere Bodenwelle. Damit kann es auch im Tagesverlauf zu
Lauflängendifferenzen zwischen 600 bis 1200km kommen. In einigen hundert Kilometern kann
dennoch eine Genauigkeit von bis zu 0,1 ms erreicht werden. Außerdem wird der Langwelle
ein Phasenrauschen von 645,83 Hz aufmoduliert um eine genauere Bestimmung der Sekundenanfänge zu ermöglichen.
Das Sendeschema:
Der Sender strahlt ein kontinuierliches amplitudenmoduliertes Signal aus. Jede Sekunde, mit
Ausnahme der 59., wird auf 25% der Sendeleistung abgesenkt und zwar für 0,1s um eine 0 zu
kodieren und um 0,2s um eine 1 darzustellen. Es ergibt sich somit ein Rahmen der Länge von
59Bit.
2
Die Telefonansage wurde in österreich am 12. Mai 2009 abgeschaltet, so ist es nur eine Frage der Zeit wann es in
Deutschland soweit ist.
3
Global Positioning System
11
5.1
Hardware
5
MCU - MASTER CONTROL UNIT
Abbildung 4: Verlauf der Antennenspannung des DCF77 Senders
(über dem Signal: Länge der Absenkung; unterhalb des Signals: Sekunden) (Quelle:ptb.de)
Abbildung 5: Dekodierungsschema des Zeittelegramms (Quelle:ptb.de)
Das Empfangsmodul:
Wir haben uns entschieden ein kommerzielles Empfangsmodul zu nehmen, da der Aufbau eines
Geradesauslangwellenempfängers heutzutage nicht mehr zeitgemäß wäre. Es gibt relativ günstig
fertig bestückte Platinen, welche einen integrierten Empfänger mit einem 77,5MHz Empfangsquarz besitzen und somit eine hohe Trennschärfe haben. Diese werden zwischen 2V und 15V
betrieben und geben das empfangene Signal unkodiert aus. Es muss nun softwareseitig ausge-
12
5.2
Firmware
5
MCU - MASTER CONTROL UNIT
wertet werden.
Abbildung 6: kommerzielles DCF77-Modul
Der Zeitrahmen ist in Abbildung 5 dargestellt. Der Beginn einer neuen Minute (0) wird immer
mit einem 0Bit signalisiert. Dann folgen 15Bit welche derzeit kommerziell mit Wetterdaten kodiert werden. Dieser Teil ist verschlüsselt und kann nur gegen Lizenzgebühren dekodiert werden.
Jetzt folgt das sogenannte Rufbit, sowie Zeitzonen und Zeitumstellungsinformationen. Hieran
schliesst sich die eigentliche Zeitinformation in Form des BCD-Codes4 getrennt für Minute,
Stunde, Kalendertag, Wochentag, Monat und Jahr. Die beiden ersten und der darauffolgende
Teil bekommt zudem noch ein Paritätsprüfbit. Die letzte Sekunde (59) wird nicht gesendet und
dient der Synchronisation bzw. Rahmenerkennung.
Weitere und ausführlichere Informationen finden sich hierzu in [25], [26] sowie [3].
5.2 Firmware
Generell kann der Programmablauf in zwei Phasen geteilt werden, die Initialisierung nach dem
Systemstart und der normalen Ablauf während des Betriebs. Jede Teilkomponente muss vor dem
Betrieb initialisiert, was zu einer Baumförmigen Struktur der Funktionsaufrufe führt, in der jede
Teilkomponente alle Unterkomponenten, von denen sie abhängt,/ initialisiert.
Abbildung 7 zeigt ein recht allgemeines Schaltbild des Programmablaufes. Hauptfunktionen
sind die Anzeige und das Reglersystem mit dem darunter liegenden Bustreiber.
5.2.1 Scheduler
Der Start des Systems erfolgt durch den Aufruf von startScheduler(). In dieser Funktion ist die
Arbeitsschleife untergebracht, in der ständig überprüft wird, welche der Prozesse momentan Prozessorzeit benötigen. Der Fenstermanager bzw. die Funktionen zum neuzeichnen des Displays
werden immer aufgerufen. Ein zweiter, von Scheduler gesteuerter Prozess ist die Regelung. Um
eine einstellbare Zeitbasis zu erhalten, wird die Ausführung durch ein Flag verhindert, bis dieses aus einer Interruptroutine des Zeitmanagers aktiviert wird. Nun kann eventuell noch eine
gewisse Zeit vergehen, da der Interrupt zu jeder Zeit und somit auch mitten im Zeichenvorgang
auslösen kann. Am Beispiel des Reglerprozesses führt dieses zu Abweichungen vom gewollten
4
engl. Binary Coded Decimal
13
Firmware
Time management
System clock source
5
DCF-77
Decoder ISR
Scheduling
MSG_INIT
MSG_DRAW
Databyte:Line no.
Active
panels
Logging
Process
Scheduler
Logging
PanelCallback0
systemCallback
Message
Loop
MCU - MASTER CONTROL UNIT
Timer0
Initialization
System administration
Window
Manager
Realtime
clock
Panel Manager
Look-up Table with function pointers
5.2
Controlling
ctrlCallback
PanelCallback1
Logging
PanelCallback2
Control
Interface logic
Logging
Control
Manager
PanelCallback3
LogData
PanelCallback4
PanelCallback5
Matching
...
MSG_TERMINATE
RAM
Cache Channel 0
Cache Channel 1
CTRL0
RAM
CTRL1
RAM
CTRLN
Filter
Demultiplex
PanelCallbackN
File Buffer
GFXTools
GFX System
State data
i.E.
Current line
Input driver
●
8 Bit parallel w/
soft flow control
MSG_INPUT
Databyte: Key ID
EndPaint
BeginPaint
LCD Interface controller driver
●
Bus driver
Drawing function set
● gfxPutString
● gfxPutFrame
● gfxPutAxis
8 Bit parallel w/
soft flow control
soft control lines for register Access
Drawing Buffer
File System
EEPROM driver
●
Data sinks(1..K)
[Actuators]
MSG_ENUMRDY
MMC/SD driver
Data sources (1...J)
[Sensors]
MSG_ENUMNOTRDY
storage driver
storage driver
Write Device
ReadDevice
Fehlerbehandlung
z.B. bei Fehler aus der Liste nehmen
Configuration data
Log files
Abbildung 7: Blockschaltbild der MCU
Takt, der am Beispiel des Prozesses für die Regelung möglicherweise zu Rechenfehlern führen
kann. Aus diesem Grund sind sind alle Prozesse darauf ausgelegt, häufiger die Kontrolle an den
Scheduler zurückzugeben.
Zur Verwaltung der verschiedenen darzustellenden Elemente der Ein- und Ausgabe wurde ein
Nachrichtensystem gewählt. Mit Nachrichten kann effizient auf Tastendrücke reagiert und der
korrekte Empfänger automatisch ausgewählt werden. Empfänger müssen eine EventhandlerFunktion (callback”) bereitstellen, die als Parameter den Nachrichtencode und einen 16-Bit uint
als Datenwort erhält.
5.2.2 Fenster und Nachrichtencodes
Ein Fenster, bzw. im folgenden Panel ist eine logische Gruppierung von Bedienelementen, zum
Beispiel eine Menuleiste oder ein Dialogfeld mit Einstellungen. Die Kontrolle über das Verhalten obliegt dessen Event-Handlerfunktion. Dieser werden ein Nachrichtssymbol (Tabelle 6), und
ein Datenwort übergeben. Beides muss vom Event-Handler decodiert und behandelt (zum Beispiel eine änderung der Auswahl nach einem Tastendruck) werden. Als Rückgabewert werden
14
5.2
Firmware
5
Ziel
System
System
Reglerprozess
Alle Panels
Alle Panels
Symbol
MSG SHOW
MSG HIDE
MSG CLK
MSG NOP
MSG INIT
Alle Panels
MSG TERMINATE5
Alle Panels
Alle Panels
Einige Panels
Einige Panels
defaulthandler
MSG DRAW
MSG INPUT
MSG REFRESH
MSG SAVE
MSG ENUMRDY
defaulthandler
MSG ENUMNOTRDY
MCU - MASTER CONTROL UNIT
Bedeutung
Anzeigen eines Fensters
Verbergen eines Fensters
Zeittakt für Profile
Initialisierung vor dem
Anzeigen eines neuen
Fensters
Bevor ein Fenster geschlossen wird
Zeile zeichnen
Eingabe
Einstellungen neu laden
Einstellungen speichern
Enumeration abgeschlossen
Enumeration läuft
Datenwort
ID des Fenters
ID des Fensters
Aktueller Zeitindex
-
Zeilenindex
Zeichencode
-
Tabelle 6: Bedeutung der Nachrichtencodes
Code
0x00h
0x01h
Symbol
MSG UNTOUCHED
MSG PROCESSED
Bedeutung
Nicht angenommen
Angenommen
Tabelle 7: Antworten der Event handler
die in Tab. 7 gezeigten Werte erwartet.
5.2.3 Verwaltung der Event-Handler
Um Speicher zu sparen wurde auf eine dynamische Registrierung von Panels verzichtet. Da
ohnehin beim der Kompilation feststeht, welche Fenster es gibt, wurde stattdessen eine Liste mit
den Addressen der Eventhandler-Funktionen als Look-up-table im Programmspeicher abgelegt.
Die in panels.h definierten Symbole zeigen auf die Addresse in der Tabelle, auf die gesprungen
werden soll. Alle Panels können auf eine gemeinsam genutztes Zeichensystem zurückgreifen
oder selbst in den Zeilenpuffer schreiben.
Um das Menusystem in kompakte, leichter wartbare Einheiten zu zerlegen, wurde es in eine
hierarchische Baumstruktur 8 zerlegt, bei der jede Ebene für das öffnen von neuen Panels, nicht
aber für das Schließen zuständig ist. Im Hintergrund laufen ständig das Hintergrundpanel, und
die beiden Graphen.
15
5.2
Firmware
5
MCU - MASTER CONTROL UNIT
Abbildung 8: Struktur des Menusystems
16
5.2
Firmware
Symbol
PNL SYSTEM
PNL BOOT
PNL DATAGRAPH1
PNL DATAGRAPH2
PNL CAT1
PNL CAT2
PNL CAT3
PNL CAT4
PNL CAT1 OPT1
PNL CAT1 OPT2
PNL CAT2 OPT1
PNL CAT2 OPT2
PNL CAT3 OPT1
PNL CAT3 OPT2
PNL CAT4 OPT1
SYS CTRL
PNL BROADCAST
5
Code
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
...
0x10
0x11
...
0x20
0x21
...
0x30
0x31
...
0x40
...
0xF0
...
0xFF
MCU - MASTER CONTROL UNIT
Empfänger
Fensterverwaltung
Hintergrundpanel
Grafikpanel 1
Grafikpanel 2
Menu Änzeige”
Menu Ëinstellungen
Menu Tools”
Menu ”?”
...
Dialog zum Einstellen des linken Grafikpanels
Dialog zum Einstellen des rechten Grafikpanels
...
Dialog zum Einstellen der Reglerkanäle
Dialog zum Einstellen von Systemfkt. (Uhrzeit)
Reserviert ...
Profileditor
Dialog zur Anzeige der enumerierten Busteilnehmer
Reserviert ...
Version
Reserviert ...
Event-Handler des Reglersystems
Reserviert ...
Broadcast an alle Fenster (Abschnitt 5.2.6)
c-file
gfx.c
panel0.c
panel1.c
panel2.c
panel3.c
panel4.c
panel5.c
panel6.c
.
panel7.c
panel8.c
.
panel9.c
panel10.c
.
panel11.c
panel12.c
.
panel13.c
.
controlling.c
.
gfx.c
Tabelle 8: Empfänger für Nachrichten
5.2.4 Zeichensystem
Dem Fenster stehen verschiedene Zeichenfunktionen bereit, und es ist möglich, direkt in den
Zeilenpuffer zu schreiben. Das Zeichensystem ist so konzipiert, das zu beginn einer Zeichenvorgangs in einer Zeile die Funktion gfxBeginPaint(), und zum Ende die Funktion gfxEndPaint()
aufgerufen werden muss. Dieses System hat Zahlreiche Vorteile. Zum einen wird so ein Schutz
gegen parallele Ausführung (z.B. aus einer Interruptroutine) geschaffen, andererseits werden
dabei die Zustandsdaten (aktuelle Zeile, ...) synchronisiert. Dies bedeutet, dass das Fenster gar
nicht wissen muss, in welche Zeile gerade geschrieben wird, was dessen Struktur stark vereinfacht. Lediglich bei speziellen Zeichenfunktionen (z.B. für die Logging-Graphen) muss das
Fenster selbst die Zeile auswerten.
5.2.5 Fensterspezifische Zeichenfunktionen
Die Darstellung der Logdaten gestaltet sich aufgrund des zeilenweisen Zeichenvorgangs als
recht schwierig. Es müssen immer alle Einträge im Log, die sich in der gleichen Zeile befinden,
17
5.3
Regelung
5
MCU - MASTER CONTROL UNIT
gemeinsam gezeichnet werden. Im Cache-Puffer liegen die Daten jedoch nach der Zeit sortiert,
sodass für jede Zeile einmal der gesamte Puffer durchlaufen werden muss. Da im Sinne der
Modularität Abhängigkeiten der Grafikfunktionen von anderen Programmteilen möglichst vermieden werden sollen, wurde ein Teil dieser Funktionalität in der Zeichenfunktion des Panels
untergebracht. Dabei wird der Log-Speicher immer Zeilenweise abgetastet an den entsprechenden Stellen gezeichnet. Diese Abtastung ist im Abschnitt 5.4 erläutert.
5.2.6 Eingabe
Die Behandlung von Benutzereingaben wird durch die Nachrichtenschleife stark vereinfacht.
Eine Eingabe wird über eine Interruptleitung Signalisiert, woraufhin das GPIO-Register ausgelesen und eine Nachricht mit dem entsprechenden Zeichencode an das aktive Fenster versendet
wird.
0x01h
0x02h
0x03h
0x04h
0x05h
0x06h
0x07h
0x08h
KEY LEFT
KEY RIGHT
KEY UP
KEY DOWN
KEY SELECT
KEY ABORT
KEY BTNLR
KEY BTNUD
Tabelle 9: Nachrichtencodes gemäß input.h
Die Eingabeschicht besteht im Wesentlichen aus einer Interruptroutine für den Externen Interrupt 6, die von GPIOINT beim Auslösen einer Taste aktiviert wird. Die Interruptroutine liest die
unteren 6 Bit des GPIO-Ports und verschickt eine MSG INPUT-Nachricht mit einem Symbol
entsprechend Tab. 9 an das oberste Fenster. Verweigert dies die Annahme, so werden nacheinander alle anderen Fenster durchprobiert, das Bootpanel stellt die Defaultbehandlung. Die
Funktion der Taster ist für alle Fenster gleich oder zumindest ähnlich gehalten (vertikale Auswahl, horizontale Auswahl, OK/Bestätigen, Abbrechen). Die in den Drehencodern montierten
Taster werden nur im Profileditor ausgewertet.
5.3 Regelung
Der dieser Prozess umfasst eine im Quelltext einstellbare Anzahl von Reglern Jeder Regler
besitzt einen Parameterspeicher im EEPROM und eine Kopie dessen im Arbeitsspeicher, die
durch das MSG REFRESH-Event aus dem EEPROM geladen bzw erneuert wird. Jeder Regler
kann mit einer einstellbaren Zeitbasis ausgeführt werden, wobei diese natürlich das in dem Abschnitt ?? erläuterten Jitter behaftet ist. Die Reglerbank interpretiert Sensoren und Aktuatoren
als einheitenlose Datenquellen bzw. -senken. Eine Regelung kann prinzipiell mit jeder Quelle
bzw. Senke durchgeführt werden, es ist prinzipiell aber auch möglich, Anhand der vom Treiber
18
5.4
Logging
5
MCU - MASTER CONTROL UNIT
geführten Liste eine halbautomatische (bis auf Konflikte, z.B. zwei gleiche Sensoren) Zuordnung vorzunehmen. Der Regelalgorithmus ist bislang ein einfacher Schwellwertvergleich.
5.4 Logging
Das System bietet die Möglichkeit, Daten auf der angeschlossenen MMC-Karte zu speichern,
wenn die entsprechende Hardware bestückt ist. Dabei können verschiedene (Hart codierte) Quellen unterschieden werden. Aufgrund von Einschränkungen beim Zugriff auf die MMC-Karte
kann maximal eine Datei geöffnet sein. Deshalb werden die Daten in Paketen in eine einzelne
Datei geschrieben. Um eine spätere Rekonstruktion des Verlaufes zu ermöglichen, werden regelmäßig Pakete mit Zeitstempeln eingefügt. Da die Anzeige nicht spaltenweise zeichnen kann,
ist die Anzeige der Logdaten umständlich. Man kann den Cache nach einem bestimmten Wertebereich zu durchsuchen. Dazu muss zu Beginn die Funktion logSetFilterParam() zum Einstellen
der Parameter des Filters aufgerufen werden. Jeder folgende Aufruf von logGetCacheMatch()
gibt entweder die Position eines gefundenen Datenwerts zurück, oder LOG CACHE NOHIT
wenn das Ende des Puffers erreicht ist. Das Fenster übernimmt die Abfrage und das zeichnen
der Datenwerte.
5.4.1 Steuerlogik
Ursprünglich war die Steuerlogik vereinigung verschiedener unzusammenhängender Funktionalitäten als Prozess im Scheduler vorgesehen. Diese Aufgaben konnten allerdings besser als
Events in den Panels untergebracht werden. Dies ist ist von Vorteil, da so die unterliegende Infrastruktur klar von der Systemfunktion getrennt ist. Hier sollte die Steuerlogik eine ChronjobTabelle bieten, die es ermöglicht, zu festgelegten Zeiten bestimmte Funktionen auszuführen.
Aufgrund des Wegfalls dieses Prozesses wurde sie etwas modifiziert durch die im EEPROM
gespeicherten Profile implementiert.
5.4.2 Regler
Im Anhang befindet eine Ausarbeitung zu einer möglichen Implementation der Reglerstrecke
für die Temperatur. Sie wurde in dieser Form aber nicht verwendet.
19
6
BUSSYSTEM
6 Bussystem
Sebastian Tiesler
Der Bus ist der Art nach ein Master/Slave System. Die MCU (Master) steuert alle Busteilnehmer
(Slaves). Die Busteilnehmer sind Sensoren und Aktuatoren. Die Busschnittstellen sind nach dem
RS485 Standard entworfen. Dieser sichert die für Feldbusse typische hohe Störsicherheit bei
längeren Leitungen. Der Bus arbeitet im Halbduplexbetrieb d.h. es kann immer nur ein Teilnehmer (Master/Slaves) ’reden’. Der Master initiiert die Kommunikation mit den jeweiligen Busteilnehmern (polling). Über den Bus werden die Daten, die die Sensoren erzeugen, der MCU zur
Verfügung gestellt. Die MCU verarbeitet diese und steuert gegebenenfalls die Aktuatoren über
den Bus aus.
6.1 Busspezifikation
• 8 Adern Twisted Pair (4 Paare)
– 3 Spannungsversorgung (+12V)
– 3 Spannungsversorgung (GND)
– 2 Daten (A, B)
• Kabeltyp 4 Pair 26AWG UTP CAT5
• Anbindung der Busteilnehmer über Stichleitungen
• maximal 30 Busteilnehmer (Slaves)
6.2 Beschreibung des Grundmoduls
Das Grundmodul, das für alle Busteilnehmer gleich ist, ist die Schnittstelle zwischen RS485 Bus
und den jeweiligen Analog- und Digitalteilen der Busteilnehmer.
Die verbindende Logik ist ein ATmega48 [11]. Dieser Mikrocontroller der Firma Atmel ist
leicht programmierbar, günstig und hat verschiedene Energiesparmöglichkeiten. Seine Peripherie enthält mehrere 10bit SAR (sukzessive approx) Analog-/Digitalumsetzer um analoge Sensorsignale zu digitalisieren, digitale Ein- und Ausgänge sowie PWM-Generatoren und Interruptports um Aktuatoren zu steuern. Desweiteren ist ein USART enthalten, der eine hochgradig
konfigurierbare serielle Schnittstelle bereitstellt. Diese serielle Schnittstelle ist mit einem externen Transceiverbaustein verbunden, der für die Anbindung an den RS485 Bus benötigt wird.
Der Transceiver ist im Prinzip ein Pegelwandler, er generiert aus den USART Pegeln die differentiellen RS485 Pegel. Als Transceiverbaustein wurde ein SN75176BD [19] gewählt, der ein
Äquivalent zum etwas teureren MAX485 [17] ist.
Der Transmitter im Transceiver muss vor jedem Senden erst aktiviert werden, da sonst der Bus
gestört würde. Dazu ist der DE Pin des Transceivers an einem Portpin des ATmega48 angeschlossen. Die D- und R-Pins des Transceivers sind mit dem USART des Mikrocontrollers
(ATmega48) verbunden. Ausserdem ist der R-Pin des Tranceivers mit einem Interruptpin des
20
6.2
Beschreibung des Grundmoduls
6
BUSSYSTEM
Mikrocontrollers verbunden, dies ist anfänglichen Überlegungen geschuldet nach denen so dem
Mikrocontroller der Eingang neuer Datenpakete signalisiert werden sollte. Es hat sich jedoch
herausgestellt das der USART bereits selbst einen Interrupt besitzt, der anzeigt das Daten empfangen wurden.
In der Programmierung kann nun der USART verwendet werden um, ganz wie bei einer seriellen
Schnittstelle, Daten zu senden und zu empfangen. Der Mikrocontroller enthält die Implementierung des über den Bus zu sprechenden Protokolls. Ausserdem werden über eine spezifizierte
Steckerleiste seine weiteren Peripherieelemente, wie A/D Umsetzer, Interruptport, digitale Einund Ausgänge, den Analog- und Digitalschaltungen den Sensor-/Aktorboards zur Verfügung gestellt. Aus Gründen der Unabhängigkeit der einzelnen Arbeitsgruppen und den gleichen Grundfunktionen für jeden Busteilnehmer wurde dieser modulare Ansatz gewählt. Dafür wurde den
Teilnehmern, die einen Busteilnehmer erstellen, ein Grundlayout zur Verfügung gestellt. So haben sie gleich die richtigen Abstände für die zu verwendenden Buchsenleisten damit ihre Schaltung als sogenanntes ’piggyback board’5 passgenau auf das Grundmodul gesteckt werden kann.
Das dafür erzeugte Layout ist im B.3 zu finden. Aus den über den Bus gespeisten 12V wird mittels eines Linearreglers (7805) die für den Mikrocontroller benötigte Spannung von 5V erzeugt.
Es wurden 6 dieser Grundmodule aufgebaut, daher wurde auf die eigentlich energieeffizientere
Spannungswandlung mittels eines Step-Down Reglers, bspw. LM2671M-5.0 [14], aufgrund des
hohen Preises von ca. 10 Euro pro Modul verzichtet. Das samplen eines solchen Schaltreglers
wurde nicht in Betracht gezogen, da nicht zu erwarten war eine so große Menge zu erhalten.
Abbildung 9: Busteilnehmermodul Oberseite
Die Module werden in nicht temperaturstabilen Umgebungen ihre Anwendung finden, da unser
Habitat verschiedene Klimamodelle simulieren können soll. Daher enthalten die Module einen
Quarz um den internen RC-Oszillator des Mikrocontrollers zu stabilisieren. Außerdem ist für
einen möglist fehlerintoleranten Bus ein stabiler Takt notwendig. Um den Mikrocontroller programmieren zu können ist eine Programmierschnittstelle vorgesenen. Dieser ISP Header kann
5
dt. Huckepackplatine
21
6.3
Software für das Grundmodul
6
BUSSYSTEM
bspw. mit dem Stk500 verbunden werden. Der Schaltplan und das Layout sind vollständig im
Anhang B.2 zu finden.
Abbildung 10: Busteilnehmermodul Unterseite
6.3 Software für das Grundmodul
6.3.1 Grundstruktur
Die Modularität des Busteilnehmerkonzeptes setzt sich auch in der Software fort. So ist allen
Busmodulen die Implementation der Buskommunikation gemein. Sie erfolgt einmal und wird
dann allen zur Verfügung gestellt. Sie besteht aus einer main.c in der das F CPU Flag gesetzt,
der Pin für den Transmit Enable Pin des Transceivers definiert wird sowie in der main Routine
die Initialisierung der einzelnen Programmteile und die Endlosschleife in der die Buskommunikation und bspw. Sensorabfragen aufgerufen werden.
Um kommunizieren zu können muss der UART des ATmega aktiviert und konfiguriert werden.
Dazu gibt es in den Dateien uart.h und uart.c. Dort wird die Modul eigene eindeutige Adresse
festgelegt. Es ist eine Initialisierungsroutine vorhanden, die den Uart auf eine Geschwindigkeit von 9600 Baud einstellt und den Multi Processor Communication Mode (MPCM) einstellt.
Der MPC Modus erlaubt es dem UART alle Pakete zu ignorieren, die ein neuntes Bit gesetzt
haben. So brauchen die Slaves nur Pakete auswerten, die Adressinformationen enthalten, also
möglicherweise für sie bestimmt sind, und können sonst alle weiteren ignorieren. Ist ein Paket
mit der gleichen Adresse wie die Modul eigene Adresse empfangen worden, so muss dieser Modus natürlich deaktiviert werden, damit die folgenden Datenpakete mit nicht gesetztem neuten
Bit empfangen werden können.
Desweiteren sind dort alle Interruptroutinen vorhanden, die benötigt werden um mit dem UART
Daten empfangen und senden zu können. Der UART hat ein Empfangsregister, das ein Byte
gross ist. Das heißt er kann jeweils nur ein Byte empfangen. Hier werden mehrere empfangene
Bytes zu Paketen zusammengefügt oder um zu senden, Pakete in einzelne Bytes zerlegt. Für die
22
6.3
Software für das Grundmodul
6
BUSSYSTEM
Implementation des Busprotokolls sind die Funktionen uart send packet(address, data count,
packet) und uart getc(packet position) da.
Das über den Bus zu sprechende Protokoll ist in den Dateien bus.h und bus.c implementiert. Dort
werden die einzelnen Paketfelder ausgewertet und daraus Aktionen abgeleitet. Dazu sind in der
Datei packet.h verschiedene Flags definiert, die Ausgewertet zu verschiedenen Aktionen führen.
Diese Aktionsflags sollen die Schnittstelle zu dem Code der Gruppenteilnehmer seien und dort
deren set- und get- Routinen triggern. Ausserdem ist hier die Routine bus communicate() definiert, die nach einem empfangenen Paket prüft und dieses der Auswertung übergibt. Sie wird in
der Endlosschleife der main Routine aufgerufen und sorgt so für die Kommunikation.
6.3.2 Beschreibung der Paketstruktur
Der RS485 Bus legt keine Struktur für die zu übermittelnden Daten fest. Daher wird ein rudimentäres Protokoll für die Datenbeschreibung definiert. Dieses ist paketbasiert. Der Master
sendet ein Paket an einen Slave und erhält genau ein Antwortpaket. Ein Paket besteht aus 8
Datenbytes, dabei hat jedes Byte eine bestimmte Funktion (Tabelle 10). Byte 4 ist das interessanteste, sein Inhalt, sowie der von Byte 3, ist in der Datei packet.h definiert.
Byte
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
0
1
2 3 4 5 6 7
Destination
Source
Data Count
Type
State
Action
Data0
Data1
Checksum
Tabelle 10: Allgemeine Form eines Paketes
6.3.3 Beschreibung der Enumeration
Die Enumeration der Slaves ist notwendig, da beim ersten Aufbau oder dem Hinzufügen neuer
Teilnehmer, dem Master nicht bekannt ist, was am Bus hängt. Dazu geht der Master alle 30
möglichen Slaveadressen durch und sendet ein Enumerationspaket der Form (Tabelle 11). Wird
auf ein solches Paket geantwortet (Tabelle 12), speichert der Master die Quelladresse sowie den
Typ des Antworters. Erhält er keine wird nach einem Timeout die nächste Adresse angefragt.
Hat der Master alle Adresse abgearbeitet, erstellt er eine Liste aller vorhandener Slaves, die die
Adresse und den Typ enthält.
23
6.3
Software für das Grundmodul
Byte
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
6
0
BUSSYSTEM
1
2 3 4 5 6 7
Slave Address
Master Address
0x05
MASTER
ENUM
HELLO ENUM
0x00
0x00
CHK
Tabelle 11: Enumerationspaket des Masters
Byte
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
0
1
2 3 4 5 6 7
Master Address
Slave Address
0x05
MODULE TYPE
IDLE
HELLO ANSWER
0x00
0x00
CHK
Tabelle 12: Enumerationsantwort eines Slaves
6.3.4 Ablauf der Kommunikation
Der Ablauf der Kommunikation wird am Beispiel des Auslesens eines Tempartursensors dargestellt. Um die Temperatur regeln zu können, muss sie dem Regler zur Verfügung stehen. Die
MCU hat nach der Enumeration eine Liste aller Sensoren und Aktuatoren, ist darunter ein Temperatursensor kann sie von diesem die nötigen Informationen erfragen. Dazu sendet die MCU
ein Paket, das die Temperatur erfragt (Tabelle 13). Der Slave empfängt dieses Paket und interpretiert das Action Byte, anhand dessen er dann ein Anwortpaket (Tabelle 14) erstellt. Dieses
Antwortpaket enthält das gleiche Action Byte, jedoch im Data0 Feld den vom Sensormodul über
den ADC ausgelesenen und gemittelten Temperaturwert. Natürlich sind Destination und Source
Byte angepasst. Der Master empfängt wiederum dieses Paket, interpretiert es und Aktualisiert
so den Temperaturwert in seinem System.
6.3.5 Softwareendbetrachtung
Für die Sensoren gestaltete sich die Implementation der Busmodule als besonders einfach, da
jeweils nur ein ADC mehrfach auszulesen war und der gemittelte Wert auf Anfrage des Ma-
24
6.3
Software für das Grundmodul
Byte
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
6
0
BUSSYSTEM
1
2 3 4 5 6 7
Slave Address
Master Address
0x05
MASTER
IDLE
GET TEMP 1
0x00
0x00
CHK
Tabelle 13: Anfragepaket des Masters an Temperaturmodul
Byte
0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
0
1
2 3 4 5 6 7
Master Address
Slave Address
0x05
TEMP SENS 1
IDLE
GET TEMP 1
SENSOR VALUE
0x00
CHK
Tabelle 14: Antwortpaket des Temperaturmoduls auf Anfrage des Masters
ster gesendet werden musste. Die Integration in die Firmware des MCU Moduls gestaltete sich
als etwas schwierig, da sie zu spät geschah und so einige Schwierigkeiten nicht schnell genug
beseitigt werden konnten. So war zur Präsentation leider nur die Enumerationsphase lauffähig.
Jedoch schon in vorherigen Tests alle Module ansich funktionstüchtig. Dies wird jedoch noch
behoben und zu einem späteren Zeitpunkt vorgeführt.
25
7
SENSOREN
7 Sensoren
Sensoren in unserem Sinne sind elektronische Bauteile die physikalische Umgebungsgrössen,
wie Temperatur und Luftfeuchtigkeit, in für uns messbare elektrische Grössen (Widerstand)
wandeln.
7.1 Temperaturmessung
Bilal Khaled
7.1.1 Einleitung
Die Temperatursensoren sind meist elektronische Bauelemente, die eine Temperatur in eine elektrische Größe umwandeln. Sie teilen sich in zwei Gruppen: NTC- und PTC-Sensoren.
NTC-Sensoren:
NTC-Sensoren (NTC: Negative Temperature Coefficient) sind Halbleiterwiderstände, deren Widerstandswerte mit steigender Temperatur abnehmen. In einem Temperaturbereich von z.B. 0 bis
50 ◦ C reagieren sie stark auf auch nur geringe Temperaturänderungen. Nachteilig sind jedoch
die recht hohen Herstellungstoleranzen.
PTC-Sensoren:
Der Widerstand von PTC-Sensoren (PTC: Positive Temperature Coefficient) nimmt mit steigender Temperatur zu. Eine derartige Abhängigkeit weisen Platin-Temperatursensoren, SiliziumAusbreitungswiderstände und in einem bestimmten Temperaturbereich auch Kaltleiter aus dotierter polykristalliner Titankeramik auf.
Konkret wurde für das Widerstandsthermometer Pt100 (Temperatursensor) entschieden, das auf
der Widerstandänderung von Platin unter Temperatureinfluss basiert.
Die Vorteile des Pt100 sind:
• wesentlich höheres elektrisches Signal, daher unempfindlicher gegen Störungen
• weitgehend lineare Kennlinie
• höhere Langzeitstabilität
• keine Vergleichstabelle notwendig
Nachteil:
• maximaler Temperaturbereich bis ca. +800◦ C
In Abbildung 11 ist die Kennlinie des Pt100 im Bereich von -100 bis +800◦ C abgebildet.
26
7.1
Temperaturmessung
7
SENSOREN
Abbildung 11: Kennlinie des Pt100 (aus: [2])
Es ist zu merken dass sich der Widerstandswert fast linear mit der Temperatur ändert. Diese quasi Linearität ist für das System ganz wichtig, weil sie die Messung der Temperatur erleichtert.
Der Ziel war es, eine Schaltung aufzubauen, mit der man die Temperatur des Terrariums messen kann. Die zu messende Temperatur soll im Bereich von 0◦ C bis 100◦ C liegen. Ein Widerstandsthermometer, dessen Widerstand sich zwischen 100Ω und 139Ω und mit der Temperatur
ändert, ist das Kernstück unserer Schaltung, damit kann die zu messende Größe ’Temperatur’ in
ein elektrisches Signal umgewandelt werden.
7.1.2 Schaltungsbeschreibung
Mit einer Brückenschaltung kann die Änderung des Widerstands in die
Änderung der Spannung umgesetzt werden. Die Temperatur wird mittels eines Thermometerwiderstands gemessen, der in eine Brückenschaltung integriert ist (siehe Abbildung 12). Die aus
der Brückenschaltung gewonnene Differenzspannung wird einem Spannungsfolger zugeführt
der die Aufgabe hat, eine Eingangsspannung möglichst gering zu belasten und gleichzeitig
eine höhere belastbare Spannung zu erzeugen, die der Eingangsspannung gleich ist. Um die
Brückenschaltung bei 100◦ C abzugleichen und 139Ω setzen wir die Widerstände R1 = 47k und
R3 = 4, 7k. Das Potentiometer R2 hat für die spätere Feinanpassung einen verändlichen Wert im
Bereich von 0 bis 1k. Nach dem Spannungsfolger ist: U10 = U1 und U20 = U2 .
Brückenschaltung
12V ist die Versorgungsspannung, welche durch den Bus geliefert wird. Aus der Schaltung in
Abbildung 12 bekommen wir folgende Gleichungen:
U1 =
R2
· 12V
R1 + R2
27
(1)
7.1
Temperaturmessung
7
SENSOREN
Abbildung 12: Brückenschaltung (Pspice)
Rt
· 12V
(2)
R3 + Rt
R3 muss viel grösser als Rt sein, damit U2 eine Lineare Beziehung zu Rt besitzt. U1 ist die
Offset-Spannung. Sie sorgt dafür, dass die Ausgangsspannung dieser Stufe bei T = 0◦C bzw.
Rt=100Ω, bei 0V liegen kann. Und um die genaue Nullausgangsspannung bei 0◦ C erreichen zu
können, benutzen wir für R2 ein Potentiometer.
U2 =
Berechnung des Verstärkungsfaktors, nach dem Spannungsfolger beträgt die Ausgangsspannung bei 100◦ C:
Verstärkerschaltung
R2
1000
· 12V =
· 12V = 0.25V
R1 + R2
47000 + 1000
Rt
139
U20 =
· 12V =
· 12V = 0.34V
Rt + R3
139 + 4700
Die Ausgangsspannung nach der Verstärkerschaltung beträgt bei R4 = R5 = 1k:
U10 =
(3)
(4)
R6
R6
R6 0
(U − U10 ) =
(0.34 − 0.25) =
(0.09)
(5)
R4 2
R4
R4
Um die Ausgangsspannung im Bereich 0V bis 5V zu verstärken, ist ein Verstärkungsfaktor von
51k passend, daher wird die Ausgangsspannung bei 100◦ C betragen:
Ua =
Ua =
51k
(0.09) = 4.59V
1k
28
(6)
7.1
Temperaturmessung
7
SENSOREN
Abbildung 13: Verstärkerschaltung (Pspice)
Schaltungssimulation mit Pspice
In Abbildung 14 ist das Gesamtschaltbild mit Pspice
dargestellt.
Abbildung 14: Pspice Schematics des Temperatursensors
Hier sind einige Simulationsberechnungen, in einer Tabelle zusammengefasst:
29
7.1
Temperaturmessung
Temperatur in ◦ C
0
20
30
40
60
90
100
7
Widerstand des Pt100
100
107,9
111,6
115,8
123,6
134,7
139
SENSOREN
Ausgangsspannung in V
0
0,98
1,44
1,96
2,93
4,30
4,59
Aus den Berechnungen wird deutlich, dass die Ausgangsspannung mit zunehmender Temperatur in die Sättigung geht.
Zum Abschluss noch ein Foto der vollständig aufgebauten Platine (Bild 15).
Abbildung 15: Fertige Platine des Temperatursensors
Im Anhang B.4 sind in Abbildung 60 das Gesamtschaltbild und in Abbildung 61 das Platinenlayout des Temperatursensors dargestellt. Des weiteren befindet sich in Tabelle 17 eine Auflistung
der benötigten Bauteile.
30
7.2
Luftfeuchtemessung
7
SENSOREN
7.2 Luftfeuchtemessung
Miruna Raceala
Wichtig bei dem Aufbau eines Terrariums ist die Möglichkeit die Feuchtigkeit der
Luft messen zu können und somit auch zu steuern. Deshalb ist es nötig einen Sensor einzubauen, der die aktuelle Luftfeuchtigkeit messen kann. Zur Messung der relativen Luftfeuchte wird
ein Sensor vom Typ EFS-10der Firma Hygrosens eingesetzt. Dieser ist ein elektrolytischer Polymersensor, der den aktuellen Feuchtewert in eine Impedanz umsetzt. Das physikalische Messprinzip beruht auf den Eigenschaften eines hygroskopischen Materials, das die Leitfähigkeit in
Abhängigkeit von der Luftfeuchte in der Umgebung ändert. Der Sensor kann in einem Temperaturbereich von 0 bis 60◦ C eingesetzt werden und hat einen Feuchtigkeitsmessbereich von 20%
bis 95% relativer Feuchtigkeit.
Einleitung
Begriffserklärung
Absolute Feuchte Die absolute Feuchte Fabs gibt diejenige Wassermenge an, die in einem
bestimmten Luftvolumen enthalten ist. Es gilt
Fabs =
Masse des Wassers g 3
Luftvolumen [ /m ]
Sättigungsfeuchte (F sat ) Die Sättigungsfeuchte Fsat gibt die maximal mögliche Wassermen-
ge an, die in einem bestimmten Luftvolumen enthalten sein kann. Fsat ist von der Temperatur abhängig und steigt mit dieser stark an.
Relative Feuchte (Frel ) Die relative Feuchte Frel ist eine Angabe, die sich aus dem Verhältnis
von absoluter Feuchte zur Sättigungsfeuchte ergibt.
Die eigentliche Messgröße, die relative Luftfeuchtigkeit, ist nicht nur von der in der
Luft existierenden absoluten Luftfeuchte abhängig, sondern auch von der Sättigungsfeuchte, die
ihrerseits abhängig von der Umgebungstemperatur unterschiedliche Werte annehmen kann.
Wegen der Abhängigkeit der relativen Luftfeuchte von der Temperatur muss daher in der entworfenen Schaltung eine Temperaturkompensation erfolgen, um die an dem Temperatursensor
gemessenen Impedanzwerte auch richtig interpretieren zu können.
Abbildung 16 beschreibt die Abhängigkeit der Sensorimpedanz von der relativen Luftfeuchtigkeit und der Umgebungstemperatur (hier logarithmisch abgebildet). Würde man die Spannung
direkt am Sensor lesen, müsste man abhängig von den, von dem Temperatursensor gelieferten
Werte,softwaremäßig die Ergebnisse im Mikrocontroller auswerten. Die relative Luftfeuchtigkeit wird hier als Funktion der sich am Schaltungsausgang ergebenen Spannung interpretiert.
Eine weitere Möglichkeit wäre die Luftfeuchtigkeit anhand der Signalfrequenz am Ende des
Sensorelementes zu interpretiern.
Sensor
31
7.2
Luftfeuchtemessung
7
SENSOREN
Abbildung 16: Abhängigkeit des Sensorwiderstandes von Temperatur und Relativer
Luftfeuchtigkeit
Die Schaltung ist im Anhang B.5 zu finden. Sie wertet das Sensorsignal
aus und liefert am Ausgang ein kalibriertes Spannungssignal 0· · ·5V. Die Schaltung kann sowohl
vom Offset- als auch vom Gainwert justiert werden. Die Messung der Impedanz muss mittels
eines Wechselstroms (ohne DC-Anteil) erfolgen. Die von den Herstellern empfohlene Betriebsfrequenz beträgt 1 kHz bei einer Messspannung von maximal 1Ve f f . Die Spannungsversorgung
mit zwei Bandgap-Referenzdioden ist stabil und versorgt den Messkreis mit genau 4.8V. Die
Mittenspannung von 2,4V dient als virtueller Bezugspunkt für die Operationsverstärker. Um
die von dem Sensor benötigte Sinus-Wechelspannung zu erzeugen, baut man mit den Operationsverstärker U3A und U3B einen amplitudenstabilen Sinusoszillator auf, der auf ca. 1kHz
schwingt. Die Kapazität C8 trennt das Gleichspannungs-Offset ab und speist den Sensor.
Der Operationsverstärker U2B kompensiert das logarithmische Verhalten des Sensorelements
über die Diodenkennlinie. Zur Temperaturkompensation wird eine 1N4148 Diode durchgeführt,
die an zwischen den Klemmen 1 und 2 am Sensorelement anliegt. Der Operationsverstärker
U2A ist ein Spitzenwertgleichrichter. An C7 steht die linearisierte und temperaturkompensierte
feuchtigkeitsabhängige Spannung an. Der Instrumentenverstärker mit U1A, U1B und U1D dient
mit Hilfe der Potentiometer R10 und R12 zur getrennten Einstellung von Offset und Gain. Die
anschließende Einstellung der Steigung beeinflusst den Offsetabgleich nicht, da der Drehpunkt
der Gain-Einstellung bei 3,3V (33%) liegt. Die Schaltung gibt jetzt eine Ausgangsspannung
zwischen 0 und 10 Volt heraus, abhängig von der gemessenen Luftfeuchtigkeit. Da an dem Bus
eine Maximalspannung von 5 Volt liegen muss, dient ein zusätzlicher Potentiometer als Spannungsteiler, und begrenzt die Ausgangsspannung auf maximal 5 Volt. Die Ausgangsspannung
Schaltungsaufbau
32
7.2
Luftfeuchtemessung
7
SENSOREN
Abbildung 17: Blockschaltbild der Schaltung zur Feuchtigkeitsmessung
wird nachher mit Hilfe des Mikrocontrollers in die entsprechende Luftfeuchtigkeit umgesetzt.
33
7.3
Bodenfeuchtemessung
7
SENSOREN
7.3 Bodenfeuchtemessung
Mohamed Goni
Einteil unseres Projekts ist die Implementierung eine geeignete Schaltung zur Auswertung von
Bodenfeuchte. Je nach dem angewandten Prinzip lassen sich die Bodenfeuchtemessverfahren in
einige Kategorien unterteilen. Bei der Messung durch Wasserdruckänderung kommt der Tensiometer zum Einsatz. Dieser Messbauteil beruhet auf einer mechanischen Verformung. Bodenporen können durch Kapillarwirkung Wasser aufsaugen und so einen Unterdruck erzeugen.
Dann wird ein mit Wasser gefüllter Tonkegel nur Wasser, aber keine Luft hindurchlassen. Darum
kann sich der Unterdruck auch im Kegel ausbilden. Am Ende des Schlauchs ist ein Differenzdruckmesser angeschlossen. Andere Konzepte zur Bodenfeuchtemessung ist die Messung durch
passive Sensoren. Solche Elemente beeinflussen physikalische Eigenschaften wie Widerstand,
Kapazität. Um ein entsprechendes Ausgangssignal zu erhalten, ist eine externe Spannungsersorgung notwendig.
Wann braucht man Wassergehalt und wann Wasserpotenzial?
Die Bodenfeuchte (das Wasser im Boden) kann mit zwei Größen charakterisiert werden: Wassergehalt und Wasserpotenzial.
Während der Wassergehalt die Wassermenge bezogen auf das Gewicht oder auf das Volumen
angibt, zeigt das Wasserpotenzial Arbeit an, die benötigt wird, um eine Einheitsmenge Wasser
der Bodenmatrix zu entziehen. Das Wasserpotenzial hat daher die Einheit joule/m3 = N/m2 =pascal
und gewöhnlich ein negatives Vorzeichen, weil Arbeit aufgewendet wird. Der wesentliche Unterschied zwischen Wassergehalt und Wasserpotenzial besteht darin, dass der Wassergehalt nichts
über das Kräfteverhältnis (Fließrichtung, Verfügbarkeit für Pflanzen) aussagt. Hoher Wassergehalt bedeutet nicht zwangsläufig eine bessere Verfügbarkeit über Wasser. Aus diesem Grund
macht ein Vergleich vom Wassergehalt verschiedener Bodentypen für viele Fragestellungen keinen Sinn. Hingegen ist das Wasserpotenzial eine äbsolute”Größe und kann unabhängig vom Bodentyp direkt miteinander verglichen werden (-5 bar ist trockener als -4.5 bar). Das Wasserpotenzial ist die Summe aus Matrix-, osmotischem und gravimetrischem Potenzial. Das osmotische
Potenzial ist in Nicht-Salzböden vernachlässigbar gering und das gravimetrische Potenzial ist
bei bekanntem Bezugspunkt direkt zu berechnen. Messtechnisch ist deshalb nur das Matrixpotenzial, das in der Regel auch den größten Anteil des Wasserpotenzials ausmacht, von Interesse.
Das Matrixpotenzial wird nicht nur durch den Wassergehalt, sondern auch durch andere Bodeneigenschaften maßgeblich bestimmt. Daher besteht kein allgemeiner Zusammenhang zwischen
Wassergehalt und Matrixpotenzial. Hohes Matrixpotenzial bedeutet nicht zwangsläufig, dass im
Boden mehr Wasser vorhanden ist. Ob Wasserpotenzial oder Wassergehalt gemessen werden
soll, hängt von der Fragestellung ab. Soll die im Boden vorhandene Wassermenge bestimmt
werden, ist der Wassergehalt die geeignete Größe. Für folgende Aufgabenstellungen ist die Bestimmung des Wasserpotenzials dagegen unbedingt notwendig:
• Charakterisierung der Wasserverfügbarkeit für Pflanzen (z.B. Trockenheit, Trockenstress);.
34
7.3
Bodenfeuchtemessung
7
SENSOREN
• Pflanzenphysiologische Untersuchungen (z.B. Vergleich mit dem Xylemwasserpotenzial);
• Berechnung (Abschätzung) der Wasserbewegungen im Boden;
• Berechnung der Verdunstung;
• Bewässerungssteuerung:
In der Literatur wird Trockenheit oder Wasserstress oft mit Wassergehalt beschrieben. In solchen
Darstellungen weiß man zum einen nicht, wie trocken der Boden wirklich ist, und zum zweiten sind die Daten miteinander nicht vergleichbar. In extremen Fällen können auf einem Boden
mit 10 prozentigem Wassergehalt je nach Bodentyp Wasserkulturen gedeihen oder Kakteen vertrocknen.
Überblick über Methoden zur Wasserpotenzialmessung
Während die Bestimmung des Wassergehalts im Boden relativ einfach durchzuführen ist, gestaltet sich die kontinuierliche Messung (Monitoring) vom Matrixpotenzial sehr schwierig. Die
vier am häufigsten gebrauchten Instrumente und Verfahren wie Druckaufnehmer-Tensiometer,
Psychrometer, TDR bzw. FDR-Sonde in Kombination mit pF-Kurven und Gipsblock können die
Anforderungen in der Praxis nur bedingt erfüllen.
• Methodenvergleich
35
7.3
Bodenfeuchtemessung
Methoden
7
−
Gipsblöcke
Mess
bereich(kPa)
ab -100
Psychrometer
ab -200
1. besonders geeignet für
sehr trockene Messbereiche;
2. misst das Gesamtwasserpotenzial.
pF-Kurve
mit
Wassergehaltsmessungen
Transducer- Tensiometer
0...-1500
1. breiter Messbereich.
0...-85
1. hohe Genauigkeit
SENSOREN
Vorteile
Nachteile
1. preisgünstig.
2. für Dauermessung geeignet.
1. Messwerte abhängig
von Bodeneigenschaften.
2. Eichkurve instabil, ungenau. 3. starke Hysterese. 4. kurze Lebensdauer.
1. sehr anfällig gegenüber
Temperaturschwankungen;
2. schmutzanfällig;
3. für feuchtere Bereiche
nicht
geeignet;
4. sehr wartungsintensiv.
1. aufwändig;
2. ungenau.
1. nur in feuchtem
Messbereich einsetzbar;
2. sehr wartungsintensiv
und daher auch teuer;
3. Messwerte von Temperatur abhängig.
Das Druckaufnehmer-Tensiometer funktioniert nur im feuchten Messbereich zwischen 0 bis -85
kPa. Bei einer Unterschreitung der Messgrenze von -85 kPa muss das Tensiometer erneut ausgebaut und befüllt werden. Somit ist diese Technik sehr wartungsintensiv und letztlich auch teuer.
Wegen des begrenzten Messbereichs ist mit dem Druckaufnehmer-Tensiometer mit Ausnahme
von wenigen feuchten Gebieten kein lückenloses Monitoring möglich Das Psychrometer ist nur
einsetzbar ab -200 kPa. Weil der Messfühler (Thermoelement) sehr schmutz- und temperaturempfindlich ist, ist ein Dauereinsatz im Boden praktisch nicht möglich. Unter Freilandbedingungen sind bei Dauermessungen Ablagerungen gasförmiger Stoffe an der Thermoelementoberfläche nicht zu vermeiden. Tägliche Temperaturschwankungen und der Temperaturgradient
im Boden werden über das Anschlusskabel an den Messfühler übertragen, was die Messwerte
erheblich verfälschen kann. Aus diesem Grund hat sich die Psychrometrie in der Bestimmung
der Bodenfeuchtigkeit nie durchgesetzt. Eine andere Möglichkeit ist es, mit der TDR- oder FDRTechnik zunächst den Wassergehalt zu bestimmen und diesen mit Hilfe von der pF-Kurve in das
Matrixpotenzial umzurechnen. Die Erfahrungen zeigen jedoch, dass diese Methode nur eine grobe Abschätzung ermöglichen kann, weil die TDR- und FDR-Sonden unter Freilandbedingungen
oft mit hohen Fehlerquoten arbeiten. Außerdem ist die Ermittlung der pF-Kurve zeitaufwändig
und teuer. Der Gipsblock, der durch Messung elektrischer Leitfähigkeit den Rückschluss auf
das Matrixpotenzial erlaubt, ist nur im trockenen Boden (unterhalb -100 kPa) einsetzbar. Ein
wesentlicher Nachteil ist die Beeinflussung der Kalibrierkurve (Zusammenhang zwischen elektrischer Leitfähigkeit und Matrixpotenial) durch Bodeneigenschaften. Bei Anwesenheit von Na-
36
7.3
Bodenfeuchtemessung
7
SENSOREN
trium wird die Leitfähigkeit erhöht, ohne dass der Boden feuchter wird. In sauren Böden läßt
sich der Gipsblock mit der Zeit auf. Wegen dieser Probleme finden die Gipsblöcke trotz der
niedrigen Anschaffungskosten nur selten Anwendung.
Vergleich der Reaktionsgeschwindigkeit des Equitensiometers (gestrichelte Linie)
mit Transducer-Tensiometer (durchgezogenene Linie)
Studie der Technischen Universität München:
Bestimmung des Matrixpotentials in einem Mischwald mit Hilfe von Equitensiometern
Quelle: Theodor Friedrichs & Co. Meteorologische Geräte und Systeme GmbH, D-22858 Schenefeld
Abbildung 18: Statistik
37
7.3
Bodenfeuchtemessung
7
SENSOREN
7.3.1 Schaltungsentwurf
Impedanzmessung
Eine praktische einfache Elektronikschaltung zur Überwachung des Bodeneuchtegrades kann
man durch varieren Leitfähigkeits der erde entwerfen. Dieser Sensor ist im Prinzip so aufgebaut, das man die Ausgangswiederstand (R4) messen kann. Der Sensor wird mit einer 12V
stabilisierten Spannungsquelle betrieben. Entscheidend ist bei diesem Sensor die Dimensionierung des Widerstands R55 , da dieser den Basisstrom für den Transistor T1 bestimmt. Wird
dieser Widerstand zu klein dimensioniert, meldet der Sensor schon ein HIGH Signal (5V) am
Emitter des Transistors T2 bei ganz geringer Feuchte der Bodenerde. Im Falle einer zu großen
Dimensionierung des Widerstandes R55 würde der Sensor nur ein HIGH Signal liefern, wenn
der Terarrienerde unter Wasser stehen würde. Auch hier funktioniert der Sensor so, dass sobald die Kontakte F.1 und F.2 im Erdreich durch genug Feuchtigkeit kurzgeschlossen werden,
ein Basisstrom (IB1) im Transistor T1 impliziert wird. Der Emitterstrom (IE1) von T1 steuert
nun den Transistor T2 auf, wegen IE1=IB2. Durch das Aufsteuern des Transistors T2 fängt die
LED an zu leuchten und am Emitter des Transistors T2 wird das benötigte digitale HIGH Signal
(5V) abgegriffen . Das Signal am Ausgangswiederstand (R4) wird über den BUS an die Mcu
weitergeleitet und dort weiter verarbeitet
Bauteile:
• 2 Transistoren des Typs BC546C .
• 1 rote LED
• Widerstände: 1x1MΩ R2,1x4.7kΩ R3,1x330Ω R1,1x560Ω R4Ω,1x560kΩ R55
Dimensionierung und Simulation
Die Dimensionierung der schaltung folgt durch die unterscheidung von zwei fällen
• 1. Leerlauffall
Beim Leerlauf stellen wir uns vor,sehr trockene Bodenerde.Diese vorstellung ergibt sehr
hohe Übergangswiderstand d.h die Elektrischeleitfähigkeit sterbt zu null.das hat die Wirkung ,daß die T1 und T2 sperren .dem zu folge fählt am (siehe Abb. 19 und Abb. 20)
Ausganswiderstand (Sensor) eine Spannung mit Logischen 0V(Low) ab und die Diode
bleibt aus.
• 2. Kurzschlußfall
Der Kurzschlußfall bedeutet,das die Erde der Terarrien elektrisch leitend das erreicht man
Physikalisch, indem man die Klemmen F1 und F2 Kurz schliesst.in diesem Fall ist die
Übergangswiderstand gleich (0) und wir messen am Ausgang (R4) eine Spannung (siehe
Abb. 21 und Abb. 22) von 5V(High)
Layout und Schaltplan befinden sich im Anhang B.6.
38
5
7.3
4
3
2
1
Bodenfeuchtemessung
7
SENSOREN
D
D
F1
12.00V
12.00V
V+
V1
164.1pA
R6
250
Überganswiederstand(Sensorklemmen)
V-
C
12.00V
Q1
R55
F2
1.988uV0A
-1.988pA
560k
B
0
12.00V
R3
4.7k
13.66pA
235.3mV
13.66pA
Q2
235.3mV
164.1pA
Q2N2222
V+
1meg
C1
C
0V
560
Q2N2222
-13.66pA
R2
179.8pA
R1
15.64pA
1.988pA
1.988uV
1.988uV
164.1pA
12Vdc
12.00V
R4
100u
-177.8pA
B
99.55nV
177.8pA
560
Sensor
0V
V-
0V
0
A
A
Abbildung 19: Schaltplan LeerlaufTitle
Size
A
Date:
5
4
3
Abbildung 20: Simulation Leerlauf
39
Bodenfeuchtesensor
Document Number
<Doc>
Friday, May 15, 2009
2
Rev
<RevCode>
Sheet
1
of
1
1
5
7.3
4
3
2
1
Bodenfeuchtemessung
7
SENSOREN
D
D
F1
12.00V
12.00V
V+
V+
V1
8.627mA
R6
250
Überganswiederstand(Sensorklemmen)
V-
C
12.00V
Q1
R55
F1
12.00V
1.476uA
560k
8.639uA
8.627mA
12.00V
B
4.7k
194.4uA
194.4uA
Q2
5.647V
8.627mA
Q2N2222
V+
1meg
C1
V-
0
5.012V
R3
R2
C
0V
560
Q2N2222
-194.4uA
6.561V
8.828mA
R1
192.9uA
7.162uA
7.162V
12Vdc
9.843V
R4
100u
-8.821mA
B
4.940V
8.821mA
560
Sensor
0V
V-
0V
0
A
A
Abbildung 21: Schaltplan bei Kurzschluß derTitle
Klemmen
Bodenfeuchtesensor
Size
A
Date:
5
4
3
Document Number
<Doc>
Saturday, May 16, 2009
2
Abbildung 22: Simulation bei Kurzschluß der Klemmen
40
Rev
<RevCode>
Sheet
1
of
1
1
8
AKTUATOREN
8 Aktuatoren
8.1 Lichtsteuerung
Felix Schmidt
Die Funktion dieses Aktuators besteht darin das Sonnenlicht und dessen Zeitverhalten zu simulieren. Er besteht aus drei unterschiedlichen Lampen:
Allgemein
1. Hier wird eine handelsübliche Glühlampe mit 40 bis maximal 100 Watt verwendet. Diese
soll durch so genannten Phasenanschnitt gedimmt werden. Das führt dazu, dass die aufgenommene Leistung und somit die Lichtintensität, der Glühlampe in einem bestimmten
Bereich einstellbar wird. Die Leistung ist direkt proportional zum Zeitverlauf des Stroms,
der in Sinusform aus dem 230V Netz entnommen wird. Die Fläche unter der Kurve (proportional zum Integral) und somit die aufnehmbare Leistung lässt sich durch Anschneiden
der Phase verringern. Das wird über eine Schaltung realisiert, die zum einen den Nulldurchgang des Sinusverlaufs detektiert und dann die Stromzufuhr nach einer durch die
MCU gesetzten Verzögerung öffnet. Ein von einem Mikrocontroller angesteuerte Triac ist
eine typische Umsetzung dafür.
2. Eine weitere Lichtquelle wird in Form einer UV-Leuchtstoffröhre eingebaut, um den Bedarf an UV-Licht einiger Lebewesen decken zu können. Diese wird über ein Relais je nach
zu simulierender Umgebung zugeschaltet, wenn der Dimmer die maximale Helligkeit erreicht hat.
3. Ursprünglich sollte über ein zweites Relais eine weitere, normale Leuchtstoffröhre zugeschaltet werden können. Der Wirkungsgrad einer Glühlampe bezogen auf den sichtbaren
Bereich des Lichtes ist relativ gering, da über 95% der aufgenommenen Energie in Infrarotstrahlung umgewandelt wird. Möchte man eine hohe Intensität im sichtbaren Spektralbereich erzeugen, entsteht ebenso viel Wärmeenergie. Die entstehende Wärme kann
mit Hilfe des Heizelements auch auf effektiverem Weg erzeugt werden. Darum soll eine
Leuchtstoffröhre dann zugeschaltet werden, wenn die Glühlampe den maximalen Helligkeitswert ereicht hat. Die Glühlampe kann kann dann ganz abgeschaltet werden. Die
Triacschaltung verbraucht natürlich auch Energie. Auch dieser Anteil an der Verlustenergie wird eleminiert. Die nicht zu vernachlässigende Heizwirkung wird bei der Steuerung
der Heiz-/ Kühlsteuerung berücksichtigt. Leider ist es bis zuletzt nicht gelungen, den Fehler in der Ankopplung des einen Relais an den Mikrocontroller ausfindig zu machen und
zu beheben.
Dimmer Die Technik des Phasenanschnitts ist die einfachste Möglichkeit bei Lasten, die mit
sinusförmigen Wechselsignalen versorgt werden, dynamisch die Leistungsaufnahme zu begrenzen. Das bezieht sich jedoch nur auf ohmsche und induktive Verbraucher. Kapazitive Lasten und
41
8.1
Lichtsteuerung
8
Glühlampe
BUS
AKTUATOREN
+12V
UV
OK
OK
Mikrocontroller
TRIAC
H-Brücke
Relais 1
H-Brücke
Relais 2
Leuchtstoffröhre
galvanische Trennung
Sicherung
230V Netz
Abbildung 23: Blockschaltbild der Lampenschaltung
manche Schaltnetzteile können nur mit anderen Mitteln in ihrer Leistungsaufnahme begrenzt
werden.
Die Funktionsweise ist in Bild 25 dargestellt. Nach dem detektierten Nulldurchgang der Sinuswelle wartet die Schaltung eine einstellbares Zeitinterval, bevor der Strom durchgeschaltet wird.
Dadurch veringert sich die aufgenommene Leistung, die proportional zum Integral über der
Stromkurve ist. Das An- und Ausschalten wird mit einem Leistungshalbleiter, einem TRIAC,
hier TIC225S, realisiert. Bild 26 ist ein schematischer Aufbau eines Triacs dargestellt. Im hochohmigen Zustand, also wenn die RZL 2 (Raumladungszone 2) sehr breit ist und dadurch keine
Ladungsträger durch die NPNPN-Schichten fließen können, liegt zwischen MT1 und MT2 die
volle Netzspannung von 230 Volt an. Solange das Gate keine Verbindung zu MT2 hat ist immer
eine der beiden RLZs groß und die andere klein. Das hängt davon ab, ob gerade die positive
oder die negative Halbwelle anliegt. Wird nun der Ausgangs Pin PD3 high (+5V) gesetzt, dann
fließt ein Strom von maximal I = (5V − 1, 5V)/330Ω = 10mA in die Leuchtdiode des Optokopplers, hier ein MOC3023, und der Ausgang des OK1 wird niederohmig. Somit liegt das Gate
plötzlich auf dem Potential von MT2. Die jeweils große RLZ, in diesem Beispiel RLZ2, wird
von Ladungsträgern überschwemmt, bis die Spannung zwischen MT1 und MT2 die kleiner werdende RLZ2 mit Ladungsträgern überspringen kann, diese überschwemmt und dann die ganze
NPNPN-Schichten niederohmig wird. Die RLZ2 in diesem Beispiel schrumpft, weil sie plötzlich
von beiden Seiten das gleiche Potenzial sieht, und dann nicht mehr wie eine Sperrschicht berieben wird. Der Widerstand R12 dient hier dazu, den Strom durch den Ausgang des Optokopplers
zu begrenzen. Dieser verträgt nur 130mA, also ist R = U/I = (230V −1, 3V)/(130mA) ≈ 1, 8kΩ.
Der komplette Strom fließt nun durch den niederohmigen Triac, bis die Sinushalbwelle sich dem
Nulldurchgang nähert. Dann wird die nötige Minimalspannung an den NPNPN-Schichten unterschritten und er wird wieder hochohmig. Dieser Zustand bleibt solange bis über den Optokoppler
erneut gezündet wird.
Wie in Bild 24 zu sehen, ist der Triac zusätzlich mit einer Glättungsspule L1 und einem Dämpfungsglied,
42
8.1
Lichtsteuerung
8
AKTUATOREN
F$G&
F$G$
A(
!"#$%
#),
3.
!"##%
B.
E&
&
?!)
$
&))9:7;5<
B&(
B@
&-.,
&-%(,7&8
3%
!"##%
2C&
##)
?+5
34"$$56
3D
B&$
&
(
$
@
"&
&))=>
B&)
12"#)$#
>&
F&G&
*'+
$-5<
/50
F&G$
2C$
@.)7)-58 @
B&#
$
%
?".&(
3(
!"##%
B(
&50
B&5
$5)
& $#)0
3B&
?+%
&-.,
3$
!"##%
*'+
/&$0
/50
Abbildung 24: Schaltplan des Dimmers
*'+
60$
&
$
#
(
5
@
%
.
60(
5
(
#
$
&
C1 und R14, beschaltet. Das Dämpfungsglied verhindert, dass die hochfrequenten Oberwellen der 50Hz aus dem Netz in die Kabel ausserhalb der Platine gelangen und dort eventuell
ungeschirmt abgestrahlt werden. Die Strahlung könnte massive Störungen in anderen Geräten
verursachen. Die Oberwellen entstehen, weil der Triac einen steilflankigen Schaltvorgang hervoruft. Bekannterweise ist die Leistung in einem Spektrum eines solchen Signals mit scharfen
”
Kanten“ nicht nur auf die Grundwelle verteilt, sondern auch zu beachtlichen Teilen in den Oberwellen verteilt. Aus der Fourieranalyse ist bekannt, dass diese Kanten schärfer werden, desto
mehr Oberwellen mit signifikanten Leistungen im Spektrum zu finden sind. Die Oberwellen
entstehen im Triac, somit kann der Triac wie eine Hochfrequenzquelle aufgefasst werden. Das
RC-Dämpfungsglied liegt nun parallel zu dieser Quelle. Die Impedanz der Reihenschaltung von
C1 und R14 ist frequenzabhängig, ZC,R (ω) = R + 1/ jωC . Der Verlauf des Betrags der Impedanz
|ZC,R (ω)| ist in Abbildung 27 skizziert. Die Frage ist nun ab welcher Frequenz f die Impedanz
des R-C-Glieds kleiner als die der Last wird, sodass die hochfrequenten Oberwellen über diesen
Zweig fließen anstatt über die Last. Bei einer Last von 25 Watt, was das Minimum darstellt,
fließt ungefähr ein Strom von I = P/U = 25W/230V = 0, 11A, sodass die Impedanz der Last
RL = U/I = 230V/0, 11A ≈ 2000Ω ist. Die Frequenz wird nun wie folgt berechnet:
#
$
&
#),
#
?+#
60#
A$
!"#$%
B&
(
?B4
&
6H"
(
43
8.1
Lichtsteuerung
8
AKTUATOREN
I
t
P
I
t
Abbildung 25: Phasenanschnitt
s
|ZC,R (ω)| =
R214 +
s
⇒ω =
⇒ f
1
hier als Beispiel: f =
2π
=
(R2L
1
2π
1
= RL
(ωC1 )2
1
− R1 42 )C12
s
s
(2000Ω)2
(R2L
1
− R1 42 )C12
1
≈ 800Hz
− (50Ω)2 )(100nF)2
(7)
(8)
(9)
(10)
Das bedeutet, dass ab 800Hz der Großteil des Stromes über dem R14 in Wärme umgewandelt
wird. Wird die Last größer, dann wird der Lastwiderstand kleiner und die Frequenz steigt. Die
800Hz entsprechen der 16.Oberwelle. Die Frage ist, was mit den darunter liegenden Oberwellenanteilen passiert. Diese werden auf die Last übertragen, jedoch können sie aufgrund der relativ
geringen Frequenz sich nicht so gut von den Leitungen lösen und zu Strahlung werden. Hier entscheiden die Kosten. Denn man könnte die anderen Oberwellen nur dann dämpfen, wenn man
eine größere Kapazität wählen würde, die aber mehr kostet.
Die Spule dient zwar auch als HF-Drossel, jedoch ist die Induktivität L nicht groß genug, um eine
passable Dämpfung in dem betrachteten Frequenzbereich zu erzielen. Sie liegt bei 25W Last bei
einigen MHz: f = 2000Ω/(2π100µH) ≈ 3MHz. Sie sinkt zwar mit steigender Last, kommt aber
nicht in den Bereich des RC-Glieds. Die Funktion dieser Spule ist den Stromverlauf zu glätten,
den starke Stromanstiege können im Halbleiter zu hohen Stromdichten führen und ihn zerstören.
Liegt an einer entladenen Induktivität plötzlich eine Spannung an, ist die Impedanz dieser erst
einmal sehr hoch, bis sich die Magnetfelder aufgebaut haben. Das heißt zu Anfang kann noch
kein großer Strom fließen, sondern er wächst über die Zeit langsam an. Dieses Verhalten glättet
44
8.1
Lichtsteuerung
8
MT1
AKTUATOREN
Gate
N
N
N
P
RLZ�1
N
RLZ�2
P
N
MT2
Abbildung 26: schematische Darstellung eines Triacs, hier als Beispiel: das Potenzial
V MT 1 > V MT 2
den steilen Anstieg des Stromverlaufs. Um den Wert der Induktivität L zu bestimmen, verwendet
man die bekannte Differentialgleichung:
Uind = −L ·
dI
dt
(11)
Es wird davon ausgegangen, dass der Strom durch die Spule im Zeitinterval ∆t von 10% auf
90% des Maximalwerts gestiegen sein soll. Die Gleichung 11 vereinfacht sich dann zu:
dt → ∆t, Uind = 230V, dI → Imax (0.9 − 0.1) = Imax 0.8L =
Uind ∆t
·
Imax 0, 8
(12)
Für ∆t kann man zum Beispiel 100ns ansetzen. Höhere Werte würde die Induktivität groß und
teuer machen. Hier ein paar Werte für unterschiedliche Lastströme:
Laststrom in A
0,11
0,22
0,43
P in W
25
50
100
L in µ H
240
131
66
Als guter Kompromiss wurde hier 100µH genommen, weil man davon ausgehen kann, das eher
höhere Lasten betrieben werden. In Bild 28 ist der Stromverlauf mit der Glättungsinduktivität in
rot dargestellt.
45
8.1
Lichtsteuerung
8
AKTUATOREN
|Z|�
in�Ohm
Ab�hier�hat�das�R-C-Glied�eine�
geringere�Impedanz�als�die�Last.
R�L�=
2000
R14
800
f�in�Hz
Abbildung 27: skizzierter Impedanzverlauf
I
t
Abbildung 28: Stromverlauf mit Glätungsinduktivität
Um den Nulldurchgang zu erkennen, wird das 230V Netzsignal mit einem Trafo auf 15V heruntertransformiert. Darauf folgt ein Widerstand, der den Eingangstrom des Optokopplers 2 begrenzt. Bei 1,2V Spannungsabfall an den Eingangsdidoden des
OK2 sieht die Dimensionierung wie folgt aus:
Nulldurchgangserkennung
R13 =
U (5V − 1, 2V)
=
= 690Ω
I
20mA
(13)
Da die maximale Leistung an R13 P = 14, 8 · 20mA = 296mW die zulässigen 250mW für normale Kohleschichtwiderstände überschreitet, muss hier ein 500mW-Typ gewählt werden. Der
Eingangsstrom von 20mA erzeugt einen Basisstrom im Ausgangstransistor, welcher niederohmig wird und eine Strom von 22mA durch die Kollektor-Emitter-Strecke führen kann. Die Spannung UCE über der Kollektor-Emitter-Strecke muss 1,5V betragen, sodass der Transistor sicher
aufsteuert. Daraus ergibt sich die Dimsionierung von R15:
R15 =
U (5V − 1, 5V)
=
= 160Ω
I
22mA
46
(14)
8.1
Lichtsteuerung
8
U�in�V
V�OK2ein
AKTUATOREN
V�Trafo
1,2V
t
-1,2V
-15V
IF
20mA
t
V�PD3
3,5V
0V
t
Abbildung 29: Zeitverläufe bei der Nulldurchgangserkennung
Der Eingang PD3 ist auf low(0V) wenn der Ausgangstransistor hochohmig ist und auf high (hier
3,5V, wegen UCE ) wenn der Transistor niederohmig ist. Der Zeitverlauf für den Eingang PD3
ist in Bild 29 graphisch dargestellt. Man sieht, dass man den Interrupt im Mikrocontroller auf
der steigende Flanke auslösen lassen muss. Wie zu erkennen ist entsteht auch eine Verzögerung,
die wie folgt berechnet werden kann:
t =2·
arcsin 1,2V
Û
2π f
=2·
arcsin 1,2V
15V
= 424µs
2π50Hz
(15)
Die Formel ist hergeleitet vom Zeitverlauf der Spannung U(t) = Û sin(ωt), der mit der Schwellspannung der Eingansdioden (U = 1,2V) gleichgesetzt wird.
Um die Leuchtstoffröhren zu schalten wurden hier zwei bistabile Relais verwendet.
Diese können auch ohne Dauerstrom in beiden Schalterpositionen ihren Schaltzustand beibehalten. Dazu wird mit einem unbegrenzten Strom ein Kern magnetisiert, der den Wechsler anzieht.
Um den Kern wieder zu entmagnetisieren wird ein begrenzter Strom in Gegenrichtung durch die
Spule geleitet. Ein Widerstand von 220Ω = 12V/55mA begrenzt hier den Strom. Diese Umsetzung von bistabilen Relais mit nur einer Spule ist nicht sonderlich üblich und hat in der Anfangsphase auch zu erhebliche Problemen geführt, weil die Notwendigkeit den Strom zu begrenzen
nicht auf Anhieb im Datenblatt ersichtlich ist.
Die Umkehrung wurde mit einer H-Brücke realisiert. In Bild 30 ist eine der beiden H-Brüken
dargestellt. Wenn der Pin PD6 auf high also +5V gesetzt wird, dann wird T5 niederohmig und
der Strom kann von +12V in den Kollektor von Q1 und zur Basis von Q1 fließen. Hier fließt er
durch T3 in die Basis von T2. Q1 und T2 werden niederohmig und der Pin A1 des Relais wird
mit 12V verbunden. A2 wird über T2 mit GND verbunden. Der Strom kann nun von +12V durch
Relais
47
Lichtsteuerung
8
AKTUATOREN
M'>N
8.1
9K"
K>
'HI!!'
>I
>>
>'
''
T>
'I
R'
EFG>$
SG
EFGG$
TG
'>
K'
'HI!!'
VI8'
G!7
R>
EFG>$
T'
G!7
VI8>
SI
EFGG$
TI
'#L7
U>
KG
KI
'HI!!'
U'
'HI!!'
S'
EFGG$
I!#O>#"
9K$
'#L7
S>
EFGG$
T%
>>!P'Q
JHK
Abbildung 30: Schaltplan der Relaistreiberschaltung
!"#!$#!%&'!(!!&&)*'#$!&&+,-./0+.01-2'+314./4,+56-789:;<+60,=-28071401;:+>!!%8"8$?24:8:-60/@#@AB&C3B--1(&'+'D
die Spule des Relais nach GND fließen und der Wechsler wird in die An-Stellung gezogen. Nach
14 ms geht der Pin PD6 wieder auf low, denn der Schaltvorgang benötigt 7ms.
Wird PD7 auf high gesetzt werden T4, Q2 und T1 niederohmig. Jetzt ist der A2 Pin des Relais
mit +12V verbunden und A1 mit GND. Wobei am Emitter von T1 der strombegrenzende Widerstand angeschlossen ist. Der Strom von maximal 55mA fließt jetzt in der entgegengesetzten
Richtung durch die Spule und entmagnetisiert diese. Der Wechsler fällt in die Aus-Stellung. Die
Dioden parallel zu den Kollektor-Emitter-Strecken verhindern hohe Gegenspannungen an den
empfindlichen Transistoren. Denn Induktivitäten erzeugen nach dem Abschalten eine Gegenspannung um den Strom aufrecht zu erhalten.
Die Schaltung arbeitet so, dass durch einfaches high(+5V) setzen des jeweiligen
An-Pins inklusive low(0V) am korrespondierenden Aus-Pins die Relais geschaltet werden können.
Dabei muss dieser Zustand ein paar ms gehalten werden, bevor alle Pins wieder auf low gehen.
Hier ein Auflistung der Pinbelegung:
Software
Pin
PD3(INT1)
PD5
PB1
PB0
PD6
PD7
Ein/Aus
Ein
Aus
Aus
Aus
Aus
Aus
Funktion
Nulldurchgangsinterupt
Zündung des Triac
Relais 1 an
Relais 1 aus
Relais 2 an
Relais 2 aus
Es folgt eine kurze Beschreibung des Dimmeralgorithmus. Bei eine steigenden Flanke an PD3
48
8.1
Lichtsteuerung
8
AKTUATOREN
wird die Interupt-Service-Routine zu
INT1_vect
aufgerufen. Hier wird ein Timer gestartet, der bei einem vorher gesetzten Comparewert einen
Interupt auslöst. Dieser neue Interrupt zündet dann den Triac und startet einen neuen Timer, der
einen festen Comparewert hat, der die nötige Zünddauer repräsentiert. Der dynamische Comparewert vom ersten Timerlauf repräsentiert den Helligkeitswert indem er die Verzögerung in der
Stromzündung innerhalb der halben Periode angibt. Für die Wahl des richtigen Prescalers, der
die Frequenz, mit dem der Timer hoch gezählt wird in Abhängigkeit von der internen Taktfrequenz (hier 4MHz) angibt, müssen Umrechnungen ausgeführt werden.
Ein halbe Periode des 50Hz Singnals dauert 10ms. Die Helligkeitswerte bzw. Verzögerungszeiten,
werden in 8bit langen Zahlen von 0 bis 255 angegeben. Wenn man einen Prescaler von 256 verwendet, dann ist die Timerfrequenz ftimer = 4MHz
256 = 15, 625kHz. Das entspricht einer Periodendauer von T = 64µs . Somit stehen 10ms
≈
156
Helligkeitsschritte zur Verfügung. Nun muss der
64µs
8bit-Wert, der von 0 bis 255 geht linear auf das Interval 0 bis 156 umskaliert werden:
x156 =
3
· x256
5
(16)
Das gilt, da zum Beispiel der Maximalwert von x256 auf den Maximalwert von x156 passen muss.
x156,max = 156 , x256,max = 255 ⇒ 156 = a · 255 ⇔ a ≈ 0, 61 ≈
3
5
(17)
Wenn irgendwann der maximale Helligkeitswert erreicht wird, dann wird einfach die Funktion
des Relais 1 oder 2 aufgerufen und der Dimmerinterrupt ausgeschaltet.
Die Inbetriebnahme war von einigen Pannen begleitet. Zu Begin ging weder der
Dimmer noch die Relaisansteuerung. Bei den Relais wurde die oben beschriebene Strombegrenzung nachträglich auf der fertigen Platine aufgebaut. Desweiteren stellte sich heraus, dass der
anfangs verwendete Triac für den Betrieb im erstem Quadranten der Spannungs-Strom-Ebene
vorgesehen ist. Die Schaltung wurde jedoch für Triacs entworfen, die im ersten und dritten Quadranten betrieben werden. Es wurde ein entsprechender Triac nachgekauft und die Schaltung
abgeändert. Sie funktioniert jetzt einwandfrei.
Abschluss
49
8.2
Heiz-/Kühlsteuerung
8
AKTUATOREN
8.2 Heiz-/Kühlsteuerung
Michael Döring
8.2.1 Einleitung
Dieser Abschnitt behandelt den Aktuator ”Heiz-/Kühlsteuerung”. Aufgabe dieses Moduls ist der
Temperaturausgleich und die Sicherstellung einer vorgegebenen Temperatur im Terrarium bzw.
Habitat durch aktive Wärmezufuhr oder -abgabe. Naheliegend wäre hierfür eine Heizmatte oder
einen Heizdraht zu verwenden, doch um eine umfassende Temperatursteuerung zu ermöglichen
sollte es auch machbar sein die Temperatur in einem Habitat abzusenken. Dieser, wenn auch
seltene Fall, kann z.B. eintreten wenn das Terrarium an einem sonnigen Ort steht und so von
außen übermässig erwärmt wird. Die einzigen Bauteile welche sowohl heizen, wie auch kühlen
können sind Thermoelektrische Module, sogenannte ”Peltierelemente”. Im Folgenden soll nun
der Aktuator umfassend erläutert werden.
8.2.2 Aufbau und Struktur des Moduls (Hardware)
Der Aktuator besteht aus vier Baugruppen, dem Busteilnehmergrundmodul, dem Aktuatorboard
und der ”aktiven” Einheit. Diese umfasst die Baugruppen Kühlkörper, Lüfter sowie Temperatursensor als einen Block sowie das Peltierelement. Bild 31 zeigt ein Foto des Gesamtaufbaus.
(a) Seitenansicht
(b) Draufsicht
Abbildung 31: Gesamtmodul
Da das Busteilnehmergrundmodul einen ATmega48 enthält, welcher für die gesamte Kommunikation mit der MCU zuständig ist, werden sämtliche Berechnungen und logischen Operationen
in Software ausgeführt.
50
8.2
Heiz-/Kühlsteuerung
8
AKTUATOREN
Die ”aktive” Einheit ist wie folgt aufgebaut: Die zwei Kühlkörper sind auf die aktiven Flächen
ober- und unterhalb des Peltierelementes aufgebracht und mit Lüftern versehen. Die Temperatursensoren befinden sich zwischen den Kühlrippen des Kühlkörpers um eine relativ genaue
Temperaturmessung sicherzustellen. Dieser Aufbau wird so in den Gehäusedeckel eingearbeitet,
dass das Peltierelement die Grenzschicht zwischen außen und innen darstellt. So wird sichergestellt, dass kein Luftaustausch mit der Umgebung stattfindet. Der Hauptvorteil eines solchen
geschlossenen Systems ist ein höherer Wirkungsgrad. Auch wird so eine Entfeuchtung des Innenraumes vermieden. Diese soll an anderer Stelle durch einen Lüfter geschehen.
Die zwei Betriebsarten des Moduls sind in Abbildung 32 gezeigt. Die Grundschaltung des Elementes ist Heizen. Zur Kühlung wird das Peltierelement verpolt und der Vorgang kehrt sich um.
Die Warmseite wird nun gekühlt und die Kaltseite erwärmt sich.
(a) Heizbetrieb
(b) Kühlbetrieb
Abbildung 32: Betriebsarten (verändert nach memmert.com)
Temperatursensor, Lüfter und Kühlkörper
Die Aufgabe dieses Teilmoduls ist im Wesentlichen die Gleiche, wie sie in einem gewöhnlichen
Computer an der CPU auftritt. Es soll Abwärme von etwa 50 oder mehr Watt von einem Bauteil
wegtransportiert und verteilt werden. Deshalb lag es nahe hierfür PC-Lüfter aus einem Altbestand zu nutzen. Zum Einsatz kamen Geräte der Firma ”ARCTIC Cooling” mit der Typenbezeichnung ”Super Silent 4 Pro TC”.
Die verwendete Lüfter- Kühlkörper- Kombination enthält einen eingebauten Temperatursensor in Form eines NTC-Widerstands (Negative Temperature Coefficient).
Ein solcher temperaturabhängiger Halbleiterwiderstand hat einen stark negativen Temperaturkoeffizienten und wird deshalb im Deutschen auch als ”Heißleiter” bezeichnet. Da dieser auch
Temperatursensor:
51
8.2
Heiz-/Kühlsteuerung
8
AKTUATOREN
original zur Drehzahleinstellung genutzt wurde bietet es sich an, ihn zur Temperaturbestimmung
weiterzunutzen. Es ließ sich jedoch nicht herausfinden, was für ein Typ herstellerseitig verwendet wurde. Deshalb musste die Kennlinie approximiert werden.
Die Kennlinie eines NTC ist nichtlinear und kann zum Beispiel durch die Steinhart-Hart Thermistor Gleichung [27, p. 497] ermittelt werden. Die Gleichung bildet den logarithmischen Zusammenhang zwischen der Temperatur (1/T ) und dem Widerstand (ln(R)) ab. Im allgemeinen
Fall lautet sie:
1
= A0 + A1 · ln(R) + · · · + AN · ln(R)N
(18)
T
Wobei die enthaltenen Variablen T für Temperatur in Kelvin und R für den Widerstand bei
dieser Temperatur stehen. A0 bis AN sind die gesuchten Koeffizienten. Es reicht allerdings aus,
die Formel bis zum Term dritter Ordnung auszuwerten, wobei der quadratische Term keinen
Gewinn bringt und deshalb ausgelassen wird. Die vereinfachte Gleichung lautet somit:
1
= A0 + A1 · ln(R) + A2 · ln(R)3
(19)
T
Die Konstanten A0 bis A2 sind individuell für jeden Thermistor. Man kann sie errechnen, indem
man drei Temperatur- Widerstand- Wertepaare durch Messen ermittelt und für diese das lineare
Gleichungssystem löst. Mit den ermittelten Konstanten kann nun die Temperaturkennlinie direkt
errechnet werden. Die Kennlinie des verwendeten Thermistors ist in Abbildung 33 dargestellt.
Man sieht, dass weitere gemessene Werte dem Kurvenverlauf entsprechen und die Berechnung
bestätigen. Weitere Erläuterungen zum Approximationsverfahren sind in [6] zu finden und sollen hier nicht vertieft werden.
3
)"
>,-,;;,<,38,/1,
0../?@9-9,/1,3A,<<B9<9,
("
'"
89:,/;10<:343=!37
&"
%"
$"
#"
!"
"3
!!"
"
!"
#"
$"
%"
+,-.,/012/3435637
&"
'"
("
)"
*"
Abbildung 33: Kennlinie des ”Super Silent 4 Pro TC”- NTC-Widerstandes
52
!""
8.2
Heiz-/Kühlsteuerung
8
AKTUATOREN
Wichtig für den gegebenen Aufbau ist der Wert für 80◦ C, da dieser die maximale Temperaturobergrenze für die Heizseite des Peltierelements darstellt. Dieser Wert ist etwa 1,4kΩ. Auch wenn
dieser Wert im normalen Betrieb nicht erreicht wird, müsste spätestens hier das Peltierelement
notabgeschaltet werden.
Der NTC wird über einen Spannungsteiler an einen ADC6 -Pin des ATmega48 angeschlossen
(Abbildung 35). Die Ausgangsspannungswerte des Spannungsteilers sind in Abbildung 34 aufgetragen. Durch den Vorwiderstand von 10kΩ wird die Kennlinie im Bereich von etwa 8◦ C bis
45◦ C linearisiert. Um für den gesamten Bereich von -10◦ C bis 80◦ C eine Linearisierung zu erhalten müssen die anderen Bereiche durch zusätzliche Geradengleichen angepasst werden. In
Tabelle 15 sind diese mit den dazugehörigen Temperaturbereichen angeben.
4
&
0-1?-4A-<<?><>?><-10>:>-02-4A-<<?><>%+&
%
93:;1<;4=/1<<3<;:2->?-0454@48
$+&
$
#+&
#
!+&
!
"+&
"4
!!"
"
!"
#"
$"
%"
&"
,-./-012304546748
'"
("
)"
*"
!""
Abbildung 34: Ausgangsspannung des Spannungsteilers
Intern arbeitet der ATmega48 mit einem 10Bit AD-Umsetzer. Diese Genauigkeit von 1024 (28 )
Werten ist mehr als ausreichend für diese einfache Messschaltung. Die fehlenden zwei Bit werden als Rauschen interpretiert und verworfen. Nach der Analog-Digital-Umsetzung wird somit
jedem Spannungswert eine binäre Zahl zwischen 0 (0V) und 1023 (5V) zugeordnet. In Abbildung 36 ist nocheinmal die Kennlinie mit den dazugehörigen Linearisierungen durch die oben
genannten Geradengleichungen gezeigt. Die Berechnung nach der AD-Umsetzung wird später
vollständig in Software implementiert werden, daher wird hier nicht weiter darauf eingegangen.
6
Analog-Digital-Converter
53
Heiz-/Kühlsteuerung
8
AKTUATOREN
Abbildung 35: Spannungsteiler (Ausschnitt aus dem
Gesamtschaltbild Abb. 68)
3
)""
/,0>,3?,@@>=@=,
>=@,0/=A=,/1,3?,@@>=@=,
*"
("
'"
&"
+,-.,/012/3435637
8.2
%"
$"
#"
!"
)"
"
!)" 3
!""
#""
$""
%""
896!3:,/1,343;,<=-0>37
&""
'""
Abbildung 36: ADC-Umsetzung mit Kennlinienapproximation
54
(""
8.2
Heiz-/Kühlsteuerung
8
ADC-Wert
unterer oberer
< 120
120
191
192
300
301
800
801
870
> 870
Geradengleichung zur
Approximation
außerhalb des Messbereichs
y = −x/5 + 105
y = −x/7 + 94
y = −x/10 + 81
y = −x/7 + 115
außerhalb des Messbereichs
AKTUATOREN
Temperaturbereich
in ◦ C
> 81◦ C
◦
81 C − 66◦ C
66◦ C − 51◦ C
51◦ C − 1◦ C
1◦ C − (−10)◦ C
< (−10)◦ C
Tabelle 15: Kennlinienapproximation durch Linearisierung des NTC
Lüfter: Die beiden Lüfter werden durch eine Transitorschaltung direkt an zwei Ports des Atmega48 betrieben (vgl. Abb. 37). Wichtig sind die Dioden parallel zu den Lüfteranschlüssen,
da ein Lüftermotor eine induktive Last darstellt und es sonst zu hohen Stromspitzen beim abschalten des Motors kommt, welche die Transistoren zerstören können. Angesteuert werden die
Lüfter durch die interne PWM (Pulsweitenmodulation) des Atmega48. So ist eine gute Drehzahlsteuerung möglich.
Bei der Pulsweitenmodulation (engl. Pulse Width Modulation) wird die Ein- und Ausschaltzeit
eines Rechtecksignals bei fester Grundfrequenz variiert. Das Verhältnis tein/(tein +taus ) wird als Tastverhältnis (engl. Duty Cycle (DC)) bezeichnet und liegt zwischen 0 und 1. Für den Mittelwert
der Spannung mit der Periode tein + taus = T gilt:
1
Um =
T
T
Z
0
1
u(t)dt =
T
te
Z
0
1
Uein dt +
T
Um = Uaus + (Uein − Uaus ) ·
Z
tein
tein + taus
T
Uaus dt
(20)
tein
(21)
Uaus ist 0V und Uein ist die Betriebsspannung VCC von 12V. Daraus ergibt sich vereinfacht:
Um = VCC · DC
(22)
In der Praxis hat sich ergeben, daß die Lüfter eigentlich die ganze Zeit vollkommen angeschaltet
betrieben werden können, da der Prozeß des Erwärmens und Abkühlens der Kühlkörper sehr
Träge ist. In den fertigen Aufbau wurde ein dritter Lüfter eingefügt. Dieser ist ein ”Stützlüfter”
und dient zur Kühlung der Leistungseinheit. Er wird parallel zu einem der anderen Lüfter betrieben.
Um die momentane Drehzahl des Lüfters zu ermitteln dient der in Abbildung 37 gezeigte Transitor Q9, welcher an den Tacho-Ausgang des Lüfters angeschlossen ist. Die Widerstände R14
und R15 können dabei recht willkürlich gewählt werden. Es sollte lediglich darauf geachtet werden, dass kein unötig hoher Strom fließt. Am Tacho-Ausgang lässt sich ein Rechtecksignal mit
der Amplitude von ca. 11 Volt messen (Abbildung 38). Die Periodenlänge des Signals ist bei
maximaler Drehzahl etwa 11ms, was einer Drehzahl von 90,9Hz bzw. 5454 Umdrehungen pro
55
8.2
Heiz-/Kühlsteuerung
8
AKTUATOREN
Abbildung 37: Schaltung zur Taktrückgewinnung und PWM-Ansteuerung
(Ausschnitt aus dem Gesamtschaltbild Abb. 68)
Minute (UPM) entsprechen würde. Die meisten Tacho-Ausgänge von Computerlüftern geben
jedoch nicht die genaue Drehzahl aus, sondern Vielfache der Pole des eingebauten Motors (vgl.
[15, p.3]). Der hier verwendete Motor hat vier Pole, was darauf hindeutet, dass die ermittelte
Drehzahl durch zwei zu teilen ist. Laut technischer Beschreibung von ”Arctic-Cooling” [1] hat
der Lüfter eine maximale Drehzahl von 2800 UPM, was die Vermutung bestätigt.
Zum Kühlkörper muss hier nicht mehr erwähnt werden, außer das es sich um eine StandardCPU-Rippenkühlkörper handelt.
Besonders interessant ist das Thermoelektrische Element. Es ist im Allgemeinen eher in Nischenanwendungen, wie z.B. dem Kühlen von Hochleistungslasern, in CCDSensoren zur Rauschminderung sowie immer häufiger in Thermobehältern für Kfz und Boote zu
finden [21]. Wie die Beispiele zeigen werden Peltierelemente mehr zum Kühlen als zum Heizen
eingesetzt, warum das so ist und welche Vor- und Nachteile ein solches Element hat, soll im
folgenden geklärt werden. Daher wird hier das Peltier-Element etwas umfangreicher betrachtet,
um dem Leser einen Einblick zu geben.
Peltier-Element
Die physikalische Grundlage bildet der thermoelektrische Effekt, von welchem es zwei Arten zu
unterscheiden gibt. Zum einen beschreibt der Seebeck-Effekt die Entstehung einer elektrischen
Spannung entlang eines Temperaturgradienten über zwei unterschiedlichen miteinander verbundene Halbleitern und zum anderen gibt es den Peltier-Effekt, der die Entwicklung von Wärme
oder Kälte an der Verbindungsstelle zweier unterschiedlicher Halbleiter, wenn Strom hindurch-
56
8.2
Heiz-/Kühlsteuerung
8
AKTUATOREN
Abbildung 38: Oszillatorbild des Tacho-Ausgangs des Lüfters bei maximaler Drehzahl
fließt, beschreibt. Benannt ist der Peltier-Effekt nach seinem Entdecker Jean Peltier (1785-1845).
Aufbau des Peltierelementes:
Der Peltier-Effekt beruht auf dem Kontakt von zwei Halbleitern unterschiedlichen Energieniveaus, daher besteht das Peltier-Element aus mindestens zwei oder mehr kleinen Quadern je aus
p- und n-dotiertem Halbleitermaterial (Bismut-Tellurid, Silizium-Germanium), die abwechselnd
oben und unten durch Metallbrücken miteinander verbunden sind (vgl. hierzu Abb. 39 und 40).
Die Metallbrücken bilden zugleich die thermischen Kontaktflächen und sind durch eine aufliegende Folie oder eine Keramikplatte isoliert. Immer zwei unterschiedliche Quader sind so miteinander verbunden, dass sie eine Reihenschaltung ergeben. Der zugeführte elektrische Strom
durchfließt alle Quader nacheinander. Abhängig von Stromstärke und -richtung kühlen sich die
oberen Verbindungsstellen ab, während die unteren sich erwärmen. Ein elektrischer Strom der
Stromstärke I setzt somit an der Grenzfläche zwischen zwei verschiedenen Leitern pro Zeit eine
bestimmte Wärmemenge frei. Die Effizienz für das Kühlen ist allerdings nicht besonders hoch,
so muss für 1 W Kühlleistung etwa 3 W elektrische Leistung aufgebracht werden. Das ”Heizen”
erfolgt also mit der 3-fachen Leistung gegenüber dem ”Kühlen”. Bei typischer Umgebungstemperatur (Raumtemperatur) lassen sich Temperaturdifferenzen ∆T von bis zu 69 Kelvin in
Abhängigkeit der der Kühlleistung Q erreichen. Bei Q = 0 wird ∆T = T max erreicht, bei Qmax ist
meist das ∆T = 0. Die maximale Temperatur der ”Warmseite” liegt bei etwa 80◦ C. Man sollte
die Arbeitskennlinie ausserdem nie vollkommen ausgenutzen, da sonst bei zunehmender elektrischer Leistung ein Effizienzverlust eintritt. Typisch ist etwa 2/5 bis 4/5 des maximalen Stromes
57
8.2
Heiz-/Kühlsteuerung
8
AKTUATOREN
Imax ([24, p.6]).
Abbildung 39: Schematischer Aufbau (verändert nach hardinfo.net)
Wie in der Einleitung angesprochen werden Peltier-Elemente eher zum Kühlen als zum Heizen
verwendet. Das hängt damit zusammen, das Heizmatten oder -drähte deutlich wirtschaftlicher
Heizen. Denn hier wird die gesamte Energie zu genau diesem Zweck verwendet. So ist es nicht
verwunderlich, das sich in der Literatur meist nur Vergleiche mit herkömmlichen KompressorKühltechniken finden. Das Peltier-Element ermöglicht die thermischen Vorgänge lediglich durch
die oben beschriebenen Vorgänge im Halbleiter und hat somit keine mechanischen Verschleißkomponenten. Laut Datenblatt hat es eine Lebensdauer von etwa 200.000 bis 300.000 Schaltzyklen.
Abbildung 40: Peltierelement - Einzelmodul
Da ein Terrarium meist im Bereich der Zimmertemperatur betrieben wird, sei hierzu angemerkt,
dass die Peltier-Technik in der Nähe der Umgebungstemperatur besonders wirtschaftlich arbeitet, da im Gegensatz zur Kompressortechnologie nur dann Energie benötigt wird, wenn geheizt
58
8.2
Heiz-/Kühlsteuerung
8
AKTUATOREN
oder gekühlt werden muss. Dabei kann die Heiz- oder Kühlfunktion besonders fein dosiert werden. Wie bei einer Wärmepumpe wird im Heizbetrieb Wärmeenergie aus der Umgebungsluft
entnommen und dem Innenraum zugeführt.
Das Element wird durch Gleichstrom gesteuert. Die entsprechende Gleichspannung sollte dabei
keinen höheren Wechselanteil als 10% aufweisen, da dann die Leistung des Elementes stark
einbrechen würde. Während der ”Aus”-Phase der PWM diffundiert die Wärme zur ”Kaltseite”
und erwärmt sie. Ein mit einer PWM angesteuertes Element würde somit im schlimmsten Fall
auf beiden Seiten nur etwa lauwarm werden. Da im Terrarium eine relativ lange Zeit benötigt
wird bis sich die gewünschte Temperatur einstellt bzw. die Latenzzeit bis die Kühlkörper die
Wärme-/Kälte aufnehmen und wieder abgeben ebenfalls sehr lange ist, kann das Element durch
ein einfaches an/ausschalten gesteuert werden. Ein Schaltzyklus ist so geregelt, dass solange
geheizt wird bis der NTC der Warmseite 65◦ C misst. Jetzt wird das Element abgeschaltet und
die Lüfter drehen weiter bis die Temperatur unter 50◦ C fällt. Diese Schalthysterese wird solange
wiederholt bis die MCU kein weiteres heizen anfordert. Genauso erfolgt das Kühlen, auch hier
wird die Warmseite des Elementes überwacht, das Kühlen erfolgt quasi ”passiv”.
Die Ansteuerung des Peltierelementes erfolgt mit einer Leistungs-H-Brücke. Da das Element in
Durchschnitt etwa 3,5 A benötigt, musste hier schon auf etwas leistungsorierentierte Elektronik
zurückgegriffen werden. Die Transistoren Q3 bis Q6 können eine Leistung von bis zu 10A schalten. Ihnen sind die Transistoren Q2 und Q8 als Treiber vorgeschaltet. Die Widerstände R3 und
R4 müssen den recht hohen Basisstrom der Leistungstransistoren von 120mA einstellen. Bei
etwa 10,3V ist das immerhin eine Verlustleistung von 1,24W. Eine H-Brücke hat einen Zustand
der nie eintreten darf. Sind beide Eingänge, hier die Transitoren Q2 und Q8, zeitgleich geöffnet
entsteht in der Brücke ein Kurzschluss. Um diesen Zustand auszuschließen ist der Brücke eine
TTL-Logik vorgeschaltet, deren Schaltzustände in Tabelle 16 zusammengefasst sind. So ist es
möglich mit zwei Ports des ATmega48 die Brücke an bzw. abzuschalten, sowie die Spannung
am Peltierelement zu vertauschen. Man hätte die Logik auch direkt mit dem Mikrocontroller
erzeugen können, sie stellt jedoch eine zusätzliche Sicherheit gegen Programmierfehler dar.
Port OK1
0
0
1
1
Port OK2
0
1
0
1
Ausgang 3
0
0
1
0
Ausgang 4
0
0
0
1
Tabelle 16: Logiktabelle des 4001
8.2.3 Regelung (Software)
Der Aktuator ist in sich abgeschlossen und kommuniziert mit der MCU nur über einen Befehlsrahmen. Er erhält von der MCU eine 8-Bit Integerzahl. Der Bereich von 0 bis 127 wird als
Befehl ”kühlen” interpretiert. 128 ist der Zustand ”aus” und der Rest 129 bis 255 ist somit ein
59
8.2
Heiz-/Kühlsteuerung
8
AKTUATOREN
Abbildung 41: H-Brücke mit zugehöriger Logik
(Ausschnitt aus dem Gesamtschaltbild Abb. 68)
Aufruf zum ”’heizen”. In Abbildung 42 ist die Statemachine des Aktuatorcodes abgebildet.
60
8.2
Heiz-/Kühlsteuerung
8
AKTUATOREN
pelt_init
aus
temperature
under threshold
pelt_action_init
no
change
HEAT
COOL
pelt_observation
set_state
off
nachlauf
pelt_fan_stay_on
threshold
temperature
over threshold
pelt_off
Abbildung 42: Statemachine der Heiz-/ Kühlsteuerung
Das Modul wird so initialisiert, dass alle Komponenten ausgeschaltet sind. Solange von außen
kein neuer Befehl über den Bus eintrifft bleibt das Modul in diesem Zustand. Wird eine 8-Bit
Zahl durch den Bus in die ’state’-Funktion geschrieben, setzt diese entsprechend einen der dreioben genannten Zustände und ruft die Initialisierung des neuen Status auf. Hiernach geht sie in
die ’oberservation’-Routine. Diese überprüft, durch auslesen des NTCs, ob die Warmseite des
Peltierelementes die kritische Temperatur von 80◦ C erreicht. Wenn dies der Fall ist wird das
Peltierelement abgeschalten, wenn nicht bleibt es angeschalten. Hiernach geht es zurück zum
’state’-Zustand, welcher überprüft ob ein neuer Befehl vorliegt. So bleibt der Aktuator in seinem jeweils letzten Zustand, bis ein state-Wechsel eintritt und durchläuft die eben beschriebene
Schleife. Folgt dem ”Heizen” ein ”Kühlen” oder andersherum bzw. kommt der ’aus’-Befehl,
wird der ”nachlauf” aktiviert. Das bedeutet, das das Peltierelement abgeschalten wird, aber die
Lüfter anbleiben. In dieser Zeit wird auch kein neuer Befehl entgegengenommen. Der Nachlauf soll thermische Spannungen im Peltierelement vermeiden, denn diese würden z.B. durch
Übergänge von hohen auf niedrige Temperaturen bzw. andersherum entstehen und das Element
irreversibel durch starke mechanische Beanspruchung (lösen der inneren Lötstellen) schädigen.
In der Gruppe wurden verschiedene Arten einer möglichen Heizsteuerung besprochen und dabei festgestellt, dass eine Steuerung dieser Art die Interessanteste sei. Als Alternativen boten sich im wesentlichen nur Heizmatten bzw. Heizdrähte an. Diese sind jedoch
Diskussion
61
8.2
Heiz-/Kühlsteuerung
8
AKTUATOREN
nur lokal einzusetzen und stellen somit eher eine partielle Heizquelle dar. Auch ist natürlich
kein kühlen mit diesen Alternativen möglich. Man sollte bedenken das die Heizfunktion die
dauerhafte Grundfunktion darstellt, kühlen als Funktion wird nur in seltenen Fällen nötig sein.
Daher ist es auch relativ irrelevant das es eine Zeit dauert bis der Aktuator vom Heiz- in den
Kühlzustand übergegangen ist, da sich erst die gesamte Peripherie umstellen muss.
62
8.3
Futterklappe
8
AKTUATOREN
8.3 Futterklappe
Louai Barake
8.3.1 Einleitung
Dieser Abschnitt beschreibt den Aufbau und die Steuerung der Futterklappe. Für die Steuerung der Futterklappe benötigt man eine Steuerung eines Schrittmotors. Für diverse mechanische Steuerungen eignen sich Schrittmotoren perfekt. Denn Computertreiber sind einfach zu
programmieren und im Unterschied zu Gleichstrommotoren sehr präzise. Schrittmotoren unterscheiden sich in vielerlei Hinsicht: Schrittgröße, Unipolar-/Bipolarbetrieb, Kraft.
8.3.2 Beschreibung der Schaltung
Für die Ansteuerung des Motors wurde eine H-Brückenschaltung gewählt. Damit ist es möglich,
die Drehzahl und die Richtung des Gleichstrommotors zu steuern. Dazu hat die Schaltung vier
Digitaleingänge, welche je nach Status den Motor in vier unterschiedliche Zustände bringen.
Die Schaltung besteht aus vier Mos-FET Transistoren und benutzt 12V als Spannungsversorgung und 5V um die Steuerung zu betreiben.
Ansteuerung des Motors
STATE1
STATE2
STATE3
STATE4
Y1
0
1
1
0
Y2
1
0
0
1
Y3
0
0
1
1
Y4
1
1
0
0
Mit einem Schritt von oben nach unten in der Tabelle führt der Motor einen Schritt nach rechts,
mit einem Schritt von unten nach oben führt der Motor einen Schritt nach links durch. Genau
das muss im Code umgesetzt werden. Daher gibt es insgesamt vier Zustände: STATE1, STATE2,
STATE3 und STATE4.
Schrittmotor
Motortyp: Tandon KP4M2-203
Bipolar Schrittmotor für den universellen Einsatz. Der Motor besitzt zwei wellenenden.
Schrittauflösung
Strom pro Wicklung
Spannung pro Wicklung
Wiederstand pro Phase
Gewicht
63
1.8◦
0.15A
12V
37.5 Ω
0.27Kg
8.3
Futterklappe
8
AKTUATOREN
Abbildung 43 zeigt die Kennlinie des Schrittmotors. Die Kennlinie zeigt den Zusand in dem der
Schrittmotor sich befindet. Die Kurve (....) bezeichnen die Grenzkurven im Start/Stoppbereich
und die Kurven (—-) bezeichnet die Grenzkurve im Beschleunigungsbereich.
Abbildung 43: Kennlinie des Schrittmotors (aus: [18])
Mechanik
Die Mechanik besteht aus folgendem Komponenten:
• einer Holztür
• einem Schienensystem, in dem die Holztür auf und ab fährt
• dem Schrittmotor
• ein Gehäuse, wo das Futter gelagert wird
Im Anhang B.9 sind in Abbildung 71 das Gesamtschaltbild der Futterklappe, sowie in Abbildung
70 das Platinenlayout dargestellt. In der Tabelle 18 findet sich die Stückliste dieses Aktuators.
In Abbildung 44 sieht man den fertigen Aufbau der Platine.
64
8.3
Futterklappe
8
Abbildung 44: Fertige Platine der Futterklappe
65
AKTUATOREN
A
ENTWURF DER REGLERSTRECKE
Teil III
Anhang
A Entwurf der Reglerstrecke
Mohamed Goni
Das Ziel dieses Teils ist, zu zeigen, wie ein vollständiges Temperaturregelungsystem entworfen werden kann und das von den ersten Grundsätzen an. Das Design eines Mikrocontrollerbasierten Regelungsystems wird von der Modellierung bis zur Prozesskontrolle gezeigt. Der
Terrariumsraum ist der Beispielprozess. Eine elektrisches Heiz- /Kühlelement (vgl. Abschnitt
8.2) wird verwendet, um die Temperatur der Luft im Terrarium zu ändern und das Ziel ist es, die
Temperatur auf einen gewünschten Wert einzustellen.
Wie in Abschnitt 7.1 gezeigt, wird die Lufttemperatur durch einen analogen Sensor (PT100,
integrierte Schaltung) gemessen. Das Sensorausgangssignal wird in digitale Form umgewandelt
und wird mit einer gespeicherten gewünschten Temperatur verglichen und zur Generierung eines Fehlermeldungsignals benutzt (vgl Prozessregelung
Abb. 45). Es wird ein PI-Controller Algorithmus in den
Mikrocontroller implementiert, um das gewünschte Ausgangssignal zu erhalten.
!"#$%&
Mikrocontroller
'()*+)%&
Abbildung 45: Blockschaltbild
Das Design des Controllers basiert auf der ”Ziegler-Nicholas
Open-Loop Tuning-Methode” und damit ist eine genaues mathematische Modell des Systems
normalerweise nicht erforderlich. Als erstes wird die Wärme-Gleichgewichtsgleichung für den
Terarriumsraum aufgestellt.
Die gepumpte Wärme in das System = Die steigende Wärme im System + Die Wärmeverluste
Das mathematische Modell
• m1 = Masse der Luft im Terarrium
• m2 = Masse der Gehäuse (Glas)
• c1 = Spezifische Wärmekapazität der Luft cpG = 1,005 kJ/kgK im Gehäuse
• c2 = spezifische Wärmekapazität des Glases
I
A
ENTWURF DER REGLERSTRECKE
!!
!"#$"%&
'()*"%
!
!"
+"%%,%#(-
Isolierung
"#$%&'()$"*$+!,$-.,/)(
""#%&'()0)'12,/)
"!#+")$$&23)')$4)(5)'!/2'
Temperatursystem
Abbildung 46: Temperatursystem
Beim Ignorieren der Wärmeverluste durch die Wände des Glases und der Wärmekapazität des
Heiz-/ Kühlelementes kann man die folgenden Gleichungen schreiben:
• Die steigende Wärme im System = (m1 c1 + m2 c2 ) ·
dT
t .
• Die Wärmeverluste aus dem Behälter = h · A · (T − T a ).
Wo, T a die Umgebungstemperatur, A ist der Behälterfläche und h ist eine Konstante, die von der
Oberfläche und der Umgebungstemperatur abhängt.
dT
) + h · A · (T − T a )
(23)
t
Wenn man davon ausgeht, dass die Umgebungstemperatur konstant ist und T q = T − T a . Kann
man Gleichung 23) in 24) umschreiben:
E = (m1 · c1 + m2 · c2 ·
dT q
) + h · A · Tq
(24)
t
oder vereinfachter wenn k1 = m1 · c1 + m2 und k2 = h · A, sowie unter Berücksichtigung der
Laplacetransformation:
E = (m1 · c1 + m2 · c2 ·
T q (s)
1
=
E(s)
s · k1 + k2
(25)
Diese Gleichung beschreibt ein System erster Ordnung mit der Zeitkonstante k1/k2. Die Gleichung 25 beschreibt die Abhängigkeit zwischen der Lufttemperatur im System und der hinzugepumpten Wärmemenge. Temperaturregelsysteme weisen immer eine Transport-Verzögerung
auf. Diese ist die Zeit, in der die Temperatur des Mediums einen endlichen Wert erreicht. Die
Transport-Verzögerungszeit und die Systemsparameter k1 und k2 werden durch den Sprungsantworttest des System bestimmt.
II
A
ENTWURF DER REGLERSTRECKE
Abbildung 47: Blockschaltbild der offenen Kette (Quelle: [22])
Die System-Identifikation wird durch anlegen eines Sprungseingangsignals und Beobachtung der Reaktion der offenen Kette (Open-Loop-System) bestimmt.
Die Temperatur der Luft im Behälter wird ständig gemessen und erfasst. Für die Simulation der
Systemsprungantwort können Hardware wie DrDaq und Software wie Picolog oder labVIEW
benutzt werden. DrDaq ist eine kleine elektronische Karte, die an der parallelen Schnittstelle des PCs angeschlossen wird. Die Karte dient zur Messung mit Sensoren der physikalischen
Größen wie z. B. die Lichtintensität, Lautstärke, Spannung, Feuchtigkeit und Temperatur. Picolog Software läuft auf einem PC und kann benutzt werden, um Aufzeichnung der Messungen
der DrDaq-Karte in Echtzeit. Die Einschaltdauer des Microcontrollersausgangs ist 10-Bit breit
und kann von somit von 0 bis 1023 geändert werden. Der Duty Cycle kann variiert werden bis
das man einen Wert erreicht, mit dem das Ausgangssignal des Sensors stabilisiert wird. Die
System-Parameter werden mit Hilfe der Ziegler-Nicholas Open-Loop-Schritt Antwort-Methode
wie folgt abgeleitet.
Systemidentifikation
Ziegler und Nicholas haben Werte für die PIDParameter einer Anlage auf der Grundlage des ”Open-Loop-und Closed-Loop-Tests” vorgeschlagenen.
Ziegler-Nichols PID-Tuning-Algorithmus
OPEN-LOOP TUNING
Nach Ziegler und Nichols, kann ein Open-Loop-Prozess durch die Übertragungsfunktion G(s)
approximiert werden.
G(s) =
k · e sT D
(1 + S · T l )
• K ist die statische Verstärkung
• T D ist die Totzeit
III
(26)
A
ENTWURF DER REGLERSTRECKE
• T l Zeitkonstante bei einem Sprung
wobei die Koeffizienten K, T D , T l durch eine einfache Open-Loop-Sprungsantwort des Prozesses
bestimmt werden.
Abbildung 48: Sprungsantwort des Systems (Quelle: [7])
Ziegler-Nichols Verfahren schlägt dann die folgenden Controller-Einstellungen vor:
Ziegler-Nichols Verfahren (Open-Loop)
Controller
Kp
TI
TI
Proportional
kT d
TI
Proportional + Integral
0.9 kT
3.3T d
d
TI
Proportional + Integral + Derivative 1.2 kT d
2T d
TD
0.5T d
Mit der PID Regelergesetz
U(s) = K p [1 +
1
+ T D s]E(s)
TI s
(27)
Diese Einstellungen führen zur Minimierung des absoluten Fehlerintegrals für einen gegebenen
Sollwert. Es wird notiert, dass die Ziegler-Nicholas Methode keinen Auskunft darüber gibt, welche Regelertypen eingesetzt werden sollten. Aber meistens erreicht man die beste Performance
mit Hilfe der PID-Regeler. Nach der Bestimmung der Transferfunktion der Regelstrecke G(s)
wird der geschlossenen Regelkreis untersucht.
CLOSED-LOOP TUNING
Ziegler-Nichols (closed-loop tuning) Methode bezieht sich auf den Test des geschlossenen Regelkreises. Eine Standardprozedur ist das folgende:
• Deaktivierung von I und D Anteile und den Test mit P-Glied
• Test:Eingabe einem Sollwert und Beobachtung der Führungsprungsantwurts
IV
A
Sollwert
T=60°
R(t)
!
Y
E(t)
-
ENTWURF DER REGLERSTRECKE
U(t)
PI-Regler
PI
Regler
Lufter/HeizEl
Element
t
Y
"#$%#&'()&*#+*,&
Abbildung 49: Der geschloßene Regelkreis
• Wiederholung der Sollwertstest mit Erhöhung (oder vermindern) der Reglerverstärkung
bis die gewünschte Oszillation erreicht wird. Diese Verstärkung Ku wird ültimate gain”grundlegende
Verstärkung genannt.
• Lesung der stabilen Oszillationsperiode Pu
• Berechnung von Regelerparameter mit Hilfe der folgenden Formeln:
– Proportional und integral Regler:
K p = 0.45Ku und T i = Pu /1.2
– Proportional-integral-derivative Regler:
K p = 0.6Ku, T i = Pu /2 und T D = T u /8
Abbildung 50: Ziegler-Nichols closed-loop Test (Quelle: [7])
Der diskrete PID Regler wird nach der Ztransformation wie in Gleichung 28 geschrieben. Der Regler wird für die parallele Programmierung entworfen und das bedeutet, dass die Übertragungsfunktion in Summanden zerlegt werden
muss und alle Summenterme (Moduls) sind dann parallel geschaltet. Ein Vorteil dieser Form ist
die vereinfachte Realisierung von Schaltungen bzw. Implementierung des Algorithmus.
Diskrete Softwarerealisierung des Regelers
U(z) = E(z)K p [1 +
T
(1 − z−1 )
+
T
]
D
T
T I (1 − z−1 )
V
(28)
A
ENTWURF DER REGLERSTRECKE
Abbildung 51: Struktureller Aufbau eines PID-Reglers (Quelle: [7])
Nach Überschreiben der Gleichung 28:
U(z)
b
=a+
+ c(1 − z−1 )
E(z)
(1 − z−1 )
(29)
wobei a = K p , b = K p T/T I und c = K p T D /T sind.
Abbildung 52: Parallele Realisierung der PID-Regler(Quelle: [7])
Für die Programmierung können dann nach Abbildung 52 die folgenden Gleichungen geschrieben werden:
p(kT ) = b.e(kT ) + p(kT − T )
q(kT ) = c.e(kT ) − ce(kT − T )
u(kT ) = p(kT ) + a.ek(t) + q(kT )
Man kann nun die folgende PDL (Seitenbeschreibungssprache) entwickeln um den PID Algorithmus zu implementieren:
• BEGIN
– DO FOREVER
∗ Get set point: r(kT)
VI
A
ENTWURF DER REGLERSTRECKE
∗ Get system output: y(kT)
∗ Calculate error: e(kT) = r(kT) - y(kT)
∗ Calculate I term: p(kT) = be(kT) + p(kT-T)
∗ Calculate D term: q(kT) = ce(kT) - ce(kT-T)
∗ Calculate PID output:u(kT) = p(kT) + ae(kT)+q(kT)
∗ Send control to actuator
∗ Save variables: p(kT-T) = p(kT)
∗ e(kT-T) = e(kT)
∗ Wait for next sample
– ENDDO
• END
Ein praktisches Problem welches immer beim Entwurf von PID-Reglern eintritt, ist die Integralwirkung auch bekannt als Ïntegral windup”. Dieses verursacht längere periodische Überschwingungen
in der Sprungsantwort des Systems. Das Integral-Windup entsteht wegen des Überlaufs im Mikrocontroller und bedeutet, dass die Stellgrößen ihren maximalen Werte überschreiten. Das wird
dann durch die Integration der Fehler in längere periodische Zeiten. Ein Weg zur Beseitigung
der integral windup Wirkung ist die Begrenzung der Stellgröße durch Saturation (Sättigung des
Signals) in der Mikrocontroller in Minimum und Maximum. Abbildung 53 zeigt die Praktische
Realisierung des PID-Regelers mit Anti-Wind Up.
Abbildung 53: Praktische Realisierung der PID-Regler mit Anti-Wind up (Quelle: [7])
VII
A
ENTWURF DER REGLERSTRECKE
Beim designen von digitale Regelsystemen ist die Wahl von Abtastintervallen sehr wichtig, da
die schnelle Abtastung große Abtastraten erfordert (Höhe Bits Stellen) d.h teure A/D Wandlung. Auf der anderen Seite treten bei niedrigen Abtastraten Signalverluste auf. Es gibt mehrere
Ansätze für die Wahl der Abtastraten. Der folgende ist als Leitfaden für die Wahl der minimale
Abtastrate gedacht:
• Für die Sprungsantwort der PID-Regler, der durch Ziegler-Nichols open-loop Methode
simuliert wird, gilt
– T < T I/4
In Bezug auf Abbildung 53 wird die Implementierung des PID Regler Algorithmus mit AntiWind wie folgt notiert:
• BEGIN
– DO FOREVER
∗ Get set point: r(kT)
∗ Get system output: w(kT)
∗ Calculate error: e(kT) = r(kT) - w(kT)
∗ Calculate I term: p(kT) = be(kT) + p(kT-T)
∗ Calculate D term: q(kT) = cw(kT) - cw(kT-T)
∗ Calculate PID output:u(kT) = p(kT) +aw(kT)+ q(kT)
∗ IF u(kT) ¿ MAX
∗ p(kT) = p(kT-T) + MAX - u(kT)
∗ u(kT) = MAX
∗ ELSE IF u(kT) ¡ MIN
∗ p(kT) = p(kT-T) + MIN - u(kT)
∗ u(kT) = MIN
∗ END IF
∗ Send control to actuator
∗ Save variables: p(kT-T) = p(kT)
∗ w(kT-T) = w(kT)
∗ Wait for next sample
– ENDDO
• END
VIII
A
ENTWURF DER REGLERSTRECKE
/***********************************************************************
Für eine Temperaturregelung reicht eigentlich ein PI-Regler.Temperaturregelungen sind meist
relativ träge, es kommt aber wirklich darauf an, was man genau aufwärmen möchte. Interessant
wäre hier zu wissen, wie schnell von einer niedrigen Temperatur A zu einer höheren Temperatur
B aufgeheitzt werden kann.
Regler:
PROJECT: PI
FILE: PI.C
DATE: 22.6.2009
PROCESSOR: Atmega128
COMPILER: Avrstudio C
This program implements the PI algorithm
The PI parameters are: a = 10.9b = 0.37 T = 20 seconds R = 300 mV (30C)
Der Regler wird periodisch aufgerufen. Die Periodendauer last sich hier schlecht angeben, sie ist
abhängig von der Trägheit des Systems und die Wertebereiche von Regelabweichung und PWM,
ich würde sie einfach mal auf 1. Regelabweichung ist die Differenz von Istwert und Sollwert, der
Istwert wird zum Beispiel mit dem ADC gemessen, an dessen Eingang der Pt100(RTD)-Sensor
angeschlossen ist. ISumme muss beim Start der Regelung initialisiert werden. Hier erfolgt die
Integration in der Regelroutine. PWM ist zum Beispiel der Wert für die Pulsweitenmodulation,
die ein Heizelement ansteuert.
Ein Verfahren, um P und I experimentell zu ermitteln:
1-Erst einmal den I-Anteil entfernen.
2-Den P-Anteil (also P) so wählen, dass die Temperatur nachgeredet wird, aber nicht ganz die
Solltemperatur erreicht, sonst kommt es zum Überschwingen.
3-Dann den I-Anteil wieder hinzufügen, I ist kleiner als P . I so wählen, dass der Sollwert
möglichst schnell erreicht wird, aber es nicht zum Überschwingen kommt.
Regelabweichung = Istwert - Sollwert ; Regelabweichung ermitteln
ISumme = ISumme + I*Regelabweichung ; Integration
PWM = P*Regelabweichung + ISumme ; Stellgröße
******************************************************************************/
Weitere Informationen finden sich unter [4], [7] sowie [22].
Tempraturegelercode
IX
A
ENTWURF DER REGLERSTRECKE
C:\Dokumente und Einstellungen\M.Nour\Desktop\PID_controller-Terarrien\Terarienregler.c
/*************************************************************************************
Autor Mohamed Goni
**************************************************************************************/
#include <avr/io.h>
#include <inttypes.h>
#include <util/delay.h>
#include <avr/io.h>
#include <math.h>
#include <stdlib.h>
//Konstanten
typedef struct
{
int Ta;
// Abtastzeit in ms
int I;
// Integralanteil
int Kp;
// Verstärkung
int D;
// Differenzieller Anteil
int e;
// Regelabweichung
int esum;
// Summe der Regelabweichungen
int ealt;
// Regelabweichung zum ZP z-1
}
PID_Einstellung;
// Struktur PID_Einstellungen erzeugen
//Prototypen
void PID_Init(void);
int PID_Cyclic(int, int, PID_Einstellung*);
PID_Einstellung Regler1;
// Variable Regler1, je nach Bedarf erweitern
void main(void)
{
PID_Init();
int Ausgang, w,x;
while(1)
{
Ausgang = (PID_Cyclic(x,w,&Regler1) / 4);
}
}
void PID_Init(void) // In der Init müssen die Reglereinstellungen gemacht werden
{
//Ta<T1/4;T1 sprungantwortzeit aus Ziegler-Nicholsopen-loop verfahern
Regler1.Ta=10;
Regler1.I=100;
Regler1.D=0;
Regler1.Kp=1;
Regler1.esum=0;
Regler1.e=0;
// Für weiteren Regler einfach Neue Variable erstellen
Regler1.ealt=0; // und hier Werte mit Regler2.xx=0 einstellen
}
int PID_Cyclic (int x, int w, PID_Einstellung* PID)
{
int y;
PID->e = w - x;
// aktuelle Regelabweichung bestimmen
if ((y < 1023)&&(y > 0))
// bei Übersteuertem stellglied Integration einfrieren
{
// (Anti-Windup)
PID->esum = PID->esum + PID->e;
// Summe der Regelabweichung aktualisieren
}
y = (PID->Kp*PID->e)+(PID->I*PID->Ta*PID->esum)+(PID->D*((PID->e-PID->ealt))/PID->Ta);
// Reglergleichung
PID->ealt = PID->e;
// Regelabweichung für nächste Abtastung merken
if (y > 1023)
// Stellgröße auf 0..1023 begrenzen (10 bit PWM)
{
y = 1023;
}
if (y < 1)
{
y = 0;
}
return y;
// Stellgröße zurückgeben
}
Page: 1
X
B
SCHALTPLÄNE/LAYOUTS
B Schaltpläne/Layouts
B.1 Master Control Unit
C4
1u
C3
1u
C6
1u
1
F09 RS232
C7
100n
9
5
2 1C
n001
860
R5
ZD3
IC3
IC7
3.3V Z Diode
4066D
6
1
IC2
4049D
MAX232ECWE
100n
IC8
C11
4066D
2,54
100n
22p
C16
100n
R6
R7
R8
R9
R10
R11
R12
470
470
470
470
470
470
470
12
F09
6
1
RS485
20
POWER
470
R14
470
R15
470
R16
R17
470
470
R18
470
R19
470
R20
470
R21
zHM 6 1
2Q
1
100n
IC1
22p
MEGA128-A
C1
C15
ISP
C17
R3
C2
GPIO
6
470
1
R1
R2
860 10k
3 1R
k01
1
DCF77
74HCT125D
1
ZD1
IC13
3.3V Z Diode
C5
78L05SMD
RESET
C9
C10
860
3.3V
100nZ DiodeR4
C13
ZD2
330n
FPS009-30003
SD/MMC
100n
1u
IC6
100n
C18
9
5
1
1
R24
180
DISPLAY
100n
BACKLIGHTIC5
C8
MAX481CSA
D4
SB130
2.2k
100u/25V
R26
C20
C21
2,54
500p
L1
100u/16V
C14
IC4
10k
R25
1.0k
R27
MC34063AP
1
R23
R22
180
Abbildung 54: Boardlayout der MCU
XI
B.1
Master Control Unit
B
SCHALTPLÄNE/LAYOUTS
A
B
C
D
E
F
G
H
I
J
K
1
GND
GND
1
2
3
4
5
6
7
8
9
10
11
12
+5V
GPIOSIG
IO0 R6
IO1 R7
IO2 R8
470
IO3 R9
470
IO4 R10
470
IO5 R11
470
IO6 R12
470
IO7 470
GND 470
GPIOINT
GPIO
+5V
+5V
2
IO7
IO6
IO5
IO4
IO3
IO2
IO1
IO0
IO7
IO6
IO5
IO4
IO3
IO2
IO1
IO0
GPIOINT
GPIOSIG
GPIOINT
R26
2.2k
A
E
S
L1
SWC
1
Spule aus Bausatz
DRC
2
3
4
150 uH / 100 mA
IC4
TC
SWE
R24 180
C20
100u/25V
2
4
6
8
10
12
14
16
18
20
4
D4
SB130
1
3
5
7
9
11
13
15
17
19
3
8
IPK
+
GND
Not connected
GND
RESB
CSB
RS
M86
+5V
WRB
RDB
D0
R14 470
D1
R15 470
D2
R16 470
D3
R17 470
D4
R18 470
D5
R19 470
D6
R20 470
D7
R21 470
GND
+5V
+15V
GND
Not connected
Schaltplan übernommen aus Dokumentation zum Bausatz von Pollin.de
Ansteuerplatine f. Sharp M078CKA
Best. Nr. 120 487
R23 180
VCC
COMP GND
MC34063AP
C21
500p
C18
100n
GND
7
100u/16V
D[0..7],BLEN,RESB,CSB,RS,M86,WRB,RDB,+5V,+15V,GND
+5V
6
5
+
D7
D6
D5
D4
D3
D2
D1
D0
1
+5V
R25 10k
GND
+5V
+15V
D7
D6
D5
D4
D3
D2
D1
D0
R22
GND
+5V
+15V
C14
BLEN
RESB
CSB
RS
M86
WRB
RDB
R27 1.0k
BLEN
RESB
CSB
RS
M86
WRB
RDB
+15V
DISPLAY
5
1
2
BLEN
GND
BACKLIGHT
ACHTUNG: Wird von der Rückseite eingelötet
GND
GND
+5V
+5V
DCF77INT,+5V,GND
DCF77INT
DCF77INT
GNDGNDGND
22p
SD/MMC
10
9
8
CSEL
DIN
GND
+3.3V
SCK
GND
DOUT
N/C
N/C
1
2
3
4
5
6
7
8
9
330n
74HCT125D
C13
FPS009-30003
4
23
24
62
64
63
SD_CSEL
SD_MOSI
GND
+3.3V
SD_SCK
GND
SD_MISO
Not connected
Not connected
IC13C
RESET 20
+5V
+5V
GND
52
21
22
53
18
19
+5V
+5V
GND
GND
43
34
33
1
54
55
56
57
58
59
60
61
IC13B
5
6
+5V
8
IC1
7
VOUT
1
C10
+3.3V
14
100n
GND
(AD7)PA7
(AD6)PA6
(AD5)PA5
(AD4)PA4
(AD3)PA3
(AD2)PA2
(AD1)PA1
(AD0)PA0
IC13P
(OC2/OC1C)PB7
(OC1B)PB6
(OC1A)PB5
(OC0)PB4
(MISO)PB3
(MOSI)PB2
(SCK)PB1
(SS)PB0
VCC
+5V
+5V
+3.3V
+3.3V
44
45
46
47
48
49
50
51
GND
Masseverbindung manuell
74HCT125D
SD_MISO
11
12
GND
13
IC13D
8
MISO
D7
D6
D5
D4
D3
D2
D1
D0
RE
DE
TXD1
RXD1
CTS
RTS
DCF77INT
GPIOINT
GPIOSIG
TXD/PDO
RXD/PDI
17 Reserved
16 Reserved
15 Reserved
14 CSEL
13 MISO
12 MOSI
11 SCK
10 Reserved
32
31
30
29
28
27
26
25
9
8
7
6
5
4
3
2
42
(A15)PC7 Reserved
41
BLEN
(A14)PC6
40
RDB
(A13)PC5
39
WRB
(A12)PC4
38
M86
(A11)PC3
37
RS
(A10)PC2
36
CSB
(A9)PC1
35
RESB
(A8)PC0
(T2)PD7
(T1)PD6
(XCK1)PD5
(IC1)PD4
(TXD1/INT3)PD3
(RXD1/INT2)PD2
(SDA/INT1)PD1
(SCL/INT0)PD0
(IC3/INT7)PE7
(T3/INT6)PE6
(OC3C/INT5)PE5
(OC3B/INT4)PE4
(OC3A/AIN1)PE3
(XCK0/AIN0)PE2
(TXD/PDO)PE1
(RXD/PDI)PE0
7
VIN
3
74HCT125D
IC6
2
GND
2
3
6
7
GND
IC13A
78L05SMD
74HCT125D
1
RESET
XTAL1
XTAL2
AREF
AVCC
AGND
VCC
GND
PG3(TOSC2)
PG4(TOSC1)
Interner Pull-Up
an PEN
PG2(ALE)
PG1(RD)
PG0(WR)
PEN
PF7(ADC7/TDI)
PF6(ADC6/TDO)
PF5(ADC5/TMS)
PF4(ADC4/TCK)
PF3(ADC3)
PF2(ADC2)
PF1(ADC1)
PF0(ADC0)
MEGA128-A
6
5
4
3
2
1
DCF77
22p
Q2
16 MHz
XTAL2
Wird auf bottom bestückt
XTAL1
C16 C17
100n100n
GND
IO7
IO6
IO5
IO4
IO3
IO2
IO1
IO0
POWER
1
2
3
+5V
DCF77INT
GND
C1
6
RESET
2
1
RESET
10k
+5V
R13
Wird auf bottom bestückt
An Taster o.ä.
C2
R2
SD_CSEL,SD_MISO,SD_MOSI,SD_SCK,+5V,+3.3V,GND
10k
+3.3V
MOSI
A
B
3
B
2
C
R5
4066D
IC7A
1
A
13
C
SCK
RESET
3.3V Z Diode
ZD3
SD_SCK
860
ISP_SCK
+5V
4066D
+5V
GND
GND
R1
RESET
ISP_RESET
Wird auf bottom bestückt
470
IC3B
+5V
4
VDD
14
RXD/PDI
5
IC7P
SD_MOSI
9
5
RESET
3.3V Z Diode
ZD2
860
IC7B
4
SCK
RESET
ISP_RESET,ISP_MISO,ISP_MOSI,ISP_SCK,+5V,GND
A
B
3
B
10
B
9
B
2
C
+5V
4066D
IC3D
11
RXD/PDI
12
ISP_MOSI
ISP_MOSI
GND
C
1
3
5
RESET
A
10
VSS7
C15
GND
860
R4
100n
GND
SD_CSEL
C9
3.3V Z Diode
ZD1
100n
R3
CSEL
4066D
8
VDD
14
TXD/PDO
6
RESET
C
ISP_RESET
4066D
IC3A
IC3P
VSS7
C12
A
2
4
6
IC3C
+5V
100n
ISP
GND
1
TXD/PDO
13
RESET
A
ISP_MISO
ISP_SCK
ISP_MISO
C
4066D
GND
-5V
11
+5V
IO[0..7],CSEL,MISO,MOSI,RXD/PDI,TXD/PDO,CTS,RTS,RXD1,TXD1,SCK,D[0..7],BLEN,RESB,CSB,RS,M86,WRB,RDB,RE,DE,DCF77INT,GPIOINT,RESET,RESET,GPIOSIG,+3.3V,+5V,+12V,+15V,-5V,GND
RXD2
GND
TXD2
GND
Masseverbindung manuell
GND
+5V
+5V
-5V
-5V
RTS
RTS
CTS
A
6
C
B
9
GND,CTS,RTS,RXD2,TXD2,+5V,-5V
+
2
V-
6
+
14
7
13
8
T1IN
T1OUT
T2OUT
T2IN
R1OUT
R1IN
R2OUT
R2IN
GND
MAX232ECWE
15
IC2PC7
100n
4066D
IC8E
V+
12
8
GND
GND
GND
4049D
15
C2-
C6
2
IC8A
11
C1C2+
5
11
TXD2
GND Reserved10
12
RXD2
Reserved 9
4066D
IC7C
GND
4049D
12
10
1u
3
IC8D
4049D
VSS8
100n
IC8P
C11
B
1u
C
C1+
4
C4
A
1u
11
12
GND
VDD
1
9
1
3
+
IC7D
7
IC8C
10
+
C3
1u
6
IC2
GND
4049D
C5
CTS
4049D
+5V
14
16
VCC
RS232
IC8F
4
5
IC8B
6
7
8
9
13
1
2
3
4
5
4049D
GND
RTS
CTS
14
+12V
+12V
RXD1
RXD1
TXD1
TXD1
RE
RE
DE
DE
IC5
GND
Masseverbindung manuell
1
GND
RXD1
2
RE
3
DE
4
TXD1
RO
B 7
RE/
6
DE
A
DI
15
GND
8
RS485
GND
VCC
6
7
8
9
+5V
IC5PC8
100n
5
1
2
3
4
5
MAX481CSA
GND
+5V
+12V
16
A
B
XII
C
D
E
F
G
H
I
J
K
Abbildung 55: Schematic der MCU
B.2
Busteilnehmergrundmodul
B
SCHALTPLÄNE/LAYOUTS
B.2 Busteilnehmergrundmodul
<KQ
.&*/6
90):
0
9/:
:P
#+,
Q
90):
=>?@A
9/:
9
)
:<
K/
K%
KQ
0*8
0**7
0**7
0
)
Q
V=0
#+,
#+,
90):
-+./0.12,
,<
%
1 $
,"
Q
.
R"O
)
RP
0
M)'0
M)')
M)'Q
2
M)'%
HE@II@
#+,
<K)
9/:
9/:
0**7
&:KK
#+,
#+,/
K1
R0
<K)=
#+,
0*;
!"#$%&'$()*
0**7
K)
))5
)
K.
9/:
U0
0
V=)
0
)
%.7
K0
K&
=K1JOR"-"6L
)0
)*
0&
$#+,
$R"S
$:KK
.
))5
=K*J$,K*L
=K0J$,K0L
=K)J$,K)L
=KQJ$,KQL
=K%J$,K%O-,$L
=K/J$,K/O-KNL
$,K1
$,K.
=21JM6$N0O6P-K0L
)Q
)%
)/
)1
).
)&
0T
))
=,*JRM,L
=,0J6M,L
=,)J<+6*L
=,QJ<+60L
=,%JMKHO6*L
=,/J60L
=,1J$<+*L
=,.J$<+0L
Q*
Q0
Q)
0
)
T
0*
00
=2*J<K=L
=20JPK0$L
=2)J--OPK02L
=2QJ!P-<OPK)L
=2%J!<-PL
=2/J-KHL
0)
0Q
0%
0/
01
0.
&
=2.JM6$N)O6P-K)L
Q
/
%
1
#+,
#+,
:KK
:KK
%!34
9/:
#+,
)T
-:Q
#+, 1
!P-< %
9/: )
9/:
/ R"-"6
Q -KH
0 !<-P
<-=1=<+
#+,
$,K*
$,K0
$,K)
$,KQ
$,K%
$,K1
$,K.
=,Q
=,%
=,/
=,1
=,.
=2*
=20
=2)
<K0
Abbildung 56: Schaltplan Busteilnehmergrundmodul
XIII
-BCDBE@CFB@G0
0
=,%
)
=,Q
$,K% Q
$,KQ %
$,K) /
$,K0 1
$,K* .
$,K. &
#+, T
-:0
-BCDBE@CFB@G)
$,K1 0
)
9/:
Q
=2)
%
=20
/
=2*
1
=,.
.
=,1
&
=,/
-:)
B.2
Busteilnehmergrundmodul
B
SCHALTPLÄNE/LAYOUTS
Abbildung 57: Layout Busteilnehmergrundmodul
XIV
B.3
Busteilnehmer Piggyback Board
B
SCHALTPLÄNE/LAYOUTS
B.3 Busteilnehmer Piggyback Board
&'()*$+,$-*.$/1
1
!>4
0
!>2
@>A4 2
@>A2 4
@>A0 5
@>A1 6
@>AB 7
@>A7 8
<=> ;
9:1
&'()*$+,$-*.$/0
@>A6 1
0
?5:
2
!&0
4
!&1
5
!&B
6
!>7
7
!>6
8
!>5
!"#$%
?10:
?5:
<=>
1
0
2
3!1
9:0
Abbildung 58: Belegung der Buchsenleisten des Busteilnehmer Piggyback Board
Abbildung 59: Layout Busteilnehmer Piggyback Board
XV
B.4
Temperatursensor
B
SCHALTPLÄNE/LAYOUTS
B.4 Temperatursensor
Abbildung 60: Eagle Schematics des Temperatursensors
Part
R1
R3
R4
R5
R6
R7
R2
Rt
C1
IC1A,IC1B,IC1C
Package
0207/10
0207/10
0207/10
0207/10
0207/10
0207/10
PT − 10S
PT − 10S
C025 − 050X050
LM324N DIL14
Library
rcl
rcl
rcl
rcl
rcl
rcl
rcl
rcl
rcl
linear
Wert
47k
4, 7k
1k
1k
51k
51k
0 − 1k
100 − 139
100nF
Tabelle 17: Partliste des Temperatursensors
XVI
B.4
Temperatursensor
B
SCHALTPLÄNE/LAYOUTS
Abbildung 61: Eagle Layout des Temperatursensors
XVII
839839
839839
839839
839839
.1
.-
C
.1
.-
C
.4
/01-23
.2
G19
/01-23
=
G1H
/01-23
.2
G-9
/01-23
=
6
<
/&!1
>;
G1A
.
/01-23
2;7
H=
H6
G-@
;
/01-23
1
-
--45
>2
H.
--45
>-
2;5
>.2
>.
-;5
G1@
;
/01-23
1
-
6
<
G-A
.
/01-23
Abbildung 62: Feuchtesensorschaltung (Eagle)
839
2:;?
H<
2;5
@ABCC
91
.32.2=
@AB.CC
839
2:;?
H;
&
839
.447
H.-
E
839
2:;?
H.6
6
<
-
1
>1
.47
/&!- /&!.
839839
G.9@
;
/01-23
/01-23
.
G.9A
839
>C:1
>-<
E
G-H
H2
H-
.40
2;D
.447
.47
>.;
.4
>-1
.0
.:-5
E
<=4>
>14
A
I
&
.445
839
839
.445
>..:-
.445
>..:.
.445
.445
.47
4:.?
839
H.1
839
&
4:.?
<=4>
>.=
G.99
.2
/01-23
><
.45
H.<
.-
.1
>C:.
/01-23
=
G.9H
>C:-
C
.4
H1
>.1
.:-5
839 839
E.-B
>6
E.-B
E6B
839
E.-B
F!.
!"#$%
.
1
&B-
&'()'*$(+'$,A9H< .
E6B
1
!@2
!@.
6
!@4
<
!9;
;
!9<
=
!96
&B.
&'()'*$(+'$,.
.
!92
!91
A9H2 1
A9H1 2
A9H- 6
A9H. <
A9H4 ;
A9H; =
839 C
B
>-C
2;5
65
>.2:;5
I
A
@A&24
9.
9-
2
92J@A&-.
-:6
>1.
I
A
2
..
>..:1
.65
65
>.4
.445
2
..
XVIII
-:6
Luftfeuchtemessung
..
B.5
SCHALTPLÄNE/LAYOUTS
B.5 Luftfeuchtemessung
B.5
Luftfeuchtemessung
B
SCHALTPLÄNE/LAYOUTS
Abbildung 63: Layout Feuchtesensorschaltung (Eagle)
XIX
B.6
Bodenfeuchtesensor
B
SCHALTPLÄNE/LAYOUTS
B.6 Bodenfeuchtesensor
1
2
3
4
5
6
A
+12V
A
X1
-1
-2
+12V
K2 plus
B
B
plus 12v
T1
BC547
330
R4S
LSP1
LED1
2v
K1 minus
R1F
15k
120k
T4
BC547
R2
C
R3F
LSP2
C
4.7k
560
R5F
sensor minus
Sensor
Masse
GND
D
D
1
2
3
4
5
16.5.2009 01:25:15 D:\Eigene Dateien\Pspice\blumengiesser-N1.sch (Sheet: 1/1)
Abbildung 64: Simulation bei Kurzschluß der Klemmen
Abbildung 65: Layout
XX
6
B.7
Lichtsteuerung
B
SCHALTPLÄNE/LAYOUTS
B.7 Lichtsteuerung
Abbildung 66: Schaltplan Lichtsteuerung
XXI
?!&
?+@
&-.,
&-.,
3#
!"##%
B#
3&
!"##%
#),
B$
A&
!"#$%
3@
!"##%
F(G&
$$)7&8
B&&
+&
&'())&
<$
F#G&
/&$0
<$
F(G$
*'+
()-5$-@
<&
*'+
+%
&'())&
<&
$$)7&8
BD
+#
F#G$
&(
&(
+5
&'())&
&'())&
&&
&&
$$
$$
&'())&
+.
()-5$-@
$(
$(
#),
/&$0
$&
$&
&$
&$
35
!"##%
3$
!"##%
#),
A$
!"#$%
B&
3%
!"##%
#),
B@
&-.,
3(
!"##%
B(
&-.,
60$
B%
&
$
#
(
5
@
%
.
+@
&'())&
+$
&'())&
+(
&'())&
3.
!"##%
B.
?+%
?!)
?+#
?+5
#
(
*'+
/50
*'+
$
&
?".&(
2C$
12"#)$#
2C&
$
&
@
(
B&#
@.)7)-58 @
B&$
&-%(,7&8
%
&50
?B4
3B&
& $#)0
(
E&
$
&))9:7;5<
34"$$56
3D
&
&))=>
"&
F$G$
$-5<
>&
F&G$
F&G&
B
Abbildung 67: Layout Lichtsteuerung
*'+
B&5
$5)
B&)
##)
/50
F$G&
Lichtsteuerung
60#
B5
/&$0
A(
!"#$%
#
$
&
XXII
6H"
A#
!"#$%
B&(
5
(
#
$
&
60(
B.7
SCHALTPLÄNE/LAYOUTS
F!5(
F!5!
/
(
!
'
!$C
4/
/
!$$>
4!
6)(
6)!
)@
!
(
/
#
.
!
(
/
)7
%"&
@4!
8<$.=
%"&
'?9
'!()
D%"&
!
!$$>
4(
'.)0!
@4#2
%"&
%"&
'.)
%"&
#
(
#"//
:
.
!
7;!
#
(
#"//
:
.
7;(
!$;
A!!
'.)0!
D%"&
'.)0!
D%"&
!/
!(
!$;
A(
!;
E8
94//85!:
A!$
%"&
A!#
A-
!;
!
(
/
#$$!&
(
!
-
<
=?,B3,A(
E!$
@AB.!$
%"&
!!
!
(
/
=?,B3,A!
E!
@AB.!$
%"&
@4#&
'!()
'!()
&:
!"#$$#
&!
!"#$$#
/$;
/$;
!
#8$
A.
:
'.)
%"&
234567&8$ !$;
#$$!&
#
@4#9
!$$0(1
E(
9&!/-
A#
234567&8$ !$;
%"&
.
#$$!&
!$
@4#4
#$$!&
/
@4#D
'.)
A!/
A!(
!;
E94//85!:
A!.
#8$
A<
A8
'.)
E#
*+,(-..
'?9
E:
*+,/$..
D%"&
E.
*+,/$..
E/
*+,(-..
&(
!"#$$#
2,=3@,A'
&#
!"#$$# !
'.)
)&&
)66
6)/
(
!#
8
A!
A!:
A!<
A!8
Abbildung 68: Schaltplan Heiz-/Kühlelement
#8$
!$$0(1
E<
9&!/-
A/
B
#8$
&/
!"#$$#
!
XXIII
2,=3@,A5
Heiz-/Kühlelement
&.
!"#$$#
B.8
SCHALTPLÄNE/LAYOUTS
B.8 Heiz-/Kühlelement
!;
A:
5$
5"
5!
05!
!
"
9:$
!
,-
<!
+!
67!
+$
%$
+!.
,8
+!8
+!3
,#
+.
+#
%"
67"
05!
9:! +-
!
9:"
+8
+!$
,!;
%#
,.
,"
$ " ! ,3
,!
+4
$ " ! ,4
+!!
%.
%!
+"
+3
,$
+!-
%-
#
XXIV
Abbildung 69: Layout Heiz-/Kühlelement
+!;
/(&*0(+1
!
&'()*(+"
/(&*0(+2
+!"
+!#
!
&'()*(+!
B.8
Heiz-/Kühlelement
B
SCHALTPLÄNE/LAYOUTS
B.9
Futterklappe
B
SCHALTPLÄNE/LAYOUTS
B.9 Futterklappe
Anzahl
4
2
2
6
1
1
1
4
2
2
2
2
Bauelemente
Transistor
Transistor
Transistor
Diode
Z-Diode
Kondensator
Kondensator
Widerstand
Widerstand
Widerstand
Widerstand
Widerstand
Wert
MOSFET
NPN
PNP
1N4004
1N8548
1uF
0.1uF
33Ω
10Ω
750Ω
3.3KΩ
10KΩ
Tabelle 18: Partliste der Futterklappe
Abbildung 70: Layout der Futterklappe
XXV
B.9
Futterklappe
B
SCHALTPLÄNE/LAYOUTS
Abbildung 71: Schaltplan der Futterklappe
XXVI
Abbildungsverzeichnis
C
ABBILDUNGSVERZEICHNIS
C Abbildungsverzeichnis
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Designstudie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Beispielaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Blockbild des Steuerungssystems . . . . . . . . . . . . . . . . . . . . . . . . .
Verlauf der Antennenspannung des DCF77 Senders
(über dem Signal: Länge der Absenkung; unterhalb des Signals: Sekunden) (Quelle:ptb.de) .
Dekodierungsschema des Zeittelegramms (Quelle:ptb.de) . . . . . . . . . . . . . . .
kommerzielles DCF77-Modul . . . . . . . . . . . . . . . . . . . . . . . . . .
Blockschaltbild der MCU . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Struktur des Menusystems . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Busteilnehmermodul Oberseite . . . . . . . . . . . . . . . . . . . . . . . . . .
Busteilnehmermodul Unterseite . . . . . . . . . . . . . . . . . . . . . . . . .
Kennlinie des Pt100 (aus: [2]) . . . . . . . . . . . . . . . . . . . . . . . . . .
Brückenschaltung (Pspice) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Verstärkerschaltung (Pspice) . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pspice Schematics des Temperatursensors . . . . . . . . . . . . . . . . . . . .
Fertige Platine des Temperatursensors . . . . . . . . . . . . . . . . . . . . . .
Abhängigkeit des Sensorwiderstandes von Temperatur und Relativer Luftfeuchtigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Blockschaltbild der Schaltung zur Feuchtigkeitsmessung . . . . . . . . . . . .
Statistik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Schaltplan Leerlauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Simulation Leerlauf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Schaltplan bei Kurzschluß der Klemmen . . . . . . . . . . . . . . . . . . . . .
Simulation bei Kurzschluß der Klemmen . . . . . . . . . . . . . . . . . . . . .
Blockschaltbild der Lampenschaltung . . . . . . . . . . . . . . . . . . . . . .
Schaltplan des Dimmers . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Phasenanschnitt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
schematische Darstellung eines Triacs, hier als Beispiel: das Potenzial V MT 1 >
V MT 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
skizzierter Impedanzverlauf . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Stromverlauf mit Glätungsinduktivität . . . . . . . . . . . . . . . . . . . . . .
Zeitverläufe bei der Nulldurchgangserkennung . . . . . . . . . . . . . . . . .
Schaltplan der Relaistreiberschaltung . . . . . . . . . . . . . . . . . . . . . . .
Gesamtmodul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Betriebsarten (verändert nach memmert.com) . . . . . . . . . . . . . . . . . . . . . . . . . .
Kennlinie des ”Super Silent 4 Pro TC”- NTC-Widerstandes . . . . . . . . . . .
Ausgangsspannung des Spannungsteilers . . . . . . . . . . . . . . . . . . . . .
Spannungsteiler (Ausschnitt aus dem Gesamtschaltbild Abb. 68) . . . . . . . .
ADC-Umsetzung mit Kennlinienapproximation . . . . . . . . . . . . . . . . .
Schaltung zur Taktrückgewinnung und PWM-Ansteuerung (Ausschnitt aus dem
Gesamtschaltbild Abb. 68) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Oszillatorbild des Tacho-Ausgangs des Lüfters bei maximaler Drehzahl . . . .
XXVII
2
2
3
12
12
13
14
16
21
22
27
28
29
29
30
32
33
37
39
39
40
40
42
43
44
45
46
46
47
48
50
51
52
53
54
54
56
57
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Schematischer Aufbau (verändert nach hardinfo.net) . . . . . . . . . . . . . . . . . . . . . 58
Peltierelement - Einzelmodul . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
H-Brücke mit zugehöriger Logik (Ausschnitt aus dem Gesamtschaltbild Abb. 68) 60
Statemachine der Heiz-/ Kühlsteuerung . . . . . . . . . . . . . . . . . . . . . 61
Kennlinie des Schrittmotors (aus: [18]) . . . . . . . . . . . . . . . . . . . . . . 64
Fertige Platine der Futterklappe . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Blockschaltbild . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
I
Temperatursystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
II
Blockschaltbild der offenen Kette (Quelle: [22]) . . . . . . . . . . . . . . . . . III
Sprungsantwort des Systems (Quelle: [7]) . . . . . . . . . . . . . . . . . . . . IV
Der geschloßene Regelkreis . . . . . . . . . . . . . . . . . . . . . . . . . . .
V
Ziegler-Nichols closed-loop Test (Quelle: [7]) . . . . . . . . . . . . . . . . . .
V
Struktureller Aufbau eines PID-Reglers (Quelle: [7]) . . . . . . . . . . . . . . VI
Parallele Realisierung der PID-Regler(Quelle: [7]) . . . . . . . . . . . . . . . . VI
Praktische Realisierung der PID-Regler mit Anti-Wind up (Quelle: [7]) . . . . VII
Boardlayout der MCU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XI
Schematic der MCU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XII
Schaltplan Busteilnehmergrundmodul . . . . . . . . . . . . . . . . . . . . . . XIII
Layout Busteilnehmergrundmodul . . . . . . . . . . . . . . . . . . . . . . . . XIV
Belegung der Buchsenleisten des Busteilnehmer Piggyback Board . . . . . . . XV
Layout Busteilnehmer Piggyback Board . . . . . . . . . . . . . . . . . . . . . XV
Eagle Schematics des Temperatursensors . . . . . . . . . . . . . . . . . . . . XVI
Eagle Layout des Temperatursensors . . . . . . . . . . . . . . . . . . . . . . . XVII
Feuchtesensorschaltung (Eagle) . . . . . . . . . . . . . . . . . . . . . . . . . XVIII
Layout Feuchtesensorschaltung (Eagle) . . . . . . . . . . . . . . . . . . . . . XIX
Simulation bei Kurzschluß der Klemmen . . . . . . . . . . . . . . . . . . . . . XX
Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XX
Schaltplan Lichtsteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXI
Layout Lichtsteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXII
Schaltplan Heiz-/Kühlelement . . . . . . . . . . . . . . . . . . . . . . . . . . XXIII
Layout Heiz-/Kühlelement . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXIV
Layout der Futterklappe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXV
Schaltplan der Futterklappe . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXVI
D Referenzen
D Referenzen
[1] Homepage ”arctic-cooling”. http://arctic-cooling.com/.
[2] Pt-100 kennlinie. www.ephy-mess.de/deutsch/daten/pt100k.htm.
[3] Wikipedia - Die freie Enzyklopädie. http://de.wikipedia.org/wiki/Wikipedia:
Hauptseite.
[4] Microcontroller Based Temperature Monitoring. Control, Elsevier, 2002.
[5] Peter Baumann. Sensorschaltungen. Vieweg und Sohn Verlag, 1.auflage edition, Februar
2006.
[6] BetaTHERM.
stein.php.
Steinhart-Hart Thermistor Equation.
http://www.betatherm.com/
[7] Tietze U Schenk Ch. Halbleiter-Schaltungstechnik. 1999.
[8] Datasheet.
4049D.
HEF4049&q=HEF4049.
http://www.alldatasheet.com/view.jsp?Searchword=
[9] Datasheet. 4066D. http://pdf1.alldatasheet.com/datasheet-pdf/view/8175/
NSC/4066.html.
[10] Datasheet. 74HCT125D. http://pdf1.alldatasheet.com/datasheet-pdf/view/
15534/PHILIPS/74HCT125D.html.
[11] Datasheet. ATMega48.
doc2545.pdf.
http://atmel.com/dyn/resources/prod_documents/
[12] Datasheet. LCD Controller LH155. http://serdisplib.sourceforge.net/ser/
doc/lh155.pdf.
[13] Datasheet. LCD M078CKA. http://serdisplib.sourceforge.net/ser/doc/
Sharp%20M078CKA-A3QKLA0057.pdf.
[14] Datasheet.
LM2671M-5.0.
http://sigma.octopart.com/11710/datasheet/
National-Semiconductor-LM2671M-5.0.pdf.
[15] Datasheet. Maglev ”Fan and Blower”.
[16] Datasheet. MAX232. http://pdf1.alldatasheet.com/datasheet-pdf/view/
73047/MAXIM/MAX232.html.
[17] Datasheet.
MAX485CSA.
Maxim-MAX485CSA.pdf.
http://sigma.octopart.com/121712/datasheet/
[18] Datasheet. Schrittmotor. http://www.cybertux.nl/elektronica/datasheets/
Stappenmotoren/Conrad%20967645-da-02-de-Schrittmotor.pdf.
XXIX
[19] Datasheet.
SN75176BD.
http://sigma.octopart.com/24999/datasheet/
Texas-Instruments-SN75176BD.pdf.
[20] Datasheet. Spannungsregler 78L33. http://www.datasheet4u.com/html/7/8/L/
78L33_STMicroelectronics.pdf.html.
[21] G. Gromov. Thermoelectric cooling modules. Technical report, RMT Ltd.
[22] Dr Ibrahim. Microcontroller Based Applied Digital Control. 2000.
[23] Information. ATMega128 Programmierinterface. http://www.mikrocontroller.net/
topic/10682#70366.
[24] melcor corp. Thermoelectric Handbook. Technical report, melcor.
[25] Helmut Pape. Projekt: Zeitzeichenempfänger. Wege in der Physikdidaktik, 2, 1991.
[26] PTB. Seite des PTB in Braunschweig.
dcf77_1.htm.
http://www.ptb.de/de/org/4/44/442/
[27] I.S. Steinhart and S.R. Hart. Calibration. curves for thermistors. Deep Sea Research, Vol.
15, 1968.
Herunterladen