Wechselrichter mit Feldeffekttransistoren
1 Info PWM-Modul
PWM-Spannung

Das PWM-Modul kann zum Dimmen von LEDs oder zum Steuern von Motoren eingesetzt werden. Hierzu wollen wir in einem ersten Schritt klären, was ein solches PWM-Modul macht.

PWM steht für die Puls-Weiten-Modulation einer Spannung. Das periodische Signal mit der Periodendauer T ist aufgeilt in die Impulsdauer ti und die Pausendauer tp = T - ti.

Durch ein unterschiedliches Verhältnis von Impulszeit zu Periodendauer wird die effektive Spannung reduziert. Dieses Tastverhältnis berechnet sich zu:

$$g=\frac{t_i}{T}$$
2 Dimmen einer LED 1
Quarz

Das Dimmen funktioniert einerseits mit einer Zeitverzögerungsfunktion:
01 int T=1000, ti=200;
02 while(1){
03     L1=1;
04     DelayUS(ti);
05     L1=0;
06     DelayUS(T-ti);
07 }

Hinweis: T sollte maximal 10 ms betragen, damit das Auge kein Blinken wahrnimmt.

3 Dimmen einer LED 2
Konfigurationsschema des Timers

Für das PWM-Modul wird mit PWMconfig.h und PWMconfig.c eine Bibliothek zur Initialisierung bereitgestellt. Durch den Aufruf der Funktion PWMinit( ); wird das PWM-Modul in dem Register PTPER=1000; mit einer Periodendauer von 135,62 μs initialisiert. Dabei werden alle 6 PWM-Ausgänge an L1 - L6 aktiviert und somit mit einer PWM-Spannung versorgt:
01 PWMinit();
02 PTPER=1000;
03 PDC1=PDC2=PDC3=200;

Für g = 20 % wird die Impulszeit mit den Registern PDC1, PDC2, PDC3 für die oberen LEDs L1, L3, L5 gesetzt. Die LEDs L2, L4, L6 werden im komplementären Modus mit 1-g = 80 % angesteuert.

4 H-Brücke und DC-Motor 1
Unterbrechungsflagge

Parallel zu L1 - L4 hat das PIC33-Demoboard eine H-Brücke mit 24 V angeschlossen. Dazu muss der Dippschalter der unteren Platine eingeschaltet und PWM_EN=1; gesetzt werden. Sollte der Akku leer sein, muss die untere Platine über das USB-Kabel mit Spannung versorgt werden.
01 PWMinit();
02 PWM_EN=1;
03 PTPER=1000;
04 while(1){
05     if(S0 == 0)   PDC1=200, PDC2=0;
06     if(SD == 0)   PDC1=0, PDC2=800;
07 }

5 H-Brücke und DC-Motor 2
Bibliothek

Der Gleichstrommotor wird an den Ausgängen M1 und M2 des LIME1-Demoboards angeschlossen. Nun kann man den Tastgrad in Abhängigkeit des Poti 1 einstellen:
01 int ti = 0;
02 ti=ADCread(Poti1);
03 if(ti >= PTPER) ti = PTPER;
04 PDC1=PDC2=ti;

Des weiteren kann mit SD und SU die Dreh­zahl gesteuert werden oder mit einem Tacho die Drehzahl auf einem der externen analogen Eingänge eingelesen und am LCD dargestellt werden.
Hat man die Drehzahl, kann man eine Drehzahlregelung programmieren. So lassen sich viele anwendungsnahe Probleme lösen.



Aufgabe 1 Dimmmen einer LED

dimmbare LED

Die LED L7 und L1+L3+L5 sollen mit einer PWM-Spannung in 3 Abstufungen dimmbar sein.

  1. Welche maximale Periodendauer ist möglich, ohne das unser Auge ein Blinken wahrnimmt?
  2. Wähle drei geeignete Impulszeiten.
  3. Erstelle das Projekt 10-PWM und schreibe die Datei 10-PWM-1-LED-dimmen.c, in der die Helligkeit von den LEDs eingestellt werden kann.
  4. Mit dem Taster SU und SD soll die Helligkeit der LED L7 geändert werden können. Nutze die Variablen ti, T und die Funktion void DelayMS(unsigned int zeit).

Zur Verwendung des PWM-Moduls wird eine Bibliothek zur Verfügung gestellt. Binde dafür die Datei PWMconfig.h und PWMconfig.c in das Projekt ein.

  1. Wie lange ist die Periodendauer für PTPER=1 und PTPER=1000?
  2. Mit dem Taster SR und SL soll die Helligkeit der LEDs L1+L3+L5 mit dem PWM-Modul geändert werden. Verwende hierfür das PWM-Modul. Hinweis: Bei der Aktivierung des PWM-Moduls werden automatisch alle drei LEDs aktiviert.

Aufgabe 2 Drehzahlsteuerung | DC-Motor

DC-Motor

Eine Gleichstrommaschine wird mit der integrierten H-Brücke angesteuert. Zur Verwendung des PWM-Moduls benötigst du die Bibliotheksdateien PWMconfig.h und PWMconfig.c, musst die 24 V am Board aktivieren und PWM_EN=1; im Quelltext setzten.

  1. Erstelle die Datei 10-PWM-2-Drehzahlsteuerung.c, in der mit Hilfe des PWM-Moduls die Drehzahl eines DC-Motors in 10 Stufen gesteuert wird.
  2. Binde alle notwendigen Bibliotheken ein.
  3. Deklariere 2 Arrays für die LCD-Anzeige.
  4. Setze die Impulszeit in Abhängigkeit von SU und SD. Pro Tastendruck soll sich die Drehzahl um 10 % ändern.
  5. Aktualisiere nach jedem Durchlauf die Tastgradanzeige am LCD.

Aufgabe 3 Drehrichtungsänderung | DC-Motor

Schaltplan H-Brücke mit 2 Drehrichtungen

Programmiere eine Drehzahlsteuerung mit Poti 1 und Drehrichtungsauswahl in der Datei 10-PWM-3-Drehrichtungsaenderung.c. Binde alle notwendigen Bibliotheken ein und lies die Impulsdauer am Poti mit ti = ADCread(Poti1); ein. Begrenze den Wert auf 1000 oder ändere entsprechend die Periodendauer ab.

Die Drehrichtung kann mit SU und SD geändert werden und am LCD wird die Drehrichtung und der Tastgrad angezeigt.


Entspann dich erst mal ...

Weltende von Jakob van Hoddis

DemBürgerfliegtvomspitzenKopfderHut,
InallenLüftenhallteswieGeschrei,
Dachdeckerstürzenabundgehnentzwei
UndandenKüsten–liestman–steigtdieFlut.

DerSturmistda,diewildenMeerehupfen
AnLand,umdickeDämmezuzerdrücken.
DiemeistenMenschenhabeneinenSchnupfen
DieEisenbahnenfallenvondenBrücken.

Auflockerungsübung

Leider sind bei dem expressionistischen Gedicht von Jakok von Hoddis die Leerzeichen verschwunden.

1. Lies das Gedicht so schnell wie möglich.

2. Wie lange brauchst du, um die Anzahl der Wörter zu zählen?

Aufgabe 4 Drehzahlregelung | DC-Motor

Das analoge Signal (0 - 10 V) des Tachognerators wird am externen analogen Eingang EXT1 eingelesen und so die Drehzahl des DC-Motors geregelt.

DC-Motor mit Tachogenerator
  1. Erstelle die Datei 10-PWM-4-Drehzahlregelung.c. Binde alle notwendigen Bibliotheken mit ein: LIMExconfig, LCDconfig, ADCconfig, PWMconfig
  2. Erfasse den Sollwert mit dem Poti1: sollwert = ADCread(Poti1); und begrenze ihn auf 936.
  3. Erfasse den Istwert des Tachogenerators: istwert = ADCread(EXT1); und multipliziere ihn mit 4.
  4. Programmiere die Regelung.
    Hinweis: Falls der Sollwert größer als der Istwert ist, erhöhe die Impulszeit um 5, aber maximal auf 1000. Andernfalls verringere die Impulszeit um 5, aber minimal auf Null.


Aufgabe 5 Abstandssensor | DC-Motor

Abstandssensor

Lese in 10-PWM-5-Abstandssensor.c den Abstand mit einem Abstandssensor ein. Ist der Abstand bspw. kleiner als 50 cm soll der Motor sofort stehen bleiben. Alternativ können auch andere Sensoren wie Kontaktschalter oder Lichtschranken eingesetzt werden.


© mylime.info