Mikrocontroller Schwellwerterkennung
In viele Anwendungen muss ein Schwellwert erkannt werden, um z.B. einen Motor an- oder auszuschalten. Meist lässt sich diese Aufgabe mit einem Komparator lösen, den jedoch nicht jeder Controller...
Anbieter zum Thema
In viele Anwendungen muss ein Schwellwert erkannt werden, um z.B. einen Motor an- oder auszuschalten. Meist lässt sich diese Aufgabe mit einem Komparator lösen, den jedoch nicht jeder Controller besitzt. Sie lässt sich aber auch mit einem A/D-Wandler realisieren, wie er auf zahlreichen Freescale-Mikrocontrollern zu finden ist.Ein wesentlicher Unterschied zwischen A/D-Wandler und Komparator ist die „Reaktionszeit“ beim Erkennen des Schwellwerts. Bei einem Komparator liegt sie im Nanosekunden-, bei einem A/D-Wandler je nach Busfrequenz im Mikrosekundenbereich. Da die Reaktionszeit des Wandlers kürzer als die des Mikrocontrollers ist, ist die Auswertezeit des Controllers wichtig. Bei einem HC08 ist die maximale Konvertierungszeit wie folgt definiert:
Für eine 8-Bit-Wandlung, die für eine Schwellwerterkennung ausreicht, benötigt der A/D-Wandler 16 bis 17 ADC-Clock-Zyklen; bei einem maximalen ADC-Clock-Zyklus von 2 MHz ergibt sich eine Wandlerzeit von 8,5 µs. Um auf einen Schwellwert jetzt zu reagieren, muss man den A/D-Wert auswerten. Dazu lässt man das A/D-Wandlermodul nach jeder Wandlung einen Interrupt generieren. Die Reaktionszeit für den Einstieg in einen Interrupt liegt bei 11 Buszyklen plus der Länge für den im Augenblick des Interrupts abzuarbeitenden Befehl und für den Rücksprung in das Hauptprogramm, der ebenfalls 11 Buszyklen beträgt. Das Auswerten des Schwellwertes bedarf der folgenden Interrupt-Service-Routine.
In der Routine wird der Schwellwert in den Accumulator geladen und dann mit dem Resultat aus dem Wandler-Register verglichen. Ist der Wert im Wandler-Register größer als der Schwellwert im Accumulator, verzweigt das Programm zu der Stelle, an der der Schwellwert bearbeitet werden kann. Ansonsten kehrt es von der Interrupt-Service-Routine in das Hauptprogramm zurück. Eine weitere Option für den Auswerteprozess ist, den oberen A/D-Referenzwert auf einen Wert zu legen, der 0x80 im A/D-Ergebnisregister ergibt. Bei dieser Option bräuchte nur das obere Bit des A/D-Ergebnis-Registers ausgewertet werden. Sollte das oberste Bit gesetzt sein, wurde der Schwellwert überschritten. Ist das Bit nicht gesetzt, wurde der Schwellwert nicht erreicht.
(ID:155163)