Digitale Drehzahlmessung

Mit Gabellichtschranke und der CCU des Philips LPC931

Inhalt 

 

                                                                     

1. Hardware/Schnittstellenanpassung

 

Die Drehzahl wird mit einer Lochscheibe und einer Gabellichtschranke erfasst.

Die Lochscheibe hat 4 Löcher, d.h. Sie liefert 4 Impulse pro Umdrehung.

 

lochsch.jpg 

 

Mit folgender Schaltung wird die Gabellichtschranke an den Controller angeschlossen:

schaltung1.gif

 

Ist die Lichtschranke unterbrochen haben wir am Controller ca. 4,9V.

Ist die Lichtschranke nicht unterbrochen haben wir am Controller ca. 0,2V.

 

 top_button

 

 

2. Ermittlung der Periodendauer

Um die Drehzahl zu ermitteln, messen wir die Periodendauer des Signals der Gabellichtschranke . Damit wir später den Controller richtig parametrieren können, müssen wir die Periodendauer erst mit dem Oszilloskop ermitteln.

oszi.jpg

 

Aus den Messungen der Periodendauer bei verschiedenen Spannungen ergeben sich folgende Drehzahlen:

 

U7/ V

t / ms

n / 1/min

1,50

67,00

223,88

1,70

40,30

372,21

1,92

30,54

491,16

2,50

20,20

742,57

3,00

15,86

945,78

3,50

12,40

1209,68

4,30

10,15

1477,83

4,60

9,60

1562,50

5,00

9,02

1662,97

 

Aus dieser Tabelle ergibt sich diese Drehzahlkennlinie:

 

kennlinie.gif

 

 top_button

 

3. Die Capture Compare Unit (CCU)

 

Die Messung erfolgt mit Hilfe der Capture-Compare-Unit (CCU) des Philips LPC 932.

Die CCU ist ein eigenständiges Modul des Controllers, dass unabhängig von den Zyklen des Prozessors arbeitet. Sie dient zur Erfassung = capture ( engl. einfangen) und Vergleichen = compare (eng. vergleichen) von zeitabhängigen Vorgängen an den Pins des LPC. Aufgebaut ist die CCU auf einen 16-bit-Timer.

Zur Messung der Periodendauer betreiben wir die CCU in der Betriebsart CAPTURE! Den Timer bereiben wir in der Basis-Betriebsart, da der Timer nur hochzählen soll und wenn er "übergelaufen" ist, soll er von neuem beginnen.

Ein externes Signal an einem der beiden Capture-Eingänge ICA (P2.7) bzw. ICB (P2.0) steuert die Übernahme des aktuellen Wertes des CCU-Timers in die beiden Capture-Register (ICRxL und ICRxH). Da dieser 16bit-Wert in 2 Registern steht, die nur nacheinander ausgelesen werden können, muss zuerst das SFR ICRxL ausgelesen werden. Dabei wird ICRxH automatisch in ein Schattenregister kopiert, so wird sichergestellt das die Inhalte der beiden Register zum selben Capture-Event gehören.

Da die Capture-Events asynchron zum laufenden Programm auftreten erfolgt die Messung mittels eines Interrupts. Da sich bei der CCU mehrere Interruptquellen einen Interruptvektor (Einsprunngadresse) teilen, muss am Anfang der Interupt Service Routine (ISR) eine Fallunterscheidung getätigt werden. Dies geschieht in diesem Beispiel mit einem Switch-Case-Konstrukt.

 

 top_button

 

4. Einstellen des CCU-Timers

 

 Zum einstellen der Betriebsart des CCU-Timers dienen die beiden Timer-Modus-Flags TMOD20 und TMOD 21. Die nötigen Einstellungen sind aus folgender Tabelle ersichtlich:

TMOD21 | TMOD20

Bertiesart

00

Timer gestoppt

01

Basisbetrieb

10

asym. PWM

11

sym. PWM

 

Über die SFRs TPCR2L und TPCR2H wird ein 10bit-Vorteiler eingestellt. Dies ist nötig, da der CCU-Timer sonst bei jedem Systemtakt (PCLK) um 1 inkrementiert würde. D.h. der Zähler würde bei PCLK = 3,6864 MHz (271,2 ns) schon nach 17,73ms überlaufen. Da wir aber Periodendauern von bis zu T=70 ms  messen, müssen wir das Taktsignal durch den Faktor 4 teilen. Dadurch können wir Drehzahlen ab n = 214 1/min messen. Dazu müssen TPCR2L und TPCR2H wie folgt eingestellt werden:

 

TPCR2H = 0x00

TPCR2L = 0x04

 

Über das Flag TDIR2 kann man die Zählrichtung einstellen. Ist das Bit "0" zählt der CCU-Timer vorwärts, ist das ´Bit "1" zählt der CCU-Timer rückwärts. Da das bit den Anfangswert 0 hat müssen wir hier nichts ändern.

 top_button

 

5. Programmablaufpläne

5.1 PAP-main

drehz_img10.gif 

 

5.2 PAP-ISR

 drehz_img11.gif

top_button

 

6. Quellcode

 6.1 Hauptprogramm

 

 

 6.2 Interrupt

 top_button

 

7. Downloads

 

µVision-Projekt (*.zip)

pdf-Version diseses Dokumentes

 

top_button

 

erstellt von: Ch. Willems

 

letzte Änderung 27.01.2006

© AT04

 

 zurück