MotorCurtain: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
K
K (Pin Bezeichnungen angepasst und Sensorpinzusatz eingefügt)
 
(7 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= Rollo Automatisierung =
 
= Rollo Automatisierung =
TODO: Artikel wird zwischen dem 17. und 20. Dezember eingestellt.
+
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:
 
Das Modul MotorCurtain bietet folgendes:
* Ansteuerung per Ecmd, UDP (Angebbare Zielposition, abhängig von Anzahl der Sensoren)
+
* Ansteuerung per [[ECMD_Reference|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
 
* 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)
+
* Bis zu 8 Sensoren für Bestimmung der aktuellen Position möglich (inkl. [http://de.wikipedia.org/wiki/Endlagenschalter Endlagenschalter])
* Softwareseitige Sicherheitsmotorabschaltung über 1 möglichen Sicherheitskontakt
+
* Sensoreingänge invertierbar (für active low)
 +
* Motoransteuerung invertierbar (für active low)
 +
* 1 Pin für Softwareseitige Sicherheitsmotorabschaltung
  
 
== Modul auswählen und konfigurieren ==
 
== Modul auswählen und konfigurieren ==
Zeile 17: Zeile 20:
 
   │ │                  [*] MotorCurtain  --->
 
   │ │                  [*] MotorCurtain  --->
  
TODO
+
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:
 +
<source lang="text">
 +
pin(MOCU_MOTOR_ENABLE, PC0)
 +
pin(MOCU_MOTOR_DIRECTION, PC1)
 +
pin(MOCU_SAFETYSWITCH, PC2)
 +
</source>
 +
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:
 
<source lang="text">
 
<source lang="text">
 
ifdef(`conf_MOTORCURTAIN', `dnl
 
ifdef(`conf_MOTORCURTAIN', `dnl
Zeile 23: Zeile 36:
 
')
 
')
 
</source>
 
</source>
 +
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.
  
== Beispiel Hardware Schaltung ==
+
== Hardware Schaltungen ==
Um einen DC Motor nicht nur an und abschalten, sondern auch die Richtung
+
=== Grundlagen ===
per Software angeben zu können, benötigt man eine [http://de.wikipedia.org/wiki/Vierquadrantensteller H-Brücke]. Je nach Leistungsbedarf
+
Um einen DC Motor nicht nur an- sowie abschalten, sondern auch die Richtung
des Motors gibt es bereits fertige ICs, details dazu findet man im RoboterNetz Wiki unter
+
per Software bestimmen zu können, wird eine [http://de.wikipedia.org/wiki/Vierquadrantensteller H-Brücke] benötigt. Je nach Leistungsbedarf des Motors gibt es bereits fertige ICs. Details dazu findet man im RoboterNetz Wiki unter
[http://www.rn-wissen.de/index.php/Getriebemotoren_Ansteuerung Getriebemotoren Ansteuerung]. Die handelsüblichen ICs bieten jedoch nur Ströme bis zu 5 Ampere,
+
[http://www.rn-wissen.de/index.php/Getriebemotoren_Ansteuerung 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 bewegen.
+
was wenig Leistungsreserven ermöglicht. Immerhin wollen wir hier ein Rollo auf-/abrollen, bzw. Vorhang hin- und her bewegen.
  
Wir bauen also unsere eigene H-Brücke, die einen Motor bis 10 Ampere ansteuern soll.
+
=== Eigene H-Brücke ===
 +
[[Bild:motorcurtain_sch.png|thumb|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 [http://www.amateurfunkbasteln.de/hbridge1/index.html]. 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.
 
Einen guten Schaltplan und einige Erklärungen zur dedizierten H-Brücke gibt die Seite Amateurfunkbasteln.de unter [http://www.amateurfunkbasteln.de/hbridge1/index.html]. 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, kann man den Eingangspin noch invertieren um bei angelegter 0 den Motor ab und bei angelegter 1 den Motor anzuschalten.
+
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.
  
TODO: Schaltplan von Amateurfunkbasteln.de anpassen (Sensoren + Sicherheitsschalter)
+
=== 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 ==
 
== Ansteuerung per UDP ==
Zeile 49: Zeile 69:
 
   │ │                  [*] UDP MotorCurtain  --->
 
   │ │                  [*] UDP MotorCurtain  --->
  
TODO: Beispielkommunikation
+
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 ==
+
== Medien (TODO) ==
 
Meine Vorhangsautomatierung: ([[Benutzer:Rayofhope|Rayofhope]])
 
Meine Vorhangsautomatierung: ([[Benutzer:Rayofhope|Rayofhope]])
  
 
* Ich verwende 5 Reed Sensoren und einen Permanentmagneten. Zwei der Sensoren dienen als Start/Endmarkierung, 3 weitere als Positionsmarkierungen
 
* 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, wenn die Sensoren mal nicht funktionieren sollten
+
* 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
+
* 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 ca 4,5 Sekunden und der Motor ist dabei sehr laufruhig
+
* Der Vorhang braucht damit für die Distanz von 1,40 Meter nur ca 4,5 Sekunden
  
 
TODO: Hier kommen Bilder und Videos rein.
 
TODO: Hier kommen Bilder und Videos rein.

Aktuelle Version vom 30. Dezember 2009, 15:49 Uhr

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.