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.