Powerctrl: Unterschied zwischen den Versionen

 
(18 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
 
|name            = powerctrl
 
|name            = powerctrl
 
|status          = beta
 
|status          = beta
|autor          = [[Benutzer:schinken|schinken|rel=author]]
+
|autor          = [[Benutzer:schinken|schinken]], [[Benutzer:xoquox|xoquox]]
 
|beschreibung    = Stromkasten mit REST-Api
 
|beschreibung    = Stromkasten mit REST-Api
 
|image          = Powerctrl cat img.jpg
 
|image          = Powerctrl cat img.jpg
Zeile 20: Zeile 20:
  
 
== Hardware ==
 
== Hardware ==
 +
=== Version 1 ===
  
 
[[Datei:Powerctrl pcb.jpg|thumb|left|alt=Platine mit CNC-Fräse hergestellt|Platine unbestückt]]
 
[[Datei:Powerctrl pcb.jpg|thumb|left|alt=Platine mit CNC-Fräse hergestellt|Platine unbestückt]]
Zeile 25: Zeile 26:
 
Als Prozessor kommt ein Atmega8 zum Einsatz, welcher eine UART-Schnittstelle und genug Pins besitzt, um bis zu 16 Relais schalten zu können. Für den aktuellen Aufbau werden nur 8 Ports verwendet, da nicht mehr Relais benötigt werden. An den UART-Pins ist ein USB-to-RS232 Konverter angeschlossen und mit einem RaspberryPI verbunden.
 
Als Prozessor kommt ein Atmega8 zum Einsatz, welcher eine UART-Schnittstelle und genug Pins besitzt, um bis zu 16 Relais schalten zu können. Für den aktuellen Aufbau werden nur 8 Ports verwendet, da nicht mehr Relais benötigt werden. An den UART-Pins ist ein USB-to-RS232 Konverter angeschlossen und mit einem RaspberryPI verbunden.
  
Zum Schalten des 230V-Stromkreises werden die [http://www.reichelt.de/itm/?ARTICLE=26592 Finder 22.21.9.024.4000] Relais verwendet, welche über einen UDN2981-IC mit 24 Volt Gleichspannung angesteuert werden. Des weiteren befinden sich noch 2 Status-LEDs auf der Platine um Datenkommunikation und Schaltvorgänge zu visualisieren.
+
Zum Schalten des 230V-Stromkreises werden die [http://partners.webmasterplan.com/click.asp?ref=717796&site=8948&type=text&tnb=26&utm_source=Affiliate&utm_medium=CPC&utm_campaign=Affilinet&diurl=http://www.reichelt.de/itm/?ARTICLE=26592 Finder 22.21.9.024.4000] Relais verwendet, welche über einen UDN2981-IC mit 24 Volt Gleichspannung angesteuert werden. Des weiteren befinden sich noch 2 Status-LEDs auf der Platine um Datenkommunikation und Schaltvorgänge zu visualisieren.
  
Die Platine und die Schaltausgänge des [http://www.reichelt.de/itm/?ARTICLE=22008 UDN2981] werden durch ein externes 24V Schaltnetzteil versorgt. Der Microcontroller selbst läuft mit 5V, welche über einen 7805-Spannungsregler von der 24V-Stromversorgung abgeleitet wird.
+
Die Platine und die Schaltausgänge des [http://partners.webmasterplan.com/click.asp?ref=717796&site=8948&type=text&tnb=26&utm_source=Affiliate&utm_medium=CPC&utm_campaign=Affilinet&diurl=http://www.reichelt.de/itm/?ARTICLE=22008 UDN2981] werden durch ein externes 24V Schaltnetzteil versorgt. Der Microcontroller selbst läuft mit 5V, welche über einen 7805-Spannungsregler von der 24V-Stromversorgung abgeleitet wird.
  
 
Das Layout der Platine wurde mit der [http://www.cadsoftusa.com EAGLE] Free-Version erstellt und befindet sich im Github-Repository [https://github.com/schinken/powerctrl/tree/master/hardware powerctrl/hardware].  Um das Routing zu erleichtern wurde der UDN2981-IC auf der Unterseite der Platine platziert, da hier genügend Platz vorhanden ist. Nicht alle Leiterbahnen konnten auf dem Bottom-Layer geroutet werden, deshalb sind die für den Betrieb irrelevanten Leitungen auf dem Top-Layer gelegt und später mit Fädeldraht verbunden worden.
 
Das Layout der Platine wurde mit der [http://www.cadsoftusa.com EAGLE] Free-Version erstellt und befindet sich im Github-Repository [https://github.com/schinken/powerctrl/tree/master/hardware powerctrl/hardware].  Um das Routing zu erleichtern wurde der UDN2981-IC auf der Unterseite der Platine platziert, da hier genügend Platz vorhanden ist. Nicht alle Leiterbahnen konnten auf dem Bottom-Layer geroutet werden, deshalb sind die für den Betrieb irrelevanten Leitungen auf dem Top-Layer gelegt und später mit Fädeldraht verbunden worden.
Zeile 33: Zeile 34:
 
Alle Bauteile sind im DIL-Package damit wir die [[CNC#Platinen fräsen|Platine mit der CNC-Fräse]] fräsen konnten.
 
Alle Bauteile sind im DIL-Package damit wir die [[CNC#Platinen fräsen|Platine mit der CNC-Fräse]] fräsen konnten.
  
=== Verwendete Bauteile ===
+
==== Verwendete Bauteile ====
  
 
[[Datei:Powerctrl pcb detail.jpg|right|thumb|250px|Detailansicht der Platine]]
 
[[Datei:Powerctrl pcb detail.jpg|right|thumb|250px|Detailansicht der Platine]]
Zeile 64: Zeile 65:
 
|2
 
|2
 
|}
 
|}
 +
 +
=== Version 2 ===
 +
 +
Die erste Variante unserer PowerCtrl Hardware verabschiedete sich aus bisher ungeklärten Ursachen nach wenigen Tagen von uns. Als schnellen Ersatz bauten wir uns daher mit hilfe eines Arduino UNO eine neue Schaltplatine auf einer Lochrasterplatine auf.
 +
 +
Zusätzlich zu den 8 Relais-Ausgängen, welche über den UDN2981-IC angeschlossen sind, existieren jetzt auch noch 8 digitale Ausgänge. Diese sind über einen ULN2803A angeschlossen. Der 8 Digital-Ausgang ist fest mit einer Status-LED verdrahtet und wird benutzt um den Betriebszustand anzuzeigen.
 +
 +
Trotz der eingebauten Dioden im UDN2981 haben wir zusätzlich extern weitere Dioden zum Schutz angebracht, da unsere erste Schaltung vermutlich aus diesem Grund verabschiedet hatte.
 +
 +
=== Version 3 ===
 +
 +
Nachdem wieder eine UDN2981 gestorben ist und uns einen weiteren Arduino Nano vernichtet hat, haben wir nun die Schaltung der Relais auch auf einen ULN2803A umgebaut. Dies beseitigt die Gefahr, das 24V an den GPIOs des Arduinos anliegen können, da nun nur noch Masseseitig geschalten wird.
 +
Ein Umbau war zum Glück ohne großen Aufwand möglich, da unsere Finder Relais beidseitig Schalten können.
  
 
== Ausgänge ==
 
== Ausgänge ==
Zeile 72: Zeile 86:
 
!Relais
 
!Relais
 
!Beschreibung
 
!Beschreibung
 +
|-
 +
|0
 +
|Podest
 
|-
 
|-
 
|1
 
|1
|
+
|Küchen Licht
 
|-
 
|-
 
|2
 
|2
|
+
|Bar
 
|-
 
|-
 
|3
 
|3
|
+
|Küchenlager Licht
 
|-
 
|-
 
|4
 
|4
|
+
|Leinwand
 
|-
 
|-
 
|5
 
|5
|
+
|Eingang
 
|-
 
|-
 
|6
 
|6
|
+
|Küche Steckdosen
 
|-
 
|-
 
|7
 
|7
|
+
|Küche E-Herd (upcoming feature)
|-
 
|8
 
|
 
 
|}
 
|}
  
 
== Software ==
 
== Software ==
  
== Atmega ==
+
=== Atmega ===
  
 
Die Software für den AVR Mega 8 wurde komplett in C geschrieben und befindet sich auf Github im [https://github.com/schinken/powerctrl/tree/master/software powerctrl/software]-Repository. Um die Ausgänge zu Schalten wurde ein eigenes kleines Protokoll implementiert. Für das Protokoll wurde absichtlich ASCII gewählt, um Befehle auch per Hand (per screen) eingeben zu können. Das Parsen der Befehle wurde mit einer simplen "State-Machine" erzielt.
 
Die Software für den AVR Mega 8 wurde komplett in C geschrieben und befindet sich auf Github im [https://github.com/schinken/powerctrl/tree/master/software powerctrl/software]-Repository. Um die Ausgänge zu Schalten wurde ein eigenes kleines Protokoll implementiert. Für das Protokoll wurde absichtlich ASCII gewählt, um Befehle auch per Hand (per screen) eingeben zu können. Das Parsen der Befehle wurde mit einer simplen "State-Machine" erzielt.
Zeile 112: Zeile 126:
 
| Setzt Port X auf Wert Y (1 oder 0)
 
| Setzt Port X auf Wert Y (1 oder 0)
 
|-
 
|-
|saX
 
| Setzt alle Ports auf Y (1 oder 0)
 
 
|}
 
|}
  
 
Alle Befehle werden nach dem setzen mit einem "OK" bestätigt
 
Alle Befehle werden nach dem setzen mit einem "OK" bestätigt
  
== REST ==
+
=== REST ===
  
 
Die REST-Api wurde auf dem RaspberryPI mit Python implementiert. Als Webframework wird python-flask verwendet. Die Schnittstelle kommuniziert über den USB zu RS232-Konverter mit dem Mikroprozessor um Ports zu setzen oder zu lesen.  
 
Die REST-Api wurde auf dem RaspberryPI mit Python implementiert. Als Webframework wird python-flask verwendet. Die Schnittstelle kommuniziert über den USB zu RS232-Konverter mit dem Mikroprozessor um Ports zu setzen oder zu lesen.  
Zeile 135: Zeile 147:
 
|-
 
|-
 
| POST
 
| POST
| /relais/[0-7]?
+
| /device/<key>
 
| Einschalten
 
| Einschalten
 
|-
 
|-
 
| GET
 
| GET
| /relais/[0-7]?
+
| /device/<key>
 
| Status abfragen
 
| Status abfragen
 
|-
 
|-
 
| DELETE
 
| DELETE
| /relais/[0-7]?
+
| /device/<key>
 
| Ausschalten
 
| Ausschalten
 
|}
 
|}
  
 
== Verwendung ==
 
== Verwendung ==
Die PowerCtrl wird als Teil der [[Space Automation]] im alten Lichtschaltkasten an der Bar installiert. Von hier aus schaltet es die 230V Beleuchtung der Lounge und Küche.
+
Die PowerCtrl wurde als Teil der [[Space Automation]] im alten Lichtschaltkasten an der Bar installiert. Von hier aus schaltet es die 230V Beleuchtung der Lounge und Küche.
  
 
=== Aufbau ===
 
=== Aufbau ===
  
 
==== Hardware ====
 
==== Hardware ====
Für den RaspberryPi wurde ein Hutschienengehäuse besorgt. Damit kann der gesamte Aufbau ordentlich im Schaltkasten eigebaut werden.
+
Für den RaspberryPi (hostname: onion) wurde ein Hutschienengehäuse besorgt, so kann auch er auch ordentlich im Schaltkasten eigebaut werden.
 +
 
 +
==== Küchenlichttaster ====
 +
Um die Küchenlichter unkompliziert und ohne Tablet schalten zu können wurden zwei Tastschalter installiert.
 +
Diese schalten mit 24V über ein DIL Relais die GPIOs 17 und 27 RaspberryPis und werden mit hilfe von WiringPi ausgelesen.
 +
Das bash Script das dies tut fragt direkt die RestAPI des PowerCtrls nach den aktuellen Zustand des Relais ab und toggelt entsprechent den Schaltausgang.
  
 
==== Spannungsversorgung ====
 
==== Spannungsversorgung ====
 
Die Spannungsversorgung des RaspberryPi und der PowerCtrl erfolgt mit zwei Hutschienen Netzteile von Meanwell der DR-15 Serie in 5V und 24V. Diese sind in erste Linie aus Platzgründen im Sicherungsschaltkasten in der Küche eingebaut. Trotz der Räumlich getrennten Kästen beträgt die Länger der Niederspannungsleitungen unter 2 Meter.
 
Die Spannungsversorgung des RaspberryPi und der PowerCtrl erfolgt mit zwei Hutschienen Netzteile von Meanwell der DR-15 Serie in 5V und 24V. Diese sind in erste Linie aus Platzgründen im Sicherungsschaltkasten in der Küche eingebaut. Trotz der Räumlich getrennten Kästen beträgt die Länger der Niederspannungsleitungen unter 2 Meter.

Aktuelle Version vom 15. Januar 2015, 10:15 Uhr

Crystal Clear action run.png
powerctrl

Status: beta

Powerctrl cat img.jpg
Beschreibung Stromkasten mit REST-Api
Autor: schinken, xoquox
PayPal Spenden für Powerctrl


Beschreibung

Das Powerctrl ist eine kleine Platine im Hutschienengehäuse, welche über RS232 230V-Relais schaltet. Mit dieser Installation können wir einzelne Leitungen komplett stromlos schalten, z.B. wenn der Letzte den Hackerspace verlässt. Ziel ist es auf Dauer hiermit Strom zu sparen.

Die Idee für unser Powerctrl kam uns bei einem Besuch in Bochum bei "Das Labor". Ihr Projekt Powercommander verwendet die gleichen Relais und das selbe Gehäuse, allerdings nutzen sie den CAN-Bus für die Kommunikation.

Hardware

Version 1

Platine mit CNC-Fräse hergestellt
Platine unbestückt

Als Prozessor kommt ein Atmega8 zum Einsatz, welcher eine UART-Schnittstelle und genug Pins besitzt, um bis zu 16 Relais schalten zu können. Für den aktuellen Aufbau werden nur 8 Ports verwendet, da nicht mehr Relais benötigt werden. An den UART-Pins ist ein USB-to-RS232 Konverter angeschlossen und mit einem RaspberryPI verbunden.

Zum Schalten des 230V-Stromkreises werden die Finder 22.21.9.024.4000 Relais verwendet, welche über einen UDN2981-IC mit 24 Volt Gleichspannung angesteuert werden. Des weiteren befinden sich noch 2 Status-LEDs auf der Platine um Datenkommunikation und Schaltvorgänge zu visualisieren.

Die Platine und die Schaltausgänge des UDN2981 werden durch ein externes 24V Schaltnetzteil versorgt. Der Microcontroller selbst läuft mit 5V, welche über einen 7805-Spannungsregler von der 24V-Stromversorgung abgeleitet wird.

Das Layout der Platine wurde mit der EAGLE Free-Version erstellt und befindet sich im Github-Repository powerctrl/hardware. Um das Routing zu erleichtern wurde der UDN2981-IC auf der Unterseite der Platine platziert, da hier genügend Platz vorhanden ist. Nicht alle Leiterbahnen konnten auf dem Bottom-Layer geroutet werden, deshalb sind die für den Betrieb irrelevanten Leitungen auf dem Top-Layer gelegt und später mit Fädeldraht verbunden worden.

Alle Bauteile sind im DIL-Package damit wir die Platine mit der CNC-Fräse fräsen konnten.

Verwendete Bauteile

Detailansicht der Platine
Bauteil Menge
atmega8 1
UDN2981 1
2x Schraubklemmen 10
7805 1
16Mhz Quarz 1
22pF Kerko 2
100nF Kerko 2
100µF Elko 2

Version 2

Die erste Variante unserer PowerCtrl Hardware verabschiedete sich aus bisher ungeklärten Ursachen nach wenigen Tagen von uns. Als schnellen Ersatz bauten wir uns daher mit hilfe eines Arduino UNO eine neue Schaltplatine auf einer Lochrasterplatine auf.

Zusätzlich zu den 8 Relais-Ausgängen, welche über den UDN2981-IC angeschlossen sind, existieren jetzt auch noch 8 digitale Ausgänge. Diese sind über einen ULN2803A angeschlossen. Der 8 Digital-Ausgang ist fest mit einer Status-LED verdrahtet und wird benutzt um den Betriebszustand anzuzeigen.

Trotz der eingebauten Dioden im UDN2981 haben wir zusätzlich extern weitere Dioden zum Schutz angebracht, da unsere erste Schaltung vermutlich aus diesem Grund verabschiedet hatte.

Version 3

Nachdem wieder eine UDN2981 gestorben ist und uns einen weiteren Arduino Nano vernichtet hat, haben wir nun die Schaltung der Relais auch auf einen ULN2803A umgebaut. Dies beseitigt die Gefahr, das 24V an den GPIOs des Arduinos anliegen können, da nun nur noch Masseseitig geschalten wird. Ein Umbau war zum Glück ohne großen Aufwand möglich, da unsere Finder Relais beidseitig Schalten können.

Ausgänge

Die Ausgänge sind wiefolgt belegt:

Relais Beschreibung
0 Podest
1 Küchen Licht
2 Bar
3 Küchenlager Licht
4 Leinwand
5 Eingang
6 Küche Steckdosen
7 Küche E-Herd (upcoming feature)

Software

Atmega

Die Software für den AVR Mega 8 wurde komplett in C geschrieben und befindet sich auf Github im powerctrl/software-Repository. Um die Ausgänge zu Schalten wurde ein eigenes kleines Protokoll implementiert. Für das Protokoll wurde absichtlich ASCII gewählt, um Befehle auch per Hand (per screen) eingeben zu können. Das Parsen der Befehle wurde mit einer simplen "State-Machine" erzielt.

Befehl Beschreibung
spX.Y Setzt Port X auf Wert Y (1 oder 0)

Alle Befehle werden nach dem setzen mit einem "OK" bestätigt

REST

Die REST-Api wurde auf dem RaspberryPI mit Python implementiert. Als Webframework wird python-flask verwendet. Die Schnittstelle kommuniziert über den USB zu RS232-Konverter mit dem Mikroprozessor um Ports zu setzen oder zu lesen.

Die REST-Schnittstelle ist kompatibel zur Webrelais-Schnitstelle:

HTTP-Befehl Pfad Beschreibung
GET / Webinterface
POST /device/<key> Einschalten
GET /device/<key> Status abfragen
DELETE /device/<key> Ausschalten

Verwendung

Die PowerCtrl wurde als Teil der Space Automation im alten Lichtschaltkasten an der Bar installiert. Von hier aus schaltet es die 230V Beleuchtung der Lounge und Küche.

Aufbau

Hardware

Für den RaspberryPi (hostname: onion) wurde ein Hutschienengehäuse besorgt, so kann auch er auch ordentlich im Schaltkasten eigebaut werden.

Küchenlichttaster

Um die Küchenlichter unkompliziert und ohne Tablet schalten zu können wurden zwei Tastschalter installiert. Diese schalten mit 24V über ein DIL Relais die GPIOs 17 und 27 RaspberryPis und werden mit hilfe von WiringPi ausgelesen. Das bash Script das dies tut fragt direkt die RestAPI des PowerCtrls nach den aktuellen Zustand des Relais ab und toggelt entsprechent den Schaltausgang.

Spannungsversorgung

Die Spannungsversorgung des RaspberryPi und der PowerCtrl erfolgt mit zwei Hutschienen Netzteile von Meanwell der DR-15 Serie in 5V und 24V. Diese sind in erste Linie aus Platzgründen im Sicherungsschaltkasten in der Küche eingebaut. Trotz der Räumlich getrennten Kästen beträgt die Länger der Niederspannungsleitungen unter 2 Meter.