• Keine Ergebnisse gefunden

Pulsweitenmodulation (PWM)

N/A
N/A
Protected

Academic year: 2021

Aktie "Pulsweitenmodulation (PWM)"

Copied!
19
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

1

Pulsweitenmodulation (PWM)

Möglichkeit (fast) analoge Signale zu erzeugen

Schnelles Ein- Ausschalten eines Ausganges regelt die Energiezufuhr gegenüber eines

Verbrauchers

An dem Verbraucher stellt sich eine Spannung zwischen dem Maximalwert (5V) und 0V ein.

Nach Entkopplung /Verstärkung mit Transistoren können größere Lasten betrieben werden, oder die Spannung geglättet werden

PWM wird häufig mit Timern realisiert

Möglichkeit (fast) analoge Signale zu erzeugen

Schnelles Ein- Ausschalten eines Ausganges regelt die Energiezufuhr gegenüber eines

Verbrauchers

An dem Verbraucher stellt sich eine Spannung zwischen dem Maximalwert (5V) und 0V ein.

Nach Entkopplung /Verstärkung mit Transistoren können größere Lasten betrieben werden, oder die Spannung geglättet werden

PWM wird häufig mit Timern realisiert

(2)

PWM Grundlagen

http://www.mikrocontroller.net/articles/Pulsweitenmodulation

Begriffe:

Frequenz

Tastverhältnis (Duty circle DC) Mittelwert d. Spannung V

m

U

ein

U

aus

t

ein

t

aus

Periode=t

ein

+t

aus

DC=t

ein

/ (t

ein

+t

aus

) Begriffe:

Frequenz

Tastverhältnis (Duty circle DC) Mittelwert d. Spannung V

m

U

ein

U

aus

t

ein

t

aus

Periode=t

ein

+t

aus

DC=t

ein

/ (t

ein

+t

aus

)

(3)

PWM Berechnungsgrundlagen

Für U

aus

=0V und U

ein

=Vcc gilt dann Für U

aus

=0V und U

ein

=Vcc gilt dann

Tastverhältnis DC

(4)

Leistungsberechnung mit Ohmscher Last

Bei PWM berechnet sich die Leistung aus den Bestandteilen „aus“ und

„ein“, entsprechend der Zeiten in das rechte Verhältnis gesetzt:

.

Für Uaus=0V ergibt sich vereinfacht:

.

Die Anwendung von ergibt falsche Ergebnisse!

Bei PWM berechnet sich die Leistung aus den Bestandteilen „aus“ und

„ein“, entsprechend der Zeiten in das rechte Verhältnis gesetzt:

.

Für Uaus=0V ergibt sich vereinfacht:

.

Die Anwendung von ergibt falsche Ergebnisse!

(5)

PWM mit AVR

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#PWM_.28Pulsweitenmodulation.29

Invertierendce PWM: Je höher der Vergleichswert ist, desto geringer wird die Resultierende Spannung, weil sich die Einschaltzeit verringert.

(6)

Fast PWM

http://www.extremeelectronics.co.in/avrtutorials/images/pwm_wave_timer.gif

(7)

Kennwerte

Auflösung (Resolution, Stufung der Ausgangsspannung):

- Max (8,9,10 bit oder variabel)

Frequenz:

- Max

- Eingangsfrequenz (Vorteiler)

Ausgangsspannung:

- Lage des Comparewerts zwischen 0 und Maximalwert ergibt das Tastverhältnis

Auflösung (Resolution, Stufung der Ausgangsspannung):

- Max (8,9,10 bit oder variabel)

Frequenz:

- Max

- Eingangsfrequenz (Vorteiler)

Ausgangsspannung:

- Lage des Comparewerts zwischen 0 und

Maximalwert ergibt das Tastverhältnis

(8)

PWM, beispielhaft mit Timer1

Fast PWM – Phasecorrect PWM invertierend/nicht Invertierend

Fixe Auflösung 8bit (Max=255), 9 bit (511), 10 bit(1023) Variable Auflösung (Max in OCR1A oder ICR1)

Max in ICR1 verwenden, wenn der Max-Wert konstant bleibt

Max in OCR1A verwenden, wenn der Max Wert und damit die Frequenz veränderlich ist (Erzeugung verschiedener Töne), OCR1A steht in diesem Fall nicht als

Vergleichsregister zur Verfügung, Es kann nur OCR1B zum Vergleichen/Schalten genutzt werden

Ausgänge sind OC1A (PB1, Pin15) OC1B (PB2, Pin16) Fast PWM – Phasecorrect PWM

invertierend/nicht Invertierend

Fixe Auflösung 8bit (Max=255), 9 bit (511), 10 bit(1023) Variable Auflösung (Max in OCR1A oder ICR1)

Max in ICR1 verwenden, wenn der Max-Wert konstant bleibt

Max in OCR1A verwenden, wenn der Max Wert und damit die Frequenz veränderlich ist (Erzeugung verschiedener Töne), OCR1A steht in diesem Fall nicht als

Vergleichsregister zur Verfügung, Es kann nur OCR1B zum Vergleichen/Schalten genutzt werden

Ausgänge sind OC1A (PB1, Pin15) OC1B (PB2, Pin16)

(9)

Obergrenze (Max):

abhängig von der

Verarbeitungsbreite in SFR

TCCR1A

(PWM11,PWM10) Untergrenze 0

Vergleichswert in SFR OCR1A oder OCR1B

Ausgabe auf PIN OC1A oder OC1B

Obergrenze (Max):

abhängig von der

Verarbeitungsbreite in SFR

TCCR1A

(PWM11,PWM10) Untergrenze 0

Vergleichswert in SFR OCR1A oder OCR1B

Ausgabe auf PIN OC1A

oder OC1B Die Obergrenze MAX kann auch über die Register OCR1A oder ICR1 bestimmt werden

(max. 16-Bit)

Die Obergrenze MAX kann auch über die Register OCR1A oder ICR1 bestimmt werden

(max. 16-Bit)

PWM11 PWM10 Bedeutung

0 0 no PWM mode

0 1 8-Bit PWM

1 0 9-Bit PWM

1 1 10-Bit PWM

PWM11 PWM10 Bedeutung

0 0 no PWM mode

0 1 8-Bit PWM

1 0 9-Bit PWM

1 1 10-Bit PWM

Auflösung Obergrenze Frequenz

8 255 fTC1 / 510

9 511 fTC1 / 1022

10 1023 fTC1 / 2046

Auflösung Obergrenze Frequenz

8 255 fTC1 / 510

9 511 fTC1 / 1022

10 1023 fTC1 / 2046

(10)

WGM 13 12 11 10Timer/Counter Mode of Update TOV1 Flag

Mode Operation(1) TOP OCR1x Set on

0 0 0 0 0Normal 0xFFFF ImmediateMAX

1 0 0 0 1PWM,Phase Correct,8-bit 0x00FF TOP BOTTOM 2 0 0 1 0PWM,Phase Correct,9-bit 0x01FF TOP BOTTOM 3 0 0 1 1PWM,Phase Correct,10-bit 0x03FF TOP BOTTOM

4 0 1 0 0CTC OCR1A ImmediateMAX

5 0 1 0 1Fast PWM,8-bit 0x00FF TOP TOP 6 0 1 1 0Fast PWM,9-bit 0x01FF TOP TOP 7 0 1 1 1Fast PWM,10-bit 0x03FF TOP TOP

8 1 0 0 0PWM, Phase and Frequency CorrICR1 BOTTOM BOTTOM 9 1 0 0 1PWM, Phase and Frequency CorrOCR1A BOTTOM BOTTOM 10 1 0 1 0PWM, Phase Correct ICR1 TOP BOTTOM 11 1 0 1 1PWM, Phase Correct OCR1A TOP BOTTOM

12 1 1 0 0CTC ICR1 ImmediateMAX

13 1 1 0 1(Reserved) – – –

14 1 1 1 0Fast PWM ICR1 TOP TOP

15 1 1 1 1Fast PWM OCR1A TOP TOP

TOV1: Timer 1 Overflow Interrupt Flag in Timer/Counter Interrupt Register

(11)

WGM 1 3 1

2 1 1 1

0 Timer/Counter Mode of Update TOV1 Flag

Mode Operation(1) TOP OCR1x Set on

0 0 0 0 0 Normal 0xFFFF Immediate MAX

1 0 0 0 1 PWM,Phase Correct,8-bit 0x00FF TOP BOTTOM 2 0 0 1 0 PWM,Phase Correct,9-bit 0x01FF TOP BOTTOM 3 0 0 1 1 PWM,Phase Correct,10-bit 0x03FF TOP BOTTOM

4 0 1 0 0 CTC OCR1A Immediate MAX

5 0 1 0 1 Fast PWM,8-bit 0x00FF TOP TOP

6 0 1 1 0 Fast PWM,9-bit 0x01FF TOP TOP

7 0 1 1 1 Fast PWM,10-bit 0x03FF TOP TOP

8 1 0 0 0 PWM, Phase and Frequency Correct ICR1 BOTTOM BOTTOM 9 1 0 0 1 PWM, Phase and Frequency Correct OCR1A BOTTOM BOTTOM

10 1 0 1 0 PWM, Phase Correct ICR1 TOP BOTTOM

11 1 0 1 1 PWM, Phase Correct OCR1A TOP BOTTOM

12 1 1 0 0 CTC ICR1 Immediate MAX

13 1 1 0 1 (Reserved)

14 1 1 1 0 Fast PWM ICR1 TOP TOP

15 1 1 1 1 Fast PWM OCR1A TOP TOP

WGM 1 3 1

2 1 1 1

0 Timer/Counter Mode of Update TOV1 Flag

Mode Operation(1) TOP OCR1x Set on

0 0 0 0 0 Normal 0xFFFF Immediate MAX

1 0 0 0 1 PWM,Phase Correct,8-bit 0x00FF TOP BOTTOM 2 0 0 1 0 PWM,Phase Correct,9-bit 0x01FF TOP BOTTOM 3 0 0 1 1 PWM,Phase Correct,10-bit 0x03FF TOP BOTTOM

4 0 1 0 0 CTC OCR1A Immediate MAX

5 0 1 0 1 Fast PWM,8-bit 0x00FF TOP TOP

6 0 1 1 0 Fast PWM,9-bit 0x01FF TOP TOP

7 0 1 1 1 Fast PWM,10-bit 0x03FF TOP TOP

8 1 0 0 0 PWM, Phase and Frequency Correct ICR1 BOTTOM BOTTOM 9 1 0 0 1 PWM, Phase and Frequency Correct OCR1A BOTTOM BOTTOM

10 1 0 1 0 PWM, Phase Correct ICR1 TOP BOTTOM

11 1 0 1 1 PWM, Phase Correct OCR1A TOP BOTTOM

12 1 1 0 0 CTC ICR1 Immediate MAX

13 1 1 0 1 (Reserved)

14 1 1 1 0 Fast PWM ICR1 TOP TOP

15 1 1 1 1 Fast PWM OCR1A TOP TOP

(12)

Port Funktion Port-Adresse RAM-Adresse

TCCR1A Timer/Counter 1 Control Register A 0x2F 0x4F

7 6 5 4 3 2 1 0

COM1A1 COM1A0 COM1B1 COM1B0 FCO1A FCO1B WGM11 WGM10

Bit Name Bedeutung Möglichkeiten

7 COM1A1

Compare Ausgang A

00: OC1A/B nicht verbunden non PWM:

01: OC1A/B wechselt Polarität 10: OC1A/B match: 0

11: OC1A/B match: 1 Fast PWM:

01: toggle OC1A, OC1B disconnected(WGM:15)

10: match:0, top:1 11: match:1, top:0 Phase correct PWM :

01: toggle OC1A, OC1B disconnected(WGM:9,11)

10: match upcount :0, match downcount:1 11: match upcount :1, match downcount:0

6 COM1A0

5 COM1B1

Compare Ausgang B

4 COM1B0

3 FOC1A Force output compare match A Ausgang wir entspr. Konfiguration geschaltet, Interrupt wird nicht erzeugt

2 FOC1B Force output compare match B

1..0

WGM11 WGM10

Pulsweitengenerator

00: PWM aus (abh. von WGM12/13) 01: 8-Bit PWM

Manual:

14

(13)

Port Funktion Port-Adresse RAM-Adresse TCCR1B Timer/Counter 1 Control Register B 0x2E 0x4E

7 6 5 4 3 2 1 0

ICNC1 ICES1 - WGM13 WGM12 CS12 CS11 CS10

Bit Name Bedeutung Möglichkeiten

7 ICNC1 Noise Canceler am ICP-Pin

0: ausgeschaltet, erste Flanke löst Sampling aus 1: eingeschaltet, Mindestdauer vier Taktzyklen 6 ICES1 Flankenauswahl

bei Capture

0: fallende Flanke löst Capture aus 1: steigende Flanke löst Capture aus 5 reserved

4 WGM13 Wave Form Generation Mode

3 WGM12

(CTC)

Rücksetzen bei Compare Match A oder WGM

1: Zähler wird bei Gleichheit auf Null gesetzt oder

Wave Form Generation Mode

2..

0 CS12..CS10 Taktauswahl

000: Zähler anhalten 001: Clock

010: Clock / 8 011: Clock / 64 100: Clock / 256 101: Clock / 1024

110: fallende Flanke externer Pin T1 111: steigende Flanke externer Pin T1

Capture

(14)

/*

* --- * "THE BEER-WARE LICENSE" (Revision 42):

* <joerg@FreeBSD.ORG> wrote this file. As long as you retain this notice you * can do whatever you want with this stuff. If we meet some day, and you think * this stuff is worth it, you can buy me a beer in return. Joerg Wunsch

* --- *

* Simple AVR demonstration. Controls a LED that can be directly * connected from OC1/OC1A to GND. The brightness of the LED is * controlled with the PWM. After each period of the PWM, the PWM * value is either incremented or decremented, that's all.

*

* $Id: group__demo__project.html,v 1.1.1.13 2007/05/15 05:13:11 joerg_wunsch Exp $ */

#include <inttypes.h>

#include <avr/io.h>

#include <avr/interrupt.h>

#include <avr/sleep.h>

#include <avr/delay.h>

(15)

#define TIMER1_TOP 1023 enum { UP, DOWN };

ISR (TIMER1_OVF_vect) {

static uint16_t pwm;

static uint8_t direction;

switch (direction) {

case UP:

if (++pwm == TIMER1_TOP) direction = DOWN;

break;

case DOWN:

if (--pwm == 0) direction = UP;

break;

}

OCR1A = pwm;

}

#define TIMER1_TOP 1023 enum { UP, DOWN };

ISR (TIMER1_OVF_vect) {

static uint16_t pwm;

static uint8_t direction;

switch (direction) {

case UP:

if (++pwm == TIMER1_TOP) direction = DOWN;

break;

case DOWN:

if (--pwm == 0) direction = UP;

break;

}

OCR1A = pwm;

}

Funktionsweise:

Interrupt wird bei jedem Durchlauf (8/9/10 bit oder Erreichen von MAX) ausgelöst.

Ausgang OC1A / OC1B toggelt

jeweils beim Passieren des Wertes in OCR1A bzw. OCR1B.

Durch Änderung dieses Wertes kommt es zum Auf-/Abdimmen.

Funktionsweise:

Interrupt wird bei jedem Durchlauf (8/9/10 bit oder Erreichen von MAX) ausgelöst.

Ausgang OC1A / OC1B toggelt

jeweils beim Passieren des Wertes in OCR1A bzw. OCR1B.

Durch Änderung dieses Wertes

kommt es zum Auf-/Abdimmen.

(16)

void ioinit (void) {

/* Timer 1 is 10-bit PWM (8-bit PWM on some ATtinys). */

TCCR1A = (1<<WGM10)|(1<<WGM11)|(1<<COM1A1);

/*

* Start timer 1.

*

* NB: TCCR1A and TCCR1B could actually be the same register, so * take care to not clobber it.

*/

TCCR1B |= (1<<CS10);/*|(1<<CS11);*/

/* Set PWM value to 0. */

OCR1A = 0;

/* Enable OC1 as output. */

DDRB = _BV (DDB1);

/* Enable timer 1 overflow interrupt. */

TIMSK = _BV (TOIE1);

sei ();

}

void ioinit (void) {

/* Timer 1 is 10-bit PWM (8-bit PWM on some ATtinys). */

TCCR1A = (1<<WGM10)|(1<<WGM11)|(1<<COM1A1);

/*

* Start timer 1.

*

* NB: TCCR1A and TCCR1B could actually be the same register, so * take care to not clobber it.

*/

TCCR1B |= (1<<CS10);/*|(1<<CS11);*/

/* Set PWM value to 0. */

OCR1A = 0;

/* Enable OC1 as output. */

DDRB = _BV (DDB1);

/* Enable timer 1 overflow interrupt. */

TIMSK = _BV (TOIE1);

sei ();

}

(17)

int main (void) {

DDRB = _BV (DDB1);

PORTB=1<<PORTB1;

//delay_ms(500);

ioinit ();

/* loop forever, the interrupts are doing the rest

*/

for (;;) sleep_mode();

return (0);

}

int main (void) {

DDRB = _BV (DDB1);

PORTB=1<<PORTB1;

//delay_ms(500);

ioinit ();

/* loop forever, the interrupts are doing the rest

*/

for (;;) sleep_mode();

return (0);

}

(18)

Transistorschaltung zur

Lüftersteuerung

(19)

Power Mosfet

Schalten von Gleichspannung <48V

BTS555 schaltet Ströme über 300A bei geringen Verlusten (Wärmeentwicklung)

in

out Input direkt (Test)

Input über Transistor (µC)

Referenzen

ÄHNLICHE DOKUMENTE

• Eine Abgabe ist vor Ablauf der 60 Minuten nicht m¨oglich. Bleiben Sie bitte auf Ihrem Platz, bis alle Klausuren eingesammelt wurden.. • Verwenden Sie nur die Bl¨atter

Syntaxdiagramme sind eine alternative Form der Darstellung kontextfreier Grammatiken, bei der die rechte Seite einer Produktion durch einen Graphen dargestellt wird, der sogar

Die herausforderung bringt martin Kräter auf den punkt: „Wenn man sich blut anschaut, dann kommt auf grob tausend rote blutzellen eine weiße blutzelle!“ Von diesen seltenen

Mehrere Faktoren könnten dazu geführt haben, dass die Empfehlungen der WHO dennoch auf unterschiedliche Akzeptanz gestoßen sind: etwa der anfängliche Mangel an Informationen über

Für eine eher nicht so dominante Rolle der Politik spricht noch etwas anderes: Marco serena, wie Lisa Windsteiger Research Fellow am Münchner Max-Planck-institut, hat sich in

Wenn diese Än- derungen sehr schnell erfolgen, ist das gehör nicht mehr in der lage, diese zeitlichen Veränderungen aufzulösen – man empfindet ein solches geräusch dann als rau

Finanziert wird das Projekt von dem amerikanischen Milliardär Jim Simons, den Ijjas mit ihren jüngsten Ergebnissen zur Be- rechnung des Urpralls unlängst davon überzeugen

„Damit bieten wir eine Lösung für das Problem, dass es oft nicht genügt, personen- spezifische Daten wie den Namen, das Geburtsdatum oder die vollständige Wohnadresse aus