Powerctrl: Unterschied zwischen den Versionen

Zeile 102: Zeile 102:
 
== 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, da es damit möglich ist die Befehle auch von Hand (per screen) einzugeben. 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.
  
 
{|class="wikitable sortable" border="1"
 
{|class="wikitable sortable" border="1"

Version vom 25. November 2012, 00:54 Uhr

Crystal Clear action run.png
powerctrl

Status: beta

Powerctrl cat img.jpg
Beschreibung Stromkasten mit REST-Api
Autor: schinken
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

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

Ausgänge

Die Ausgänge sind wiefolgt belegt:

Relais Beschreibung
1
2
3
4
5
6
7
8

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)
saX Setzt alle Ports auf 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 /relais/[0-7]? Einschalten
GET /relais/[0-7]? Status abfragen
DELETE /relais/[0-7]? Ausschalten