MotorCurtain

Aus Ethersex_Wiki
Version vom 24. Dezember 2009, 02:05 Uhr von Rayofhope (Diskussion | Beiträge) (Ansteuerung per UDP: Protokoll erläutert)
Wechseln zu: Navigation, Suche

Rollo Automatisierung (TODO)

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. Endschalter)
  • Sensoreingänge invertierbar (für active low)
  • Motoransteuerung invertierbar (für active low)
  • Softwareseitige Sicherheitsmotorabschaltung über 1 möglichen Sicherheitskontakt

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 anzugeben, muss folgendes eingefügt werden:

pin(MOTORCURTAIN_ENABLE, PC0)
pin(MOTORCURTAIN_DIRECTION, PC1)
pin(MOTORCURTAIN_SHUTDOWN, 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.

Hardware Schaltungen (TODO)

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 folgenden Abbildung) invertiert sein. D.h. eine logisch 0 bedeutet ein Sensorsignal und eine logisch 1 kein Signal. Der Sicherheitsabschalter, sofern es einen gibt, muss am selbem Port wie die Motorkontrollen angeschlossen sein.

Ansteuerung per UDP (TODO)

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

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 12V Denso Getriebemotor mit Schneckenantrieb von Pollin.de
  • Der Vorhang braucht damit für die Distanz von 1,40 Meter ca 4,5 Sekunden und der Motor ist dabei sehr laufruhig

TODO: Hier kommen Bilder und Videos rein.