Bälz-Seminar / Embedded Systems Hochschule Bremerhaven Bälz-Seminar 2004 Embedded Systems in der Gebäudetechnik S Lüfter- / Pumpenregelung mit Mikrocontroller I Einleitung I.I Embedded Systems I Hochschule Bremerhaven --- IAE Man versteht unter einem “Embedded System” ein spezielles Rechnersystem, das Teil eines Gerätes oder einer Maschine ist. Diese Einheit aus Rechner und Gerät hat eine Generation von Anlagen hervorgebracht, die in Bezug auf Sicherheit, Qualität und Energieeffizienz neue Maßstäbe setzt. Unter den Begriff “Embedded System” fallen beispielsweise mikrorechnergeregelte Waschmaschinen, ABS-/ESP-Regelungen in der Fahrzeugtechnik, medizintechnische Geräte (EKG, EEG, MRT), DVD-Spieler, PDAs, Mobiltelefone, Ampelanlagen und viele militärische Anwendungen. In der Gebäudetechnik sind “Embedded Systems” Elemente zur Gebäudeautomation, Heizungs-, Klimaanlagen sowie neuartige Komponenten wie moderne, geregelte Lüfter und Pumpen. I.II Pumpen-/Lüftersteuerung mit Mikrocontroller Revision: V0.0a (neues Dokument) Datum: September 2004 Prof. Dr.-Ing. Kai Müller Hochschule Bremerhaven Institut für Automatisierungs- und Elektrotechnik An der Karlstadt 8 D---27568 Bremerhaven Tel: FAX: +49 471 48 23 --- 415 +49 471 48 23 --- 418 E---Mail: [email protected] Die Anschaffungskosten für Pumpen oder Lüfter in der Gebäudetechnik sind häufig im Vergleich zu den Betriebs- und Wartungskosten unbedeutend. Es liegt somit nahe, moderne, wartungsfreie Drehstromantriebe oder evtl. EC-Motoren (electronically commutated motors) für diese Aufgabe einzusetzen. Im Fall von Drehstromantrieben wird ohnehin ein Mikrorechner eingesetzt, der gleichzeitig Steuerungs- und Regelaufgaben übernehmen kann. Es lässt sich nun auch der Energiebedarf minimieren, indem der Antrieb nur jeweils mit der gerade benötigten Leistung betrieben wird. Weiterhin können Rechner Kommunikationsaufgaben zwischen Anlagenteilen übernehmen; Gebäudekomponenten lassen sich auf diese Weise einfach vernetzen (CAN-Bus, EIB oder vermehrt Ethernet). Eine sehr preisgünstige Rechnerlösung sind Mikrocontroller. Ein Mikrocontroller (MCU = microcontroller unit) ist ein vollständiges Rechnersystem auf einem Chip, das die gesamte Peripherie zur Ansteuerung eines Gerätes sowie Schnittstellen zur Kommunikation enthält. Der hier eingesetzte Mikrorechner kostet ca. 6 € (Einzelstück). Im Rahmen der Veranstaltung soll als Beispiel für ein typisches “Embedded System” eine Lüfterregelung mit einem modernen RISC-Mikrocontroller verwirklicht werden. Bälz-Seminar / Embedded Systems II Hochschule Bremerhaven --- IAE Ich wünsche allen Teilnehmern dieser Veranstaltung viel Freude an dem faszinierenden Fachgebiet “Embedded Systems”. Bälz-Seminar / Embedded Systems Kai Müller <kmueller@hs ---bremerhaven.de> Tel: (0471) 4823 --- 415 Hochschule Bremerhaven --- IAE II Inhalt 1 Bremerhaven, September 2004 III Mikroprozessoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 Historische Entwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 CISC und RISC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 Mikrocontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.1 Lüftermodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.2 Interface zwischen Mikrocontroller und Lüfter . . . . . . . . . . . . . . . . . . . . 7 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5.1 Softwareentwicklung (GNU WinAVR) . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Programmierung eines PI-Reglers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 6.1 Kontinuierlicher PI-Regler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 6.2 Diskreter PI-Regler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 6.3 Praktische Verwirklichung des diskreten PI-Reglers in “C” . . . . . . . . . . 11 6.4 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5 6 7 Bälz-Seminar / Embedded Systems 1 1 Hochschule Bremerhaven --- IAE 2 Bälz-Seminar / Embedded Systems Mikroprozessoren Hauptspeicher Mikroprozessoren sind sequenzielle (getaktete) Systeme, deren Funktion durch ein Programm (Software) bestimmt wird. Der große Vorteil besteht darin, dass der Mikroprozessor als Standardbauelement günstig in großen Stückzahlen herstellbar ist. Der Entwickler kann durch Programmierung dann nahezu beliebige Funktionen realisieren. Dies ist oft günstiger, als für eine bestimme Anwendung spezielle ICs zu entwickeln [6], [8]. Befehlsregister Befehlszähler Die Komplexität der logischen Funktion eines Mikroprozessorsystems ist nur noch durch den verfügbaren Speicher bzw. den Adressraum begrenzt. Die Programmierung von Mikroprozessoren ist durch die Verwendung von Hochsprachen (C, C++, Java, Ada) sehr komfortabel und effizient geworden. Steuerwerk Akkumulator Eine schnellere und teilweise kostengünstigere Alternative zu Mikroprozessoren sind programmierbare Digitalbausteine (CPLDs, FPGAs), die keine Programmsequenz abarbeiten, sondern deren Funktion fest programmierbar ist [10]. Auch hierfür existieren inzwischen Hochsprachen (VHDL, Verilog), jedoch ist die Programmierung deutlich aufwendiger als bei Mikroprozessoren. Durch die Möglichkeiten der heutigen Digitaltechnik kann zwischen beiden Ansätzen jedoch nicht mehr einfach getrennt werden, da moderne FPGAs eine Größe besitzen (ca. 8 Millionen Gatterfunktionen) die eine Integration eines kompletten Mikroprozessors in ein FPGA gestatten. 1.1 Historische Entwicklung Die grundlegenden Ideen zum Bau eines universellen Computers stammen von Charles Babbage, dessen Konzept aus dem Jahre 1833 auch heute noch Gültigkeit hat. man kann zeigen, mit sich mit einem sogenannten Universalrechner beliebige Probleme lösen lassen. Hochschule Bremerhaven --- IAE Operanden---Reg. Transfer---Reg. Rechenwerk Bild 3.1: Universalrechner (ohne Ein-/Ausgabeeinheiten) Der Hauptspeicher enthält das Programm und die Operanden. In dem Steuerwerk wird ein Befehl aus dem Hauptspeicher in das Befehlsregister geladen und dort interpretiert. Der Befehlszähler wird inkrementiert, so dass der folgende Befehl aus dem Hauptspeicher geladen werden kann. Bei Sprüngen im Programm wird der Befehlszeiger auf den nächsten zu bearbeitenden Befehl gesetzt. Das Rechenwerk führt die arithmetischen und logischen Funktionen mit Daten aus, die ebenfalls aus dem Hauptspeicher geladen und auch dort wieder abgelegt werden. Gewöhnlich enthält das Rechenwerk mehrere Operanden-Register, die einen schnellen Zugriff auf die zu verarbeitenden Daten gestatten. Das Ergebnis einer Verknüpfung steht gewöhnlich im sogenannten Akkumulator. Der erste elektronische Rechner nach diesem Prinzip, Univac1 (1950), wurde vollständig in Röhrentechnik aufgebaut. Moderne Prozessoren bestehen aus Silizium und Metall (Aluminium oder Kupfer) und sind in der sogenannten CMOS-Technologie aufgebaut (Complementary Metal Oxyde Semiconductor). Oft weicht die Struktur auch von der klassischen Form in Bild 3.1 ab. 2 CISC und RISC Die Leistungsfähigkeit eines Prozessors lässt sich einfach über den Kehrwert der Laufzeit für ein Programm definieren Bälz-Seminar / Embedded Systems 3 Hochschule Bremerhaven --- IAE Laufzeit = Zeit × Takte × Instruktionen . Programm Takt Instruktion (3.1) Die gesamte Laufzeit ist also das Produkt aus der Zeit für einen Takt (die Periodendauer des Taktsignals) der Zahl der Takte pro Instruktion mal der Anzahl der Instruktionen für eine bestimme Aufgabe, d.h. für ein Programm. Um also einen leistungsfähigen Prozessor zu entwerfen, müssen im Prinzip alle drei Faktoren minimiert werden. Es hat sich jedoch gezeigt, dass dies nicht unabhängig voneinander erfolgen kann. In frühen Architekturen wurde die Laufzeit durch eine möglichst geringe Anzahl notwendiger Operationen zu verringern, d.h. man minimiert den letzten Teil der Gleichung Laufzeit = Zeit × Takte × Instruktionen . Programm Takt Instruktion (3.2) Eine auf Minimierung der Zahl der Instruktionen optimierte Architektur bezeichnet man als CISC (Complex Instruction Set Computer). Möchte man mit einer geringen Anzahl von Instruktionen auskommen, so müssen diese Befehle zwangläufig sehr komplex ausfallen und benötigen folglich auch viele Takte pro Instruktion. Laufzeit = Zeit × Takte × Instruktionen . Programm Takt Instruktion Bälz-Seminar / Embedded Systems (3.3) 4 Hochschule Bremerhaven --- IAE Ein Mikrocontroller MCU (MicroController Unit) ist ein Computer auf einem Chip, d.h. der Chip enthält neben der CPU auch Programm- (Flash) und Datenspeicher (RAM, EEPROM). Daneben kann der Mikrocontroller auch weitere Peripherie enthalten wie beispielsweise S Digitale Ein- und Ausgänge (Ports), S ADC/DAC (analoge Ein- und Ausgänge), S Serielle Schnittstellen (z.B. USB, USART, CAN), S Timer, S Zähler, S PWM (Pulsweitenmodulation). Atmel AVR ATmega16 (RISC 8-Bit Mikrocontroller) In dieser Veranstaltung wird exemplarisch der ATmega16 von Atmel [2], [3] verwendet. Der RISC-Befehlssatz erlaubt die einfache und effiziente Implementierung von C-Compilern, so dass auf eine Assemblerprogrammierung in den meisten Fällen verzichtet werden kann. Der ATmega16 weist folgende Merkmale auf: S 131 Instruktionen (werden fast vollständig in einem Taktzyklus abgearbeitet) S 32 universelle Register (8 Bit) Bei RISC-Architekturen (Reduced Instruction Set Computer) verwendet man ganz einfache Instruktionen, die sich in einem Takt ausführen lassen. Zwangsläufig steigt damit aber auch die Anzahl der für Programm benötigte Anzahl an Instruktionen. Die RISC-Architektur ist CISC-Rechnern deutlich überlegen, da eine genaue Analyse von Programmen zeigt, dass wenige einfache Befehle sehr häufig auftreten. RISC-Rechner setzen sich in den Bereichen durch, in denen hohe Rechenleistung oder geringer Leistungsbedarf (z.B. Batteriebetrieb) maßgeblich sind. S On-Chip Multiplizierer (2 Takte) S 16KByte Flash-Speicher (> 10.000 Schreib-Lese-Zyklen) S 512 Bytes EEPROM (> 100.000 Schreib-Lese-Zyklen) S 1KByte internes RAM S 3 Timer/Counter S 4 PWM-Kanäle Ein wesentlich Grund in der langen Lebensdauer der veralteten CISC-Rechner ist die starke Marktposition von Intel in Zusammenhang mit dem Betriebssystem Windows, das bis Windows/NT wenig für RISC-Rechner geeignet ist. S 10 Bit Analog-Digital-Umsetzer (ADC), 8 Kanäle S USART (universal synchronous/asynchronous receiver transmitter = serielle Schnittstelle) S Watchdog S Analog-Komparator S 32 digitale I/O (programmierbar) S 16MHz Taktfrequenz S Serial in-circuit Programing Interface (SPI --- Serial Peripheral Interface). Der Mikrocontroller kann neu programmiert werden, nachdem er bereits in die Schaltung eingebaut wurde. 3 Mikrocontroller Es existieren viele Definitionen für Mikrocontroller, die sich alle an der Zahl und Art der auf einen Chip integrierten Funktionen orientieren. Wir wollen uns im Rahmen dieser Veranstaltung auf folgende Definition einigen: Bälz-Seminar / Embedded Systems Bild 1.1: 5 Hochschule Bremerhaven --- IAE Bälz-Seminar / Embedded Systems 6 Hochschule Bremerhaven --- IAE Pinout der PDIP-Version Man erkennt an der Anschlussbelegung des Mikrocontrollers, dass nicht alle Funktionen gleichzeitig genutzt werden können, da alle Ein-/Ausgänge doppelt belegt sind. Bei der Entwicklung einer Steuerung/Regelung mit dem Mikrocontroller ist also darauf zu achten, ob alle benötigten Funktionen auch wirklich konfliktfrei zur Verfügung stehen. Bild 1.2: Blockschaltbild des Mikrocontrollers ATmega16 Bälz-Seminar / Embedded Systems 7 Hochschule Bremerhaven --- IAE Bälz-Seminar / Embedded Systems 8 Hochschule Bremerhaven --- IAE Das Blockschaltbild 1.2 des Mikrocontrollers zeigt den Mikroprozessorkern und die gesamten Peripheriekomponenten, die sich über spezielle Register konfigurieren lassen. 4 Hardware 4.1 Lüftermodell Als Labormodell für eine Lüfteranlage dient ein PC-Ventilator (EC-Motor), der durch einen Impulsausgang eine genaue (digitale) Bestimmung der Drehzahl gestattet. Der Lüfter arbeitet in einem Spannungsbereich von ca. 3,5V-12V und benötigt lediglich kleine Ströme im Bereich von wenigen Milliampere. 4.2 Interface zwischen Mikrocontroller und Lüfter Der Lüfter kann nicht direkt mit dem Mikrocontroller verbunden werden, da die Spannungspegel von Rechner und Lüfter nicht übereinstimmen. Weiterhin benötigt der Lüfter eine Gleichspannung, die der Mikrocontroller nicht erzeugen kann. Die Struktur des Aufbaus zeigt das Blockschaltbild 1.3. Tiefpass Lüfter PWM D A CTR Drehzahl-Pulse Sollwert Bild 1.3: Aufbau des Lüftermodells mit Mikrocontroller Der Sollwert wird über ein Potentiometer vorgegeben. Die Messung der Spannung erfolgt über den internen AD-Umsetzer des Mikrocontrollers. Da der Mikrocontroller nicht über einen DA-Umsetzer verfügt, wird eine kontinuierliche Spannung durch eine digitale Pulsweitenmodulation (14,4kHz) mit nachgeschaltetem Tiefpassfilter erzeugt. Die gesamte Interfaceschaltung zeigt Bild 1.4. Bild 1.4: Interfaceschaltung Mikrocontroller ↔ Lüftermotor Bälz-Seminar / Embedded Systems 9 Hochschule Bremerhaven --- IAE 5 Software 5.1 Softwareentwicklung (GNU WinAVR) 10 Bälz-Seminar / Embedded Systems Hochschule Bremerhaven --- IAE Die Parameter des PI-Reglers sind die Proportionalverstärkung Integralverstärkung ki . Da die AVR-Mikrocontroller-Familie über eine moderne RISC-Architektur verfügt, die sich für den effizienten Einsatz von Hochsprachen eignet, kann die gesamte Programmierung in “C” erfolgen. Als Entwicklungsumgebung wird der GNU-C-Compiler gcc und die Entwicklungsumgebung PN (Programmers Notepad) eingesetzt [5]. Mit diesem Werkzeug kann das Programm editiert, übersetzt und in den Mikrocontroller geladen werden. 6.2 kp sowie die Diskreter PI-Regler Aufgrund der zeitdiskreten Arbeitsweise eine Mikrocontrollers muss die diskrete Version zur Anwendung kommen [1], [7] k−1 u(k) = k p e(k) + k i e(i) , k = 0, 1, 2, (1.2) i=0 6 Die diskrete Integralverstärkung unterscheidet sich von dem kontinuierlichen Parameter, was an dieser Stelle jedoch nicht weiter interessieren soll. Zur Berechnung eignet sich ein rekursiver Algorithmus, bei dem der zweite Term in folgender Form bestimmt wird Programmierung eines PI-Reglers Die Entwicklung eines vollständigen Programms für den Mikrocontroller übersteigt etwas die zur Verfügung stehende Zeit. Es soll deshalb im Rahmen des Kurses ein Kernelement der Regelung, der PI-Regler, in einem eigenen Modul programmiert werden. Regelungstechnisch ist der PI-Regler häufig eine guter Kompromiss zwischen Geschwindigkeit und Genauigkeit. Das Blockschaltbild 1.5 zeigt die Signale und Prozesse des geschlossenen Kreises. PI-Regler e Sollwert w k−2 i=0 i=0 e(i) = e(i) + e(k − 1) . ∆ k e(i) , Spannung u so lautet (1.2) u(k) = k p e(k) + k i I(k − 1) . I(k) = I(k − 1) + e(k) . u aus der t e(τ)dτ . 0 (1.6) Die Gleichungen (1.5) und (1.6) beschreiben den rekursiven Regelalgorithmus für einen diskreten PI-Regler. Als Pseudo-Code für den Algorithmus erhält man Kontinuierlicher PI-Regler u(t) = k p e(t) + k i (1.5) In einem zweiten Schritt folgt gemäß (1.3) und (1.4) Regelungstechnisches Blockschaltbild Bei dem bekannten kontinuierlichen PI-Regler folgt die Stellgröße Regelabweichung e gemäß (1.4) i=0 Drehzahl y 6.1 (1.3) Die Summe auf der linken Seite ergibt sich also aus der Summe im vorhergehenden Schritt plus der Regelabweichung e(k-1). Definiert man I(k) = Lüfter --- Bild 1.5: k−1 (1.1) u_k := k_p * e_k + I_Anteil , (1.7) I_Anteil := I_Anteil + e_k . (1.8) Man beachte das Zuweisungssymbol “:=”, da (1.7) und (1.8) keine Gleichungen im mathematischen Sinne darstellen. 11 Bälz-Seminar / Embedded Systems Hochschule Bremerhaven --- IAE 12 Bälz-Seminar / Embedded Systems Hochschule Bremerhaven --- IAE #include <math.h> #include "picontrol.h" 2 kontinuierlicher PI-Regler static float static float 1.5 1 /* ** PI controller parameter */ void PIsetParams(float pgain, float igain) { Par_Pgain = pgain; Par_Igain = igain; } diskreter PI-Regler 0.5 0 Bild 1.6: 6.3 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 /* ** PI controller (floating version) */ float PiControl_FP(float ww, float yy) { Int_State = 0.0; return(ww); } Sprungantworten des kontinuierlichen und des diskreten PI-Reglers Praktische Verwirklichung des diskreten PI-Reglers in “C” Die Rechengeschwindigkeit des verwendeten Mikrocontrollers erlaubt eine Berechnung des Reglers in Single-Precision Floating-Point (float), d.h. alle Parameter und Signale sind Fließkomma-Größen. Die Ein- und Ausgangsgrößen sind bereits normiert, d.h. Sollwert und Drehzahl sind Werte im Bereich 0,0 ... 1,0. Das folgende Modul enthält bereits die Funktion PiControl_FP(), die allerdings noch keinen PI-Regler enthält, sondern lediglich den Sollwert (Variable uu) unverändert der Stellgröße (Rückgabewert) zuweist. Die Regelgröße (Variable yy) muss in der Verwirklichung des diskreten PI-Reglers natürlich verwendet werden. * ** ** ** ** ** ** ** ** ** ** ** */ Baelz-Seminar 2004, Hochschule Bremerhaven (c) 2004, Kai Mueller IAE, HS Bremerhaven Int_State = 0.0; Par_Pgain, Par_Igain; 6.4 Aufgaben S Ergänzen Sie die Funktion PiControl_FP um den PI-Algorithmus. S Der Sollwert wird in der Variablen ww übergeben; der Istwert ist yy. S Die Parameter des Reglers stehen in den Variablen Par_Pgain (P-Verstärkung) sowie Par_Igain (I-Verstärkung) S Die Variable für den Integralanteil lautet Int_State. S Begrenzen Sie den Ausgang und den Integralanteil auf Werte von 0,0 ... 1,0. Dies erhöht die Geschwindigkeit von Regelvorgängen deutlich. Microcontroller based fan control This example illustrates the design of high performance and low-cost embedded systems for facility management tasks. Revision history: KPM/21-AUG-2004: initial coding #include <inttypes.h> #include <avr/io.h> #include <stdio.h> : : : Bälz-Seminar / Embedded Systems 7 13 Hochschule Bremerhaven --- IAE Literatur [1] Ackermann. J.: Abtastregelung --- Band I: Analyse und Synthese. Springer, Berlin, 1983 [2] Atmel Corp.: Atmel AVR Brings RISC to 8-Bit World. Atmel, 1997 [3] Atmel Corp.: ATmega16 Complete User’s Guide Atmel, 2004 [4] Atmel Corp.: STK500 User Guide Atmel, 2003 [5] WinAVR Documentation from the GNUPL “WinAVR” project. Eric Weddington, Colin O’Flynn, WinAVR development team, 2004 [6] Heesel, N. und W. Reichstein: Mikrocontroller Praxis. Vieweg, 1996 [7] Isermann, R.: Digitale Regelsysteme --- Band I: Grundlagen, Deterministische Regelungen. Springer, Berlin, 1987 [8] Limbach, S.: Kompaktkurs Mikrocontroller. Vieweg, 2002 [9] K. Urbanski u. R. Woitowitz: Digitaltechnik. Springer, 2000 [10] J. Wakerly: Digital Design: Principles and Practices. Prentice-Hall, 1999