Fakultät für Elektrotechnik und Informationstechnik Versuch BENT07 Mikrocontrollerprogrammierung für die Leistungselektronik Bearbeitung und Aufbau: Dr.-Ing. C. Kreischer Oliver Jüdt Maik Rose L EHRSTUHL FÜR E NERGIEWANDLUNG P ROF. D R .-I NG . M. P FOST Dortmund, den 16.05.2017 INHALTSVERZEICHNIS INHALTSVERZEICHNIS Inhaltsverzeichnis 1 Einleitung 4 2 Einführung in die Leistungselektronik 2.1 Halbleiterschalter und -steller . . . . . . . . . . . . 2.1.1 Vor- und Nachteile von Halbleiterschaltern 2.1.2 Der Thyristor . . . . . . . . . . . . . . . . 2.1.3 Der Triac . . . . . . . . . . . . . . . . . . 2.2 Wechselstromsteller . . . . . . . . . . . . . . . . . 2.2.1 Stromverläufe . . . . . . . . . . . . . . . . 2.2.2 Ohmsche Last R . . . . . . . . . . . . . . 2.2.3 Induktive Last L . . . . . . . . . . . . . . 2.2.4 Ohmsch-induktive Last . . . . . . . . . . . 2.2.5 Darstellen der Leistung . . . . . . . . . . . 2.2.6 TSE-Beschaltung . . . . . . . . . . . . . . 2.3 Steuerverfahren . . . . . . . . . . . . . . . . . . . 2.3.1 Steuerung mit Nadelimpulsen . . . . . . . 2.3.2 Steuerung mit (π-α)-Impulsen . . . . . . . 2.4 Vorbereitungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 5 5 7 8 9 10 11 11 12 13 13 13 14 15 3 Prozessorboard 16 3.1 Der Prozessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2 Schnittstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.3 Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4 Programmierumgebung 18 4.1 AVR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 5 Programmierung 5.1 Die Ports . . . . . . . . . . . . 5.1.1 Zugriff auf Ports . . . . 5.1.2 Taster und Schalter . . . 5.1.3 Vorbereitungsaufgaben . 5.2 Die Timer . . . . . . . . . . . 5.2.1 Der Vorzähler (Prescaler) 5.2.2 16-Bit Timer/Counter . . 5.2.3 Vorbereitungsaufgaben . 5.3 Analoge Eingabe . . . . . . . . 5.3.1 Register des ADC . . . 5.4 Programmieren mit Interrupts . 5.4.1 Interrupt-Quellen . . . . 5.4.2 Register . . . . . . . . . 5.4.3 Vorbereitungsaufgaben . 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 19 19 20 21 22 22 22 24 25 25 27 27 28 29 Steuerboard 30 6.1 Taster und LEDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 6.2 Nulldurchgangsdetektor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 6.3 Leistungselektronik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2 ABBILDUNGSVERZEICHNIS ABBILDUNGSVERZEICHNIS 7 Durchführung 7.1 Aufgaben zur Einarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 Steuerung des Halogenstrahlers durch ein Potentiometer . . . . . . . . . . . . . . . 7.3 Steuerung des Halogenstrahlers durch zwei Taster . . . . . . . . . . . . . . . . . . 32 32 32 32 8 Literaturverzeichnis 33 Abbildungsverzeichnis 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.1 3.2 3.3 4.1 5.1 6.1 6.2 6.3 Thyristor (Vierschichttriode) . . . . Ausschaltverhalten eines Thyristors Thyristorkennlinie und Symbol . . . Triackennlinie und Symbol . . . . . Stellen einer RL-Last . . . . . . . . Phasenanschnitt . . . . . . . . . . . Zeitverläufe bei Phasenanschnitt . . Momentanleistung . . . . . . . . . π − α -Impulse . . . . . . . . . . . Prozessor-Board . . . . . . . . . . . Pinbelegung des ATMega16 . . . . Schnittstellen . . . . . . . . . . . . Codevision AVR . . . . . . . . . . Taster . . . . . . . . . . . . . . . . Steuerboard . . . . . . . . . . . . . Nulldurchgangsdetektion . . . . . . Leistungselektronik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 7 8 8 9 11 12 14 16 17 17 18 20 30 31 31 1 1 EINLEITUNG Einleitung Leistungselektronik wird auf allen Gebieten angewandt, die ein Umformen, Steuern oder kontaktloses Schalten von elektrischer Energie erfordern. Anwendungsschwerpunkte sind Industriebetriebe, elektrische Energieerzeugung und -verteilung, Elektrowärme, Elektrochemie, elektrische Traktion und in rasant zunehmendem Maße auch elektrische Hausgeräte. Einsatzgebiete im Haushalt sind drehzahlgeregelte Kleinantriebe, Heizungsregelungen und Helligkeitssteuerungen zur stufenlosen Verstellung der Beleuchtung, sowie in Verbindung mit Mikroelektronik „intelligente Geräte”, z.B die Waschmaschine mit Fuzzy-Control. Der Versuch BENT07 erfolgt mit dem Ziel einerseits ein Mikrocontrollersystem vorzustellen und die Grundlagen zum Einsatz eines Controllers in einer speziellen Anwendung zu vermitteln, sowie andererseits eine praxisnahe Leistungselektronik vorzustellen, die eine Leistungsregelung durch eine analoge Spannung (Potentiometer) oder einen digitalen Zähler (Taster) zuläßt. Damit läßt sich anschaulich das Prinzip der Phasenanschnittsteuerung erläutern, welches in der Helligkeitssteuerung von Leuchtmitteln große Verbreitung gefunden hat (Dimmer). Die Verwendung eines Mikrocontrollers bietet gegenüber einer „fest verdrahteten” elektronischen Schaltung aus Standardkomponenten (integrierte Schaltkreise, Transistoren, Kondensatoren, usw.), die auf einen speziellen Anwendungsfall angepasst ist, durch die Programmierbarkeit wesentliche Vorteile. Eine Mikrocontrolleranwendung ist flexibel, anpassbar, erweiterbar, klein und benötigt zudem im allgemeinen kürzere Entwicklungszeiten. Die Auswahl eines Mikrocontrollers für einen bestimmten Anwendungsfall gestaltet sich aufgrund einer Unmenge verschiedenster auf dem Markt verfügbarer Typen schwierig. Im allgemeinen unterscheiden sich die Controller (neben dem Preis) in der Anzahl der Befehle und deren unterschiedlich komplexer Wirkungsweise, sowie in der Anzahl der funktionellen Erweiterungen des eigentlichen CPU-Kerns, wie zusätzliche I/O-Möglichkeiten, A/D- oder D/A-Wandler, zusätzlichem Speicher usw.. Bei diesem Praktikumsversuch wird ein Mikrocontroller der Firma ATMEL benutzt, der mit dem Codevision AVR C-Compiler in C programmiert wird. Es gibt einige Gründe, weshalb eine höhere Programmiersprache der reinen Assembler-Programmierung vorgezogen werden kann. So kann mit C das Programm wesentlich lesbarer geschrieben werden als in Assembler. Auch das Speicherplatzproblem spielt bei den heutigen, leistungsfähigen Mikrocontrollern keine große Rolle mehr, so dass auch dieser Grund für die Programmierung mit Assembler wegfällt. 4 2 2 EINFÜHRUNG IN DIE LEISTUNGSELEKTRONIK Einführung in die Leistungselektronik 2.1 Halbleiterschalter und -steller In Wechsel- und Drehstromkreisen verläuft der Strom nach jeder Halbschwingung der Netzperiode durch Null und wechselt dabei seine Polarität. Unter Verwendung von Halbleitern zum Schalten einer Wechselstromlast muss eine bidirektionale Stromführung des Halbleiters gewährleistet sein, z.B. mit zwei gegensinnig parallel geschalteten Thyristoren (Kap. 2.1.2). In einem solchen Halbleiterschalter beginnt der Strom zu fließen, sobald die Thyristoren gezündet werden. Die Stromhalbschwingungen unterschiedlicher Polarität werden abwechselnd von den beiden Thyristoren geführt. Damit ein kontinuierlicher Wechselstrom fließen kann, muss nach jeder Stromhalbschwingung der jeweilige Thyristor neu gezündet werden. Erfolgt diese Zündung nicht, erlischt der Wechselstrom im natürlichem Nulldurchgang der Last. 2.1.1 Vor- und Nachteile von Halbleiterschaltern Gegenüber mechanischen Schaltern für Wechselstrom im Niederspannungsgebiet weisen Halbleiter unterschiedliche Merkmale auf. Vorteile von Halbleiterschaltern sind die praktisch unbegrenzte Schaltspielzahl (Anzahl von Schaltvorgängen), die Verschleißfreiheit, die Möglichkeit den Einschaltzeitpunkt über den Zündimpuls exakt einzustellen und das Ausschalten ohne Lichtbogen im natürlichen Stromnulldurchgang. Dagegen stehen die Nachteile des Durchlaßspannungsabfalls im geschlossenen Zustand, der häufig eine Kühlung notwendig macht, des Isoliervermögens im gesperrten Zustand mit Rückwärtsströmen von einigen Milliampere und des höheren Preises. Trotz dieser Nachteile werden Halbleiterschalter im Niederspannungsgebiet dort eingesetzt, wo hohe Schaltspielzahlen ohne notwendige Wartungsarbeiten verlangt werden. 2.1.2 Der Thyristor Ein Thyristor ist ein Leistungshalbleiter mit der Vierschichtstruktur pnpn. (siehe Abbildung 2.1 auf der nächsten Seite)1 Wird der Thyristor bei positiver Anodenspannung über einen vom Steueranschluß zur Kathode fließenden Steuerstrom gezündet, so schaltet dieser auf die Durchlaßkennlinie um. Die Durchlaßkennlinie entspricht der einer Halbleiterdiode mit dem Unterschied, daß infolge von drei statt einem PNÜbergang eine etwas höhere Durchlaßspannung uT von 1, 2V − 2V auftritt. Das Umschalten von der positiven Sperrkennlinie auf die Durchlaßkennlinie tritt auch ohne Steuerstrom auf, wenn die zulässige positive Spitzensperrspannung überschritten wird oder die Spannungssteilheit einen kritischen Wert überschreitet. Die positiven Sperrspannungen, bei der ein Thyristor ohne Steuerstrom vom gesperrten in den leitenden Zustand schaltet, heißt Nullkippspannung U(BO)null . Eine derartige periodische Zündung führt zu Kristallschäden und langsamen Zerstörung des Thyristors, während das Überschreiten der zulässigen Sperrspannung auf der negativen Sperrkennlinie zur sofortigen Zerstörung führt. Ein einmal gezündeter Thyristor kann über den Steueranschluß (Gate) nicht wieder gelöscht werden. Nur wenn der Anodenstrom durch Vorgänge in der Sekundärbeschaltung oder durch eine treibende Wechselspannung den Haltestrom IH unterschreitet, geht der Thyristor in den sperrenden Zustand über. 1 Heumann, S. 33 5 2.1 Halbleiterschalter und -steller 2 EINFÜHRUNG IN DIE LEISTUNGSELEKTRONIK Abbildung 2.1: Thyristor (Vierschichttriode) Beim Schaltverhalten des Thyristors gibt es die Sperrverzugszeit trr , welche die Zeit beschreibt, bei der der Strom nach dem Nulldurchgang bis auf 10% seines Scheitelwertes abgeklungen ist. Dies ist mit der (Speicherladung Qstg ) zu erklären, die zwischen t1 und t4 (siehe Abbildung 2.2)2 in den Raumladungszonen gespeichert ist. Je höher die Temperatur, der Durchlassstrom oder die Stromsteilheit ist, destor höher auch die gespeicherte Ladung. Das steile Abreißen des Thyristorstroms an t4 führt aufgrund von Induktivitäten, wie sie in realen Schaltungen z.B. durch Leiterbahnen stets vorkommen, zu Überspannungen. Besonders der Triac (Kapitel 2.1.3) reagiert darauf empfindlich. Eine sogenannte TSE-Beschaltung (Trägerstaueffekt-Beschaltung) (Kapitel 2.2.6) hilft dabei, diese zu dämpfen. Abbildung 2.2: Ausschaltverhalten eines Thyristors Nach dem Abschalten und Abklingen des Thyristorstroms muss vorübergehend negative Sperrspannung zwischen Thyristoranode und -kathode liegen. Der Thyristor ist nämlich zunächst nicht in der Lage, positive Sperrspannung aufzunehmen. Zwar sperren die beiden äußeren PN-Übergänge, in den Basiszonen und vor allem an der mittleren Sperrschicht sind jedoch zunächst nach dem Abschalten noch überzählige Ladungsträger vorhanden, die durch Rekombination abgebaut werden müssen. Erst danach kann der Thyristor wieder eine positive Sperrspannung übernehmen, ohne durchzuschalten. Mit Freiwerdezeit tq wird die Mindestzeit zwischen dem Nulldurchgang des Stromes von der Vorwärts- zur Rückwärtsrichtung und der frühest zulässigen Wiederkehr einer positiven Sperrspannung bezeichnet. Wird die Sperrspannung vor Ablauf der Freiwerdezeit positiv, so schaltet der Thyristor auch ohne Steuerstrom wieder durch. Den Zeitraum negativer Sperrspannung nach dem Nulldurchgang des Stromes, der von einer bestimmten Schaltung vorgegeben wird, nennt man Schonzeit tc .3 2 Heumann, 3 Heumann, S. 36 S. 36-37 6 2.1 Halbleiterschalter und -steller 2 EINFÜHRUNG IN DIE LEISTUNGSELEKTRONIK Sie muss vom Anwender/Entwickler schaltungstechnisch so eingestellt werden, dass sie in jedem Betriebspunkt größer ist als die Freiwerdezeit tq , damit der Thyristor nicht unkontrolliert zündet. Wichtige elektrische Kenngrößen eines Thyristors sind die höchstzulässige periodische negative Spitzensperrspannung URRM und der Nennstrom IN , der den arithmetischen Mittelwert des dauernd zulässigen Durchlaßstroms angibt. Der höchste zulässige Durchlaßstrom bei Belastung mit sinusförmigen Stromhalbschwingungen wird mit Dauergrenzstrom ITAV M bezeichnet. Mit Grenzstrom ist der Wert des Durchlaßstromes ausgewiesen, bei dem abgeschaltet werden muß, um eine Zerstörung des Thyristors zu vermeiden. Abbildung 2.3: Thyristorkennlinie und Symbol 2.1.3 Der Triac In Wechselstromkreisen fließt ein Strom nach jeder Halbschwingung der Netzperiode durch Null und wechselt dabei seine Richtung. Für das Schalten einer Wechselstromlast mit einem Halbleiterschalter ist es notwendig, dass eine Stromführung in beiden Richtungen möglich ist. Zweirichtung-Thyristoren, auch bidirektionale Thyristoren oder Triacs genannt, sind in der Lage den Strom in beiden Richtungen zu führen. Sie enthalten in einer Siliziumscheibe zwei gegenparallel geschaltete pnpn-Zonenschichten. Die Polarität des Zündstromes ist beliebig. Triacs erreichen Spitzensperrspannungen zwischen 1000 und 1500V bei Strömen bis über 100A. Kritisch ist bei Triacs die zulässige Spannungssteilheit, die nur einige 10V /µs zuläßt. Dieses lieg darin begründet, dass die Freiwerdezeit tq bei Wechselspannungsbetrieb unter der Stromführung in beide Richtungen mindestens halbiert ist, d.h die Zeit zur Rekombination der Ladungsträger ist verkürzt. Anwendung finden Triacs vorwiegend in Elektronikschützen sowie zur Helligkeitssteuerung von Lampenlasten. Für das Steuern und Löschen eines Triacs gelten die gleichen Bedingungen wie für den Thyristor. 7 2.2 Wechselstromsteller 2 EINFÜHRUNG IN DIE LEISTUNGSELEKTRONIK Abbildung 2.4: Triackennlinie und Symbol 2.2 Wechselstromsteller Halbleiterschalter für Wechselspannung (Thyristoren, Triacs) erlauben nicht nur das bisher behandelte einmalige Einschalten von Stromkreisen, sondern auch das Schalten in jeder Halbschwingung. T1 i T2 u1 R u2 L Abbildung 2.5: Stellen einer RL-Last Der Laststrom fließt jeweils vom Zündzeitpunkt α bis zu seinem natürlichem Nulldurchgang, dem Löschwinkel αL . Der Stromfluß im Lastkreis erfolgt somit während der Dauer des Stromflußwinkels αC = αL − α. 8 2.2 Wechselstromsteller 2 EINFÜHRUNG IN DIE LEISTUNGSELEKTRONIK Abbildung 2.6: Phasenanschnitt Für einen Wechselstrom muss eine Zündung in jeder Spannungshalbschwingung erfolgen. Fehlt die fortlaufende Zündung des Halbleiterschalters, so erlischt der Wechselstrom im natürlichen Nulldurchgang. Die Abbildung 2.5 zeigt die Grundschaltung eines Wechselstromstellers für eine ohmsch-induktive Last mit zwei gegensinnig parallel geschalteten Thyristoren (T 1, T 2) als Halbleiterschalter. Der Zündverzögerungswinkel oder Steuerwinkel α, mit dem die Thyristoren dabei periodisch in jeder Halbperiode gezündet werden, ist als die Zeit zwischen dem Nulldurchgang der Phasenspannung und dem Einschalten definiert. Nach diesem Verfahren (Phasenanschnitt) läßt sich die Leistungsaufnahme von Wechselstromlasten kontaktlos und stetig verändern bzw. „stellen”. Deshalb werden Stromrichterschaltungen für diesen Anwendungsfall Wechselstromsteller genannt. Die Ausgangsfrequenz ist bei Anschnittssteuerung gleich der Eingangsfrequenz des Wechselstroms. 2.2.1 Stromverläufe Die Stromverläufe eines einphasigen Wechselstromstellers sind abhängig vom Steuerwinkel und der Beschaffenheit der Last. Die einfachsten Berechnungsverhältnisse stellen sich bei einer rein ohmschen Last ein. Als Wechselstromhalbleiterschalter sollen zunächst zwei gegensinnig parallel geschaltete Thyristoren (Wechselwegpaar) angenommen werden. Der Strom hat während der Stromflußdauer αC den gleichen zeitlichen Verlauf wie die Speisespannung. Die positiven Strompulse werden über den Thyristor T1 und die negativen Strompulse über den Thyristor T2 geführt. 9 2.2 2.2.2 Wechselstromsteller 2 EINFÜHRUNG IN DIE LEISTUNGSELEKTRONIK Ohmsche Last R Unter Voraussetzung idealer Schaltelemente und ohmscher Last R stellt sich ein sinusförmiger Stromverlauf ein: Û i(ωt) = · sin(ωt) = Iˆ · sin(ωt) R f ür α ≤ ωt ≤ π bzw. π + α ≤ ωt ≤ 2π, sonst i = 0 Durch die Integration der Stromhalbschwingung über die Periodendauer 2π ergibt sich in Abhängigkeit vom Steuerwinkel α bzw. vom Stromflußwinkel αC = π − α der lineare Mittelwert (Gleichanteil) des Ventilstromes durch den Thyristor T 1 (siehe Abb. 2.7 auf der nächsten Seite). 1 iT1 α = 2π Z π α Iˆ · [− cos(ωt)]πα Iˆ · sin(ωt) dωt = 2π Iˆ Iˆ · (1 + cos(α)) = · (1 − cos(αC )) 2π 2π Der Effektivwert des Stromes durch den Thyristor T 1, der den Strom in der positiven Halbwelle der Periode führt berechnet sich zu: r Z q 1 π ˆ2 IT1 α eff = i2T1 α = I · sin2 (ωt) dωt 2π α = = ... r αC − sin(αC ) cos(αC ) Iˆ =√ · π 2 Bei maximalem Aussteuergrad mit α = 0◦ ist der Effektivwert des Thyristors T 1 bzw. Triacs Tr maximal √ Iˆ IT1 max eff = √ bzw. ITr max eff = 2 · Iˆ 2 Die bisherigen Betrachtungen beziehen sich auf die positive Halbwelle des Laststromes, der von dem Thyristor T 1 geführt wurde. Für das Stellen der Wechselstromlast ist somit der Thyristor T 2 mit einzubeziehen, so daß sich die doppelten Werte für den den Gleichanteil und den Effektivwert des Laststromes ergeben, was der Verwendung eines Triacs anstelle des Thyristorwechselwegpaares als Halbleiterschalter entspricht. Gleichanteil : iTr α = 2 · iT1 α = Iˆ Iˆ · (1 + cos(α)) = · (1 − cos(αC )) π π Effektivwert : √ ITr α eff = 2 · IT1 α eff = 2Iˆ · r π − α + sin(α) cos(α) √ ˆ = 2I · π r αC − sin(αC ) cos(αC ) π Für den ohmschen Belastungswiderstand sind nachfolgende Kenngrößen für den vollständigen Steuerbereich von 0 ≤ α ≤ π definiert. Wirkleistung P : π−α+sin(α) cos(α) ) P U · ITr α eff R · (ITr α eff )2 R · 2Iˆ2 ( π = = = 2 2 ˆ P0 U · ITr eff R · (ITr eff ) R · 2I 1 1 = (π − α + sin(2α)) π 2 Nachfolgend sind die Gleichungen des Stromes für eine rein induktive Last (L-Last) und für eine ohmsch-induktiver Last (RL-Last) angegeben. 10 2.2 2.2.3 Wechselstromsteller 2 EINFÜHRUNG IN DIE LEISTUNGSELEKTRONIK Induktive Last L Û h π i π sin(ωt − ) − sin(α − ) ωL 2 2 für α ≤ ωt ≤ 2π − α bzw. π + α ≤ ωt ≤ π − α, sonst i = 0 i(ωt) = π Û ωL sin(α − 2 ) Hierbei handelt es sich also um sinusförmige Stromkuppen, die um den Betrag Nulllinie verschoben sind. 2.2.4 zur Ohmsch-induktive Last In der Praxis ist für gewöhnlich der ohmsch-induktive Belastungsfall eines Wechselstromstellers anzutreffen. Im Gegensatz zum Betrieb als Wechselstromschalter wird beim Wechselstromsteller in jeder Halbperiode der Netzspannung periodisch einer der beiden Thyristor (T 1, T 2) gesteuert. Die Abbildung 2.7 (oben) zeigt den idealisierten stationären Zeitverlauf der Eingangsgrößen: Spannung (u(ωt)), Laststrom (i(ωt)), Grundwelle des Laststromes (i1 (ωt)), sowie (unten) den Spannungsverlauf (uRL ) an der ohmsch-induktiven Last. Die Größen Stromflußdauer αC = π − αL , Phasenwinkel ϕ, Löschwinkel αL sind zusätzlich angegeben. Augenscheinlich ist hierbei, daß nur im Fall der ohmschen Last der Stromfluß im Nulldurchgang der Phasenspannung endet (αL = π), bei vorhandenen Blindwiderständen der Last ist αL 6= π. i h R Û i(ωt) = p sin(ωt − ϕ) − e(− ωL (ωt−α)) sin(α − ϕ) R2 + (ωL)2 ωL mit ϕ = arctan für α ≤ ωt bzw. π + α ≤ ωt , sonst i = 0 R u i0 i pi phi 2pi t al a ac pi ur pi 2pi t Abbildung 2.7: Zeitverläufe bei Phasenanschnitt Man erkennt, dass sich kein rein sinusförmiger Verlauf mehr ergibt. Der Strom setzt sich aus einer Sinuskurve und einer abklingenden Exponentialfunktion mit der Zeitkonstanten τ = RL zusammen. 11 2.2 2.2.5 Wechselstromsteller 2 EINFÜHRUNG IN DIE LEISTUNGSELEKTRONIK Darstellen der Leistung Der Augenblickswert der Leistung p(ωt) ist das Produkt aus Augenblickswert der Spannung u(ωt) und des Stroms i(ωt). Für einen Stromkreis mit sinusförmig verlaufender Wechselspannung und um den Lastwinkel ϕ nacheilendem sinusförmigem Strom nimmt der Augenblickswert der Leistung p(ωt) auch negative Werte an (Abb. 2.8). In jedem Fall ergibt sich eine mit der doppelten Speisefrequenz (Netzfrequenz) um den Mittelwert schwingende Leistungspulsation. Die mittlere Leistung (Wirkleistung) berechnet sich zu 1 P= · T Z T u(ωt)i(ωt) dωt . 0 Die Amplitude des Wechselanteils der Leistungsschwingung ist die Scheinleistung S = UI . Die mittlere Leistung (Wirkleistung) ist auch über die Effektivwerte der Spannung U und des Stromes I sowie dem Lastwinkel ϕ definiert: P = UI · cos(ϕ) p u ls i1 lp pi 2pi t phi T Abbildung 2.8: Momentanleistung Eine Phasenanschnittssteuerung mit konstantem Steuerwinkel α entspricht einem periodischem Vorgang, der eine nichtsinusförmige Größe, den Strom, hervorruft. Mittels Fourier − Analyse ist dieser Strom in Grund- und Oberschwingungen jeweils definierter Amplitude und Phase zerlegbar. Die Amplituden der Harmonischen (Ströme mit ganzen Vielfachen der Grundfrequenz) nehmen für gewöhnlich mit steigenden Ordnungszahlen ab. Aus der Betrachtung der Blindleistung Q , die sich allgemein aus der Phasenverschiebung des Stromes (hier der Grundschwingung) in Bezug zur treibenden Spannung definiert, ist ersichtlich, daß die Oberschwingungen des Stromes zu einer zusätzlichen Leistung, der Verzerrungsleistung oder Deformationsleistungen D führen (Meßeinheit VAD=Volt-Ampere-Deformation). Wirkleistung P und Blindleistung Q beziehen sich immer auf die Grundschwingung i1 des Stromes (mit dem Index 1 gekennzeichnet). Im Wechselstromnetz tritt also bei einem Phasenanschnitt (Steuerwinkel α) neben der reduzierten Grundschwingungswirkleistung P1 auch bei rein ohmscher Last induktive Grundschwingungsblindleistung Q1 auf. Wirkleistung: P1 = UI1 cos(ϕ1 ) , Blindleistung: Q1 = UI1 sin(ϕ1 ) Dabei wird cos(ϕ1 ) Grundschwingungs-Leistungsfaktor oder Verschiebungsfaktor genannt. 12 2.3 2.2.6 Steuerverfahren 2 EINFÜHRUNG IN DIE LEISTUNGSELEKTRONIK TSE-Beschaltung Ähnlich wie bei Dioden fließt nach dem Nulldurchgang des Stromes noch einige Zeit ein beträchtlicher Strom in Rückwärtsrichtung, bis die Raumladungszonen abgebaut sind. Sobald der Thyristor eine Spannung in Rückwärtsrichtung aufnehmen kann, sinkt der Rückstrom ir rasch auf den statischen Sperrstrom Ir ab, wodurch in den Induktivitäten des Lastkreises durch die hohe di /dt Änderung Überspannungen erzeugt werden, die weit über die zulässige Spitzensperrspannung hinausgehen und dadurch den Halbleiter zerstören können. Diese durch den Trägerstaueffekt (TSE) hervorgerufenen Spannungen können durch ein parallel geschaltetes RC-Glied gedämpft werden. Dadurch entsteht zusammen mit der Induktivität im Lastkreis ein gedämpfter Reihenschwingkreis. Der Strom in der Induktivität wird jetzt nicht mehr plötzlich unterbrochen, sondern klingt in einer gedämpften Schwingung ab. 2.3 Steuerverfahren Die Ansteuerung der Halbleiterelemente eines Wechselstromstellers ist nach unterschiedlichen Steuerverfahren möglich, die nach dem jeweiligen Anwendungsfall zu wählen sind. 2.3.1 Steuerung mit Nadelimpulsen Wird ein Wechselwegpaar (zwei antiparallel geschaltete Thyristoren) oder ein Triac während jeder Halbwelle zum Zeitpunkt α mit Nadelimpulsen gesteuert, so fließt der Strom bei ideal angenommenen Halbleiterelementen jeweils ab dem Zündwinkel α bis zum natürlichen Nulldurchgang des Laststromes beim Löschwinkel αL , bei dem das Ventil zwangskommutiert, d.h. durch das Unterschreiten des Haltestromes selbsttätig sperrt. Der Laststrom fließt im Stromkreis während der Dauer des Stromflußwinkels αC = αL − α. Mit der Variation des Steuerwinkels α ändert sich auch der Stromflußwinkel αC . Damit ist der Effektivwert des Laststromes und die der Last zugeführte Energie steuerbar. Das Verfahren des „Anschneidens“ der jeweilige Halbwelle durch einen Halbleiterschalter wird allgemein als Phasenanschnittsteuerung bezeichnet. Bei ohmsch-induktiver Last mit einem Phasenwinkel ϕ ist der Steuerbereich unter Verwendung von nadelförmigen Steuerimpulsen eingeschränkt auf ϕ ≤ α ≤ 180◦ (siehe Abb. 2.7 auf Seite 11). Bei Verminderung des Steuerwinkels bei Nadelimpulsen von α ≤ ϕ tritt der Lückbetrieb ein, d.h. daß das Zünden des Halbleiters für die Übernahme der Stromführung entgegengesetzter Phasenspannung erfolglos bleibt und der Laststrom nur in einer Netzhalbperiode geführt wird. Unter Zuhilfenahme des Löschwinkels ist dieses Verhalten einsichtig nachvollziehbar. Mit α ≤ ϕ ergibt sich ein Löschwinkel von αL = α + αC > 180◦ + ϕ. Bei dem darauf folgendem Steuerimpuls zum Zeitpunkt ωt = 180◦ + α < 180◦ + ϕ, findet keine Kommutierung statt, da der Halbleiter noch stromführend ist. Der Halbleiterschalter für die zweite Netzhalbperiode ist erstmalig zum Zeitpunkt ωt > αL steuerbar, nur liegt zu diesem Zeitpunkt kein Steuersignal vor, da die Zündung mit dem „kurzen“ Nadelimpuls erfolgte. Während dieses Betriebes entsteht zudem eine Gleichstromkomponente des Stromes, die z.B. bei einer Trafo-Last zu störenden Sättigungserscheinungen führt, daher wird die Steuerung von Wechselstromstellern mit Nadelimpulsen nur bei ohmschen oder leicht induktiven Lasten eingesetzt. Die verwendeten Steuersätze sollten die Möglichkeit besitzen, den minimalen Steurerwinkel auf αmin = ϕ begrenzen zu können. 13 2.3 2.3.2 Steuerverfahren 2 EINFÜHRUNG IN DIE LEISTUNGSELEKTRONIK Steuerung mit (π-α)-Impulsen Diese Art der Steuerung (siehe Abb. 2.9) wird bei stark induktiven Lasten eingesetzt, bei denen der Laststrom, bedingt durch die große Induktivität, nur langsam ansteigt. Die (π − α)-breiten Steuerimpulse sorgen dafür, dass der Gatestrom bis zum Nulldurchgang der Spannung vorhanden ist, so dass der Anodenstrom in dieser Zeit den Wert des Haltestromes erreichen kann und die Halbleiterventile gezündet werden können. Wird ein Triac durch (π − α)-breite Steuerimpulse gesteuert, so ist, im Gegensatz zur Steuerung mit Nadelimpulsen, sein Zünden auch bei Steuerwinkel α < ϕ für alle nachfolgenden Halbwellen sofort nach seinem Löschen möglich. Bei einer Steuerung mit α < ϕ wird der Halbleiterschalter in jeder Halbwelle zum frühestmöglichen Zeitpunkt wieder gezündet und es entstehen die gleichen transienten Einschwingvorgänge wie beim Steuern mit Dauerstrom oder beim Schließen eines mechanischen Schalters. Um diese Einschwingvorgänge zu meiden, sollte der minimale Steuerwinkel auf αmin = ϕ begrenzt werden . u i pa 2pi a 3pi ac t pi Abbildung 2.9: (π − α) -Impulse In zwei unabhängigen Versuchsabschnitten wird die Ausgangsspannung einmal analog mittels einer Steuerspannung (0 − 5V ) durch ein Potentiometer und einmal digital mittels 2 Taster gesteuert. Zur optischen Veranschaulichung der Phasenanschnittsteuerung wurde ein Halogenscheinwerfer mit einer Leistung von P = 150W gewählt. 14 2.4 Vorbereitungsaufgaben 2.4 Vorbereitungsaufgaben 2 EINFÜHRUNG IN DIE LEISTUNGSELEKTRONIK 1. Welche Bedingungen müssen erfüllt sein, damit der Thyristor bzw. ein Triac mittels Zündimpuls gesteuert werden kann? 2. Warum zündet ein Thyristor bzw. ein Triac bei einem Zündwinkel von α = 0◦ mit einer Verzögerung, die deutlich größer ist als z.B. bei α = 90◦ ? 3. Welche Bedingungen müssen für die Löschbarkeit (Ausschalten) eines Thyristors bzw. eines Triacs erfüllt sein? Ist ein Thyristor überhaupt bei reiner Gleichspannung löschbar? 4. Welchen Wert darf der minimale Steuerwinkel αmin bei einer induktiven oder bei einer ohmschinduktiven Last für den ordentlichen Betrieb nicht unterschreiten? 5. Welche Konsequenzen hat die Steuerung eines Halbleiterschalters bei einem Steuerwinkel α ≤ αmin , wenn (a) nadelförmige Steuerimpulse, (b) Steuerimpulse der Breite π − α verwendet werden? 6. Für einen Wechselstromsteller mit rein induktiver Belastung sind für α = 120◦ der Strom i(ωt) und die Spannung am Verbraucher uL (ωt) zu zeichnen. 15 3 3 PROZESSORBOARD Prozessorboard 3.1 Der Prozessor Der auf diesem Prozessorboard (STK-500) verwendete Mikrocontroller ATMega16 von ATMEL (Abbildung 3.2 auf der nächsten Seite)4 verfügt über 16 kB Flash Programmspeicher, einen 8 Kanal 10 Bit Analog/Digital Wandler, Timer zur Pulsbreitenmodulation, einen Watchdog-Timer, 32 programmierbare I/O-Ports (Ein- und Ausgänge des Controllers) und ein 1 kB SRAM sowie ein 512 Byte EEPROM. Die Atmel-Mikrocontroller haben wegen des internen 10-bit A/D-Wandlers große Verbreitung gefunden. Häufige Anwendungsgebiete für einen Mikrocontroller sind (Echtzeit-)Reaktion auf Ereignisse wie Spannungen, Stromstärken, Temperaturen oder Helligkeiten. Diese Überwachungsaufgaben und der direkte Anschluß an analoge Sensoren machen einen A/D-Wandler zu einer unabdingbaren Notwendigkeit. Lösungen mit externen A/D-Wandlern verursachen höhere Kosten und haben zudem den Nachteil größerer Platinenabmessungen (min. ein zusätzliches Bauteil) und geringerer Zuverlässigkeit. Abbildung 3.1: Das Prozessor-Board STK-500 In der Mitte der Platine befindet sich der Prozessor. An allen Ein- und Ausgabeleitungen befinden sich jeweils ein Widerstand und eine Zenerdiode, die als Überspannungsschutz dienen. Neben dem Prozessor befindet sich der Quarz, der den 6 MHz Betriebstakt erzeugt. Auf der linken Seite befinden sich die Portanschlüsse. Jeder 8-Bit Port ist über eine 10-polige Pfostenleiste rausgeführt. Zur Kommunikation mit dem Steuerboard werden zwei Portanschlüsse verwendet. 3.2 Schnittstellen Als Schnittstellen besitzt das Board eine serielle RS-232 Schnittstelle für die In-System-Programmierung. 4 Datenblatt ATMega16, S. 2 16 3.3 Display 3 PROZESSORBOARD Abbildung 3.2: Pinbelegung des ATMega16 Abbildung 3.3: Schnittstellen 3.3 Display Unter den Pfostensteckern befindet sich ein Anschluß für ein maximal 80 Zeichen darstellendes alphanumerisches Display. An diesem Anschluß ist für die Kommunikation mit dem Benutzer ein zweizeiliges alphanumerisches LC-Display mit 16 Zeichen pro Zeile angeschlossen. Für die Ausgabe einer Variablen gibt es in der Datei Display.c eine Funktion void DispWriteInt ( char zeile, char spalte, unsigned int wert, char laenge) . Z.B. mit dem Befehl DispWriteInt( 2 , 4 , x , 3 ); wird die Variable x mit einer maximalen Länge von drei Zeichen in der 2. Zeile in der 4. Spalte ausgegeben. Um einen Text auszugeben, wird dieser zuerst in einer Hilfsvariablen gespeichert. char hilfsvariable[ ] = ” Wort ”; Mit der Funktion print_string( char *str, unsigned char zeile, unsigned char spalte ) wird das Wort an der Stelle, wo es auf dem Display ausgegeben werden soll, im Displaybuffer gespeichert. Mit print_string( hilfsvariable , 2 , 3 ) wird das Wort in die 2. Zeile, beginnend mit der 3. Spalte ausgegeben. 17 4 4 4.1 PROGRAMMIERUMGEBUNG Programmierumgebung AVR Zur Durchführung des Versuches steht ein PC mit der Software CodeVision AVR zur Verfügung. Mit dieser Software wird der Quellcode erstellt und der Controller programmiert. CodeVisionAVR beinhaltet einen C cross-compiler und eine integrierte Entwicklungsumgebung, die für die ATMEL AVR Mikrocontroller entwickelt wurde. Der C cross-compiler implementiert alle Elemente der ANSI C Programmiersprache, indem sie erst in Assembler umgewandelt und dann in Maschinencode umgesetzt werden, wobei ein Intel-HEXFile generiert wird. Um den automatischen Transfer des Programms nach erfolgreicher Kompilierung zum Mikrocontroller zu ermöglichen, ist eine Programmiersoftware in die Entwicklungsumgebung eingebaut. Abbildung 4.1: Programmierumgebung Mit dieser Programmierumgebung wird der Controller über die RS-232 Schnittstelle programmiert. Nach dem Starten des Programms muss das Projekt der jeweiligen Durchführungsaufgabe geöffnet werden. Im linken Fenster werden alle Dateien angezeigt, die zum Projekt gehören. Die Datei Steuerboard.c wird im rechten Fenster geöffnet und kann dort für die Lösung der Aufgaben verändert werden. Mit dem Button ”Make the projekt” wird das Projekt compiliert und ein HEX-File generiert. Nach erfolgreicher Compilation wird der Mikrocontroller programmiert. Dazu muss das Programmierkabel mit dem Prozessorboard verbunden und die Spannungsversorgung eingeschaltet sein. 18 5 5 PROGRAMMIERUNG Programmierung 5.1 Die Ports Mit Ports werden die digitalen Schnittstellen bezeichnet, die als Ein- und Ausgänge den Mikrocontroller mit der Außenwelt verbinden. Dabei besitzt jeder Port acht Leitungen, die als P0 bis P7 bezeichnet werden. Die Ports arbeiten mit einer Digitallogik, also ’0’ und ’1’, wobei ’1’ 5V entspricht. Liegen mehr als 5V an einem Port an, wird der Controller beschädigt. 5.1.1 Zugriff auf Ports Alle Ports der AVR-Controller werden über Register gesteuert. Register sind besondere Speicher im Controller mit acht Bit Kapazität, die direkt in Befehlen verwendet werden können. Außerdem können sie sowohl Quelle von Daten als auch das Ziel der Ergebnisse von Operation sein. Zur Steuerung der Ein- und Ausgänge sind jedem Port 3 Register zugeordnet: DDRx : Datenrichtungsregister für Port x (x entspricht A, B, C oder D). Mit diesem Register wird die Datenrichtung festgelegt, wobei eine ’0’ einem Eingang und eine ’1’ einem Ausgang entspricht. Jeder Port besteht aus 8 Kanälen (Pins), die über das 8Bit große Portregister initialisiert werden. Die Bitkombination eines Registers lässt sich auf die verschiedenen Arten: Binär: 0b, Hexadezimal: 0x wie auch Dezimal: kein Präfix initialisieren. Mit DDRB=0xFF; wird der gesamte Port B als Ausgang definiert. (Hexadezimal FF = Dezimal 255 = Binär 11111111) An der Binärzahl erkennt man die 8Bits, die alle auf ’1’ gesetzt sind. Alternativ kann auch DDRB=0b11111111; geschrieben werden. Wenn z.B. nur der 6.Pin des Ports B als Ausgang definiert werden soll, (Binär 00100000 = Dezimal 32 = Hexadezimal 20) wird das über den Befehl DDRB=0x20; initialisiert. Mit dieser Methode wird immer das gesamte Register definiert. Es ist aber auch ein Einzelbitzugriff möglich, mit dem nur ein Bit unabhängig von den anderen Bits eines Registers verändert werden kann. Der Einzelbitzugriff erfolgt über logische Verknüpfungen: Wenn der Port B schon definiert ist, der Zustand der Bits aber nicht bekannt ist, kann z.B. der 6.Pin als Ausgang (logisch ’1’) mit der Oder-Verknüpfung geschaltet werden: DDRB=(DDRB | 0b0010000); Das 6.Bit ist jetzt auf ’1’ gesetzt, die anderen Bits haben den vorherigen Zustand behalten. Mit der Und-Verknüpfung kann ein einzelnes Bit (hier 6.Bit) auf ’0’ gesetzt werden: DDRB=(DDRB & 0b11011111); PORTx : Datenregister für Port x (x entspricht A, B, C oder D). Dieses Register wird verwendet, um die Ausgänge eines Ports anzusteuern. Mit PORTD=0xFF werden alle Pins des Ports D auf ’1’ gesetzt, 19 5.1 Die Ports 5 PROGRAMMIERUNG mit PORTD.2=1 wird nur der 3. Pin eines als Ausgang definierten Ports auf ’1’ gesetzt. (PORTD.0 entspricht dem 1. Kanal) PINx : Eingangadresse für Port x (x entspricht A, B, C oder D). In diesem Register wird lediglich eine Adresse definiert, in welcher der aktuelle Zustand der Eingangspins eines Ports vom Controller abgelegt wird. Der Zugriff auf den Zustand der Pins erfolgt wie bei einem normalen Register. Mit x=PIND.4 wird der Wert des 5. Pins in x gespeichert. Mit dem PINx Befehl kann also ein Zustand also nur ausgelesen werden. 5.1.2 Taster und Schalter Um dem Mikrocontroller externe Steuerbefehle zuführen zu können, müssen Taster an dem Controller angeschlossen werden. Abbildung 5.1: Taster Die Taster werden zwischen dem Eingangspin des Controllers und Masse geschaltet. Damit bei offenem Schalter der Controller kein undefiniertes Signal bekommt, wird zwischen der Versorgungsspannung und dem Eingangspin ein sogenannter Pull-Up Widerstand geschaltet. Dieser dient dazu, den Pegel bei geöffnetem Schalter auf logisch 1 zu ziehen. Der Widerstandswert des Pull-Up Widerstandes sollte nicht zu klein sein, da sonst über den Widerstand ein zu hoher Strom in den Controller fließen würde. Bei einem zu großen Widerstandswert würde der Eingang nicht mehr auf logisch 1 bleiben, deshalb wurde für die Steuerplatine Pull-Up Widerstände von 10kΩ gewählt. Die AVR’s haben auch an den meisten Pins softwaremäßig zuschaltbare interne Pull-Up Widerstände. Im Programmcode entspricht das Drücken eines Tasters somit einer logischen 0. 20 5.1 Die Ports 5.1.3 5 PROGRAMMIERUNG Vorbereitungsaufgaben 1. Wie wird der gesamte Port A als Eingang initialisiert? 2. Bei der Initialisierung sollen die Pins 1, 3, 5 und 7 eines als Ausgang definierten Ports D auf ’1’ gesetzt werden. 3. Wenn am 4. Pin des als Eingang definierten Ports A eine ’1’ anliegt, soll der 1. Pin des Ports D auf ’0’ gesetzt werden 21 5.2 Die Timer 5.2 Die Timer 5 PROGRAMMIERUNG Die Timer finden Anwendung für zeitgesteuerte Prozesse und regelmäßig wiederkehrende Aufgaben. Der Mikrocontroller besitzt einen 8-Bit Timer (256 Werte) und 16-Bit Timer (65536 Werte). Als Eingangstakt für die Timer/Counter kann entweder die CPU-Taktfrequenz, der Vorzähler oder ein an einen I/O-Pin angelegtes Signal verwendet werden. Wenn ein externes Signal verwendet wird, so darf dessen Frequenz nicht höher sein als die Hälfte des CPU-Taktes. 5.2.1 Der Vorzähler (Prescaler) Der CPU-Takt wird durch den Vorzähler auf eine wählbare Teilung reduziert. Die so geteilte Frequenz wird den Eingängen beider Timer zugeführt. Bei einem CPU-Takt von 6 MHz und einer Einstellung des Vorteiler auf 1024 wird der Timer mit einer Frequenz von 6 MHz / 1024, also mit ca. 5,9 kHz versorgt. Wenn der Timer läuft, wird das Daten- bzw. Zählregister mit dieser Frequenz inkrementiert. 5.2.2 16-Bit Timer/Counter Viele AVR-Modelle besitzen außer den 8-Bit Timern auch einen oder sogar zwei (einige ATMegaModelle) 16-Bit Timer. Die 16-Bit Timer/Counter sind wesentlich komplexer aufgebaut als die 8-Bit Timer/Counter, bieten dafür aber auch viel mehr Möglichkeiten: • Erzeugung eines pulsweitenmodulierten Ausgangssignals (PWM). • Vergleichswert-Überprüfung mit Erzeugung eines Ausgangssignals (Output Compare Match). • Einfangen eines Eingangssignals mit Speicherung des aktuellen Zählerwertes (Input Capturing), mit zuschaltbarer Rauschunterdrückung (Noise Filtering). Folgende Register sind dem Timer/Counter 1 zugeordnet: TCCR1A = Timer/Counter Control Register A Timer 1 In diesem und dem folgenden Register wird die Verwendung und die Quelle des Timers/Counters eingestellt. Für diesen Versuch wird nur das folgende Register verwendet: TCCR1B = Timer/Counter Control Register B Timer 1 Bit Name R/W Initialwert 7 ICNC1 R/W 0 6 ICES1 R/W 0 5 R 0 4 R 0 3 CTC1 R/W 0 22 2 CS12 R/W 0 1 CS11 R/W 0 0 CS10 R/W 0 5.2 Die Timer 5 PROGRAMMIERUNG ICNC1 = Input Capture Noise Canceler Timer/Counter 1 (Rauschunterdrückung des Eingangssignals.) Wenn dieses Bit gesetzt ist und mit dem Input Capture Signal gearbeitet wird, so werden am Input Capture Pin ICP jeweils 4 Messungen mit der CPU-Frequenz des Eingangssignals abgefragt. Nur dann, wenn alle 4 Messungen den gleichen Zustand aufweisen, gilt das Signal als erkannt. ICES1 = Input Capture Edge Select Timer/Counter 1 Mit diesem Bit wird bestimmt, ob die steigende (ICES1=1) oder fallende (ICES1=0) Flanke zur Auswertung des Input Capture Signals an Pin ICP heran gezogen wird. CTC1 = Clear Timer/Counter on Compare Match Timer/Counter 1 Wenn dieses Bit gesetzt ist so wird nach einer Übereinstimmung des Datenregisters TCNT1H/TCNT1L mit dem Vergleichswert in OCR1H/OCR1L das Datenregister TCNT1H/TCNT1L auf 0 gesetzt. CS12, CS11, CS10 = Clock Select Bits Diese 3 Bits bestimmen die Quelle für den Timer/Counter: CS12 0 0 0 0 1 1 1 1 CS11 0 0 1 1 0 0 1 1 CS10 0 1 0 1 0 1 0 1 Resultat Stopp, Der Timer/Counter wird angehalten. CPU-Takt CPU-Takt / 8 CPU-Takt / 64 CPU-Takt / 256 CPU-Takt / 1024 Externer Pin T1, fallende Flanke Externer Pin T1, steigende Flanke TCNT1H, TCNT1L = Timer/Counter Daten Register Timer/Counter 1 Dieses Register ist als 16-Bit Aufwärtszähler mit Schreib- und Lesezugriff realisiert. Wenn der Zähler den Wert 65535 erreicht hat, beginnt er beim nächsten Zyklus wieder bei 0. In der PWM-Betriebsart wird das Register als Auf/Ab-Zähler verwendet, d.h. der Wert steigt zuerst von 0 bis er den Überlauf von 65535 erreicht hat. Dann zählt das Register rückwärts wieder bis 0. OCR1BH, OCR1BL = Timer/Counter Output Compare Register Timer/Counter 1 Der Wert im Output Compare Register wird ständig mit dem aktuellen Wert im Datenregister TCNT1H/TCNT1L verglichen. Stimmen die beiden Werte überein so wird ein sogenannter Output Compare Match ausgelöst, wenn das entsprechende Bit im TIMSK Register gesetzt ist. 23 5.2 Die Timer 5 PROGRAMMIERUNG Gemeinsame Register Verschiedene Register beinhalten Zustände und Einstellungen, welche sowohl für den 8-Bit, als auch für den 16-Bit Timer/Counter in ein und demselben Register zu finden sind. TIMSK = Timer/Counter Interrupt Mask Register Bit Name R/W Initialwert 7 OCIE2 R/W 0 6 TOIE2 R/W 0 5 TICIE1 R/W 0 4 OCIE1A R/W 0 3 OCIE1B R/W 0 2 TOIE1 R/W 0 1 OCIE0 R/W 0 0 TOIE0 R/W 0 OCIE2 = Timer/Counter2 Output Compare Interrupt Enable Beim Timer/Counter 2 kann zusätzlich zum Überlauf ein Vergleichswert definiert werden. Wenn dieses Bit gesetzt ist wird beim Erreichen des Vergleichswertes ein Compare Match Interrupt ausgelöst. TOIE2, TOIE1, TOIE0 = Timer/Counter Overflow Interrupt Enable Wenn dieses Bit gesetzt ist, wird bei einem Überlauf des Datenregisters des Timer/Counter 0, 1 oder 2 ein Timer Overflow 0, 1 oder 2 Interrupt ausgelöst. TICIE1 = Timer/Counter1 Input Capture Interrupt Enable Wenn dieses Bit gesetzt ist, wird ein Capture Event Interrupt ausgelöst, wenn ein entsprechendes Signalereignis am Pin 20 PD6(ICP1) auftritt. OCIE1A, OCIE1B = Output Compare MatchA/MatchB Interrupt Enable Timer/Counter 1 Beim Timer/Counter 1 kann zusätzlich zum Überlauf ein Vergleichswert definiert werden. Wenn dieses Bit gesetzt ist, wird beim Erreichen des Vergleichswertes ein Compare MatchA/MatchB Interrupt ausgelöst. OCIE0 = Output Compare Interrupt Enable Timer/Counter 0 Beim Timer/Counter 0 kann zusätzlich zum Überlauf ein Vergleichswert definiert werden. Wenn dieses Bit gesetzt ist, wird beim Erreichen des Vergleichswertes ein Compare Match Interrupt ausgelöst. 5.2.3 Vorbereitungsaufgaben 1. Wie wird der Timer1 mit einer Frequenz von CPU-Takt / 1024 und einem Startwert von Null initialisiert? 2. Bei einem Timerwert von 70 soll ein Output Compare MatchB Interrupt ausgelöst werden. 24 5.3 Analoge Eingabe 5 5.3 Analoge Eingabe PROGRAMMIERUNG Da der Controller keine analogen Werte direkt verarbeiten kann, müssen sie in digitale Zahlenwerte umgewandelt werden. Der ADC (Analog-Digital-Converter) wandelt analoge Signale in digitale Werte um, welche vom Controller interpretiert werden können. Dafür muss eine Spannung zwischen 0 und 5 V am ADC Eingang anliegen, die dann in einen digitalen Wert zwischen 0 und 1023 (bei einem 10Bit ADC) umgewandelt wird. Dies ist z.B. bei einer Ansteuerung mit einem Potentiometer nötig. Bei dem ATMega16 stehen ausschließlich die Pins des Port A für den ADC zur Verfügung! 5.3.1 Register des ADC Der ADC verfügt über eigene Register, welche hier aufgelistet werden: ADCSRA = ADC Control and Status Register A. Mit diesem Register wird die Verwendung des ADC eingestellt. Das Register ist wie folgt aufgebaut: Bit Name R/W Initialwert 7 ADEN R/W 0 6 ADSC R/W 0 5 ADATE R 0 4 ADIF R/W 0 3 ADIE R/W 0 2 ADPS2 R/W 0 1 ADPS1 R/W 0 0 ADPS0 R/W 0 ADEN = ADC Enable Dieses Bit muss gesetzt werden, um den ADC zu aktivieren. Wenn das Bit nicht gesetzt ist, können die Pins wie normale I/O-Pins verwendet werden. ADSC = ADC Start Conversion Mit diesem Bit wird ein Messvorgang gestartet. Wenn das Bit nach dem Setzen des ADEN-Bits zum ersten Mal gesetzt wird, führt der Controller zuerst eine zusätzliche Wandlung und erst dann die eigentliche Wandlung aus. Diese zusätzliche Wandlung wird zu Initialisierungszwecken durchgeführt. Das Bit bleibt nun so lange auf 1, bis die Umwandlung abgeschlossen ist; im Initialisierungsfall bis die zweite Umwandlung erfolgt ist und geht danach auf 0. ADATE = ADC Auto Trigger Enable Der ADC startet bei Auftreten eines Trigger-Signals. Der Trigger kann über die Bits ADTS im Register SFIOR gewählt werden. ADIF = ADC Interrupt Flag Dieses Bit wird vom ADC gesetzt wenn eine Umwandlung erfolgt und das ADC Data Register aktualisiert ist. Wenn das ADIE Bit gesetzt ist, wird der ADC Interrupt ausgelöst und die InterruptBehandlungsroutine aufgerufen. Das Bit wird automatisch gelöscht, wenn die Interrupt-Behandlungsroutine aufgerufen wird. Es kann jedoch auch gelöscht werden, indem eine logische 1 in das Register geschrieben wird. ADIE = ADC Interrupt Enable Wenn dieses Bit gesetzt ist wird der ADC-Interrupt aktiviert. 25 5.3 Analoge Eingabe 5 PROGRAMMIERUNG ADPS2 ... ADPS0 = ADC Prescaler Select Bits Diese Bits bestimmen den Teilungsfaktor zwischen der Taktfrequenz und dem Eingangstakt des ADC. Der ADC benötigt einen eigenen Takt, welchen er sich selber aus der CPU-Taktfreqenz erzeugt. Der ADC-Takt sollte zwischen 50 und 200kHz sein. Der Vorteiler muss also so eingestellt werden, dass die CPU-Taktfrequenz dividiert durch den Teilungsfaktor einen Wert zwischen 50200kHz ergibt. ADPS2 0 0 0 0 1 1 1 1 ADPS1 0 0 1 1 0 0 1 1 ADPS0 0 1 0 1 0 1 0 1 Teilungsfaktor 1 2 4 8 16 32 64 128 ADCL, ADCH = ADC Data Register Wenn eine Umwandlung abgeschlossen ist, befindet sich der gemessene 10 Bit Wert in diesen beiden 8 Bit Registern. Von ADCH werden nur die beiden niederwertigsten Bits verwendet. Der AVR Compiler liest beide Register aus und schreibt den Wert in das 16 Bit Register ADCW. ADMUX = ADC Multiplexer Select Register Mit diesem Register wird der zu messende Kanal ausgewählt. Das Register ist wie folgt aufgebaut: Bit Name R/W Initialwert 7 REFS1 R/W 0 6 REFS0 R/W 0 5 ADLAR R/W 0 4 MUX4 R/W 0 3 MUX3 R/W 0 2 MUX2 R/W 0 1 MUX1 R/W 0 0 MUX0 R/W 0 MUX2 ... MUX0 : Mit diesem 3 Bits wird der zu messende Kanal bestimmt. Es wird die entsprechende Pinnummer des Ports in das Register geschrieben. Auf die weiteren Bit wird hier nicht näher eingegangen. Diese sind als Null zu schreiben. Mit dieser Funktion kann eine AD-Wandlung durchgeführt werden: // Read the AD conversion result unsigned char read_adc(unsigned char adc_input) { ADMUX=adc_input; // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW/2; } 26 5.4 Programmieren mit Interrupts 5.4 Programmieren mit Interrupts 5 PROGRAMMIERUNG Ein Interrupt unterbricht die Ausführung des Hauptprogramms, die Interruptroutine wird ausgeführt und danach wird das Hauptprogramm an der unterbrochenen Stelle fortgesetzt. Um das Hauptprogramm nicht unnötig lange zu unterbrechen, sollte die Interruptroutine möglichst kurz und schnell abzuarbeiten sein. Die Betätigung eines Tasters könnte z.B einen Interrupt auslösen und einen Zähler erhöhen oder bei einem Timer löst das Erreichen eines Vergleichswertes einen Output Compare Match Interrupt aus, welcher für die Ansteuerung einer Phasenanschnittssteuerung wichtig ist. Um mit Interrupts arbeiten zu können, muss das I-Bit im AVR Statusregister SREG, welches die globalen Interrupts aktiviert, gesetzt werden. Dieses übernimmt der Assemblerbefehl ”sei” : #asm(”sei”); 5.4.1 Interrupt-Quellen Die folgenden Ereignisse können einen Interrupt auf dem AVR auslösen, wobei die Reihenfolge der Auflistung auch die Priorität der Interrupts aufzeigt. Vector No. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Program Address $000 $002 $004 $006 $008 $00A $00C $00E $010 $012 $014 $016 $018 $01A $01C $01E $020 $022 $024 $026 $028 Source RESET INT0 INT1 TIMER2 COMP TIMER2 OVF TIMER1 CAPT TIMER1 COMPA TIMER1 COMPB TIMER1 OVF TIMER0 OVF SPI, STC USART, RXC USART, UDRE USART, TXC ADC EE_RDY ANA_COMP TWI INT2 TIMER0 COMP SPM_RDY Interrupt Definition External Pin, Power-on Reset External Interrupt Request 0 External Interrupt Request 1 Timer/Counter2 Compare Match Timer/Counter2 Overflow Timer/Counter1 Capture Event Timer/Counter1 Compare Match A Timer/Counter1 Compare Match B Timer/Counter1 Overflow Timer/Counter0 Overflow Serial Transfer Complete USART, Rx Complete USART Data Register Empty UART, Tx Complete ADC Conversion Complete EEPROM Ready Analog Comparator Two-wire Serial Interface External Interrupt Request 2 Timer/Counter0 Compare Match Store Program Memory Ready Angemerkt sei hierbei, dass die externen Interrupts ausschließlich folgenden Pins entsprechen können: INT0: PD2 INT1: PD3 INT2: PB2 27 5.4 5.4.2 Programmieren mit Interrupts 5 PROGRAMMIERUNG Register GICR = General Interrupt Control Register. Interrupts, die durch ein externes Signal ausgelöst werden, heißen externe Interrupts. Diese werden durch das GIC Register aktiviert. Bit Name R/W Initialwert 7 INT1 R/W 0 6 INT0 R/W 0 5 INT2 R/W 0 4 R 0 3 R 0 2 R 0 1 IVSEL R/W 0 0 IVCE R/W 0 INT0..2 = External Interrupt Request 0..2 Enable Wenn diese Bits gesetzt sind, wird ein Interrupt ausgelöst, wenn am INT0 - INT2 Pin eine steigende/fallende Flanke oder ein Low-Level (je nach Konfiguration im MCUCR) erkannt wird. Der Interrupt wird auch ausgelöst, wenn der Pin als Ausgang geschaltet ist. Auf diese Weise bietet sich die Möglichkeit, Software-Interrupts zu realisieren. MCUCR = MCU Control Register. Mit diesem Register wird die Art des Ereignisses, welches einen Interrupt auslösen soll, definiert. Bit Name R/W Initialwert 7 SM2 R/W 0 6 SE R/W 0 5 SM1 R/W 0 4 SM0 R/W 0 3 ISC11 R/W 0 2 ISC10 R/W 0 1 ISC01 R/W 0 0 ISC00 R/W 0 Bits 3..0 - ISCX1,ISCX0: External Interrupt Control 1 Bit 1 and Bit 0 Die externen Interrupts 0 und 1 werden durch die Pins INT0 und INT1 ausgelöst, wenn sie im Register GICR aktiviert worden sind. Wie die Interrupts durch die externen Pins aktiviert werden, ist in der nächsten Tabelle definiert: ISCX1 0 0 1 1 ISCX0 0 1 0 1 Description Ein Low Level von INTX generiert eine Interruptanforderung Jede logische Änderung an INTX generiert eine Interruptanforderung Die fallende Flanke von INTX generiert eine Interruptanforderung Die steigende Flanke von INTX generiert eine Interruptanforderung 28 5.4 Programmieren mit Interrupts 5 PROGRAMMIERUNG GIFR = General Interrupt Flag Register. Bit Name R/W Initialwert 7 INTF1 R/W 0 6 INTF0 R/W 0 5 INTF2 R/W 0 4 R 0 3 R 0 2 R 0 1 R 0 0 R 0 Bits 7..5 - INTF0..2: External Interrupt Flags 0..2 Bei Aktivierung der externen Interrupts INT0 - INT2 wird das jeweilige Flag automatisch zu 1 gesetzt. Gelöscht wird es wieder, wenn die jeweilge Interrupt-Routine abgearbeitet wurde. Alternativ wird es auch durch das Hineinschreiben einer logischen 1 gelöscht. 5.4.3 Vorbereitungsaufgaben 1. Wie werden die externen Interrupts 0 und 1 aktiviert? 2. Die beiden Interrupts sollen bei der fallenden Flanke ausgelöst werden. 29 6 6 STEUERBOARD Steuerboard Auf dem Steuerboard, welches direkt an das Controllerboard angeschlossen wird, befindet sich die Leistungselektronik, die Spannungsversorgung für das Prozessorboard, eine Schaltung für die Nulldurchgangsdetektion der Netzspannung, 8 LEDs zur optischen Anzeige sowie 2 aktive Taster für die manuelle Eingabe. Die LEDs sind am PORTB.0 bis PORTB.7 angeschlossen, die Taster an PIND.0 und PIND.1. Abbildung 6.1: Steuerboard Im folgenden wird auf die einzelnen Elemente näher eingegangen: 6.1 Taster und LEDs Da die Ausgangssignale des Controllers für den Betrieb von mehreren LEDs zu schwach sind, werden die Signale über Transistoren verstärkt, die die an Vcc angeschlossen LEDs mit GND verbinden. Die Taster verbinden bei Betätigung den Controllereingang mit GND; der Eingang wird also auf ’0’ gesetzt. 6.2 Nulldurchgangsdetektor Die Zeitverzögerung des Ansteuersignals für die Leistungsendstufe muss sich auf eine absolute Zeit nach dem Nulldurchgang der Netzspannung beziehen. Deshalb ist eine Synchronisation mit der Netzspannung in Form eines Nullspannungsdetektors erforderlich. Der Nulldurchgangsdetektor setzt beim Nulldurchgang der Spannung das Signal, welches am Controller am PORTD.2 angeschlossen ist, auf ’0’. Durch einen Impulsformer wird das Signal des Nullspannungsdetektors in einen genau definierten Impuls umgewandelt. Abb. 6.2 zeigt den zeitlichen Verlauf des gleichgerichteten Sinus der Netzspannung und das Signal des Nulldurchgangsdetektors. 30 6.3 Leistungselektronik 6 STEUERBOARD Abbildung 6.2: Nulldurchgangsdetektion 6.3 Leistungselektronik Die Ansteuerung der Zweiwegehalbleiterschalter (Triac) erfolgt mit einem speziellen Optokoppler, dem Opto-Triac. Mit dem Opto-Triac MOC3020 ist auf einfache Weise eine (π−α)-Treiberschaltung zu realisieren, da auch das im Steuerkreis befindliche Triac stromführend bleibt, solange der Haltestrom nicht unterschritten wird. Am Optotriac sind Phase und Gateleitung angeschlossen, die bei einem positivem anliegendem Zündsignal miteinander verbunden werden. So liegt dann am Gate des Triacs (T2) eine genügend hohe Spannung an, um ihn zu zünden. Das aus R14 und C10 bestehende RC-Glied dämpft die durch den Trägerstaueffekt (TSE) hervorgerufenen Spannungen. Die durch die Phasenanschnittssteuerung veränderbare Spannung für den Halogenstrahler liegt zwischen X2-1 und X2-3 an. Abbildung 6.3: Leistungselektronik 31 7 LEDs Taster Potentiometer Nulldurchgangsdetektor Optokoppler DURCHFÜHRUNG PORTB.0 - PORTB.7 PIND.0 - PIND.1 PINA.0 PIND.2 PORTD.3 Tabelle 7.1: Zusammenfassung der Anschlüsse 7 Durchführung 7.1 Aufgaben zur Einarbeitung 1. Eine LED soll über 2 Taster ein- und ausgeschaltet werden. 2. Der Wert des Potentiometers, das an PINA.0 angeschlossen ist, soll über den A/D-Wandler in den Mikrocontroller eingelesen werden und auf dem Display angezeigt werden. 3. Durch Drücken des Tasters an PIND.0 soll ein Zähler erhöht werden 4. Ein Timer soll mit einer Frequenz von CPU-Takt / 1024 gestartet werden und beim Erreichen eines Vergleichswertes von 70 soll ein Interrupt ausgelöst werden, der einen Zähler erhöht. 7.2 Steuerung des Halogenstrahlers durch ein Potentiometer In diesem Versuchsteil soll der Halogenstrahler über das Potentiometer gesteuert werden. Dazu müssen die analogen Werte des Potentiometers eingelesen und mit Hilfe des A/D-Wandlers in digitale Werte umgewandelt werden. Nun soll mit Timern und Interrupts die Phasenanschnittssteuerung implementiert werden, die über den Schieberegler gesteuert werden soll. 7.3 Steuerung des Halogenstrahlers durch zwei Taster Im nächsten Versuchsteil soll die Phasenanschnittssteuerung über zwei Taster gesteuert werden. Der eine Taster (PIND.0) soll den Phasenanschnittswinkel erhöhen und so den Strahler dimmen, der andere Taster (PIND.1) die Helligkeit des Strahlers erhöhen. 32 8 8 LITERATURVERZEICHNIS Literaturverzeichnis [1] Soter, Dr.-Ing. S.: Leistungselektronik I/II, Skriptum zur Vorlesung, Wintersemester 2002/2003. Lehrstuhl für Maschinen, Antriebe und Leistungselektronik, Universität Dortmund [2] Ulrich Tietze, Christoph Schenk: Halbleiter-Schaltungstechnik / - Berlin Springer Verlag; 11. neubearbeitete Auflage 1999 ISBN 3-540-64192-0 [3] Datenblatt des Controllers ATMega16, Atmel [4] Mikrocontroller Tutorial http://www.mikrocontroller.net/articles/c/Index.htm [5] Meyer, M.: Leistungselektronik, Springer Verlag, ISBN 3-540-52460-6 [6] Zach, F.: Leistungselektronik,Springer Verlag, 3.Auflage 1989, ISBN 3-211-82179-1 [7] Heumann, K.: Grundlagen der Leistungselektronik, Teubner Verlag, 6.Auflage 1996, ISBN 3-519-06110-4 [8] Soter, Dr.-Ing. S. , Buchhold, Dipl.-Ing. S. , Lach, Dipl.-Ing. R. : Versuch 416, Microcontrollergesteuerter Wechselstromsteller. Version 0.1, Lehrstuhl für Maschinen, Antriebe und Leistungselektronik, Universität Dortmund [9] Soter, Dr.-Ing. S. , Buchhold, Dipl.-Ing. S. , Lach, Dipl.-Ing. R. : Versuch 415, Microcontrollerprogrammierung für die Leistungselektronik. Version 2.1, Lehrstuhl für Maschinen, Antriebe und Leistungselektronik, Universität Dortmund 33