Optischer Näherungsschalter

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

von Edgar Brucke (edgar339)

Dieser Artikel nimmt am Artikelwettbewerb 2012/2013 teil.

In diesem Artikel soll der Aufbau und die Funktionsweise eines per Mikrocontroller gesteuerten, optischen Reflex-Näherungsschalters erklärt werden.

Dem Artikel ist kein Quellcode angehangen, da er schnell selbst geschrieben werden kann, man ihm kaum für andere Projekte nutzen kann und um den Text universell zu halten.

Aufbau und Funktionsweise

Optische Näherungsschalter senden infrarotes Licht über eine LED aus, welche aufgrund des hohen benötigten Stromes über einen Transistor geschalten werden sollte. Ein Gegenstand, der sich vor dem Näherungssensor befindet, reflektiert ein Teil des IR-Lichtes auf ein lichtempfindliches Bauteil zurück, welches zum Beispiel ein lichtempfindlicher Widerstand, eine Fotodiode oder ein Fototransistor sein kann. Dieses ändert dadurch seinen Widerstand, was per ADC des Mikrocontrollers gemessen werden kann, wenn aus dem lichtempfindlichen Bauteil und einem Festwiderstand ein Spannungsteiler erstellt wird.

Zu Testzwecken eignet sich am besten ein Potentiometer von 1-10kΩ. (Achtung, bei einem 0-10kΩ Poti nie ganz „aufdrehen“, oder 1k Vorwiderstand benutzen!)

Über- oder unterschreitet die Spannung einen festgelegten Schwellwert, je nachdem an welcher Stelle sich der Sensor im Spannungsteiler befindet, wird dies vom Controller erkannt. Er geht dann einer durch das Programm festgelegten Handlung nach, welche eine Zustandsänderung, wie ein Pegelwechsel, an den Portpins, oder das senden eines Signales über einen Datenbus bewirkt.

Optischer Näherungssensor.png

Programmverlauf

Nach der Initialisierung folgt das Hauptprogramm, das die Messungen, welche in einer Timer-ISR ausgeführt werden, ausgewertet und die Reaktion, die bei Objekterkennung ausgeführt wird, beinhaltet.

Das Programm kann stromsparend oder verzögerungsarm geschrieben werden. Somit kann die Schaltung für Geräte genutzt werden, die über große Zeiträume aktiv sein müssen, wie Handtrockner in öffentlichen Toiletten, oder in Geräten, welche einen hohen Bedienungskomfort bieten sollen.

Die ISR des Timers wird, je nachdem, ob die gesamte Schaltung stromsparend oder verzögerungsarm sein soll, je nach einer großen oder sehr kleinen Zeitspanne ausgeführt. In dieser findet die eigentliche Messung statt. Dazu wird zuerst die IR-LED ausgeschaltet und die Spannung am ADC gemessen, um die derzeitige äußere Beleuchtungsstärke festzustellen, welche das Ergebnis beeinflusst. Nun wir die LED wieder eingeschaltet und erneut gemessen. Die Differenz zwischen dem zweiten und dem ersten Ergebnis ist abhängig davon, wie viel Licht reflektiert wird.

Dabei ist es wichtig, dass die Messungen direkt hintereinander erfolgen, da sich die Lichtverhältnisse, speziell bei der Beleuchtung mit Leuchtstofflampen, schnell verändern und das Ergebnis verfälschen.


Wenn die stromsparende Variante gewählt wurde, wird die Entscheidung, ob die ein Objekt vor dem Sensor liegt, schon nach einer ISR getroffen. Deshalb sollten in dieser gleich zwei Messungen, wie beschrieben bestehend aus je zwei Einzelmessungen, durchgeführt werden. Der Abstand zwischen den Messungen sollte circa eine Millisekunde betragen, da, wenn die erste Messung durch das Zünden einer Leuchtstofflampe verfälscht wurde, es dann unwahrscheinlich ist, dass die die Zweite auch durch solche verfälscht wird. Es wird nur dann von einem reflektierenden Objekt ausgegangen, wenn beide Messungen Werte über dem Schwellwert erzeugen.

Wenn man will, kann man auch während der ADC Messungen und der Wartezeit zwischen den Messungen, bei der stromsparenden Variante, zurück in das Hauptprogramm springen und warten, bis diese beendigt wurden. Bei dieser zeitunkritischen Anwendung ist dies jedoch nicht nötig. Außerdem kann man die zweite Messung bei der stromsparenden Variante überspringen, wenn bereits die erste kein Ergebnis über dem Schwellwert ergab, wodurch die Durchschnittsleistung weiter sinkt.

Objekterkennung und Gestensteuerung

Wenn man die verzögerungsarme Variante benutzt, ist es nötig, die Entscheidung, ob die Reaktionshandlung ausgeführt werden soll, nicht nur auf dem Ergebnis einer Messung, sondern auf mehreren Ergebnissen aufzubauen. So kann man zum Beispiel bei jeder Messung mit positivem(über dem Schwellwert liegenden) Ergebnis eine Variable hochzählen. Bei jeder negativen Messung wird diese wieder auf 0 gesetzt und erst wenn ein bestimmter Wert überschritten wird, wird auch von einem Gegenstand vor dem Sensor ausgegangen. Es wäre auch möglich, eine bestimmte Anzahl von Messungen durchführen, und ab einem gewissen Anteil der positiven Messungen von einer Reflexion des IR-Lichtes auszugehen.

Somit lässt sich auch ein Schalter realisieren, der beim ersten Mal Überstreichen mit der Hand ein Licht einschaltet und beim zweiten Mal wieder aus. Auch die Erkennung von langem Halten der Hand über dem Sensor oder überstreichen mit zwei Fingern lässt sich erkennen und je eine andere Reaktion auslösen.


Optischer Näherungssensor Steckbrett.png

Video

Die pulsierende IR-LED kann man bei diesem Video sehr gut erkennen.