Powercommander: Unterschied zwischen den Versionen

Aus LaborWiki
Wechseln zu: Navigation, Suche
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(48 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{ProjektInfoBox
{{ProjektInfoBox
|name       = PowerCommander
|name=PowerCommander
|status     = beta
|status=stable
|image       = Powercommander_geschlossen.jpg
|image=Powercommander_geschlossen.jpg
|description =  
|description=Zentrales Steuergerät
|author     = [[Benutzer:Pl4nkton|Pl4nkton]], [[Benutzer:Mati|Mati]], [[Benutzer:Asklepios|asklepios]], [[Benutzer:tixiv|tixiv]]
|author=[[Benutzer:Pl4nkton|Pl4nkton]], [[Benutzer:Mati|Mati]], [[Benutzer:Asklepios|asklepios]], [[Benutzer:tixiv|tixiv]], [[Benutzer:siro|siro]]
|username    =
|version=1.00
|version     = 0.98
|update=02.01.13
|update     = 20.12.09
|platform=AVR (ATmega168/32)
|platform   = AVR (ATmega168/32)
|license=Source: GPL / unbekannt
|license     = Source: GPL / unbekannt
|download=[https://www.das-labor.org/svn/microcontroller/src-atmel/automatization2.0/PowerCommander c Code], [https://www.das-labor.org/trac/browser/microcontroller/src-atmel/automatization2.0/PowerCommander trac]
|download   = [https://www.das-labor.org/svn/microcontroller/src-atmel/automatization2.0/PowerCommander c Code], [https://www.das-labor.org/trac/browser/microcontroller/src-atmel/automatization2.0/PowerCommander trac]
|tags=Labor Automation,
}}
}}
== Einleitung ==
Der Powercommander schaltet Relais im Sicherungskasten und kann somit (fast) das gesamte [[Hauptschalter|Labor an und ausschalten]] - natürlich abgesehen von Kühlschrank und Server. Ferner kann er die Lampen einzeln im Vortragsraum und Küche dimmen. Das ganze ist [[Weblabctrl2|bequem per Webinterface]] erreichbar für jeden der sich im Labor befindet. Das Gerät nimmt Steuerbefehle via [[Automatisierung des Labors|Canbus]] entgegen.


Taster im Labor die aus der Gebäudeinstallation stammen sind mit dem Powercommander verbunden und schalten nicht direkt das Licht über einen Stromstoßschalter, sondern dient viel mehr als Eingabetaster für den Powercommander. So ist es möglich, mit den vorhandenen Schaltern das Licht zu dimmen.


== Einleitung ==
Das Gehäuse beinhaltet ein [http://de.wikipedia.org/wiki/Schaltnetzteil Schaltnetzteil], sowie zwei Mikrocontroller: Einen Atmega168 und einen Atmega32. Der Atmega168 ist hauptsächlich als IO Expander tätig und schaltet die Relais und Analogausgänge, während der Mega32 die CAN-Steuerung sowie Eingänge übernimmt und eine RGB LED zur Statusanzeige ansteuert. So ist es möglich die Firmware des Mega32 zu ändern ohne das sich die Zustände der Ausgänge verändern - also das Licht oder der Strom ausfällt.


Steuergerät im Sicherungskasten
Mit der Version 1.1 kann der Powercommander die Lampen in der Lounge per [[CAN]] einzeln oder in Gruppen schalten und dimmen, sowie deren aktuellen Status abfragen. Dies ermöglicht einen fehlerfreien Betrieb. Die aktuelle Lösung kann lediglich die Lampen "toggeln". Zusätzlich werden mit der neuen Version die Stromkreise dynamisch mit Relais geschaltet, was momentan nicht der Fall ist. Das Protokoll zum steuern der Lampen ist nun vereinheitlicht und sorgt in Zukunft für einfachere Steuerung.


== Technische Dokumentation ==
CAN Adresse 0x02
CAN Adresse 0x02


[[Datei:Powercommander_offen.jpg|thumb|right|Powercommander offen]]
[[Datei:Powercommander_offen.jpg|thumb|right|Powercommander offen]]


Belegung der Schraubklemmen am Gehäuse:
=== Belegung der Schraubklemmen am Gehäuse ===
 


 
{| class="wikitable" border="1" cellspacing="0" * Echtzeit Verbrauchsmessung [[powermeter]]cellpadding="4" style="border-collapse:collapse;"
{| class="wikitable" border="1" cellspacing="0" cellpadding="4" style="border-collapse:collapse;"
! Klemme
! Klemme
! Belegung
! Belegung
Zeile 48: Zeile 50:
|-
|-
| 5
| 5
| 24V Eingang + Power
| 24 V Eingang + Power Good Erkennung
| Power vom Netzteil im Sicherungskasten
| Power vom Netzteil im Sicherungskasten
|-
|-
Zeile 61: Zeile 63:
| 8
| 8
| 24V Eingang
| 24V Eingang
| RCD Livht
| RCD Licht
|-
|-
| 9
| 9
Zeile 73: Zeile 75:
| 11
| 11
| 24V Ausgang
| 24V Ausgang
|  
| Relais Hauptschütz (nicht Dauerstromsteckdosen + Licht Keller + Licht Bastelraum)
|-
|-
| 12
| 12
| 24V Ausgang
| 24V Ausgang
|  
| Relais Klo Strom Licht + Steckdose
|-
|-
| 13
| 13
| 24V Ausgang
| 24V Ausgang
|  
| Relais Tischsteckdose Lounge
|-
|-
| 14
| 14
Zeile 87: Zeile 89:
| Relais Lounge Licht
| Relais Lounge Licht
|-
|-
| 15
| 15|
| 24V Ausgang
| 24V Ausgang
| Relais Vortragsraum Licht
| Relais Vortragsraum Licht
Zeile 113: Zeile 115:
| 21
| 21
| 0-10V EVG Dimmer
| 0-10V EVG Dimmer
| Lounge
| <s>Lounge</s> TODO: Zwischenraum
|-
|-
| 22
| 22
Zeile 128: Zeile 130:
|-
|-
| 25
| 25
| 5V
| 5V Ausgang
| Optokoppler Tafel
| Optotriak Vortragsraum bei der Tafel
|-
|-
| 26
| 26
| 5V
| 5V Ausgang
| Optokoppler Beamer
| Optotriak Vortragsraum bei dem Beamer
|-
|-
| 27
| 27
| 5V
| 5V Ausgang
| Optokoppler Schrank
| Optotriak Vortragsraum bei dem Schrank
|-
|-
| 28
| 28
| 5V
| 5V Ausgang
| Optokoppler Flipper
| Optotriak Vortragsraum bei dem Flipper
|-
|-
| 29
| 29
Zeile 148: Zeile 150:
|-
|-
| 30
| 30
| 230V Neutralleiter
| 230V Neutralleiter Lichtkreis
|  
|  
|-
|-
| 31
| 31
| 230V Phase Licht
| 230V Phase Lichtkreis
| Taster  
| Taster Vortragsraum
|-
|-
| 32
| 32
| 230V Phase Licht
| 230V Phase Lichtkreis
| Taster
| Taster Lounge
|-
|-
| 33
| 33
Zeile 173: Zeile 175:




=== Übersicht ===
{|
|
Oberere Buchse an der linken Seite: [[CAN|CAN]]


Untere Buchse an der linken Seite:


Oberere Buchse an der linken Seite: [[CAN|CAN]]
Untere Buchse an der linken Seite:
Belegung:
Belegung:


1 GND ,2 GND ,3 rx ,4 tx ,5 GND ,6 GND ,7  ,8  ,9 24V ,10 -
1 GND ,2 GND ,3 EIA-232_RX ,4 EIA-232_TX ,5 GND ,6 GND ,7  ,8  ,9 24 V ,10 -


'''Planung'''
'''Eingänge:'''
Eingänge:
* 2 * 230 V - Taster Lounge, Taster Vortragsraum
* 2 * 230V - Taster gelber Raum, Taster blauer Raum
* 5 * 24 V - RCD Lichtkreis; RCD Hauptkreis; RCD Serverkreis; 24 V Power Good; Hauptschalter
* 5 * 24V - RCD Licht, Serverstrom; Power da; Hauptschalter


Ausgänge:
'''Ausgänge:'''
* 8 * 24V für die Relais
* 8 * 24 V für die Relais
* 6 * 0V-10V für EVG Dimmer
* 6 * 0 V - 10 V für EVG Dimmer
* 4 * 5V für die Leuchtstofflampen im Vortragsraum
* 4 * 5 V für die Leuchtstofflampen im Vortragsraum
|
'''Spannungen:'''
* 24 V Relais
* 5 V TTL µC
* 12 V CAN - Anhebung auf 24V ist geplant
* 230 V Eingänge


Spannungen:
* 24V Relais
* 5V TTL µC
* 12V CAN - Anhebung auf 24V ist geplant
* 230V Eingänge


 
'''Bauteile / Aufgabe:'''
Bauteile / Aufgabe:
* LM2596-ADJ; Schaltregler 12V - 24V zu 5V TTL
* LM2596-ADJ; Schaltregler 12V - 24V zu 5V TTL
* 24V Eingang: 4k7, 100k, 1k5, 100n/50V
* 24V Eingang: 4k7, 100k, 1k5, 100n/50V
* 230V Eingang: 2*470k, 100n/50V, BC557, PC817, 1N4148
* 230V Eingang: 2*470k, 100n/50V, BC557, PC817, 1N4148
* 0-10V Ausgang: 22k, 100n, 10k, 12k,lm324
* 0-10V Ausgang: 22k, 100n, 10k, 12k,lm324
* MCP2515; can mac, SPI
* MCP2515; CAN MAC, SPI
* MCP2551; can phy
* MCP2551; CAN PHY
* 2 x UDN 2981; Relais Ansteuerung 24V / 5V Optokoppler Lampen
* 2 x UDN 2981; Relais Ansteuerung 24V / 5V Optokoppler Lampen
* mega168; 6 * hw PWM; Ausgänge und Licht PWM Ansteuerung(0-10V analog), I2C mit µC 2
* mega168; 6 * hw PWM; Ausgänge und Licht PWM Ansteuerung(0-10V analog), I2C mit µC 2
* mega32; CAN, I2C, rtc 32khz, eia232
* mega32; CAN, I2C, RTC 32khz, eia232
* 16Mhz Oszillator
* 16Mhz Oszillator
* 2 x Buchse; CAN, EIA232
* 2 x Buchse; CAN, EIA232
|}


== µC Ausführung - Mega168 ==
=== Mikrocontroller I/O ===
* PB3 - OC2A
* PB2 - OC1B
* PB1 - OC1A
* PD3 - OC2B
* PD5 - OC0B
* PD6 - OC0A
* PC4 - SDA
* PC5 - SCL
* PC3 - Relais 1
* PC2 - Relais 2
* PC1 - Relais 3
* PC0 - Relais 4
* PB5 - Relais 5
* PB4 - Relais 6
* PB0 - Relais 7
* PD7 - Relais 8
* PD0 - Opto 1
* PD1 - Opto 2
* PD2 - Opto 3
* PD4 - Opto 4


== µC Interface - ATMega32 ==
{|
|
'''µC Ausführung - Mega168'''
* Relais schaltet Spannung auf Lampengruppen/Steckdosen
* Optotriac schaltet Lampen einzeln an/aus
* Relais an + Optotriac an: PWM für Helligkeit


* PB4 - MISO
{| class="wikitable" border="1" cellspacing="0" cellpadding="4" style="border-collapse:collapse;"
* PB3 - MOSI
! Pin
* PB5 - SCK
! Funktion
* PC5 - SCL I2C
! Richtung
* PC4 - SDA I2C
! Verbunden mit
* PB2 - CS MCP
|-
* PD2 - INT MCP
|PB3
* PD0 - EIA232
|OC2A PWM
* PD1 - EIA232
|Ausgang
* PD7 - RCD Licht
|<s>Lampe Lounge</s>, Klemme 21
* PD6 - RCD Server
|-
* PC2 - 24V power good
|PB2
* PA1 - RCD Steckdosen
|OC1B PWM
* PD3 - Taster Vortrag INT2
|Ausgang
* PB2 - Taster Lounge  INT1
|Lampe Flipper, Klemme 18
* PA0 - Hauptschalter
|-
* PA2 - led rot
|PB1
* PA3 - led grün
|OC1A PWM
* PA4 - led blau
|Ausgang
|Lampe Schrank, Klemme 19
|-
|PD3
|OC2B PWM
|Ausgang
|Lampe Küche, Klemme 20
|-
|PD5
|OC0B PWM
|Ausgang
|Lampe Beamer, Klemme 22
|-
|PD6
|OC0A PWM
|Ausgang
|Lampe Tafel, Klemme 23
|-
|PC4
|SDA I2C
|Beides
|Atmega32
|-
|PC5
|SCL I2C
|Beides
|Atmega32
|-
|PC3
|Relais 1
|Ausgang
|Lampenspannung Küche, Klemme 17
|-
|PC2
|Relais 2
|Ausgang
|Beamer, Klemme 16
|-
|PC1
|Relais 3
|Ausgang
|Lampenspannung Vortrag, Klemme 15
|-
|PC0
|Relais 4
|Ausgang
|Lampenspannung Lounge, Klemme 14
|-
|PB5
|Relais 5
|Ausgang
|Steckdosenleiste Lounge, Klemme 13
|-
|PB4
|Relais 6
|Ausgang
|Steckdosen+Licht Klo, Klemme 12
|-
|PB0
|Relais 7
|Ausgang
|Hauptschütz, Klemme 11
|-
|PD7
|Relais 8
|Ausgang
| ?
|-
|PD0
|Optotriac 1
|Ausgang
|Lampe Tafel, Klemme 25
|-
|PD1
|Optotriac 2
|Ausgang
|Lampe Beamer, Klemme 26
|-
|PD2
|Optotriac 3
|Ausgang
|Lampe Schrank, Klemme 27
|-
|PD4
|Optotriac 4
|Ausgang
|Lampe Flipper, Klemme 28
|}


10 Pin Stecker zur Verbindung der unteren mit der oberen Platine
|
rechts:
'''µC Interface - ATMega32'''
{| class="wikitable" border="1" cellspacing="0" cellpadding="4" style="border-collapse:collapse;"
! Pin
! Funktion
! Richtung
! Verbunden mit
|-
|PB6
|SPI MISO
|Eingang
|CAN Transceiver
|-
|PB5
|SPI MOSI
|Ausgang
|CAN Transceiver
|-
|PB7
|SPI SCK
|Ausgang
|CAN Transceiver
|-
|PC5
|SCL I2C
|Beides
|Atmega168
|-
|PC4
|SDA I2C
|Beides
|Atmega168
|-
|PB4
|SPI CS MCP
|Ausgang
|CAN Transceiver
|-
|PD2
|INT0 MCP
|Eingang
|CAN Transceiver
|-
|PD0
|EIA232
| ungenutzt
| -
|-
|PD1
|EIA232
| ungenutzt
| -
|-
|PD7
|24 V Power Good
|Eingang
|Klemme 8
|-
|PD6
|RCD Licht
|Eingang
|Klemme 4
|-
|PC2
|RCD Steckdosen (Haupt)
|Eingang
|Klemme 5
|-
|PA1
|RCD Server
|Eingang
|Klemme 7
|-
|PD3
|Taster Vortrag INT2
|Eingang
|Klemme 31
|-
|PB2
|Taster Lounge  INT1
|Eingang
|Klemme 32
|-
|PA0
|Hauptschalter
|Eingang
|Klemme 6
|-
|PA2
|LED rot
|Ausgang
|Front RGB LED
|-
|PA3
|LED grün
|Ausgang
|Front RGB LED
|-
|PA4
|LED blau
|Ausgang
|Front RGB LED
|}
 
|}
 
=== Steckverbinder ===
{|
|
'''10 Pin Stecker zur Verbindung der unteren mit der oberen Platine
rechts'''
*1 GND
*1 GND
*2 CANH
*2 CANH
Zeile 262: Zeile 448:
*4 SDA
*4 SDA
*5 SCL
*5 SCL
*6 +5V
*6 +5 V
*7  
*7  
*8 RCD Licht
*8 Eingang 24 V Power Good TTL
*9 RCD Server
*9 RCD Lichtkreis TTL
*10 24v ok
*10 RCD Hauptkreis TTL


links:
links:
* 1 gnd
* 1 GND
* 2 rx
* 2 EIA-232_RX
* 3 tx
* 3 EIA-232_TX
* 4 taster blau
* 4 Taster Vortragsraum TTL
* 5 taster gelb
* 5 Taster Lounge TTL
* 6 hauptschalter
* 6 Hauptschalter TTL
* 7 rcd Steckdosen
* 7 RCD Serverkreis TTL
* 8  
* 8  
* 9
* 9
*10
*10
|}


== TODO: ==
=== RGB-LED ===
'''TODO: Version 1.1'''
'''Vorschlag:'''
{| {{prettytable}}
| '''Farbe LED'''
| '''Aktion'''
| '''Status'''
|-
|Grün
|dauer
|Labor an, keine Fehler
|-
|Blau
|dauer
|Labor aus, keine Fehler
|-
|Weiß
|blinken
|Fehler, interne 24V Spannung fehlt
|-
|Rot
|blinken
|Fehler, RCD Hauptkreis ausgelöst
|-
|Blau
|blinken
|Fehler, RCD Lichtkreis ausgelöst
|-
|Grün
|blinken
|Fehler, RCD Serverkreis ausgelöst
|-
|
|
|
|}
 
== Software ==
'''TODO: Version 1.1'''
* Atmega32 "interface"
** CAN Pakete senden/empfangen
*** Bei jeder Änderungen: CAN-Paket senden
*** nicht jede Funktion kann per CAN ausgelöst werden
** Schalter abfragen
*** Lampen steuern (direkt / CAN Paket an Labnode lounge)
** Hauptschalter abfragen
*** Relais schalten, zeitverzögert beim Ausschalten
*** Helligkeitswerte für Lampen auf 70% setzen (Ausschalten)
** RCD abfragen
*** LED Status setzen
** Relais steuern
*** Relais werden automatisch gesteuert, nicht mehr manuell über CAN
*** (Küche und Lounge)
** Optotriacs steuern
** Lampe PWM steuern
 
 
* Atmega168 "controll"
** wird von interface über I2C gesteuert


* Schaltpläne E/A ins Wiki
=== Lampensteuerung ===
* max232
'''Vorschlag:'''
* Watchdog?
{| {{prettytable}}
* uhr
| '''ZielAdresse'''
* poll rcd & hs
| '''ZielPort'''
| '''Data[0] Befehl'''
| '''Data[1] Lampennummer'''
| '''Data[2] Argument'''
| '''Data[3] Argument'''
| '''Befehl'''
|-
|x
|2
|0
|y
|0: Aus, >0: An
|
|Lampe schalten
|-
|x
|2
|1
|y
|{0 .. 255}
|
|Helligkeit setzen
|-
|x
|2
|2
|
|
|
|Lampenstatus abfragen, Antwort auf Port 0x03
|-
|x
|2
|3
|0
|0: Aus, >0: An
|
|Alle Lampen schalten
|-
|x
|2
|4
|0
|{0 .. 255}
|
|Helligkeit aller Lampen setzen
|-
|Absender
|3
|Lampenstatus, bit 1==AN/0==Aus
|PWM-Wert1
|PWM-Wert2
|...
|Antwort auf Anfrage oder bei jeder Änderung
|}
 
* Setzen:
** ist die Lampennummer nicht verfügbar, wird das Paket verworfen
** jede Änderung sendet ein Statuspaket an den Absender
* Abfragen:
** sendet ein Statuspaket an den anfragenden
 
 
=== Statusupdate ===
 
'''Vorschlag:'''
{| {{prettytable}}
| '''ZielAdresse'''
| '''ZielPort'''
| '''Data[0] Befehl'''
| '''Data[1] Argument'''
| '''Befehl'''
|-
|0
|1
|0
|{0 .. 255}
|Status update aller Eingänge
|-
|0
|1
|1
|{0 .. 255}
|Status update aller Relais
|-
 
|}
 
=== I2C Protokoll zwischen AVRs ===
 
8 Byte - der gesamte Zustand der Ausgänge wird geschrieben bzw. kann gelesen werden wenn der Interface Controller neu gestartet wurde
 
 
 
{| {{prettytable}}
| '''Byte'''
| '''Funktion'''
|-
 
|0
|low byte
|-
 
|1
|high byte
|-
 
|2
|PWM Vortragsraum Lampengruppe Tafel
|-
 
|3
|PWM Vortragsraum Lampengruppe Beamer
|-
 
|4
|PWM Vortragsraum Lampengruppe Schrank
|-
 
|5
|PWM Vortragsraum Lampengruppe Flipper
|-
 
|6
|PWM Vortragsraum Lampengruppe Lounge
|-
 
|7
|PWM Vortragsraum Lampengruppe Küche
|-
 
|}
 
'''Ausgangs Wort:'''
{| {{prettytable}}
| '''Bit'''
| '''Funktion'''
| '''Byte'''
|-
 
|0
|low byte
|Schütz Küchenlicht
|-
 
|1
|low byte
|Schütz Beamer
|-
 
|2
|low byte
|Schütz Licht Vortragsraum gesamt
|-
 
|3
|low byte
|Schütz Licht Lounge gesamt
|-
 
|4
|low byte
|Schütz Steckdosen Loungetisch
|-
 
|5
|low byte
|Schütz Licht Klo
|-
 
|6
|low byte
|Hauptschütz Steckdosen nicht geschaltet + Hauptschütz Licht
|-


== Erweiterung ==


* Echtzeit Verbrauchsmessung [[powermeter]]
|7
|low byte
|Frei
|-


|8
|high byte
|Optotriac  Vortragsraum Lampengruppe Tafel
|-


|9
|high byte
|Optotriac  Vortragsraum Lampengruppe Beamer
|-


|10
|high byte
|Optotriac  Vortragsraum Lampengruppe Schrank
|-


== Webinterface ==
|11
http://rl/weblabctrl2/
|high byte
|Optotriac  Vortragsraum Lampengruppe Flipper
|-


|}


== TODO ==


* Schaltpläne E/A ins Wiki


== Erweiterung ==






== Webinterface ==
http://wl/weblabctrl/


== Kommandozeile ==
== Kommandozeile ==


Das Tool labcontrol biete die Möglichkeit den Powercommander anzustuern.
Das Tool labcontrol biete die Möglichkeit den Powercommander anzusteuern.
Folgende Befehle sind möglich:
Folgende Befehle sind möglich:


Zeile 316: Zeile 756:
|'''Value'''
|'''Value'''
|-
|-
| SW
| SW (0)
| LAMP_TAFEL
| LAMP_TAFEL (8)
| ON
| OFF (0)
| 0x00
| 0x00
|-
|-
|  
|  
|  
|  
| OFF
| ON (1)
| 0x00
| 0x00
|-
|-
|  
|  
|  
|  
| STATUS
| TOGGLE (3)
| 0x00
| 0x00
|-
|-
|  
|  
| LAMP_BEAMER
| LAMP_BEAMER (9)
| ON
| OFF
| 0x00
| 0x00
|-
|-
|  
|  
|  
|  
| OFF
| ON
| 0x00
| 0x00
|-
|-
|  
|  
|  
|  
| STATUS
| TOGGLE (3)
| 0x00
| 0x00
|-
|-
|  
|  
| LAMP_SCHRANK
| LAMP_SCHRANK (10)
| ON
| OFF
| 0x00
| 0x00
|-
|-
|  
|  
|  
|  
| OFF
| ON
| 0x00
| 0x00
|-
|-
|  
|  
|  
|  
| STATUS
| TOGGLE (3)
| 0x00
| 0x00
|-
|-
|  
|  
| LAMP_FLIPPER
| LAMP_FLIPPER (11)
| ON
| OFF
| 0x00
| 0x00
|-
|-
|  
|  
|  
|  
| OFF
| ON
| 0x00
| 0x00
|-
|-
|  
|  
|  
|  
| STATUS
| TOGGLE (3)
| 0x00
| 0x00
|-
|-
|  
|  
| LAMP_LOUNGE
| LAMP_LOUNGE (3)
| ON
| OFF
| 0x00
| 0x00
|-
|-
|  
|  
|  
|  
| OFF
| ON
| 0x00
| 0x00
|-
|-
|  
|  
|  
|  
| STATUS
| TOGGLE (3)
| 0x00
| 0x00
|-
|-
|  
|  
| LAMP_KLO
| LAMP_VORTRAG (2)
| ON
| OFF
| 0x00
| 0x00
|-
|-
|  
|  
|  
|  
| OFF
| ON
| 0x00
| 0x00
|-
|-
|  
|  
|  
|  
| STATUS
| TOGGLE (3)
| 0x00
|-
|
| LAMP_VORTRAG
| ON
| 0x00
| 0x00
|-
|-
|  
|  
|  
| KUECHE (0)
| OFF
| OFF
| 0x00
| 0x00
Zeile 418: Zeile 853:
|  
|  
|  
|  
| STATUS
| ON
| 0x00
| 0x00
|-
|-|
|  
|  
| BEAMER
| TOGGLE (3)
| ON
| 0x00
| 0x00
|-
|-
|  
|  
|  
| BEAMER (1)
| OFF
| OFF
| 0x00
| 0x00
Zeile 433: Zeile 867:
|  
|  
|  
|  
| STATUS
| ON
| 0x00
| 0x00
|-
|-
| PWM
| PWM (1)
| TAFEL
| TAFEL (0)
| SET
| SET (0)
| 0x00 - 0xFF
| 0x00 - 0xFF
|-
|-
|  
|  
|  
| BEAMER (1)
| GET
| SET (0)
| 0x00
| 0x00 - 0xFF
|-
|-
|  
|  
| BEAMER
| SCHRANK (2)
| SET
| SET (0)
| 0x00 - 0xFF
| 0x00 - 0xFF
|-
|-
|  
|  
|  
| FLIPPER (3)
| GET
| SET (0)
| 0x00
| 0x00 - 0xFF
|-
|-
|  
|  
| SCHRANK
| KUECHE (5)
| SET
| SET (0)
| 0x00 - 0xFF
| 0x00 - 0xFF
|-
|-
|  
|  
|  
|  
| GET
| PWM_MOD (2)
| 0x00
| 0x00
|-
|-
|  
|  
| FLIPPER
|
| SET
| TOGGLE_PWM_DIR (3)
| 0x00 - 0xFF
| 0x00
|-
| VIRT (2)
| VORTRAG_LICHT (1)
| ON (1)
| 0x00
|-
|-
|  
|  
|  
|  
| GET
| OFF (0)
| 0x00
| 0x00
|-
|
| LOUNGE
| SET
| 0x00 - 0xFF
|-
|-
|  
|  
|  
|  
| GET
| TOGGLE (3)
| 0x00
| 0x00
|-
|-
|  
|  
| KUECHE
| VORTRAG_PWM (2)
| SET
| SET (0)
| 0x00 - 0xFF
| 0x00 - 0xFF
|-
|-
|  
|  
|  
|
| GET
| PWM_MOD (2)
| 0x00
|-
| VIRT
| VORTRAG_LICHT
| ON
| 0x00
| 0x00
|-
|-
|  
|  
|  
|
| OFF
| TOGGLE_PWM_DIR (3)
| 0x00
| 0x00
|-
|-
|
| VORTRAG_PWM
| SET
| 0x00 - 0xFF
|}
|}
[[category:Automatisierung]]
[[category:Automatisierung]]

Aktuelle Version vom 8. April 2017, 00:15 Uhr

           
PowerCommander

Release status: stable [box doku]

Powercommander geschlossen.jpg
Description Zentrales Steuergerät
Author(s)  Pl4nkton, Mati, asklepios, tixiv, siro
Last Version  1.00
Platform  AVR (ATmega168/32)
License  Source: GPL / unbekannt
Download  c Code, trac



Einleitung[Bearbeiten | Quelltext bearbeiten]

Der Powercommander schaltet Relais im Sicherungskasten und kann somit (fast) das gesamte Labor an und ausschalten - natürlich abgesehen von Kühlschrank und Server. Ferner kann er die Lampen einzeln im Vortragsraum und Küche dimmen. Das ganze ist bequem per Webinterface erreichbar für jeden der sich im Labor befindet. Das Gerät nimmt Steuerbefehle via Canbus entgegen.

Taster im Labor die aus der Gebäudeinstallation stammen sind mit dem Powercommander verbunden und schalten nicht direkt das Licht über einen Stromstoßschalter, sondern dient viel mehr als Eingabetaster für den Powercommander. So ist es möglich, mit den vorhandenen Schaltern das Licht zu dimmen.

Das Gehäuse beinhaltet ein Schaltnetzteil, sowie zwei Mikrocontroller: Einen Atmega168 und einen Atmega32. Der Atmega168 ist hauptsächlich als IO Expander tätig und schaltet die Relais und Analogausgänge, während der Mega32 die CAN-Steuerung sowie Eingänge übernimmt und eine RGB LED zur Statusanzeige ansteuert. So ist es möglich die Firmware des Mega32 zu ändern ohne das sich die Zustände der Ausgänge verändern - also das Licht oder der Strom ausfällt.

Mit der Version 1.1 kann der Powercommander die Lampen in der Lounge per CAN einzeln oder in Gruppen schalten und dimmen, sowie deren aktuellen Status abfragen. Dies ermöglicht einen fehlerfreien Betrieb. Die aktuelle Lösung kann lediglich die Lampen "toggeln". Zusätzlich werden mit der neuen Version die Stromkreise dynamisch mit Relais geschaltet, was momentan nicht der Fall ist. Das Protokoll zum steuern der Lampen ist nun vereinheitlicht und sorgt in Zukunft für einfachere Steuerung.

Technische Dokumentation[Bearbeiten | Quelltext bearbeiten]

CAN Adresse 0x02

Powercommander offen

Belegung der Schraubklemmen am Gehäuse[Bearbeiten | Quelltext bearbeiten]

Klemme Belegung Anmerkung
1 GND 24V
2
3
4 24V Eingang RCD Server
5 24 V Eingang + Power Good Erkennung Power vom Netzteil im Sicherungskasten
6 24V Eingang Hauptschalter
7 24V Eingang RCD Haupt
8 24V Eingang RCD Licht
9
10 24V Ausgang Frei
11 24V Ausgang Relais Hauptschütz (nicht Dauerstromsteckdosen + Licht Keller + Licht Bastelraum)
12 24V Ausgang Relais Klo Strom Licht + Steckdose
13 24V Ausgang Relais Tischsteckdose Lounge
14 24V Ausgang Relais Lounge Licht
24V Ausgang Relais Vortragsraum Licht
16 24V Ausgang Relais Beamer
17 24V Ausgang Relais Küchenlicht
18 0-10V EVG Dimmer Flipper
19 0-10V EVG Dimmer Schrank
20 0-10V EVG Dimmer Küche
21 0-10V EVG Dimmer Lounge TODO: Zwischenraum
22 0-10V EVG Dimmer Beamer
23 0-10V EVG Dimmer Tafel
24 GND Licht-Steuerkreise + Hauptschalter
25 5V Ausgang Optotriak Vortragsraum bei der Tafel
26 5V Ausgang Optotriak Vortragsraum bei dem Beamer
27 5V Ausgang Optotriak Vortragsraum bei dem Schrank
28 5V Ausgang Optotriak Vortragsraum bei dem Flipper
29
30 230V Neutralleiter Lichtkreis
31 230V Phase Lichtkreis Taster Vortragsraum
32 230V Phase Lichtkreis Taster Lounge
33
34
35


Übersicht[Bearbeiten | Quelltext bearbeiten]

Oberere Buchse an der linken Seite: CAN

Untere Buchse an der linken Seite:

Belegung:

1 GND ,2 GND ,3 EIA-232_RX ,4 EIA-232_TX ,5 GND ,6 GND ,7 ,8 ,9 24 V ,10 -

Eingänge:

  • 2 * 230 V - Taster Lounge, Taster Vortragsraum
  • 5 * 24 V - RCD Lichtkreis; RCD Hauptkreis; RCD Serverkreis; 24 V Power Good; Hauptschalter

Ausgänge:

  • 8 * 24 V für die Relais
  • 6 * 0 V - 10 V für EVG Dimmer
  • 4 * 5 V für die Leuchtstofflampen im Vortragsraum

Spannungen:

  • 24 V Relais
  • 5 V TTL µC
  • 12 V CAN - Anhebung auf 24V ist geplant
  • 230 V Eingänge


Bauteile / Aufgabe:

  • LM2596-ADJ; Schaltregler 12V - 24V zu 5V TTL
  • 24V Eingang: 4k7, 100k, 1k5, 100n/50V
  • 230V Eingang: 2*470k, 100n/50V, BC557, PC817, 1N4148
  • 0-10V Ausgang: 22k, 100n, 10k, 12k,lm324
  • MCP2515; CAN MAC, SPI
  • MCP2551; CAN PHY
  • 2 x UDN 2981; Relais Ansteuerung 24V / 5V Optokoppler Lampen
  • mega168; 6 * hw PWM; Ausgänge und Licht PWM Ansteuerung(0-10V analog), I2C mit µC 2
  • mega32; CAN, I2C, RTC 32khz, eia232
  • 16Mhz Oszillator
  • 2 x Buchse; CAN, EIA232

Mikrocontroller I/O[Bearbeiten | Quelltext bearbeiten]

µC Ausführung - Mega168

  • Relais schaltet Spannung auf Lampengruppen/Steckdosen
  • Optotriac schaltet Lampen einzeln an/aus
  • Relais an + Optotriac an: PWM für Helligkeit
Pin Funktion Richtung Verbunden mit
PB3 OC2A PWM Ausgang Lampe Lounge, Klemme 21
PB2 OC1B PWM Ausgang Lampe Flipper, Klemme 18
PB1 OC1A PWM Ausgang Lampe Schrank, Klemme 19
PD3 OC2B PWM Ausgang Lampe Küche, Klemme 20
PD5 OC0B PWM Ausgang Lampe Beamer, Klemme 22
PD6 OC0A PWM Ausgang Lampe Tafel, Klemme 23
PC4 SDA I2C Beides Atmega32
PC5 SCL I2C Beides Atmega32
PC3 Relais 1 Ausgang Lampenspannung Küche, Klemme 17
PC2 Relais 2 Ausgang Beamer, Klemme 16
PC1 Relais 3 Ausgang Lampenspannung Vortrag, Klemme 15
PC0 Relais 4 Ausgang Lampenspannung Lounge, Klemme 14
PB5 Relais 5 Ausgang Steckdosenleiste Lounge, Klemme 13
PB4 Relais 6 Ausgang Steckdosen+Licht Klo, Klemme 12
PB0 Relais 7 Ausgang Hauptschütz, Klemme 11
PD7 Relais 8 Ausgang ?
PD0 Optotriac 1 Ausgang Lampe Tafel, Klemme 25
PD1 Optotriac 2 Ausgang Lampe Beamer, Klemme 26
PD2 Optotriac 3 Ausgang Lampe Schrank, Klemme 27
PD4 Optotriac 4 Ausgang Lampe Flipper, Klemme 28

µC Interface - ATMega32

Pin Funktion Richtung Verbunden mit
PB6 SPI MISO Eingang CAN Transceiver
PB5 SPI MOSI Ausgang CAN Transceiver
PB7 SPI SCK Ausgang CAN Transceiver
PC5 SCL I2C Beides Atmega168
PC4 SDA I2C Beides Atmega168
PB4 SPI CS MCP Ausgang CAN Transceiver
PD2 INT0 MCP Eingang CAN Transceiver
PD0 EIA232 ungenutzt -
PD1 EIA232 ungenutzt -
PD7 24 V Power Good Eingang Klemme 8
PD6 RCD Licht Eingang Klemme 4
PC2 RCD Steckdosen (Haupt) Eingang Klemme 5
PA1 RCD Server Eingang Klemme 7
PD3 Taster Vortrag INT2 Eingang Klemme 31
PB2 Taster Lounge INT1 Eingang Klemme 32
PA0 Hauptschalter Eingang Klemme 6
PA2 LED rot Ausgang Front RGB LED
PA3 LED grün Ausgang Front RGB LED
PA4 LED blau Ausgang Front RGB LED

Steckverbinder[Bearbeiten | Quelltext bearbeiten]

10 Pin Stecker zur Verbindung der unteren mit der oberen Platine rechts

  • 1 GND
  • 2 CANH
  • 3 CANL
  • 4 SDA
  • 5 SCL
  • 6 +5 V
  • 7
  • 8 Eingang 24 V Power Good TTL
  • 9 RCD Lichtkreis TTL
  • 10 RCD Hauptkreis TTL

links:

  • 1 GND
  • 2 EIA-232_RX
  • 3 EIA-232_TX
  • 4 Taster Vortragsraum TTL
  • 5 Taster Lounge TTL
  • 6 Hauptschalter TTL
  • 7 RCD Serverkreis TTL
  • 8
  • 9
  • 10

RGB-LED[Bearbeiten | Quelltext bearbeiten]

TODO: Version 1.1 Vorschlag:

Farbe LED Aktion Status
Grün dauer Labor an, keine Fehler
Blau dauer Labor aus, keine Fehler
Weiß blinken Fehler, interne 24V Spannung fehlt
Rot blinken Fehler, RCD Hauptkreis ausgelöst
Blau blinken Fehler, RCD Lichtkreis ausgelöst
Grün blinken Fehler, RCD Serverkreis ausgelöst

Software[Bearbeiten | Quelltext bearbeiten]

TODO: Version 1.1

  • Atmega32 "interface"
    • CAN Pakete senden/empfangen
      • Bei jeder Änderungen: CAN-Paket senden
      • nicht jede Funktion kann per CAN ausgelöst werden
    • Schalter abfragen
      • Lampen steuern (direkt / CAN Paket an Labnode lounge)
    • Hauptschalter abfragen
      • Relais schalten, zeitverzögert beim Ausschalten
      • Helligkeitswerte für Lampen auf 70% setzen (Ausschalten)
    • RCD abfragen
      • LED Status setzen
    • Relais steuern
      • Relais werden automatisch gesteuert, nicht mehr manuell über CAN
      • (Küche und Lounge)
    • Optotriacs steuern
    • Lampe PWM steuern


  • Atmega168 "controll"
    • wird von interface über I2C gesteuert

Lampensteuerung[Bearbeiten | Quelltext bearbeiten]

Vorschlag:

ZielAdresse ZielPort Data[0] Befehl Data[1] Lampennummer Data[2] Argument Data[3] Argument Befehl
x 2 0 y 0: Aus, >0: An Lampe schalten
x 2 1 y {0 .. 255} Helligkeit setzen
x 2 2 Lampenstatus abfragen, Antwort auf Port 0x03
x 2 3 0 0: Aus, >0: An Alle Lampen schalten
x 2 4 0 {0 .. 255} Helligkeit aller Lampen setzen
Absender 3 Lampenstatus, bit 1==AN/0==Aus PWM-Wert1 PWM-Wert2 ... Antwort auf Anfrage oder bei jeder Änderung
  • Setzen:
    • ist die Lampennummer nicht verfügbar, wird das Paket verworfen
    • jede Änderung sendet ein Statuspaket an den Absender
  • Abfragen:
    • sendet ein Statuspaket an den anfragenden


Statusupdate[Bearbeiten | Quelltext bearbeiten]

Vorschlag:

ZielAdresse ZielPort Data[0] Befehl Data[1] Argument Befehl
0 1 0 {0 .. 255} Status update aller Eingänge
0 1 1 {0 .. 255} Status update aller Relais

I2C Protokoll zwischen AVRs[Bearbeiten | Quelltext bearbeiten]

8 Byte - der gesamte Zustand der Ausgänge wird geschrieben bzw. kann gelesen werden wenn der Interface Controller neu gestartet wurde


Byte Funktion
0 low byte
1 high byte
2 PWM Vortragsraum Lampengruppe Tafel
3 PWM Vortragsraum Lampengruppe Beamer
4 PWM Vortragsraum Lampengruppe Schrank
5 PWM Vortragsraum Lampengruppe Flipper
6 PWM Vortragsraum Lampengruppe Lounge
7 PWM Vortragsraum Lampengruppe Küche

Ausgangs Wort:

Bit Funktion Byte
0 low byte Schütz Küchenlicht
1 low byte Schütz Beamer
2 low byte Schütz Licht Vortragsraum gesamt
3 low byte Schütz Licht Lounge gesamt
4 low byte Schütz Steckdosen Loungetisch
5 low byte Schütz Licht Klo
6 low byte Hauptschütz Steckdosen nicht geschaltet + Hauptschütz Licht
7 low byte Frei
8 high byte Optotriac Vortragsraum Lampengruppe Tafel
9 high byte Optotriac Vortragsraum Lampengruppe Beamer
10 high byte Optotriac Vortragsraum Lampengruppe Schrank
11 high byte Optotriac Vortragsraum Lampengruppe Flipper

TODO[Bearbeiten | Quelltext bearbeiten]

  • Schaltpläne E/A ins Wiki

Erweiterung[Bearbeiten | Quelltext bearbeiten]

Webinterface[Bearbeiten | Quelltext bearbeiten]

http://wl/weblabctrl/

Kommandozeile[Bearbeiten | Quelltext bearbeiten]

Das Tool labcontrol biete die Möglichkeit den Powercommander anzusteuern. Folgende Befehle sind möglich:

Klasse Objekt Funktion Value
SW (0) LAMP_TAFEL (8) OFF (0) 0x00
ON (1) 0x00
TOGGLE (3) 0x00
LAMP_BEAMER (9) OFF 0x00
ON 0x00
TOGGLE (3) 0x00
LAMP_SCHRANK (10) OFF 0x00
ON 0x00
TOGGLE (3) 0x00
LAMP_FLIPPER (11) OFF 0x00
ON 0x00
TOGGLE (3) 0x00
LAMP_LOUNGE (3) OFF 0x00
ON 0x00
TOGGLE (3) 0x00
LAMP_VORTRAG (2) OFF 0x00
ON 0x00
TOGGLE (3) 0x00
KUECHE (0) OFF 0x00
ON 0x00
TOGGLE (3) 0x00
BEAMER (1) OFF 0x00
ON 0x00
PWM (1) TAFEL (0) SET (0) 0x00 - 0xFF
BEAMER (1) SET (0) 0x00 - 0xFF
SCHRANK (2) SET (0) 0x00 - 0xFF
FLIPPER (3) SET (0) 0x00 - 0xFF
KUECHE (5) SET (0) 0x00 - 0xFF
PWM_MOD (2) 0x00
TOGGLE_PWM_DIR (3) 0x00
VIRT (2) VORTRAG_LICHT (1) ON (1) 0x00
OFF (0) 0x00
TOGGLE (3) 0x00
VORTRAG_PWM (2) SET (0) 0x00 - 0xFF
PWM_MOD (2) 0x00
TOGGLE_PWM_DIR (3) 0x00