Aktuator mit Überwachung der Funktion

Wenn ich mittels eines I/O Ports einen Motor ein- oder ausschalte, woher weiß ich, ob der Motor wirklich läuft bzw. ausgeschaltet ist? Hier bleibt nur die Möglichkeit mit Sensoren den Motor und die Funktion zu prüfen. Das ist insbesondere dann wichtig wenn es um sichere Funktion geht oder eine Fehlfunktion hohe Kosten verursacht.

Der Aktuator
Das ist z.B. ein Motor. Es kann sich auch um Magnetventile, Relais, Vibrationsmotoren etc. handeln. Meistens wird mechanisch etwas bewegt.

Die Messung am Aktuator
Messen kann ich dann den Stromfluss am Aktuator. Mit dem Stromfluss messe ich dann den Nennstrom bei normaler Funktion nach dem Einschalten. Ist der Strom kleiner, liegt ein Problem vor, z.B. oxydierte Kontakte oder die Stromquelle ist nicht ausreichend. Ist der Strom größer, dann kommen entweder eine Überlast oder ein Kurzschluss in Frage. Fließt auch nach dem Ausschalten immer noch mehr als ein Mindeststrom, dann liegt womöglich ein Kurzschluss am Eingang vor, der das Ausschalten verhindert. Mit einem Temperatursensor, der direkt am Aktuator angebracht ist, messe ich dann die Aktuatortemperatur. Bei zu hoher Temperatur wird der Aktuator dann abgeschaltet.

Die Funktion
Nach dem Einschalten beim Motor ist es dann die Drehzahl, beim Magnetventil der Durchfluss und beim Relais ,ob das Schalten auch stattgefunden hat. Ist die Einschaltfunktion nach dem Ausschalten immer noch vorhanden, dann liegt auch hier womöglich ein Kurzschluss am Eingang vor, der das Ausschalten verhindert. Im Normalfall sollte nach dem Ausschalten auch die Funktion am Ausgang auf „keine Funktion“ gehen.

Die Spannung am Controller
Wenn ich die Spannung am Controller selbst messe, kann ein Brownout oder gar ein Blackout vermieden werden. Je nach Spannungseinbruch werden dann einzelne Verbraucher abgeschaltet, um den Strom zu verringern.

Fazit
Ich komme also am Einsatz von Sensoren nicht vorbei. Wobei hier eigentlich immer mindestens zwei Sensoren benötigt werden: Der Stromsensor für den Aktuator und der weitere Sensor für die resultierende Funktion. Aus dem kategorisiertem Messergebnis der Sensoren über zwei Achsen lässt sich für den Eingeschalteten, sowie für den ausgeschalteten Zustand eine Tabelle anlegen, aus der sich dann alle möglichen Fälle ergeben, die ich dann auch entsprechend Testen kann und auch sollte, natürlich abhängig von den Anforderungen. Bei der Funktion muss ich auch noch auf das Ziel achten, ist z.B. beim Durchflusssensor kein Medium vorhanden, kann ich natürlich nichts messen. Eine weitere Tabelle ergibt sich aus der Überwachung der Spannung und der Temperatur.

Die Tabellen
Stromsensor, Kategorien: kein Strom, Mindeststrom (bei Aus), Minderstrom, Nennstrom, Überstrom
Funktion, Kategorien: keine Funktion, Funktion (bei Ein),

Eingeschaltet:

kein Strom Mindeststrom Minderstrom Nennstrom Überstrom
Funktion Sensor? Sensor? Sensor? Alles Ok! Überlast?
keine Funktion Sensor? Sensor? Sensor? Sensor? Sensor?

Ausgeschaltet:

kein Strom Mindeststrom Minderstrom Nennstrom Überstrom
Funktion Sensor? Sensor? Sensor? Sensor? Sensor?
keine Funktion Alles Ok! Sensor? Sensor? Sensor? Sensor?

Spannungssensor, Kategorien: Unterspannung, Normalspannung
Temperatursensor, Kategorien: Normaltemperatur, Übertemperatur

Unterspannung Normalspannung
Normaltemperatur Abschalten Normalbetrieb
Übertemperatur Leistung verringern oder Abschalten Leistung verringern oder Abschalten

Fehlfunktionen am Sensor
Beim Analogsensor: Kurzschluss am Ausgang nach Plus, Kurzschluss am Ausgang nach Minus, Leitungsbruch, Spannungshöhe
Beim Digitalsensor: Fehler in der Kommunikation
Generell: Kopplung(z.B. mechanisch)

Fehlfunktion am Aktuator
Bei Analogaktuator: Kurzschluss am Eingang nach Plus, Kurzschluss am Eingang nach Minus, Leitungsbruch, Spannungshöhe
Beim Digitalaktuator: Fehler in der Kommunikation
Generell: Übertemperatur am (im) Aktuator (Überhitzung)

Das Beispiel
halte ich ganz einfach: ein Vibrationsmotor, den ich überwache. Also ein Stromsensor, dafür brauche ich dann die typischen Ströme für den Vibrationsmotor aus dem Datenblatt / Datasheet. Die Versorgungsspannung messe ich über einen Spannungsteiler oder Vorwiderstand am Analogeingang. Und einen Vibrationssensor, mechanisch gekoppelt mit dem Vibrationsmotor, um die Funktion messen zu können. Das heißt: ich klebe den Vibrationsmotor seitlich auf den Keramiksensor und halte den Sensor an der anderen Seite fest. Beim Messen muss ich nur eine gewisse Zeit warten für die Ein- und Ausschwingvorgänge der mechanischen Bewegung. Dazu kommt noch der Temperatursensor ebenfalls am Motor. In meinem Beispiel stecke ich den Temperatursensor einfach auf das Breadboard und messe damit die Raumtemperatur. Am Motor ist kein Platz dafür.
Die Messungen sind noch recht ungenau. Da wäre noch eine genauere Einstellung nötig, aber im Prinzip funktioniert es bereits ganz gut. Mit all diesen Maßnahmen kann ich mit der Software viel sicherer feststellen, ob eine Funktion denn auch tatsächlich ausgeführt wurde, alles andere funktioniert nach dem Prinzip Hoffnung.

Die Hardware
– Ein Arduino Uno
– Ein Vibrationsmotor
– Ein Vibrationssensor
– Ein Stromsensor ACS712
– Ein Spannungssensor (Vorwiderstand 10KOhm)
– Ein Temperatursensor LM35

Der Aufbau

Auf dem Breadboard

Die Software
Ist gar nicht so kompliziert: Motor einschalten und Messen, danach auswerten. Anschliessend Motor ausschalten, danach auswerten. Das war’s. Ach ja, natürlich auch noch die Spannungsversorung und die Aktuatortemperatur im Auge behalten.

Der Sketch
Aktuator_mit_ueberwachen_der_Funktion

Links

Drehzahlmessung
https://arduino-projekte.info/drehzahlmesser/

Vibrationssensor
https://learn.sparkfun.com/tutorials/piezo-vibration-sensor-hookup-guide
http://wiki.keyestudio.com/index.php/Ks0272_keyestudio_Analog_Piezoelectric_Ceramic_Vibration_Sensor

Vibrationsmotor
http://www.learningaboutelectronics.com/Articles/Vibration-motor-circuit.php

Vibrationsmotor Datasheet

Klicke, um auf datasheet-for-the-306-101-vibration-motor.original.pdf zuzugreifen

Temperatursensor LM35 Datasheet

Klicke, um auf lm35.pdf zuzugreifen

Temperatursensor am Arduino

Nr.10 – Temperatur messen mit dem LM35

Stromsensor
Leistungsmessung mit dem ACS712

Brownout und Blackout
Spannungsueberwachung und Brown Out Erkennung

Veröffentlicht von

Jürgen

Ich bin Software Ingenieur und habe meine Schwerpunkte in allen Aktivitäten, die zur Software Entwicklung gehören. Am längsten bin ich als Software Entwickler von Embedded Software in C tätig.