MotorCurtain

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche

Rollo Automatisierung

Dieser Artikel beschreibt das Modul "MotorCurtain", welches zur Ansteuerung eines Rollos oder Vorhangs benutzt wird. Dabei können mehrere Sensoren (etwa Schalter, Optik oder Reed Relais) über den aktuellen Zustand des Rollos oder Vorhangs abgefragt werden bzw. den Zustand aktiv über das UDP Protokoll propagieren. Es wird davon ausgegangen, dass die verwendete H-Brücke bereits über eine vorgeschaltete Logik verfügt und daher nur 2 Eingangspins benötigt. Schaltungsbeispiele sind weiter unten aufgeführt.

Das Modul MotorCurtain bietet folgendes:

  • Ansteuerung per Ecmd und eigenem auf UDP laufendem Protokoll
  • Zielposition bestimmbar, abhängig von der Anzahl der Sensoren
  • Aktuelle Position des Rollos/Vorhangs per UDP Nachricht an angegebene IP
  • Bis zu 8 Sensoren für Bestimmung der aktuellen Position möglich (inkl. Endlagenschalter)
  • Sensoreingänge invertierbar (für active low)
  • Motoransteuerung invertierbar (für active low)
  • 1 Pin für Softwareseitige Sicherheitsmotorabschaltung

Modul auswählen und konfigurieren

Um MotorCurtain in ethersex zu aktivieren, wählt man im Menü

 │ │                Load a Default Configuration  --->
 │ │                ...
 │ │                Applications  --->
 │ │                  ...
 │ │                  [*] MotorCurtain  --->

Du musst nun noch einige Pins anpassen. Editiere deine gewählte Hardware Konfigurationsdatei und füge folgendes ein:

Um den Port und den Pin für die Motorsteuerung und den Sicherheitsabschalter (optional) anzugeben, muss folgendes eingefügt werden:

pin(MOCU_MOTOR_ENABLE, PC0)
pin(MOCU_MOTOR_DIRECTION, PC1)
pin(MOCU_SAFETYSWITCH, PC2)

Hier wird beispielhaft An/Aus auf Port C Pin 0, Richtung rechts/links auf Port C Pin 1 und die Sicherheitsabschaltung auf Port C Pin 2 gelegt.

Um den Port und die Pins der Sensoren anzugeben, muss folgendes eingefügt werden:

ifdef(`conf_MOTORCURTAIN', `dnl
  MOTORCURTAIN_PORT_RANGE(PD2,PD7)
')

Dies ist ein Beispiel für Port D und die Pins 2 bis 7. Pin2 entspricht "geschlossen", Pin7 entspricht "offen".

Wenn du nicht alle 8 Pins des Ports für Sensoren nutzt, kannst du die restlichen Pins weiterhin frei verwenden, auch etwa als Sicherheitsabschalter oder Motorsteuerungspins.

Hardware Schaltungen

Grundlagen

Um einen DC Motor nicht nur an- sowie abschalten, sondern auch die Richtung per Software bestimmen zu können, wird eine H-Brücke benötigt. Je nach Leistungsbedarf des Motors gibt es bereits fertige ICs. Details dazu findet man im RoboterNetz Wiki unter Getriebemotoren Ansteuerung. Die handelsüblichen ICs bieten jedoch vergleichsweise nur geringe Ströme bis zu 5 Ampere, was wenig Leistungsreserven ermöglicht. Immerhin wollen wir hier ein Rollo auf-/abrollen, bzw. Vorhang hin- und her bewegen.

Eigene H-Brücke

Eine Schaltskizze

Wer bereits eine fertige H-Brücke oder einen IC verwendet kann diesen Abschnitt überspringen. Hier geht es darum unsere eigene H-Brücke zu bauen, die einen Motor bis 10 Ampere ansteuern soll. Einen guten Schaltplan und einige Erklärungen zur dedizierten H-Brücke gibt die Seite Amateurfunkbasteln.de unter [1]. Die Ansteuerung der Schaltung ist recht komfortable, da vor der eigentlichen H-Brücke noch eine Ansteuerlogik sitzt und die benötigten Pins am Mikrokontroller so auf 2 (Ein/Aus, Richtung) reduziert. Der Eingangspin ist in der Originalschaltung invertiert und kann per PWM angesteuert werden um die Motorgeschwindigkeit zu regeln.

Da noch eine NOR Logik auf dem verwendeten Logik IC frei ist, wird diese auf der hier gezeigten Schaltung benutzt um den Eingangspin zu invertieren um bei angelegter logischer 0 den Motor ab und bei angelegter logischer 1 den Motor anzuschalten.

Sensoren und Sicherheitsschalter

Alle Sensoren müssen an einem Port und hintereinander angeschlossen sein. Die Sensoren können (wie in der obigen Abbildung) invertiert sein. D.h. eine logisch 0 bedeutet ein Sensorsignal und eine logisch 1 kein Signal. Der Sensor mit der kleinsten Pinnummer entspricht dem Endlagenschalter für den Zustand "geschlossen". Der Sensor mit der größten Pinnummer entspricht dem Endlagenschalter für den Zustand "offen".

Sicherheitsabschalter sind für dieses Modul optional. Vor allem wenn keine 100% zuverlässigen Sensoren als Endlagenschalter verwendet werden, sind zusätzliche Sensoren jedoch zu empfehlen. Diese sind dann logisch zu verknüpfen und können an einem beliebigem freiem Pin als Sicherheitsabschalter benutzt werden. Solange die Sensoren Kontakt melden, wird der Motor softwareseitig abgeschaltet und das Modul ist praktisch nicht mehr nutzbar. Sollte der Fall eintreten, muss das Rollo/der Vorhaang von Hand in eine Position gebracht werden, welche die Sicherheitsabschalter nicht länger auslöst.

Ansteuerung per UDP

Die Ansteuerung per UDP erfordert das Modul udpMotorCurtain:

 │ │                Load a Default Configuration  --->
 │ │                ...
 │ │                Protocols  --->
 │ │                  ...
 │ │                  [*] UDP MotorCurtain  --->

Es muss nur ein Byte (Wertebereich 0-255) übertragen werden, welches die Zielposition oder Sonderfunktionen angibt.

  • 0-7: Zielposition
  • 254: Motor Stopp
  • 255: Aktuelle/letzte Position + Maximale Position abfragen

Es wird eine Antwort geschickt, wenn der Wert 255 übertragen wurde. Diese setzt sich aus 7 mal 8-Bit ASCII Zeichen ('curtain'), einem Byte mit der aktuellen/letzten Position und einem Byte mit der maximalen Position zusammen. Da nur bis zu 8 Sensoren unterstützt werden, ist der maximal Wert folglich höchstens 7.

Medien (TODO)

Meine Vorhangsautomatierung: (Rayofhope)

  • Ich verwende 5 Reed Sensoren und einen Permanentmagneten. Zwei der Sensoren dienen als Start/Endmarkierung, 3 weitere als Positionsmarkierungen
  • Auf beiden Seiten der Gardinenstange befinden sich Endschalter, die als Sicherheitsschalter fungieren und den Motor softwareseitig abschalten, falls die Sensoren mal nicht funktionieren sollten
  • Als Motor benutze ich einen laufruhigen 12V Denso Getriebemotor mit Schneckenantrieb von Pollin.de
  • Der Vorhang braucht damit für die Distanz von 1,40 Meter nur ca 4,5 Sekunden

TODO: Hier kommen Bilder und Videos rein.