Prozesssteuerung Mikrocontroller als Zählmeister

Der gestiegenen Rechenleistung der Prozessoren ist es zu verdanken, dass die Designer industrieller Prozesssteuerungs-Anlagen heute höhere Geschwindigkeiten, gleichmäßigere Bewegungen und höhere Genauigkeit erzielen können. Allerdings muss der Bewegungssensorik große Aufmerksamkeit gewidmet werden, um die zur Verfügung stehende erhöhte Verarbeitungsleistung optimal nutzen zu können.

Zum Messen von Geschwindigkeiten und Drehbewegungen gibt es eine Vielzahl kontaktbehafteter und kontaktloser Verfahren, die sich durch ihre spezifische Kombination aus Kosten, Integrationsgrad, Auflösung, Genauigkeit und Zuverlässigkeit unterscheiden. Der folgende Artikel beschreibt eine Methode, mit der mit extrem geringem Kostenaufwand eine recht präzise und robuste Bewegungserfassung realisiert werden kann. Es wird gezeigt, wie die Signale eines Drehzahlsensors direkt einem einfachen Zähler in einem Mikrocontroller zugeführt werden können, um ohne teure applikationsspezifische Bauelemente exakte Drehzahlberechnungen durchführen zu können.

Präzise Bewegungserfassungs-Daten sind in der Regel erforderlich, um die Position eines Mechanismus oder die Drehzahl eines Motors präzise kontrollieren zu können. Bewegung als physikalische Größe lässt sich in zwei Kategorien einteilen – in translatorische (lineare) und in rotatorische Bewegungen. Jede der beiden Bewegungsarten lässt sich durch den zurückgelegten Weg bzw. Winkel, die Geschwindigkeit (Betrag und Richtung) sowie die Beschleunigung ausdrücken.

Lineare Bewegungen werden zur Messung häufig in Drehbewegungen umgewandelt, die leichter zu verarbeiten sind. Zu diesem Zweck kann man beispielsweise mit einer linearen Bewegung ein Rad von definiertem Durchmesser antreiben und dessen Bewegung analysieren, um Aussagen über Weg, Geschwindigkeit und Beschleunigung zu erhalten. Die Geschwindigkeit von Drehbewegungen misst man häufig durch das Zählen von Impulsen, die mit magnetischen oder optischen Verfahren erzeugt werden.

Bild 1 zeigt die Drehzahlerfassung mithilfe eines induktiven Detektors, der rechtwinklig zur Achse einer Zahnscheibe angebracht ist. Wenn ein Zahn die Vorderseite des Sensors passiert, stört er das Magnetfeld des Eisenkerns und erzeugt dadurch magnetische Impulse in der Spule des Sensors. Mit einer geeigneten Signalaufbereitungs- und Verstärkerstufe lässt sich hieraus ein Rechtecksignal erzeugen, dessen Periodendauer umgekehrt proportional zur Drehzahl ist. Mit einem Mikrocontroller kann diese Periodendauer direkt gemessen werden.

Mit zwei induktiven Sensoren lässt sich neben der Geschwindigkeit auch die Richtung der Drehbewegung erfassen. Die beiden Sensoren werden hierzu so angebracht, dass die resultierenden Rechteckwellen um 90° phasenversetzt sind. Nach den Induktionsgesetzen ist die Höhe der in der Spule induzierten Spannung proportional zur Änderungsrate des Magnetfelds im Eisenkern. Es gibt also eine bestimmte Mindestdrehzahl, bei deren Unterschreiten keine auswertbare Spannung mehr erzeugt wird.

Ebenso gibt es eine bestimmte Höchstdrehzahl, bei deren Überschreiten der magnetische Kreis in die Sättigung gerät. Diese Grenzwerte müssen bereits in einer frühen Phase des Designs berücksichtigt werden, um den geeignetsten Sensortyp für die Bewegungserfassung zu ermitteln. Alternativ ist ein optischer Sensor verwendbar.

Die Hauptbestandteile sind eine Lichtquelle, ein auf die Wellenlänge der Lichtquelle abgestimmter Empfänger und eine Codierscheibe. Die Codierscheibe kann entweder das von der Lichtquelle abgestrahlte Licht an den auf derselben Seite angebrachten Empfänger reflektieren oder mit Schlitzen bzw. abwechselnd durchsichtigen und lichtundurchlässigen Segmenten versehen sein, wenn sich der Detektor auf der gegenüberliegenden Seite befindet (Bild 2). Wie bei der induktiven Methode ist es mit zwei Sensoren auch hier möglich, neben dem Betrag die Richtung der Geschwindigkeit zu ermitteln.

Techniken zur Geschwindigkeitsberechnung

Nach entsprechender Aufbereitung kann die vom induktiven oder optischen Sensor erzeugte Impulskette direkt an einen DSP oder Mikrocontroller weitergeleitet werden, beispielsweise über zwei GPIO-Anschlüsse.

Einfacher lässt sich die Drehrichtung allerdings feststellen, wenn man einen der Ausgänge mit einem Interrupt-Pin (INT) des Prozessors verbindet, der auf fallende Signalflanken anspricht. Am Logikpegel des anderen Signals beim Auslösen des Interrupts ist die Drehrichtung unmittelbar erkennbar.

Die Geschwindigkeit der Drehbewegung lässt sich errechnen, indem die Zahl der Sensorsignale während einer bestimmten Zeitspanne ermittelt wird. Hierzu wird der Zählereingang mit einer geeigneten Zeitbasis für eine definierte Zeit freigeschaltet. Die Zahl der registrierten Impulse ist dann direkt proportional zur Drehzahl. Bild 3 verdeutlicht dieses Prinzip.

Bei einer bestimmten Drehzahl n erzeugt der Sensor Impulse mit der Frequenz fn gemäß folgender Gleichung:

(1)                                                           «math xmlns=¨http://www.w3.org/1998/Math/MathML¨»«msub»«mi»f«/mi»«mi»n«/mi»«/msub»«mo»=«/mo»«mi»n«/mi»«mo»§#183;«/mo»«mi»z«/mi»«/math»

Darin ist n die Drehzahl und z die Anzahl der Zähne (bzw. Schlitze bei optischer Erfassung) für eine ganze Umdrehung. Wenn N die Gesamtzahl der während der betrachteten Zeitperiode gezählten Impulse ist, gilt:

(2)                                                           «math xmlns=¨http://www.w3.org/1998/Math/MathML¨»«mi»N«/mi»«mo»=«/mo»«msub»«mi»f«/mi»«mi»n«/mi»«/msub»«mo»§#183;«/mo»«msub»«mi»t«/mi»«mi»k«/mi»«/msub»«/math»

Darin ist tk die Dauer des Messintervalls. Man kann zeigen, dass sich die erfasste Drehzahl n wie folgt berechnen lässt:

(3)                                                           «math xmlns=¨http://www.w3.org/1998/Math/MathML¨»«mi»n«/mi»«mo»=«/mo»«mfrac»«mrow»«msub»«mi»f«/mi»«mi»g«/mi»«/msub»«mo»§#183;«/mo»«mi»N«/mi»«/mrow»«mrow»«mi»a«/mi»«mo»§#183;«/mo»«mi»z«/mi»«/mrow»«/mfrac»«/math»

Darin ist fg die Quellfrequenz der Zeitbasis und a der Teilerfaktor (siehe Bild 3). Da fg, a und z bekannt sind, lässt sich die Drehzahl direkt aus dem Wert N errechnen, der sich am Ende des Zeitintervalls im Zähler des Mikrocontrollers befindet. Multipliziert man mit 2Pi, um die Winkelgeschwindigkeit in rad/s zu erhalten, und bildet das Differential nach der Zeit, so erhält man die Winkelbeschleunigung ε:

(4)                                             «math xmlns=¨http://www.w3.org/1998/Math/MathML¨»«mo»§#949;«/mo»«mo»=«/mo»«mn»2«/mn»«mo»§#960;«/mo»«mfrac»«msup»«msub»«mi»f«/mi»«mi»g«/mi»«/msub»«mn»2«/mn»«/msup»«mrow»«msup»«mi»a«/mi»«mn»2«/mn»«/msup»«mo»§#183;«/mo»«mi»z«/mi»«/mrow»«/mfrac»«mo»§#183;«/mo»«mo»(«/mo»«msub»«mi»N«/mi»«mn»2«/mn»«/msub»«mo»-«/mo»«msub»«mi»N«/mi»«mn»1«/mn»«/msub»«mo»)«/mo»«/math»