µC gesteuerte Alarmanlage, David Schulz

Add to my manuals
79 Pages

advertisement

µC gesteuerte Alarmanlage, David Schulz | Manualzz

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

Alarmanlage

Dokumentation der Technikerarbeit 2007/2008

von David Schulz

Bodanstraße 32

78462 Konstanz

Projektbetreuung: Zeppelin Gewerbeschule Konstanz

Fachschule für Technik

Pestalozzistraße 2

78464 Konstanz

Hans-Dieter Groß (Leiter Fachschule für Technik)

Wolf Sperling (Betreuung Technikerarbeit)

Seite 1 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

1 Allgemein

1.1 Eidesstattliche Erklärung

Hiermit versichere ich, David Schulz, dass die vorliegende Technikerarbeit von mir selbständig geplant, erarbeitet und angefertigt wurde.

Elemente, die dem nicht entsprechen, sind als solche gekennzeichnet.

__________________________

Ort, Datum

__________________________

Unterschrift

1.2 Copyright

Hiermit gestatte ich dieses Dokument zu Lehrzwecken und sonstigen, nicht kommerziellen Verwendungen zu veröffentlichen.

Desweiteren ist es erlaubt das Gerät anhand der Dokumentation nachzubilden oder weiter zu entwickeln.

Seite 2 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

1.3 Inhaltsverzeichnis

1 Allgemein...........................................................................................2

1.1 Eidesstattliche Erklärung............................................................................. 2

1.2 Copyright....................................................................................................... 2

1.3 Inhaltsverzeichnis......................................................................................... 3

1.4 Projektbeschreibung..................................................................................... 5

1.5 Projektentstehung......................................................................................... 7

1.6 Entwicklungsablauf....................................................................................... 8

1.6.1 Juli 2007.................................................................................................. 8

1.6.2 August 2007............................................................................................ 8

1.6.3 September 2007...................................................................................... 8

1.6.4 Oktober 2007.......................................................................................... 9

1.6.5 November 2007..................................................................................... 10

1.6.6 Dezember 2007..................................................................................... 10

1.6.7 Januar 2008.......................................................................................... 11

1.6.8 Februar 2008......................................................................................... 11

1.6.9 März 2008............................................................................................. 12

1.7 Zeiteinteilung............................................................................................... 13

2 Konzept............................................................................................14

2.1 Zentrale........................................................................................................ 15

2.2 Terminal....................................................................................................... 16

2.3 Verteiler........................................................................................................ 16

2.4 Alarmgeber.................................................................................................. 17

3 Hardware..........................................................................................18

3.1 Blockschaltbild............................................................................................ 18

3.2 Pinbelegung LPC936................................................................................... 19

3.3 Schaltplan.................................................................................................... 19

3.3.1 Netzteil.................................................................................................. 20

3.3.2 Hauptmodul........................................................................................... 21

3.3.3 Terminal................................................................................................ 22

3.3.4 Verteiler................................................................................................. 23

3.4 Hardwareelemente...................................................................................... 24

3.4.1 LPC936 (Mikrocontroller)...................................................................... 24

3.4.2 I²C-Bus.................................................................................................. 25

3.4.3 P82B715 (I²C-Bus-Verstärker).............................................................. 26

3.4.4 PCF8574 (8-Bit Porterweiterung).......................................................... 27

3.4.5 LCD164ABL (4x16 LC-Display)............................................................. 28

3.4.6 Keypad (3x4 Tastenfeld)....................................................................... 29

3.4.7 Sensorverteilung................................................................................... 30

3.4.8 Netzteil.................................................................................................. 31

3.4.9 Ladeschaltung....................................................................................... 32

3.5 Kostenaufstellung....................................................................................... 33

3.6 Bestückungspläne und Materiallisten....................................................... 33

3.6.1 Netzteil mit Ladeschaltung.................................................................... 34

3.6.2 Hauptmodul........................................................................................... 35

3.6.3 Verstärker (2 Stück).............................................................................. 36

3.6.4 Busmodul.............................................................................................. 36

3.6.5 Terminal................................................................................................ 37

3.6.6 Verteiler................................................................................................. 38

Seite 3 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

3.7 Layout und Bilder......................................................................................... 39

3.7.1 Netzteil mit Ladeschaltung.................................................................... 39

3.7.2 Hauptmodul........................................................................................... 40

3.7.3 Verstärker.............................................................................................. 41

3.7.4 Busmodul.............................................................................................. 42

3.7.5 Terminal................................................................................................ 43

3.7.6 Verteiler................................................................................................. 44

4 Software...........................................................................................45

4.1 Voreinstellungen und Grundlagen............................................................. 45

4.1.1 Adressen im I²C-Bus............................................................................. 45

4.1.2 Benutzerkonten..................................................................................... 45

4.1.3 Porteinstellungen................................................................................... 46

4.1.4 zusätzliche Funktionen.......................................................................... 46

4.1.5 Interrupts............................................................................................... 47

4.1.6 Zeitstruktur............................................................................................ 47

4.2 Menüstruktur............................................................................................... 48

4.3 Programmstruktur....................................................................................... 49

4.4 Funktionsübersicht..................................................................................... 50

4.4.1 a_main.c................................................................................................ 50

4.4.2 alr_con.c................................................................................................ 51

4.4.3 int_eep.c................................................................................................ 51

4.4.4 pin_misc.c............................................................................................. 52

4.4.5 set_str.c................................................................................................. 53

4.4.6 driver-lcd.a51/driver-pcf.a51.................................................................. 53

4.5 Funktionsbeschreibung.............................................................................. 54

4.5.1 Menüführung......................................................................................... 55

4.5.2 Navigation............................................................................................. 58

4.5.3 Überwachung........................................................................................ 62

4.5.4 Pinverarbeitung..................................................................................... 66

5 Bedienungsanleitung......................................................................70

5.1 Installation................................................................................................... 70

5.2 Inbetriebnahme............................................................................................ 71

5.3 Überwachung aktivieren............................................................................. 72

5.4 Überwachung deaktivieren......................................................................... 73

5.5 weitere Funktionen im Überblick............................................................... 74

6 Schlussbemerkung.........................................................................76

7 Danksagung.....................................................................................76

8 Quellen.............................................................................................76

9 Verzeichnisse..................................................................................77

9.1 Bilder............................................................................................................ 77

9.2 Tabellen........................................................................................................ 78

9.3 Struktogramme............................................................................................ 78

9.4 Schaltpläne.................................................................................................. 79

9.5 Bestückungspläne...................................................................................... 79

9.6 Layouts........................................................................................................ 79

Seite 4 von 79

David Schulz

Technikerarbeit 2007/2008

1.4 Projektbeschreibung

Dokumentation

Alarmanlage

Abbildung 1: Schema

Das Projekt stellt eine Alarmanlage zur Eingangs- und Raumüberwachung von immobilen Objekten dar. Die Zentrale [1] kann bis zu sechs Verteiler [3] verwalten. Diese Verteiler dienen als Knotenpunkte und können bis zu sieben

Sensoren überwachen. Die verwendeten Überwachungssensoren sind

Magnetkontakte [4] und Bewegungsmelder [5]. Es können aber auch andere

Alarmmelder, welche beim Auslösen einen Kontakt unterbrechen, verwendet werden.

Über das Terminal [2] kann die Alarmanlage bedient, eingestellt und die Benutzer verwaltet werden. Zusätzlich werden wichtige Ereignisse durch die vier

Leuchtdioden an der Vorderseite der Zentrale signalisiert.

Sollte ein Alarm durch einen Einbruch oder das Betätigen des Paniktasters [6] ausgelöst werden, ertönt die Alarmsirene [7]. Das Deaktivieren des Alarms geschieht durch Pineingabe am Terminal.

Seite 5 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

Funktionen der Alarmanlage (aus Pflichtenheft):

Überwachung und Detektion von Einbrüchen

Eingabegerät (jetzt Terminal) mit LC-Display und Tastenfeld

Porterweiterungen über I²C-Bus

Zugangskontrolle mit verschiedenen Benutzern

Uhrzeit zeitgesteuerte Überwachung

Sabotagesicherung mittels Deckelkontakten

Signalgeber zur optischen und akustischen Alarmierung

Reedkontakte (Magnetkontakte)

Bewegungsmelder

Überfallmelder (Paniktaster) optional (aus Pflichtenheft):

● ausgelagertes Eingabegerät (Terminal) über I²C-Bus betrieben zusätzlich (nicht im Pflichtenheft):

● selbst dimensioniertes und gefertigtes Netzgerät

Notstromversorgung durch 12V Bleigel-Akku

Ladegerät für 12V Akku (im Netzteil enthalten, nicht selbst enwickelt)

Anpassung des I²C-Busses an lange Leitungen (I²C-Bus-Treiber)

Es stehen drei verschiedene Benutzerkonten zur Verfügung, welche unterschiedliche Prioritäten und Rechte zur Konfiguration und Überwachung der

Alarmanlage besitzen. Ein Benutzer höherer Priorität kann das Konto eines

Benutzers mit niedrigerer Priorität verwalten.

Es wird in drei Benutzerkonten bzw. drei Stufen unterschieden:

ID

2

1

0

Benutzerkonto Beschreibung

Administrator Verfügt uneingeschränkt über alle Funktionen und kann alle Benutzerkonten verwalten.

Verwendet achtstellige PIN.

Benutzer Eingeschränkte Benutzerrechte, hat keinen

Zugriff auf Benutzerüberwachung. Kann

Gastkonto verwalten. Sechsstellige PIN.

Gast Minimalstes Spektrum an Funktionen

(Grundfunktionen). Keine Verwaltungsrechte, vierstellige PIN.

Tabelle 1: Benutzerkonten

Seite 6 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

1.5 Projektentstehung

Wir schreiben das Jahr 2007. Es ist Spätwinter und das zweite Semester an der

Fachschule für Technik (Fachrichtung: Elektrotechnik) am Bodensee hat schon längst begonnen. Auf Anraten meiner Lehrer soll ich mich, und auch meine

Mitschüler, mit der Themenfindung unserer Technikerarbeit auseinandersetzen.

Zu diesem Zeitpunkt wusste ich noch nicht, dass ich jetzt eine (meine)

Alarmanlage dokumentieren würde. Nachdem ich die Vorpräsentationen und auch die schlussendlichen Präsentationen der Technikerarbeiten des damaligen

Abschlussjahrgangs in Augenschein nehmen konnte und ich ein ungefähre

Vorstellung des Umfangs einer solchen Projektarbeit abschätzen konnte, wurde mir klar, dass es ein für mich interessantes und ansprechendes Projekt sein muss.

Als sich das zweite Semester dem Ende zuneigte, wurde es ernst. Das erste

Pflichtenheft sollte abgegeben werden. Ich hatte eine sehr grobe Idee, welche ich in diesem ersten Pflichtenheft zusammengefasst abgab.

Doch meine jetzt von mir umgesetzte Idee kam mir danach, während den

Semesterferien im Sommer 2007, in den Kopf.

Beim Surfen im Internet besuchte ich eine Internetseite, welche sich mit dem

Thema „Sicherheit in den eigenen vier

Wänden“ befasste. Nach kurzem herumstöbern war klar:

Eine Alarmanlage muss her. Und diese natürlich selbst gebaut, da sich die Idee eigentlich ganz gut als Thema für die

Technikerarbeit eignet.

Also wurde kurzer Hand ein neues Konzept ausgearbeitet und ein neues Pflichtenheft geschrieben um es zu Beginn des dritten

Semesters in erwartungsvolle Hände ab zugegeben.

Abbildung 2: Pflichtenheft

Seite 7 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

1.6 Entwicklungsablauf

1.6.1 Juli 2007

Nachdem ich mich dazu entschieden hatte eine Alarmanlage zu entwickeln, verbrachte ich einige Tage mit der Recherche nach Grundlagen, allgemeinen

Funktionen und dem Aufbau von Alarmanlagen. Schließlich musste ich ein

Pflichtenheft mit einem konkreten Konzept erstellen um das Projekt als Thema für meine Technikerarbeit genehmigt zu bekommen.

Danach entschied ich mich für einen passenden, hardwaretechnischen Aufbau, welcher der Sterntopologie in Rechnernetzen ähnelt. Zum Konzept später mehr.

1.6.2 August 2007

Da ich nun genau wusste, was meine Alarmanlage alles können, wie die

Bedienung und die ungefähre Realisierung aussehen sollte, fing ich mit kleinen

Versuchen auf meinem EPM-900 Experimentierboard an.

Als erstes baute ich eine 'primitive'

Alarmanlage, welche aus zwei LEDs, drei

Schaltern als Sensorersatz und einem Taster zur Steuerung bestand. Für diesen ersten

Versuchsaufbau schrieb ich dann das dementsprechende Programm, welches die beiden Schalter 'überwachte' und mittels LED einen Alarm signalisierte.

Abbildung 3: erster Versuchsaufbau

1.6.3 September 2007

Als ich nach der Pflichtenheftabgabe nun das endgültige Okay von meinen betreuenden Lehrern bekam, fing ich an meine erste Bestellung zusammenzustellen. Zum einen benötigte ich das 3x4 Tastenfeld, welches ein elementares

Bestandteil meines geplanten Eingabemoduls war und zum anderen bestellte ich

I²C-Bustreiber, welche bei der Verdrahtung aller Komponenten eine große Rolle spielten.

Desweiteren bestellte ich mir noch ein

Sortiment kleinerer Hilfsmittel und Werkzeugen zusammen, welche mir bei der Entwicklung und

Konstruktion der Alarmanlage immer wieder sehr hilfreich waren.

Abbildung 4: 3x4 Tastenfeld

Seite 8 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

1.6.4 Oktober 2007

Um das oben erwähnte Tastenfeld einzubinden, schrieb ich ein dafür geeignetes

Programm und passte es den gegebenen Verhältnissen an. Nun bezog ich auch das LC-Display mit ein, um das eben erwähnte Programm des Tastenfeldes auch unter realen Umständen testen zu können.

Dabei ergaben sich wie erwartet einige

Probleme, wie das Prellen der Tasten, was ich aber nach und nach mittels geeigneten

Programmänderungen beheben konnte.

Als nächstes musste der vorhandene Treiber zur Ansteuerung des vierzeiligen LC-Displays angepasst werden, da der mir Bekannte für

LCDs mit nur zwei Zeilen konzipiert war. Das ging mit dem Datenblatt des vierzeiligen

Displays, nach kurzer Einarbeitung, recht einfach.

Abbildung 5: Programmierung

Desweiteren musste der Treiber für die I²C-fähigen, 8bit Porterweiterungen

(PCF8574), welche die Sensoren später überwachen sollen, in das Programm eingebunden, sowie eine geeignete Programmroutine, zur Auswertung der

Alarmsensoren, entwickelt werden.

Da ich bereits einen Großteil der Peripherie zusammengetragen und die dazu benötigten Treiber angepasst habe, konnte ich mich der Programmierung des Gesamten widmen.

Ich führte alle bis zu diesem Zeitpunkt programmierten

Teilprogramme zusammen und passte eins dem anderen an. Damit ich die ordnungsgemäße Funktion meiner Teilprogramme sicherstellen konnte, erstellte ich parallel dazu ein Menü zur Navigation durch das gesamte Programm. Die genaue Tastenbelegung wird

unter Punkt 2.2 (Terminal, Seite 16) beschrieben.

Abbildung 6: LCD &

Tastenfeld

Seite 9 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

1.6.5 November 2007

Nachdem ich zur Hälfte des Monats einen großen Teil des Gesamtprogramms fertiggestellt habe, musste ich mich in Richtung Hardware bzw. Elektronik wenden.

Um meine sternförmig angeordneten Elemente auch über längere Strecken mittels I²C-Bus ansprechen zu können, musste dieser um einen speziellen

Treiberbaustein ergänzt werden. Diesen hatte ich nach ausgiebiger Recherche im Internet und Unterstützung meiner betreuenden Lehrer ausfindig gemacht.

Nach kurzer Einlesezeit in das Datenblatt des Treiberbausteins testete ich das

Gelesene mit einem ungefähr 15m langen vieradrigen Kabel, welches ich auch später bei der Realisierung meines Projekts verwendete.

Nach der ersten Testphase habe ich mich dazu entschieden die Pull-Up-

Widerstände an der gepufferten, langen Strecke ungefähr zehn mal kleiner als die Pull-Up-Widerstände an der kurzen Strecke zu dimensionieren, da die

Datenübertragung so fehlerlos funktionierte.

Um dieses Übertragungskabel in meinen Versuchsaufbau integrieren zu können konstruierte ich zwei Adapter, welche den oben genannten Treiberbausteine

(P82B715), die benötigte Beschaltung und Verbindungselemente beinhalten.

1.6.6 Dezember 2007

Da ich nun den I²C-Bus über längere Strecken verwenden konnte, entschied ich mich mein Eingabemodul auszulagern und extern, getrennt vom Hauptteil, zu betreiben. So wie es auch im Pflichtenheft als optional dargestellt ist. Dadurch wurde das Eingabemodul auch in „Terminal“ umgetauft.

Hierfür musste ich meinen Versuchsaufbau grundlegend ändern und mein Tastenfeld und LC-Display über eine I²C-fähige

Porterweiterung betreiben.

Infolge dessen wurde das Programm für das

Tastenfeld und der Treiber für das LC-

Display stark verändert bzw. ein schon vorhandener, I²C-fähiger LCD-Treiber an mein vierzeiliges Display angepasst, wobei unerwartete aber nicht unvorhersehbare

Probleme auftraten.

Abbildung 7: Aufbau (mit I²C-Bus)

Seite 10 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

1.6.7 Januar 2008

So war ich gezwungen die Treibersoftware der Porterweiterungen für meinen

Mikrocontroller an mein Projekt anzupassen. Da es bei der Abarbeitung des

Treibers durchaus zu Interrupts kommen kann, welche in ihren dazugehörigen

Interrupt-Service-Routinen nochmals die Bereits aufgerufene Treiberroutine durchlaufen, kommt es somit zur fehlerhaften Datenübertragung auf dem I²C-

Bus. Deswegen musste ich sicherstellen, dass diese Interrupts während dieser

Treiberroutine deaktiviert werden und danach wieder aktiviert werden, falls sie davor bereits aktiv waren.

Ein weiterer wichtiger Punkt bei diesem Thema war die richtige Wahl der

Interruptpriorität um einen reibungslosen Ablauf zu gewährleisten.

Durch eine ausgiebige und längere Programmierphase vor und vor allem nach den Weihnachts- und Neujahrsfeiertagen konnten all diese und auch andere

Fehler beseitigt und das Programm weiter optimiert werden.

Zwar verschob sich der gesamte Zeitplan durch die Zeit der Fehlersuche und der

Fehlerbehebung um ungefähr ein bis zwei Wochen zu Ungunsten der weiteren

Planung aber dafür hat es sich auf jeden Fall für das endgültige Produkt gelohnt und die Software war danach auch zu 97% fertiggestellt und einsatzbereit.

1.6.8 Februar 2008

Jetzt war es an der Zeit die benötigte Hardware, die ohnehin schon vernachlässigt wurde, anzufertigen. Insgesamt waren es sechs verschiedene, mehr oder weniger aufwändige, Platinen, die es zu layouten und zu fertigen galt.

Da die einzelnen Platinen separat voneinander funktionieren, musste ich diese zum Testen nur an das EPM-900

Experimentierboard stecken und das dazugehörigen Teilprogramm laufen lassen. Auch kleinere Anpassung der

Software konnten so ganz einfach vorgenommen werden.

In der Zwischenzeit habe ich mich auch nach geeigneten Gehäusen für meine

Abbildung 8: Testaufbau

Alarmanlage umgeschaut und auch schon das ein oder andere gefunden.

Seite 11 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

Aus Zeit- und Kostengründen wurde jede Platine nur einmal angefertigt und die entstandenen Probleme danach direkt auf der Platine beseitigt.

Über sechs Platinen gab es ungefähr zehn Drahtbrücken und auch dementsprechend viele, zusätzliche

Unterbrechungen an den Leitbahnen.

Weitere Probleme waren Kleinigkeiten.

Diese reichten von falsch dimensionierten Widerständen über zerstörte Transistoren bis hin zu defekten ICs.

Nachdem alle Fehler der wichtigsten

Abbildung 9: Fehlersuche

Hardware meines Prototypen behoben waren, wurde diese über längere Zeit getestet, untersucht und unter Umständen, wie auch die Software, verbessert.

1.6.9 März 2008

Da ich mich dazu entschieden hatte optional zu meinem Netzteil ein Ladegerät für den von mir benutzten 12 Volt Bleigel-

Akku zu erstellen und dieses nicht auf

Anhieb funktionierte, musste ich verstärkt

Zeit in diese Schaltung investieren.

Zu Beginn gab es Probleme mit fälschlicher Weise verbauten Bauteilen, was den Defekt weiterer Bauelemente auf der Platine zur Folge hatte.

Da diese Bauteile leider nicht vorrätig waren mussten sie so schnell wie möglich unter dementsprechendem Aufwand wiederbeschafft werden.

Abbildung 10: Einbau ins Gehäuse

Während der Wiederbeschaffung hatte ich genügend Zeit meine ausgewählten

Gehäuse zu bearbeiten. Als Gehäuse für mein Hauptgerät dient ein umgebauter

250x250mm großer Sicherungskasten aus Kunststoff, welcher deswegen auch leicht zu bearbeiten war. Das Gehäuse für mein Terminal besteht aus einem

Pultgehäuse, ebenfalls aus Kunststoff, mit einer Frontplatte aus Aluminium. Nach drei Tagen mechanischer Arbeit waren alle Gehäuse bearbeitet und angepasst.

Zum Schluss wurden noch vier LEDs nach außen geführt, um wichtige Ereignisse visuell signalisieren zu können.

Weitere Informationen finden Sie unter dem Punkt 2.1 (Zentrale, Seite 15).

Seite 12 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

1.7 Zeiteinteilung

Die Fertigstellung meiner Technikerarbeit dauerte von der Erstellung des

Pflichtenheftes bis zur Abgabe des Produkts neun Monate. Die investierten

Zeitstunden, die ich in das Projekt gesteckt habe, betragen grob überschlagen etwa 450 Stunden. Höchstwahrscheinlich sind es noch ein wenig mehr aber die

Zahl hört sich plausibel an und wirkt nicht übertrieben.

Entwicklungsabschnitte nach Zeitraum:

Zeitraum

07/07 bis 08/07

08/07 bis 09/07

09/07 bis 01/08

02/08

02/08 bis 03/08

04/08

Tabelle 2: Entwicklungsabschnitte nach Zeitplan

Tätigkeiten

Recherche, Konzept und Pflichtenhefterstellung

Aufbau und Optimierung des Testaufbaus

Programmierung mit Testaufbau

Hardwareplanung und -erstellung

Hardwarefertigstellung, Optimierung und Fehlersuche

Dokumentation

Recherche 5%

Dokumentation 20%

Programmierung 40% Test/Fehlersuche 10%

Hardware 25%

Abbildung 11: prozentuale Zeitverteilung nach Entwicklungsabschnitt

Seite 13 von 79

David Schulz

Technikerarbeit 2007/2008

2 Konzept

Dokumentation

Alarmanlage

Abbildung 12: Konzept

In Abbildung 12 wird das grobe Konzept meiner Alarmanlage dargestellt. Im

Zentrum die Zentrale, welche Eingaben zur Steuerung des Systems vom

Terminal entgegen nimmt, die (Raum-)Verteiler überwacht und den Alarmgeber steuert.

Die Verteiler und das Terminal werden über vieradrige Steuerleitungen über eine

Länge von bis zu 10 Meter miteinander verbunden. Diese Verteiler überwachen bis zu acht Sensoren pro Verteiler, wobei einer für die Sabotageüberwachung in

Form eines Deckeltasters reserviert ist.

Die etwas heller angedeuteten Verteiler stehen symbolisch für die fünf weiteren möglichen Verteiler. Ich habe mich für meinen Prototypen auf einen beschränkt, könnte aber noch ohne weiteres einen zusätzlichen zweiten anschließen und in

Betrieb nehmen. Mit etwas Hardwareaufwand könnten programmtechnisch bis zu sechs Verteiler betrieben werden.

Bemerkung: Vorwiderstände von LEDs und Pull-Up-Widerstände des I²C-Busses sowie Widerstandsnetzwerke sind steckbar, damit sie leichter ausgewechselt und die Schaltung angepasst werden kann!

Seite 14 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

2.1 Zentrale

In der Zentrale befinden sich folgende Elemente:

Hauptmodul: Stellt mit dem LPC936 sozusagen das Hirn der Alarmanlage dar. Hier werden auch fünf der acht Status-LED, der Panik- und

Gehäusetaster und der Alarmgeber überwacht und gesteuert. (der

Gehäusetaster konnte aus mechanischen Gründen nicht verbaut werden)

Netzteil mit Ladegerät: Versorgt das gesamte System mit ungefähr 16 Volt, schaltet den 12V Akku bei Netzausfall zu und lädt ihn bei Bedarf auf.

12V Bleigel-Akku: Notstromversorgung im Falle eines Netzausfalls, welche bei

Bedarf vom Ladegerät geladen wird.

40mm Lüfter: Da beim Laden des Akkus hohe Ströme fließen und sich dadurch das Schaltrelais stark erhitzt, muss es Abbildung 13: Zentrale zusätzlich durch einen 40mm Lüfter gekühlt werden.

Signal-LEDs: Die LEDs zeigen die Netzspannung (grün), den Anlagen- und Alarmstatus (gelb, rot) und einen eventuellen Busübertragungsfehler

(rot) an. Optional gibt es auf den Platinen im Gehäuse noch weitere LED-

Ausgänge: Spannungsversorgung Hauptplatine (grün), Buszugriff (grün),

Akku lädt, Akku voll (Farbe je nach Vorwiderstand).

Paniktaster: Mit dem Paniktaster kann der Alarm manuell ausgelöst werden. Danach muss er durch Pineingabe am

Terminal wieder deaktiviert werden!

Busplatine: Dient zur Verteilung des I²C-Busses auf das Terminal und die Verteiler.

Verstärkerplatinen: Mittels P82B715, einem

I²C-Busverstärker, wird gewährleistet, dass der

Datenverkehr über längere Strecken funktioniert.

Diese Verstärkerplatinen werden auf die

Busplatine gesteckt, erhalten dadurch die nötige

Betriebsspannung und Anbindung an den

I²C-Bus und dienen somit als Koppelelemente.

Abbildung 14: Verstärker- und Busplatine

Seite 15 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

2.2 Terminal

Das Terminal besteht aus einem 4x16 LC-Display und einem 3x4 Tastenfeld. Die Menüsteuerung ist denkbar einfach gehalten:

Taste 2 = nach oben

Taste 5 = Menüpunkt wählen

Taste 8 = nach unten

Taste 0 = zurück

Bei PIN- und Uhrzeiteingaben müssen die Taste * (Stern) zum Löschen und die Taste # (Raute) zum Bestätigen der

Eingabe benutzt werden.

Abbildung 15: Terminal

Zusätzlich ertönt beim Drücken einer Taste ein Signalton oder, je nach

Programmablauf, ein Fehlerton. Dieser Ton kann, wie auch der Kontrast und die

Helligkeit der Hintergrundbeleuchtung des LC-Displays, mittels Potentiometer geregelt werden. Diese Potentiometer befinden sich allerdings intern, da sie nur der Geräteabstimmung des Entwicklers dienen.

2.3 Verteiler

Um Alarmsensoren nicht direkt mit der Alarmzentrale koppeln zu müssen, habe ich sogenannte (Raum-)Verteiler konstruiert. Diese können in einem Raum oder einem bestimmten Bereich installiert werden, in dem sie bis zu sieben Alarmsensoren

überwachen können. Sie können bis zu 15m von der Zentrale entfernt sein und werden über eine vieradrige Steuerleitung von dieser

überwacht und gesteuert.

Laut Spezifikation wäre es möglich die Verteiler sowie das Terminal über eine Entfernung von

50 Meter und somit über ein noch längeres

Kabel zu betreiben. Ich habe die Übertragung jedoch nur mit einer Kabellänge von 15 Meter getestet.

Abbildung 16: Verteiler mit Sensoren

In der Abbildung 16 wird ein Verteiler sowie ein Magnetkontakt und ein

Bewegungsmelder gezeigt. Diese beiden Sensoren arbeiten mit

Unterbrechungskontakten. Da der Bewegungsmelder mit Strom versorgt werden muss, enthält der Verteiler eine Anschlussklemme welche direkt vom Netzteil mit

16 bzw. 12 Volt bei Akkubetrieb gespeist wird.

Seite 16 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

2.4 Alarmgeber

Dieser optische und akustische Alarmgeber ist ein für 15 Euro gekauftes, fertiges

Produkt, welches ich meinen Ansprüchen angepasst habe. Da dieses Gerät meines Erachtens in einer ernsthaften Alarmanlage kein geeignetes Bauteil wäre, habe ich die Funktion eines professionelleren Gerätes kostengünstig nachempfunden:

Um die Sicherheit der gesamten Anlage zu verbessern, habe ich als erstes eine interne Spannungsquelle in Form eines 9 Volt Blockes eingebaut. Dieser wird

über ein Relais geschaltet, welches im normalen

Betrieb anzieht und die Spannungsquelle von der

Elektronik trennt.

Wenn die Verbindung zur Zentrale unterbrochen bzw. der Alarm aktiviert wird, liegt somit keine Spannung am Steuerkreis des Relais an und es fällt wieder zurück wobei die Elektronik mit Strom versorgt wird und der Alarm ertönt.

Für meinen Prototypen habe ich zusätzlich einen

Steckverbinder angebracht um den internen

Stromkreis unterbrechen zu können, da der Alarm ertönen würde, wenn die gesamte Anlage ausgeschaltet wird, weil eben keine Spannung steuerseitig am Relais anliegt.

Abbildung 17:

Alarmgeber

Seite 17 von 79

David Schulz

Technikerarbeit 2007/2008

3 Hardware

3.1 Blockschaltbild

Dokumentation

Alarmanlage

Abbildung 18: Blockschaltbild

Seite 18 von 79

David Schulz

Technikerarbeit 2007/2008

3.2 Pinbelegung LPC936

Dokumentation

Alarmanlage

Portpin Verwendung

P0.0

Interrupt-Leitung PCF8574 des Tastenfeldes im Terminal

P0.1

Interrupt für Paniktaster

P0.2

Interrupt für Gehäusetaster

P1.2

Taktleitung I²C-Bus (SCL)

P1.3

Datenleitung I²C-Bus (SDA)

P1.4

Interrupt-Leitung PCF8574 in Verteilern (Externer Interrupt 1)

P1.5

Resettaster

P2.0

Ausgang für Alarmgeber + LED „Alarm“

P2.1

invertierter Ausgang für Alarmgeber

P2.5

LED „Anlagenstatus“

P2.6

LED „I²C-Bus-Zugriff“

P2.7

LED „I²C-Bus-Fehler“

P3.0

Anschluss für externen Quarz mit 32768Hz

P3.1

Anschluss für externen Quarz mit 32768Hz

Tabelle 3: Portpinbelegung LPC936

3.3 Schaltplan

Die gesamten Platinenlayouts sowie die dazugehörigen Schaltpläne wurden mit dem Programm 'TARGET 3001! V12 Electuur special' entwickelt. Da diese

Version des Programms auf 400 Pins begrenzt ist, musste ich den gesamten

Schaltplan auf mehrere Seiten verteilen. Insgesamt sind es vier Seiten, da ich diese Aufteilung für logisch befunden habe.

Alle verwendeten Bauteile werden unter dem Punkt 3.6 (Bestückungspläne,

Seite 34) in den jeweiligen Material- und Preislisten sowie in den

Bestückungsplänen aufgeführt.

Seite 19 von 79

David Schulz

Technikerarbeit 2007/2008

3.3.1 Netzteil

Dokumentation

Alarmanlage

Schaltplan 1: Netzteil mit Ladeschaltung

Seite 20 von 79

David Schulz

Technikerarbeit 2007/2008

3.3.2 Hauptmodul

Dokumentation

Alarmanlage

Schaltplan 2: Hauptmodul mit Verstärker

Seite 21 von 79

David Schulz

Technikerarbeit 2007/2008

3.3.3 Terminal

Dokumentation

Alarmanlage

Schaltplan 3: Terminal

Seite 22 von 79

David Schulz

Technikerarbeit 2007/2008

3.3.4 Verteiler

Dokumentation

Alarmanlage

Schaltplan 4: Verteiler

Seite 23 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

3.4 Hardwareelemente

Hier werden die elementaren, wichtigen Bauteile und Schaltungen des Projektes erklärt und deren Funktion innerhalb der Alarmanlage beschrieben.

3.4.1 LPC936 (Mikrocontroller)

Der LPC936 von Philipps ist ein 8-Bit Mikrocontroller der 80C51-Familie, welcher das Kernstück der Alarmanlage darstellt. Er wird mit einer Spannung von 3,3 Volt versorgt und verfügt über drei Ports (Port 0 bis 2) mit je acht Ein- bzw.

Ausgabepins.

Der LPC936 befindet sich auf dem Hauptmodul und ist der Knotenpunkt in dem des Terminal sowie alle Verteiler zusammengeführt und gesteuert bzw. verwaltet werden. Desweiteren überwacht der Mikrocontroller die direkt an die Portpins angeschlossenen Panik- und Gehäusetaster und steuert die Status-LEDs.

Als Daten- und Taktanschluss für den I²C-Bus dienen Port 1.3 und 1.2. Als

Interrupteingang für Interruptsignale von den Verteilern benutze ich Port 1.4

(Externer Interrupt 1) und Port 0.0 für Interruptsignale vom Tastenfeld im

Terminal.

Um eine Echtzeituhr (RTC) bereitstellen zu können, muss ein spezieller

Uhrenquarz mit 32768 Hertz an der Takteingang Port 3 geschaltet werden.

Dieser muss unter Umständen mit einem Serienwiderstand (siehe Datenblatt) beschaltet werden. Nach ausgiebigen Tests habe ich mich für einen

Serienwiderstand von 18 kOhm entschieden.

Abbildung 19: LPC935 (ähnlich LPC936)

Seite 24 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

3.4.2 I²C-Bus

Der I²C-Bus ist ein synchroner serieller Zweidrahtbus mit einer Daten- und einer

Taktleitung, welcher zur Kommunikation zwischen ICs (daher auch der Name:

„inter integrated circuit bus“) auf kurzen Distanzen dient.

In einem I²C-Bus gibt es mindestens einen Master und bis zu 128 Slaves. Der

Masterbaustein spricht die Slavebausteine über 7-Bit Adressen an und teilt ihm mit, ob er lesen oder schreiben möchte.

Erst dann werden die Daten auf den

Bus gelegt.

Die Übertragungsgeschwindigkeit im

Standard mode beträgt 100kBit/s.

Mit dem I²C-Bus-Treiber P82B715 war es mir möglich den Bus über eine

Strecke von 15 Metern zu betreiben, wobei laut Hersteller und Spezifikation

Abbildung 20: I²C-Bus

50 Meter möglich sein sollen. (siehe Datenblatt)

Einbindung in das Projekt

Der I²C-Bus ist mit dem vieradrigen Übertragungskabel das Verbindungselement zwischen den Stationen, wobei die Zentrale den Master und das Terminal und die Verteiler die Slaves darstellen. Neben der Daten- und Taktleitung werden zusätzlich die Versorgungsspannung und das jeweils benötigte Interrruptsignal

übertragen. Die Masseverbindung zwischen den Geräten wird über eine mitgeführte, nicht isolierte Kupferader realisiert. Zusätzlich besitzt des Kabel eine Folienschirmung, welche ich nicht weiter genutzt habe.

Die Kabelenden sind mit

Schraubklemmen auf den Platinen in den Geräten befestigt und, wenn

Abbildung 21: Signalbelegung am

Übertragungskabel mechanisch möglich, mit Zugentlastungen versehen.

Seite 25 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

3.4.3 P82B715 (I²C-Bus-Verstärker)

Der P82B715 ist ein bipolarer IC welcher für die Verstärkung I²C-Bus-Systemen entwickelt wurde. Er ermöglicht das Verwenden langer Übertragungsmedien ohne jegliche Einschränkung der Funktionen des I²C-Busses. Ein Baustein enthält zwei Verstärker, einen für das

Datensignal und einen für das Taktsignal.

Die Leitungslänge, über ein paar Meter, wird durch die maximale Gesamtkapazität

(400pF) des I²C-Busses begrenzt.

Der P82B715 reduziert die

Leitungskapazität um den Faktor 10 und ermöglicht eine Gesamtkapazität von ungefähr 3000pF über den gesamten Bus.

Somit sind Übertragungsstrecken von bis zu 50 Metern, unter Umständen auch mehr, möglich.

Wie in Abbildung 22 zusehen, hat der

Verstärker vier Ein- bzw. Ausgänge.

'X' und 'Y' steht für die beiden Kanäle

Abbildung 22: Treiberbaustein P82B715

SDA (Daten) und SCL (Takt). 'S' und 'L' könnte man mit 'short' und 'long'

übersetzen, denn 'S' steht für die ungepufferte kurze Übertragungsstrecke zum

Beispiel vom Mikrocontroller zum Verstärker und 'L' für die lange gepufferte

Strecke zum nächsten I²C-fähigen Bauteil.

Abbildung 23: Aufbau I²C-Bus mit P82B715

Um einen bidirektionalen Datentransfer zu ermöglichen muss natürlich für jede

Richtung ein Verstärker betrieben werden.

In meinem Projekt werden für jeden Zweig zwei P82B715 verwendet. Laut

Datenblatt kann auch ein einziger P82B715 für alle Zweige zum Slave hin und jeweils ein Verstärker für jeden Zweig zum Master zurück verwendet werden.

Seite 26 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

Auf der folgenden Abbildung wird die Beschaltung des P82B715 dargestellt.

Links sind die zu verstärkenden Signale SDA und SCL zu sehen und rechts die verstärkten SDA- und SCL-Signale. Auf der 'kurzen' Seite sind die Pull-Up-

Widerstände zehn mal größer als auf der 'langen' Seite.

Abbildung 24: Beschaltung P82B715

3.4.4 PCF8574 (8-Bit Porterweiterung)

Falls die Portpins eines Mikrocontrollers von der Menge her nicht ausreichen sollten, gibt es die Möglichkeit sogenannte Porterweiterungen zu verwenden. In meinem Fall ist es die 8-Bit Porterweiterung PCF8574 von Philipps.

Dieser Baustein wird über den I²C-Bus gesteuert. Es können insgesamt acht

Porterweiterungen dieser Art an einem Bus mit den Adresseingängen A0 bis A2 adressiert werden. Diese drei Adressbits stellen aber lediglich einen Teil der

Gesamtadresse dar. So gibt es von Philipps den PCF8574A, welcher über einen anderen Adressbereich verfügt. Somit wäre es möglich insgesamt 16

Porterweiterungen an einem Bus zu betreiben. Acht PCF8574 und acht

PCF8574A.

PIN Funktion

A0-A2 Adresseingänge

P0-P7 Ein-/Ausgabeports

SDA I²C-Bus Daten

SCL I²C-Bus Takt

/INT Interruptausgang

VDD Spannungsversorgung

VSS Masse

Abbildung 25: PCF8574

Seite 27 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

3.4.5 LCD164ABL (4x16 LC-Display)

Zur Textausgabe am Terminal verwende ich ein blau beleuchtetes LC-Display mit einem HD44780 Controller und vier Zeilen á 16 Zeichen. Wie das folgende

Schaltbild darstellt, wird es mit einem PCF8574 über den I²C-Bus im 4-Bit-Modus gesteuert. Die Pinbelegung ist analog zum Anschluss an den Port 2 des LPC's.

Die Beleuchtung wird über einen freien Portpin eines weiteren PCF's ein und aus geschaltet. Zusätzlich können über zwei Drehpotentiometer der Kontrast und die

Helligkeit der LCD-Beleuchtung abgeglichen werden. Der Interruptausgang wird bei diesem PCF8574 nicht benötigt.

Der nicht benötigte Portpin P3 wird zur Ansteuerung eines Summers, welcher

Tastentöne erzeugt, verwendet. Softwaretechnisch war es so günstiger, als diesen Portpin für die LCD-Beleuchtung zu nutzen.

Abbildung 26: Beschaltung LC-Display

Da die vorhandene Software für ein über I²C-Bus gesteuertes LC-Display für ein nur zweizeiliges LCD konzipiert war, musste ich diese umschreiben.

Grundsätzlich musste nur die Zeilenadressierung geändert werden. Dazu wurden die Zeilenadressen im Treiber an die im Datenblatt stehenden angepasst und eine weitere Routine eingefügt.

Diese Routine wertet aus, ob nun nur die erste und zweite Zeile oder die dritte und vierte Zeile angesprungen werden soll.

Seite 28 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

3.4.6 Keypad (3x4 Tastenfeld)

Da der Anwender die Alarmanlage steuern muss und Zahlen von Null bis Neun zur Pineingabe benötigt, entschied ich mich ein Tastenfeld mit zwölf Tasten in der

Anordnung von 3x4 Tasten zu verwenden.

Die Auswertung eines Tastendruck verläuft wie folgt:

Zum Anfang werden alle Zeilen und Spalten auf

HIGH gesetzt. Die vier Zeilen (Z1 bis Z4) werden zum Auswerten beschrieben und die drei

Spalten (S1 bis S3) gelesen.

Jetzt wird jede Zeile abwechselnd und einzeln auf LOW gesetzt und direkt danach überprüft, ob eine der Spalten auch auf LOW gezogen wurde.

Ist das nicht der Fall wird die Zeile wieder zurück auf HIGH gesetzt und die nächste Zeile auf

LOW gesetzt.

Sollte dabei eine Spalte auch den Zustand LOW haben, so wurde eine Taste gedrückt. Mit der

Information welche Zeile und welche Spalte auf

Abbildung 27: Tastaturmatrix

LOW ist, wird die gedrückte Taste ausfindig gemacht. Sollten also Z1 und S1 auf

LOW sein, bedeutet das, dass die Taste '1' gedrückt wurde. Bei Z1 und S2 ist die gedrückte Taste die Taste '2' und so weiter.

Das Tastenfeld wird ebenfalls mit einem PCF8574 über den I²C-Bus gesteuert.

Es werden sieben der verfügbaren acht Portpins benötigt. Der übrige Portpin steuert, wie schon beschreiben, die Hintergrundbeleuchtung des LC-Displays.

Das Interruptsignal wird an den Port 0.0 des LPC936 geschaltet, da dieser als

'Keyboardinterrupt' dient, Aktionen am Tastenfeld registriert und Tastendrücke auswertet.

Abbildung 28: Beschaltung Tastenfeld

Seite 29 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

3.4.7 Sensorverteilung

Alle Sensoren schalten im geschlossenem Zustand Masse auf die jeweiligen

Portpins der PCF8574. Öffnet einer dieser Sensoren seinen Kontakt, so wird das

Potenzial an den Portpins der PCF8574 durch Pull-Up-Widerstände auf 5 Volt gezogen.

Abbildung 29: Sensorbeschaltung

Da alle Portpins im normalen Zustand im LOW-Zustand bzw. gegen Masse geschaltet sein müssen und trotzdem nicht immer alle acht möglichen Sensoren am Verteiler angeschlossen sein müssen, besteht die Möglichkeit alle acht

Portpins mittels Dip-Schalter mit Masse zu verbinden. Die Sensoranschlüssen werden sozusagen überbrückt.

Der Taster S4 in Abbildung 29 stellt den Schließkontakt eines Alarmsensors dar.

Sollte dieser unter Umständen nicht mehr benötigt werden und wird abgeklemmt, so muss mit dem achtpoligen Dip-Schalter der Kontakt nach Masse überbrückt werden.

Seite 30 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

3.4.8 Netzteil

Im Laufe der Entwicklung der Alarmanlage wurde mir klar, dass ich für diese ein aufwändigeres Netzteil, als geplant, entwickeln musste. Das fing bei der

Notstromversorgung an und endete bei der Ladeschaltung für den verwendeten

12 Volt Bleigel-Akku.

Abbildung 30: Netzteil

Der gewählte Trafo Tr1 gibt maximal 2x 2,5 Ampere bei 2x 12 Volt ab. Das entspricht einer Gesamtleistung von 60 Watt. Das Relais Rel1 sorgt für das

Umschalten zwischen Netzspannung und Notstromversorgung in Form des

12 Volt Akkus mit 7200mAh.

Wenn Netzspannung anliegt, zieht das Relais Rel1 an und schaltet die vom

Brückengleichrichter BR1 gleichgerichtete Wechselspannung an den Ausgang des Netzteils. Die Z-Diode D2 und dessen Vorwiderstand R2 sorgen dafür, dass

Rel1 mit nicht mehr als 12 Volt versorgt wird und D3 hat die Funktion einer

Freilaufdiode, welche negative Spannungsspitzen beim Abschalten von Rel1 kappt.

Sollte nun die Netzspannung aus irgendeinem Grund ausfallen, liegt keine

Spannung mehr an Rel1 an, welches somit wieder zurück fällt. Nun liegt die

Spannung des Akkus am Netzteilausgang an.

Zum Überbrücken des Schaltmoments von Rel1 dient der großdimensionierte

Kondensator C1 mit 10000µF. Damit sich dieser Kondensator während des

Schaltvorgangs nicht über das Rel1 entlädt und dieses womöglich noch speist, muss die Diode D4 als 'Stromsperre' fungieren.

Seite 31 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

3.4.9 Ladeschaltung

Um den 12 Volt Bleigel-Akku laden zu können, musste ich ein Ladegerät mit einbauen. Da es eigentlich nichts bringen würde eine neue Schaltung zu entwickeln, weil schon längst genügend Ladeschaltungen vorhanden sind und verwendet werden, habe ich mich der Erfahrung meines Klassenkameraden

Tanguy D. bedient und seine schon vor Jahren entwickelte Ladeschaltung für

Blei-Akkus benutzt.

Abbildung 31: Ladeschaltung

Die einstellbare Z-Diode IC1 stellt eine vom Akku abhängige Spannungsreferenz ein, welche durch zwei Komparatoren (IC2) mit der Hälfte der tatsächlichen

Akkuspannung verglichen wird.

Während die Spannung zwischen R3 und R4 direktional zur Akkuspannung steigt bzw. sinkt, müssen die beiden Potentiometer R8 und R10 so eingestellt werden, dass Komparator B (IC2B) an der oberen und Komparator A (IC2A) an der unteren Spannungsgrenze schaltet.

Diese beiden Komparatoren steuern ein Flip-Flop, welches aus vier

NAND-Gattern (IC3) aufgebaut ist. Der Ausgang Q des Flip-Flops (Pin 4 IC3b) steuert über einen Vorwiderstand (R13) den Transistor T1 durch, welcher den

Pin 1 des Hochstromrelais Rel2 auf Masse legt. Jetzt zieht das Relais an und der

12 Volt Akku wird direkt an die Ladespannungsquelle geschaltet, während die

Leuchtdiode D5 („Akku lädt“) leuchtet.

Erreicht der Akku den einstellbaren Spannungswert, so wird der Ladevorgang beendet, da das Flip-Flop rückgesetzt wird und T1 nicht mehr durchgesteuert wird. Jetzt leuchtet die vom Flip-Flop-Ausgang /Q (Pin 11 IC3d) gespeiste LED

(„Akku voll“).

Bemerkung: Der Bleigel-Akku sollte nie über 13,8 Volt geladen werden, da er sonst beschädigt werden könnte!

Seite 32 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

3.5 Kostenaufstellung

Hier werden die durch das Projekt entstandenen Kosten aufgelistet, wobei an der ein oder anderen Stelle abgerundet wurde.

Insgesamt wurden zirka 160 elektronische Bauteile verbaut.

Kostenaufstellung:

Materialkosten (Elektronik + Gehäuse): weitere Materialkosten (Mechanik):

Platinen- und Ätzmaterial:

Werkzeuge:

~240 Euro

~ 15 Euro

~ 20 Euro

~ 45 Euro

~320 Euro

Da bei der Planung und Konstruktion der Alarmanlage nicht immer alles beim ersten Mal geklappt hat, mussten Platinen teilweise mehrfach geätzt oder

Werkstücke neu angefertigt werden. Weitere Unkosten entstanden durch defekte

Bauteile und Versandkosten.

Für diese Punkte müssen noch ungefähr ein Achtel der Gesamtkosten (~40€) berechnet werden.

daraus resultierende Gesamtkosten: ~360 Euro

3.6 Bestückungspläne und Materiallisten

Im weiteren Verlauf werden die Bestückungspläne und die dazugehörigen

Materiallisten aufgeführt. In diesen Materialisten sind alle elektronischen Bauteile sowie alle drei Gehäuse aufgelistet.

Die aufgelisteten Bauteile welche nicht in den Bestückungsplänen verzeichnet

sind, beziehen sich auf den Schaltplan unter Punkt 3.3 (Schaltplan, Seite 20).

Seite 33 von 79

David Schulz

Technikerarbeit 2007/2008

3.6.1 Netzteil mit Ladeschaltung

Dokumentation

Alarmanlage

Bestückungsplan 1: Netzteil mit Ladeschaltung

Bezeichnung Bauteil

BR1, BR2

C1

C6

C8

D1

D2

C2

C3

C4

C5, C7

D3, D6

D4

D5

D7

F1, F2

IC1

IC2

IC3

K1, K2, K3

KL1

KL2, KL3

R1

R12, R14

R13

R2

R3, R4, R6

R5

R7

R8, R10

R9, R11

Rel1

Rel2

T1

Tr1

VCC1

Brückengleichrichter 3A

Kondensator 10000µF

Kondensator 47µF

Kondensator 1000µF

Kondensator 470nF

Kondensator 100nF

Kondensator 220µF

Kondensator 2,2µF

LED 5mm grün

Z-Diode 12V

Diode UF4003

Diode 6A

LED „Akku lädt“

LED „Akku voll“

Feinsicherung 2,5A

TL431 Shunt Regulator

TL072CN OP

4011 4xNAND

Stiftleiste 2polig

Schraubklemme 3polig

Schraubklemme 2polig

Widerstand 100kΩ

Widerstand je nach LED

Widerstand 5,6kΩ

Widerstand 47Ω

Widerstand 22kΩ

Widerstand 1,5kΩ

Widerstand 10kΩ

Präzisionspoti 25kΩ

Widerstand 18kΩ

Relais 12V/5A

FRA2 C12 Hochstromrelais

BC337-25

Trafo 2x12V/2x2,5A

Bleigel Akku 12V

Stückzahl Einzelpreis Gesamtpreis

1

1

2

2

1

1

1

1

1

2

2

3

1

1

2

1

1

1

2

1

1

1

1

1

1

2

1

1

2

1

2

1

3

1

2

49 60,82 €

0,10 €

0,10 €

0,10 €

0,10 €

0,10 €

0,55 €

0,55 €

1,00 €

1,00 €

0,04 €

24,57 €

18,55 €

0,91 €

3,40 €

0,06 €

2,00 €

0,50 €

0,50 €

0,29 €

0,11 €

0,15 €

0,12 €

0,07 €

0,50 €

0,21 €

0,11 €

0,10 €

0,04 €

1,20 €

0,07 €

0,02 €

0,21 €

0,14 €

0,10 €

0,10 €

0,20 €

0,20 €

0,30 €

0,10 €

0,10 €

1,10 €

1,10 €

1,00 €

1,00 €

0,04 €

24,57 €

18,55 €

1,82 €

3,40 €

0,12 €

2,00 €

0,50 €

0,50 €

0,58 €

0,11 €

0,15 €

0,12 €

0,07 €

0,50 €

0,21 €

0,22 €

0,10 €

0,04 €

1,20 €

0,07 €

0,06 €

0,21 €

0,28 €

0,10 €

0,20 €

Seite 34 von 79

David Schulz

Technikerarbeit 2007/2008

3.6.2 Hauptmodul

Dokumentation

Alarmanlage

Bestückungsplan 2: Hauptmodul

Bezeichnung Bauteil

C10

C12

C13, C14

C9, C11, C15

D10, D12

Kondensator 22µF

Kondensator 2,2µF

Kondensator 33pF

Kondensator 100nF

LED 5mm rot

IC4

IC5

IC6

IC7

D8, D11

D9

F3

F4

LED 5mm grün

LED 5mm gelb

Feinsicherung 1A

Feinsicherung 800mA

LM 1084 IT5,0 Festspannungsregler

LF 33 CV Festspannungsregler

LPC936 Mikrocontroller

ULN2803

K4, K5, K6, K7, K8 Stiftleiste 2polig

KL4, KL6, KL7, KL8, KL9 Schraubklemme 2polig

KL5

LS1

Schraubklemme 8polig

Alarmgeber

Q1

R15, R16, R22

Quarz 32768Hz

Widerstand 3,3kΩ

R17, R26, R28

R18, R25, R27

R19

R20, R23

R21, R24

Rel3

RN1, RN2

RN3

S1

S2

S3

VCC2

XXX

Widerstand 100kΩ

Widerstand 430Ω

Widerstand 18kΩ

Widerstand 56kΩ

Widerstand 5,1kΩ

Relais 12V/5A

Widerstandsnetzwerk 10kΩ/9polig

Widerstandsnetzwerk 10kΩ/7polig

Resettaster

Paniktaster

Gehäusetaster

9V Block

Sicherungskasten 250x250

Stückzahl Einzelpreis Gesamtpreis

1

1

5

5

1

3

1

1

1

1

1

1

2

1

2

3

1

1

2

1

1

1

1

1

2

1

1

2

3

3

2

1

54 64,53 €

0,37 €

0,10 €

0,09 €

0,11 €

0,17 €

1,20 €

0,12 €

0,29 €

0,29 €

1,66 €

0,78 €

4,09 €

0,30 €

0,02 €

0,13 €

0,54 €

21,95 €

0,14 €

0,10 €

0,10 €

0,10 €

0,10 €

0,10 €

0,10 €

1,00 €

0,12 €

0,09 €

0,12 €

0,25 €

0,25 €

2,00 €

24,55 €

0,37 €

0,10 €

0,18 €

0,33 €

0,34 €

2,40 €

0,12 €

0,29 €

0,29 €

1,66 €

0,78 €

4,09 €

0,30 €

0,10 €

0,65 €

0,54 €

21,95 €

0,14 €

0,30 €

0,30 €

0,30 €

0,10 €

0,20 €

0,20 €

1,00 €

0,24 €

0,09 €

0,12 €

0,25 €

0,25 €

2,00 €

24,55 €

Seite 35 von 79

David Schulz

Technikerarbeit 2007/2008

3.6.3 Verstärker (2 Stück)

Bezeichnung

C16, C17

IC8, IC9

K9, K10

KL10, KL11

R29, R30, R31, R32

Bestückungsplan 3: Verstärker

Bauteil

Kondensator 100nF

P82B715PN I²C-Bus-Verstärker

Steckerleiste 13polig

Schraubklemme 5polig

Widerstand 660Ω

Stückzahl Einzelpreis Gesamtpreis

2

2

2

2

4

12

0,11 €

3,05 €

1,53 €

0,34 €

0,10 €

0,22 €

6,10 €

3,06 €

0,68 €

0,40 €

10,46 €

3.6.4 Busmodul

Dokumentation

Alarmanlage

Bestückungsplan 4: Busmodul

Bezeichnung

K13, K14, K15

KL15

Bauteil

Federleiste 13polig

Schraubklemme 8polig

Stückzahl Einzelpreis Gesamtpreis

3

1

4

1,38 €

2,10 €

4,14 €

2,10 €

6,24 €

Seite 36 von 79

David Schulz

Technikerarbeit 2007/2008

3.6.5 Terminal

Dokumentation

Alarmanlage

Bestückungsplan 5: Terminal

Bezeichnung

C18, C20, C21, C22

C19

F5

IC10

IC11

IC12, IC14

IC13, IC15

IC16

K10

K11

KL12

LS2

R33, R34

R35, R36

R37

R38, R39, R41

R40

RN4, RN5

T2, T3

XXX

XXX

Bauteil

Kondensator 100nF

Kondensator 10µF

Feinsicherung 1,0A

LV 4940 V5 Festspannungsregler

P82B715PN I²C-Bus-Verstärker

Dip-Schalter 3polig

PCF8574P 8-Bit Porterweiterung

LCD 164A BL

Steckleiste 7polig

Steckleiste 16polig

Schraubklemme 5polig

Summer

Widerstand 660Ω

Widerstand 3,3kΩ

Widerstand 22Ω

Präzisionspoti 10kΩ

Widerstand 39Ω

Widerstandsnetzwerk 100kΩ/4polig

BS108 Mosfet

Pultbox

Tastenfeld 3x4 Tasten

Stückzahl Einzelpreis Gesamtpreis

1

1

2

2

3

1

2

1

1

2

1

1

1

1

2

2

1

1

4

1

1

0,11 €

0,25 €

0,29 €

0,77 €

3,05 €

0,40 €

1,85 €

29,50 €

0,42 €

0,96 €

0,34 €

0,75 €

0,10 €

0,10 €

0,10 €

0,55 €

0,10 €

0,10 €

0,14 €

10,52 €

6,10 €

0,44 €

0,25 €

0,29 €

0,77 €

3,05 €

0,80 €

3,70 €

29,50 €

0,42 €

0,96 €

0,34 €

0,75 €

0,20 €

0,20 €

0,10 €

1,65 €

0,10 €

0,20 €

0,28 €

10,52 €

6,10 €

32 60,62 €

Seite 37 von 79

David Schulz

Technikerarbeit 2007/2008

3.6.6 Verteiler

Bestückungsplan 6: Verteiler

Bezeichnung

C23, C25, C26

C24

F6

IC17

IC18

RN6

RN7

S1

S2

S3

XXX

IC19

IC20

IC21

K12

KL13

KL14

R42, R43

R44, R45

Bauteil

Kondensator 100nF

Kondensator 22µF

Feinsicherung 250mA

L 4940 V5 Festspannungsregler

P82B715PN I²C-Bus-Verstärker

Dip-Schalter 3polig

PCF8574P 8-Bit Porterweiterung

Dip-Schalter 8polig

Stiftleiste 16polig

Schraubklemme 5polig

Schraubklemme 2polig

Widerstand 660Ω

Widerstand 3,3kΩ

Widerstandsnetzwerk 100kΩ/4polig

Widerstandsnetzwerk 100kΩ/9polig

Deckeltaster

Magnetkontakt

Bewegungsmelder

VdS Lötverteiler 32polig

Stückzahl Einzelpreis Gesamtpreis

1

1

1

1

1

1

2

2

1

1

1

1

1

1

1

1

3

1

1

0,11 €

0,37 €

0,29 €

0,77 €

3,05 €

0,40 €

1,85 €

0,41 €

0,32 €

0,34 €

0,13 €

0,10 €

0,10 €

0,10 €

0,12 €

0,00 €

5,40 €

15,15 €

8,50 €

0,33 €

0,37 €

0,29 €

0,77 €

3,05 €

0,40 €

1,85 €

0,41 €

0,32 €

0,34 €

0,13 €

0,20 €

0,20 €

0,10 €

0,12 €

0,00 €

5,40 €

15,15 €

8,50 €

23 37,93 €

Dokumentation

Alarmanlage

Seite 38 von 79

David Schulz

Technikerarbeit 2007/2008

3.7 Layout und Bilder

3.7.1 Netzteil mit Ladeschaltung

Dokumentation

Alarmanlage

Layout 1: Netzteil mit Ladeschaltung

Abbildung 32: Unterseite Netzteil Abbildung 33: Oberseite Netzteil

Seite 39 von 79

David Schulz

Technikerarbeit 2007/2008

3.7.2 Hauptmodul

Dokumentation

Alarmanlage

Layout 2: Hauptmodul

Abbildung 34: Unterseite Hauptmodul Abbildung 35: Oberseite Hauptmodul

Die Platine unterscheidet sich geringfügig vom Layout, da dieses auf einem neueren Stand ist. Dieser Missstand der Platine wurde, wie in Abbildung 34 zu sehen, mittels Drahtbrücken behoben.

Seite 40 von 79

David Schulz

Technikerarbeit 2007/2008

3.7.3 Verstärker

Layout 3: Verstärker

Dokumentation

Alarmanlage

Abbildung 36: Unterseite Verstärker Abbildung 37: Oberseite Verstärker

Seite 41 von 79

David Schulz

Technikerarbeit 2007/2008

3.7.4 Busmodul

Layout 4: Busmodul

Abbildung 38: Unterseite Busmodul Abbildung 39: Oberseite Busmodul

Dokumentation

Alarmanlage

Seite 42 von 79

David Schulz

Technikerarbeit 2007/2008

3.7.5 Terminal

Dokumentation

Alarmanlage

Layout 5: Terminal

Abbildung 40: Unterseite Terminal Abbildung 41: Oberseite Terminal

Abbildung 42: Terminal komplett, ohne Gehäuse

Seite 43 von 79

David Schulz

Technikerarbeit 2007/2008

3.7.6 Verteiler

Dokumentation

Alarmanlage

Layout 6: Verteiler

Abbildung 43: Unterseite Verteiler Abbildung 44: Oberseite Verteiler

Abbildung 45: Verteiler im Gehäuse

Seite 44 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

4 Software

Die komplette Software für die Alarmanlage wurde mit dem Programm µVision der Firma Keil in der Programmiersprache C erstellt. I²C-Bus- und LCD-Treiber sind in Assembler geschrieben und mussten deswegen auch in dieser

Programmiersprache editiert und angepasst werden. Die von mir um das

EPM-900 Experimentierboard konstruierte Entwicklungsumgebung konnte so komplett programmiert und getestet werden, bevor die Software mit dem fertigen

Produkt laufen durfte.

4.1 Voreinstellungen und Grundlagen

Grundlegende Einstellungen und Vorüberlegung, welche die Software betreffen, werden hier aufgelistet und erklärt.

Dazu gehören zum Beispiel alle Port- sowie Interrupteinstellungen und die

Adressvergabe der PCF8574 im I²C-Bus.

4.1.1 Adressen im I²C-Bus

Die dezimale Adresse aus dem C-Programm wird im I²C-Bus-Treiber in die reale

Adresse für den I²C-Bus umgerechnet.

Adresse (dezimal)

0

1 bis 6

7

Baustein

PCF8574 für LC-Display

PCF8574 für Verteiler 1 bis 6

PCF8574 für Tastenfeld

Tabelle 4: Adressen

4.1.2 Benutzerkonten

Jedes Benutzerkonto verfügt über eine vier-, sechs- bzw. achtstellige PIN und ein sogenanntes Benutzerflag. Dieses Benutzerflag zeigt an, ob eine PIN vorhanden ist und diese auch gültig ist.

Über das Benutzerflag kann ein Benutzer gesperrt und auch freigegeben werden, wobei die PIN erhalten bleibt.

Seite 45 von 79

David Schulz

Technikerarbeit 2007/2008

4.1.3 Porteinstellungen

Portpin Konfiguration

P0.0

Quasi-Bidirektional

P0.1

Quasi-Bidirektional

P0.2

Quasi-Bidirektional

P1.2

Open-Drain

P1.3

Open-Drain

P1.4

Input Only

P1.5

Reset

P2.0

Quasi-Bidirektional

P2.1

Quasi-Bidirektional

P2.5

Quasi-Bidirektional

P2.6

Quasi-Bidirektional

P2.7

Quasi-Bidirektional

Tabelle 5: Portkonfigurationen

Funktion

Interrupt Tastenfeld

Interrupt Paniktaster

Interrupt Gehäusetaster

I²C-Bus SCL

I²C-Bus SDA

Interrupt Verteiler

Resettaster

Alarmausgang + LED „Alarm“ invertierter Alarmausgang

LED „Anlagenstatus“

LED „I²C-Bus-Zugriff“

LED „I²C-Bus-Fehler“

Dokumentation

Alarmanlage

4.1.4 zusätzliche Funktionen

LCD-Standby automatischer Rücksprung

Die LCD-Hintergrundbeleuchtung schaltet sich nach einer voreingestellten und vom Benutzer definierbaren Zeit ab. Um sie wieder aktivieren zu können, muss einfach eine beliebige Taste gedrückt werden.

Das Programm springt nach einer bestimmten

Inaktivitätszeit, in der das Programm im Menü verweilt, wieder zurück in den

Anmeldebildschirm. Durch erneute Pineingabe kann wieder auf das System zugegriffen werden.

Seite 46 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

4.1.5 Interrupts

Interrupt

1

2

3

7

10

14

Name

Timer 0

Externer Interrupt 1

Timer 1

Keyboardinterrupt

Real Time Clock

Data EEPROM write complete

Priorität

1

Verwendung

LCD-Beleuchtungszeit,

Rücksprungzeit, allgemeine

Wartezeit, zeitgesteuerte

Scharfschaltung der Alarmanlage

2

2

0

Interrupt für alle (Raum-) Verteiler

Alarmverzögerung bei Türöffnung

Interrupt für Tastendruck an Terminal sowie für Panik- und Gehäusetaster

3

0

Echtzeituhr steuert Flag für Lesezugriff auf

EEPROM im Mikrocontroller

Tabelle 6: Interrupts

Timer 0 sowie Timer 1 lösen, wenn sie aktiviert sind, alle 10ms die dazugehörige

ISR (Interrupt-Service-Routine) aus. Dies entspricht bei 7,3728MHz Taktfrequenz des Internen RC-Oszillators einem Reloadwert von 28635 (0x6FDB).

Am Port 0 lösen Pin 0, 1 und 2 den Keyboardinterrupt aus. Die ISR wertet aus welcher der drei Portpins den Interrupt ausgelöst hat und handelt dementsprechend. Die Konfiguration des dafür zuständigen Registers KBMASK erfolgt während des Programms je nach Funktionen und Einstellungen.

4.1.6 Zeitstruktur

Um die vier Zugriffszeiten speichern zu können, habe ich eine Struktur angelegt, welche die jeweilige Uhrzeit und den dazugehörigen Benutzer enthält. Zusätzlich ist die Systemzeit und die Zeit zur automatischen Scharfschaltung der

Alarmanlage in dieser Struktur enthalten.

Zeitarray struct_time[0].array Systemzeit

Verwendung struct_time[1].array Zeitsteuerung struct_time[2].array letzter angemeldeter Benutzer struct_time[3].array letzte Scharfschaltung der Anlage struct_time[4].array letzter Alarm struct_time[5].array letzte Entschärfung

Tabelle 7: Struktur für alle Uhrzeiten

Seite 47 von 79

David Schulz

Technikerarbeit 2007/2008

4.2 Menüstruktur

Dokumentation

Alarmanlage

Abbildung 46: Menüstruktur

Regulär befindet sich das Programm im gesperrten Bildschirm (Anmeldung).

Von dort gelangt der Anwender, nach der Eingabe eines Passworts bzw. einer

Pin, ins Hauptmenü. Im Hauptmenü können die jeweiligen Untermenüs angewählt werden. Wählt der Benutzer den zweiten Menüpunkt des Hautmenüs

(System sperren), so springt das Programm wieder zurück in den gesperrten

Bildschirm und verhindert dadurch einen unautorisierten Zugriff auf das System.

Um den Text auf dem LC-Display gut lesen zu können, muss die Beleuchtung des LCDs aktiviert sein. Um Strom zu sparen wird die LCD-Beleuchtung nach einer einstellbaren Zeit von 10, 20 bzw. 30 Sekunden deaktiviert. Wenn das

Hintergrundlicht aus ist genügt ein Tastendruck auf das Tastenfeld, um es zu aktivieren. Dieser Tastendruck wird jedoch nicht als normaler Tastendruck gewertet, sondern dient nur der Aktivierung des Hintergrundbeleuchtung.

Um die Alarmanlage vor unerlaubten Zugriffen zu schützen, springt das

Programm automatisch nach 30, 60 oder 90 Sekunden zurück zum

Anmeldebildschirm.

Seite 48 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

4.3 Programmstruktur

Das Programm umfasst neben der Hauptfunktion main 64 Unterprogramme

(Funktionen), 32 globale und mehrere, nicht gezählte, lokale Variablen.

Insgesamt wurde das Programm auf neun

Dateien aufgeteilt:

Assembler-Files: Treiber für LCD und I²C-

Bus, wobei der LCD-Treiber den I²C-Bus-

Treiber mitbenutzt.

C-Files: Alle Funktionen sowie

Konfigurationsroutinen wurden zur besseren Übersicht auf fünf C-Dateien aufgeteilt.

H-Files: Alle Variablen und Funktionen wurden in separaten Bibliotheksdateien deklariert und initialisiert.

Abbildung 47: Programmstruktur

Dateiname Inhalt a_main.c

Enthält die Hauptfunktion main sowie alle Menü- und

Navigationsfunktionen und die Routine zur Auswertung des 3x4

Tastenfeldes am Terminal.

alr_con.c

alr [=alarm], con [=controller],

Funktionen für Überwachung und Alarmauslösung sowie zur

Initialisierung und Verwaltung der Controller [=(Raum-) Verteiler].

int_eep.c

int [=interrupt], eep [=eeprom],

Interrupt-Service-Routinen und Funktionen für EEPROM-Zugriff.

pin_misc.c pin [=personal indetification number], misc [=miscellaneous],

Beinhaltet alle Funktionen, welche der Pinverarbeitung dienen und verschiedene, kleinere Funktionen.

set_str.c

set [=setup], str [=string],

Hier befinden sich Setup-Funktionen und

Stringverarbeitungsfunktionen.

Tabelle 8: Programmstruktur

Die Deklaration aller Variablen und Funktionsprototypen erfolgt neben der

Definition aller Präprozessoranweisungen im Header library.h und die

Initialisierung der Variablen im Header variables.h.

Seite 49 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

4.4 Funktionsübersicht

4.4.1 a_main.c

Name main () men_block () men_main () men_alarm_main () men_admin_main () men_admin_user () men_admin_last () men_config_main () men_config_alr () men_config_act () men_config_dly () men_config_men () men_config_jmp () men_config_lcd () men_config_rtc () men_edit_user () men_show_last () nav_menu () nav_cursor () kpd_eval () kpd_wait ()

Tabelle 9: Funktionen in a_main.c

Beschreibung

Hauptprogramm

Menüsperre (Anmeldebildschirm)

Hauptmenü

Alarmmenü

Verwaltungsmenü

Benutzerverwaltung

Auswahlmenü Systemzugriffe

Konfigurationsmenü

Übersichtsmenü „Alarmeinstellungen“

Alarmverzögerungszeit auswählen

Verzögerungszeit für Anlagenaktivierung auswählen

Übersichtsmenü „Menüeinstellungen“

Inaktivitätszeit auswählen

LCD-Beleuchtungszeit auswählen

Systemzeit einstellen

Benutzerkonto je nach Auswahl editieren

Systemzugriff anzeigen

Menünavigation

Cursorbewegung

Tastendruck auswerten auf Tastendruck warten

Seite 50 von 79

David Schulz

Technikerarbeit 2007/2008

4.4.2 alr_con.c

alarm () alr_ready ()

Name con_check () con_init ()

Tabelle 10: Funktionen in alr_con.c

Beschreibung

Alarm und Alarmflag de-/aktivieren

Routine für Einbruchsdetektierung

Statusprüfung der Sensoren

Verteiler (Controller) initialisieren

Dokumentation

Alarmanlage

4.4.3 int_eep.c

Name

Timer0 () ISR Interrupt 1

ExInt1 () ISR Interrupt 2

Timer1 () ISR Interrupt 3

KBI () ISR Interrupt 7

Beschreibung

siehe 4.1.5 Interrupts (Seite 47, Tabelle 5)

RTC () ISR Interrupt 10

EEPROM () ISR Interrupt 14 eep_int_set () eep_fla_write () eep_pin_call () eep_pin_read () eep_pin_write () de-/aktiviert Interrupts beim Zugriff auf EEPROM schreibt Benutzerflag in EEPROM holt, wenn vorhanden, alle PINs aus EEPROM liest PIN aus EEPROM aus schreibt PIN in EEPROM

Tabelle 11: Funktionen in int_eep.c

Seite 51 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

4.4.4 pin_misc.c

Name pin_change () pin_checkall () pin_fail () pin_input () pin_set () ack () nack () aud_beep () aud_fail () info () lcd_light () tim_set () tim_set_rtc () tim_show wait () welcome () text_big ()

Tabelle 12: Funktionen in pin_misc.c

Beschreibung

PIN ändern

Prüfung der eingegebenen PIN auf Gültigkeit

Ausgabe bei fehlerhafter Pineingabe

PIN eingeben

PIN zuweisen

Ausgabe Änderungsbestätigung

Ausgabe Abbruchmeldung

Ausgabe Einzelton

Ausgabe Fehlerton

Ausgabe Projektinformation de-/aktiviert LCD-Beleuchtung

Zeit einstellen

Systemzeit einstellen

Uhrzeit anzeigen

Warteschleife (interruptgesteuert)

Begrüßungstext

LCD-Ausgabe

Seite 52 von 79

David Schulz

Technikerarbeit 2007/2008

4.4.5 set_str.c

Name set_int () set_lcd () set_pcf () set_por () set_rtc () string_compare () string_copy ()

Tabelle 13: Funktionen in set_str.c

Beschreibung

Interrupteinstellungen

LCD-Initialisierung

Ausgangsposition PCF8574

Portkonfiguration

Initialisierung Echtzeituhr

String vergleichen (ähnlich strcmp ())

String kopieren (ähnlich strcpy ())

Dokumentation

Alarmanlage

4.4.6 driver-lcd.a51/driver-pcf.a51

Name lcd_clr () lcd_init () lcd_cur_off () lcd_cur_on () lcd_move () printchar () printhex () printstring () pcf_read () pcf_write ()

Tabelle 14: Funktionen in driver-lcd.a51 und driver-pcf.a51

Beschreibung

LCD-Anzeige löschen

LCD initialisieren

Cursor unsichtbar

Cursor sichtbar

Cursor setzen/bewegen

ASCII-Zeichen ausgeben

Hex-Wert ausgeben

Zeichenkette ausgeben

Wert aus Porterweiterung lesen

Wert in Porterweiterung schreiben

Seite 53 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

4.5 Funktionsbeschreibung

Funktionsname

Datei main () a_main.c

Übergabeparameter keine

Rückgabewerte keine

Beschreibung In der Hauptfunktion werden als erstes alle Zeitarrays auf

„00:00“ gesetzt. Danach wird die gesamte Konfiguration in Form von Unterprogrammen durchgeführt.

Als nächstes werden alle angeschlossenen Verteiler initialisiert und registriert und danach die Systemzeit eingestellt. Wenn kein gültiges Administratorpasswort vorhanden ist, muss dieses eingegeben werden. Alle gültigen Passwörter der restlichen Benutzerkonten werden geladen, wenn sie vorhanden sind.

Tabelle 15: Funktionsbeschreibung main ( ) main ( )

Zählvariable deklarieren alle Zeitarrays auf "00:00" setzen

I²C-Busüberwachung aktiveren

InterruptKonfiguration [set_int ( )]

RTC-Konfiguraton [set_rtc ( )]

Timer 0 starten

2 Sekunden warten [wait (200)]

Portkonfiguration [set_por ( )]

LCD-Konfiguration [set_lcd ( )]

Alarm deaktiveren [alarm (0)]

LCD-Beleuchtung aktivieren [lcd_light (1)]

LCD-Ausgabe der Textlänge ensprechend warten

Controllerinitialisierung [con_init ( )]

Systemzeit einstellen [tim_set_rtc ( )]

Bestätigung der Einstellungen [ack ( )]

PINs aus EEPROM laden [eep_pin_all ( )] solange Administratorpin ungültig

Administratorpin zuweisen

Paniktaster freischalten

Endlosschleife

Sperrmenü aufrufen [men_block ( )]

Struktogramm 1: main ( )

Seite 54 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

4.5.1 Menüführung

Funktionsname

Datei men_block () a_main.c

Übergabeparameter keine

Rückgabewerte keine

Beschreibung Hier befindet sich das Programm standardmäßig im sogenannten Anmeldebildschirm. Bevor der Anwender auf das Systemzugreifen kann, muss er eine gültige PIN eingeben. Nach einer bestimmten Inaktivitätszeit im regulären Menü springt das Programm zurück in den

Anmeldebildschirm um unerlaubte Zugriffe zu verhindern.

Tabelle 16: Funktionsbeschreibung men_block ( ) men_block ( )

Variable für Benutzererkennung deklarieren wenn automatisch zurück gesprungen wurde und LCD-Beleuchtungsflag

NICHT Null ist

J

LCD-Beleuchtungsflag auf 0 setzen automatischen Rücksprung deaktivieren

Rücksprungflag löschen automatische LCD-Beleuchtungsabschaltung aktivieren

LCD-Ausgabe löschen [clr_lcd ( )]

N

Alarmstatusflag auswerten wenn Alarm an ist

LCD-Ausgabe: "ALARM!"

LCD-Beleuchtungsflag auf 2 setzen default standard

LCD-Ausgabe:

"System gesperrt!" restlichen Text ausgeben [text_big ( )] auf tastendruck warten [kpd_wait ( )]

J

Taste gedrückt?

PIN-Eingabe und -Überprüfung [pin_check_all ( )]

N eingegebene PIN gültig?

J

Alarm ausschalten [alarm (0)]

LCD-Ausgabe & Wartezeit

Tastenpuffer löschen

N

Abbruchmeldung auf

LC-Display:

"Abgebrochen!"

Hauptmenü aufrufen [men_main ( )] letzten angemeldeten Benutzer merken

Zeit des Zugriffs speichern

Endlosschleife

Struktogramm 2: men_block ( )

Seite 55 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

Funktionsname

Datei -

Menü allgemein (keine Funktion)

Übergabeparameter keine

Rückgabewerte keine

Beschreibung Im groben sieht jedes Menü so wie das folgende Beispiel aus. Nach der Deklaration aller lokalen Variablen beginnt die fußgesteuerte Schleife, in der als erstes die

Menütextausgabe auf dem LCD erscheint. Danach wird die Menünavigation aufgerufen, welche auf eine Eingabe am Terminal wartet und den Tastendruck auswertet. Mit einem Pfeil am Zeilenanfang kann jeder Menüpunkt einzeln markiert werden. Sollte ein Menüpunkt ausgewählt werden, so gibt die Funktion der

Menünavigation den Rückgabewert 1 aus. Somit springt das Programm in die If-Anweisung und wertet die aktuelle Cursorposition aus. Je nach Position des

Cursors wird die dementsprechende Funktion innerhalb der Switch-Case-Anweisung aufgerufen.

Sollte die Anwendung wieder aus dem Untermenü herausspringen, so beginnt die komplette Menüroutine mit der LCD-Ausgabe von vorne.

Tabelle 17: Funktionsbeschreibung Menü allgemein

Menü allgemein

Deklaration aller nötigen lokalen Variablen

LCD-Ausgabe (Menü)

Menünavigation [nav_menü ( )] gültige Taste gedrückt?

J

1 erstes

Untermenü

2 zweites

Untermenü aktuelle Cursorposition

3 auswerten drittes

4

Untermenü viertes

Untermenü solange Rückgabewert nicht Null

Struktogramm 3: Menü allgemein

N

Seite 56 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

Funktionsname

Datei men_main () a_main.c

Übergabeparameter keine

Rückgabewerte keine

Beschreibung Die Funktion men_main () stellt den Ursprung des gesamten Menüs dar. Von hier aus kann der Anwender, wenn er über die nötigen Rechte verfügt, zu jeder vorhandenen Funktion navigieren.

Mit dem zweiten Menüpunkt „System sperren“ springt das Programm zurück in den Anmeldebildschirm.

Tabelle 18: Funktionsbeschreibung men_main ( ) men_main ( ) lokale Variablen deklarieren automatischen Rücksprung aktivieren

J eingeschränkte Menüdarstellung

Merker auf eingeschränktes Menü setzen wurde Menü neu aufgerufen?

autorisierter Benutzer?

J erweiterte Menüdarstellung

Merker auf erweitertes Menü setzen

Menüführung [nav_menu ( )]

N

J

1

2

Menü:

Alarm

Flag für automatischen

Rücksprung setzen

Tastenpuffer löschen gültige Taste gedrückt?

3 aktuelle Cursorposition auswerten

Menü:

4

Verwaltung

Menü:

Konfiguration

J

Fehlerton wenn nicht automatisch zurück gesprungen wird wird automatisch zurück gesprungen?

J

Flag zum automatischen Rücksprung setzen solange System nicht gesperrt wird

Struktogramm 4: men_main ( )

N

N

N

N

Seite 57 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

4.5.2 Navigation

Funktionsname

Datei nav_men () a_main.c

Übergabeparameter Cursorposition, oberster und unterster Menüpunkt

Rückgabewerte 1=Menüpunkt wählen oder 0=zurück

Beschreibung Der durch die Funktion kpd_wait () entstandene Wert im

Tastenpuffer wird durch die Switch-Case-Anweisung ausgewertet.

Tabelle 19: Funktionsbeschreibung nav_men () nav_menu ( )

Cursorbewegung im Menü [nav_cursor ( )] auf Tastendruck warten [kpd_wait ( )]

J

'2'

Cursor nach oben

J setzen

Cursor an erster

Stelle?

Cursor an letzte Stelle wurde Taste gedrückt?

N

'5'

1 zurück geben

'8'

Cursor nach unten

J

Cursor an unterster

Stelle?

Cursor an erste Stelle setzen gedrückte Taste auswerten

'0' default

N

0 zurück geben

Fehlerton

[aud_fail ( )]

N

Endlosschleife

Struktogramm 5: nav_menu ( )

Seite 58 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

Funktionsname

Datei kpd_wait () a_main.c

Übergabeparameter keine

Rückgabewerte keine

Beschreibung In dieser Funktion wird hauptsächlich auf einen

Tastendruck gewartet. Dies geschieht in einer While-

Schleife mit dementsprechender Bedingung. Der

Tastendruck löst einen Interrupt aus und wird somit bearbeitet. Der Interrupt für das Tastenfeld wird erst kurz vor der Warteschleife aktiviert und direkt danach wieder deaktiviert, um Fehlfunktionen während des gesamten

Programmablaufs zu vermeiden.

Tabelle 20: Funktionsbeschreibung kpd_wait ( ) kpd_wait ( ) wenn nicht automatisch zurück gesprungen wird

J

LCD-Beleuchtung bereits aus?

J

LCD-Beleuchtungsflag setzen

Tastenpuffer löschen

Keyboardinterrupt für Tastenfeld freigeben solange keine Taste gedrückt wurde

(auf interruptgesteuerten Tastendruck warten)

N

Keyboardinterrupt für Tastenfeld sperren wird nicht automatisch zurück gesprungen und wurde eine Taste gedrückt?

J

Tastenton [aud_beep ( )]

Struktogramm 6: kpd_wait ( )

N

N

Seite 59 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

Funktionsname

Datei

KBI () interrupt 7 int_eep.c

Übergabeparameter keine

Rückgabewerte keine

Beschreibung Nachdem der Tastenpuffer gelöscht wurde überprüft die

ISR des Keyboardinterrupts, ob eine Taste am Tastenfeld im Terminal betätigt wurde. Ist das der Fall, wird der

Tastendruck durch die Funktion kpd_eval () ausgewertet.

Sollte keine Taste gedrückt worden sein, sie besteht die

Möglichkeit, dass der Panik- oder Gehäusetaster ausgelöst wurden. In diesem Fall wird sofort der Alarm aktiviert und der Interrupt für diese beiden Taster gesperrt. Zusätzlich werden Menüvariablen so verändert, dass das Programm in den gesperrten Bildschirm springt und dort auf eine Pineingabe zu Deaktivierung des

Alarms wartet.

Tabelle 21: Funktionsbeschreibung KBI ( ) interrupt 7

KBI ( ) interrupt 7

Tastenpuffer löschen

J

Taste gedrückt?

Tastendruck auswerten

[kpd_eval ( )]

Gehäuse offen oder

Paniktaster gedrückt?

J

Alarm aktivieren [alarm ( )]

Externen Timer 1 sperren

Zeitzähler für Rücksprungautomatik

Null setzen

Interrupt für Panik- und

Gehäusetaster deaktivieren

Anweisung

Interrupflag löschen

N

N

Struktogramm 7: KBI ( ) interrupt 7

Seite 60 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

Funktionsname

Datei kpd_eval () a_main.c

Übergabeparameter keine

Rückgabewerte keine

Beschreibung Grundlegend ist die Routine, mit der das Tastenfeld softwaretechnisch angesteuert wird genau die selbe wie

unter Punkt 3.4.6 (Keypad, Seite 29) beschrieben.

Um eine Endlosschleife durch das Ausbleiben eines

Tastendrucks zu verhindern, wurde ein lokaler Zähler implementiert. Durch diesen Zähler wird die

Ansteuerungsroutine des Tastenfeldes nur so oft durchlaufen, wie groß der Zähler definiert wird.

Tabelle 22: Funktionsbeschreibung kpd_eval () kpd_eval ( ) lokalen Zähler deklarieren

LCD-Beleuchtungsstatus setzen

Zeitzähler für automatischen Rücksprung und LCD-Standby neu laden

Zeile inkrementieren

J

Zeile auf 1 setzen ist Zeile größer 4?

1 erste

Tastenfeldzeile auf

LOW setzen

[pcf_write ( )]

2 zweite

Tastenfeldzeile auf

LOW setzen

[pcf_write ( )]

3 dritte

Tastenfeldzeile auf

LOW setzen

[pcf_write ( )]

Zeile auswerten

4 vierte

Tastenfeldzeile auf

LOW setzen

[pcf_write ( )]

Wert aus PCF des Tastenfeldes auslesen [pcf_read ( )]

Rückgabewert maskieren

0x30

Spalte 1 setzen

0x50

Spalte 2 setzen

0x60

Spalte 3 setzen

Rückgabewert auswerten default

Spalte 0 setzen internen Zähler dekrementieren solange keine Taste gedrückt wurde und interner Zähler nicht Null ist

PCF am Tastenfeld in Ausgangsposition setzen [pcf_write ( )] wurde Taste gedrückt?

N

N J

Tastenwert aus Matrix in Tastenpuffer schreiben solange Taste nicht losgelassen wird wenn Paniktaster gedrückt wird

J

Alarm aktivieren [alarm ( )]

Zeitzähler für automatischen Rücksprung Null setzen

N

Struktogramm 8: kpd_eval ( )

Seite 61 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

4.5.3 Überwachung

Funktionsname

Datei alr_ready () alr_con.c

Übergabeparameter keine

Rückgabewerte 1= „Sensorfehler“ oder 0=Anlage wurde entschärft

Beschreibung In der Funktion alr_ready () wird der eigentliche

„Überwachungszustand“ der Alarmanlage hergestellt.

Das bedeutet, dass alle nötigen Interrupts aktiviert werden.

Als erstes wird sichergestellt, dass vor der

Scharfschaltung alle Fenster und Türen geschlossen sind und die Verteiler betriebsbereit sind. Sollte das nicht der

Fall sein, so springt das Programm nach einer

Fehlermeldung zurück in die vorherige Funktion.

Der Anlagenstatus kann neben einem deaktiviertem

Betrieb folgende Betriebsarten einnehmen:

Aktiviert: Die Anlage ist bereit und im

Überwachungsmodus.

Einbruch: Es wurde ein Eindringen festgestellt. Ab jetzt hat der Eindringling 20 bis 60 Sekunden Zeit eine gültige PIN einzugeben, bevor der Alarm aktiviert wird.

Alarm: Der Alarm wurde ausgelöst und ertönt nun solang, bis eine gültige PIN eingegeben und die

Alarmanlage somit entschärft wird.

Zeitgesteuert: Ein Benutzer hat die Zeitsteuerung der Alarmanlage aktiviert. Das bedeutet, dass die

Alarmanlage zu einer bestimmten Uhrzeit automatisch scharf geschaltet wird. Dieser

Vorgang kann mit der Eingabe einer gültigen PIN abgebrochen werden.

Nach dreimaligem Eingeben einer ungültigen PIN wird mit sofortiger Wirkung der Alarm aktiviert.

Tabelle 23: Funktionsbeschreibung alr_ready ( )

Seite 62 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage alr_ready ( ) sind alle Fenster und Türen, sowie die Zentrale geschlossen?

[con_check ()]

J

Aktivierungszeit und aktiven Benutzer speichern

Interrupt für Gehäusetaster aktivieren automatischen Rücksprung und LCD-Standby deaktivieren wenn Alarmstatus "bereit"

J

Textausgabe je nach eingestellter Verzögerungszeit für die Aktivierung je nach eingestellter Verzögerungszeit warten

LCD-Standby aktivieren

N bereit

LCD-Ausgabe

Überwachung

(Externen

Interrupt 1) aktivieren

Einbruch

LCD-Ausgabe

Rücksprungflag löschen

LED

"Anlagenstatus" anschalten restliche LCD-Ausgabe [text_big ( )] auf Tastendruck warten [kpd_wait ( )]

Alarmstatus auswerten

Alarm

LCD-Ausgabe zeitgesteuert

LCD-Ausgabe

Alarmzeit speichern

N

Fehlerton [aud_fail ( )]

Fehlermeldung

1 zurück geben wenn Taste gedrückt wurde

J

Pineingabe und Überprüfung

Rückgabewert speichern wenn PIN drei mal falsch eingegeben

J

Alarm aktivieren [alarm ()]

N solange keine gültige PIN eingegeben wurde

Interrupt für Gehäusetaster deaktivieren

Überwachung und LED "Anlagenstatus" deaktivieren

Alarm deaktivieren [alarm ( )]

LCD-Ausgabe

Zeit und Benutzer bei Entschärfung speichern

0 zurück geben

N

Struktogramm 9: alr_ready ( )

Seite 63 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

Funktionsname

Datei

ExInt1 () interrupt 2 int_eep.c

Übergabeparameter keine

Rückgabewerte keine

Beschreibung Der Externe Interrupt 1 wird ausgelöst, wenn eine

Zustandsänderung an den Ports der Porterweiterungen

PCF8574 in den Verteilern eintritt (das heißt, wenn ein

Sensor ausgelöst wurde).

In der ISR werden als erstes alle Verteiler Ausgelesen und überprüft, ob denn tatsächlich ein Sensor ausgelöst hat. Sollte das der Fall sein, wird überprüft, ob es ein

Sensor mit oder ohne Zeitverzögerung ist. (nur der zweite

Sensor eines Verteiler ist mit der Zeitverzögerung gekoppelt. Sollte dieser ausgelöst worden sein, so wird

Timer 1 aktiviert, welcher die Zeit bis zur Alarmierung zählt und den Alarm aktiviert, wenn er abgelaufen ist.

Sollte es ein anderer Sensor sein, der ein Eindringen detektiert hat, so wird der Alarm sofort aktiviert und der

Externe Interrupt 1 deaktiviert.

Tabelle 24: Funktionsbeschreibung ExInt1 ( ) interrupt 2

ExInt1 ( ) interrupt 2 alle Sensoren überprüfen [con_check ( )] wurde ein Sensor ausgelöst?

J

Sensor mit Alarmverzögerung?

J

Anlagenstatus auf "Einbruch" setzen Alarm aktivieren [alarm ( )]

N

Tastenpuffer löschen

LCD-Beleuchtung aktivieren

[lcd_light ( )]

LCD-Standby deaktiveren

LCD-Beleuchtungsstatus setzen

Alarmdetektierung deaktivieren

(ExInt1)

Alarmverzögerungszähler aktivieren

(Timer1)

N

Struktogramm 10: ExInt1 ( ) interrupt 2

Seite 64 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

Funktionsname

Datei con_init () alr_con.c

Übergabeparameter keine

Rückgabewerte keine

Beschreibung Die Funktion con_init () ist dafür zuständig alle angeschlossenen und betriebsbereiten Verteiler zu registrieren, damit das Programm später weiß, welche

Verteiler nun tatsächlich am System angeschlossen sind und überwacht werden müssen. Denn falls ein registrierter Verteiler nicht gefunden wird, bedeutet das, dass eine Störung oder eine Sabotage vorliegt. In beiden

Fällen würde das System nicht scharf geschaltet werden können. Um die automatische Erkennung gewährleisten zu können, musste der I²C-Bus-Treiber angepasst werden. In diesem Treiber befindet sich eine

Fehlerroutine, welche bei einem I²C-Bus-Fehler auftritt.

Da die automatische Erkennung auf fehlerhafter

Kommunikation basiert (ein Verteiler, der nicht angeschlossen ist, verursacht einen Sendefehler), musste die Fehlerroutine de- bzw. aktivierbar sein.

Tabelle 25: Funktionsbeschreibung con_init ( ) con_init ( )

Zähler deklarieren

LCD-Ausgabe

I²C-Bus Fehlerdetektion deaktivieren

Anzahl Verteiler Null setzen und autoatischen Rücksprung deaktivieren bis alle möglichen Verteiler angesprochen wurden

Verteiler vorhanden bzw.

betriebsbereit?

J

Verteileranzahl inkrementieren

N

Verteiler aus con_reg[ ] entfernen

Verteiler in con_reg[ ] registrieren

I²C-Bus Fehlerdetektion wieder aktivieren

LCD-Ausgabe auf Tastendruck warten [kpd_wait ( )] nicht Raute und nicht Stern gedrückt?

J

Fehlerton [aud_fail ( )] solange nicht Raute und nicht Stern gedrückt wird solange nicht Raute oder nicht Stern gedrückt wird alle jetzt registrierten Verteiler auf Ausgangposition setzen [pcf_write ( )] automatischen Rücksprung wieder aktivieren

N

Struktogramm 11: con_init ( )

Seite 65 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

4.5.4 Pinverarbeitung

Funktionsname

Datei pin_input () pin_mis.c

Übergabeparameter Benutzer-ID, Position zur Ausgabe auf dem LC-Display

Rückgabewerte Pinlänge

Beschreibung Die Grundlage der Pinverarbeitung in meinem Projekt stellt die Funktion pin_input () dar. Wie der Name schon sagt, ist sie für die Eingabe jeder PIN zuständig. Sie stellt eine Schleife dar, die solange durchlaufen wird, bis die

Eingabe der PIN mit der #-Taste bestätigt wird.

Da jedes Benutzerkonto unterschiedliche Pinlängen benutzen, begrenzt die Funktion anhand der Benutzer-ID die Gesamtlänge der PIN bei Neueingaben.

Tabelle 26: Funktionsbeschreibung pin_input ( ) pin_input ( ) lokale Variablen deklarieren

Eingabestring unkenntlich machen auf Tastendruck warten [kpd_wait ( )]

J

Bestätigen

Stringendezeichen an

Pinende setzen

Löschen bisherige

Eingabe löschen und index

Null setzen solange eingabe nicht bestätigt wurde

Pinlänge zurückgeben wurde Taste gedrückt?

Tastenpuffer auswerten default wenn Pinlänge noch nicht erreicht

N J gedrückte Taste der neuen PIN zuweisen

LCD-Ausgabe

Index inkrementieren

N

Struktogramm 12: pin_input ( )

Seite 66 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

Funktionsname

Datei pin_change () pin_mis.c

Übergabeparameter Benutzer-ID

Rückgabewerte keine

Beschreibung Mit der Funktion pin_change () besteht die Möglichkeit eine bereits vorhandene Benutzerpin zu ändern. Da ein

Benutzer höhere Priorität einen Benutzer niedrigerer

Priorität editieren kann, wird am Anfang anhand der

Benutzer-ID überprüft, ob es sich um einen solchen Fall handelt oder ein Benutzer sein eigenes Konto editieren möchte. Ist das der Fall, so muss er die alte, noch gültige

PIN eingeben, um eine Neue einzugeben.

Nach drei Fehleingaben bricht die ganz Prozedur ab.

Sollte die alte PIN korrekt eingegeben werden, so wird die Funktion pin_set () zur Eingabe einer neuen PIN aufgerufen.

Tabelle 27: Funktionsbeschreibung pin_change ( ) pin_change ( )

Zähler für Fehleingaben Null setzen ist Priorität des aktiven Benutzers höher als die des zu editierenden Benutzers?

J

LCD-Ausgabe aktuellen PIN eingeben [pin_input ( )] eingegebene PIN auf gültigkeit prüfen [string_compare ( )] eingegebene PIN falsch?

J

Fehlermeldung [pin_fail ( )]

Zähler für Fehleingaben inkrementieren

N solange PIN ungültig und nicht öfter als drei mal flasch eingegeben ist eingegebene PIN gültig?

J

PIN ändern [pin_set ( )] wurde alte PIN drei mal falsch eingegeben?

J

Fehlermeldung [nack ( )]

N

N

N

Struktogramm 13: pin_change ( )

Seite 67 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

Funktionsname

Datei pin_checkall () pin_mis.c

Übergabeparameter keine

Rückgabewerte Benutzer-ID + 1 oder Null

Beschreibung Die Funktion pin_checkall () überprüft nach der

Pineingabe die eingegebene PIN mit der PIN aller freigegebenen Benutzer.

Nach dreimaliger, falscher Eingabe wird der Vorgang abgebrochen und der Wert 0 zurück gegeben. Stimmt die

Eingabe mit einer der Benutzerpins überein, so wird die

Benutzer-ID mit einem Offset von 1 zurück gegeben.

Tabelle 28: Funktionsbeschreibung pin_checkall ( ) pin_checkall ( )

Zähler für Fehleingaben Null setzen

LCD-Ausgabe

PIN eingeben [pin_input ( )] eingegebene PIN mit PINs aller freigegebenen Benutzerkonten vergleichen eingegebene PIN falsch?

J

Zähler für Fehleingaben inkrementieren

Fehlermeldung [pin_fail ( )] solange eingegene PIN falsch und nicht öfter als drei mal falsch eingegeben bei dreimaliger Fehleingabe 0 zurückgeben, ansonsten 1

N

Struktogramm 14: pin_checkall ( )

Seite 68 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

Funktionsname

Datei pin_set () pin_mis.c

Übergabeparameter Benutzer-ID

Rückgabewerte Anzahl der Fehleingaben

Beschreibung Diese Funktion stellt die Zuweisung einer neuen PIN für einen Benutzer dar. Es gibt nach der Eingabe der neuen

PIN eine wiederholte Eingabeaufforderung. Bei dieser

Eingabe muss die neue PIN bestätigt werden. Wurde die

Pinbestätigung drei mal falsch eingegeben, bricht die

Pinänderung ab und die alte PIN bleibt bestehen.

Tabelle 29: Funktionsbeschreibung pin_set ( ) pin_set ( ) lokale Variablen deklarieren

LC-Ausgabe je nach zu editierendem Benutzer

PIN eingeben [pin_input ( )]

Eingabe zwischenspeichern [string_copy ( )]

J

Fehlermeldung eingegebene PIN zu kurz für zu editierenden

Benutzer?

Zähler für Fehleingaben löschen

N

Zähler für Fehleingaben inkrementieren solange eingegebene PIN zu kurz und noch keine drei Fehleingaben eingegebene PIN lang genug für Benutzer?

J

LCD-Ausgabe

PIN wiederholt eingeben [pin_input ( )]

Wiederholung mit vorheriger Eingabe vergleichen [string_compare ( )]

Wiederholung mit vorheriger Eingabe indentisch?

J neue PIN speichern [string_copy ( )]

Benutzer NICHT gesperrt?

N

Fehlermeldung [pin_fail

( )]

J N

Zähler für Fehleingaben inkrementieren

Benutzer freigeben

PIN und Benutzereinstellund im EEPROM speichern

[eep_write ( )]

Anweisung

Bedingung

Rückgabe Anzahl der Fehleingabe

N

Struktogramm 15: pin_set ( )

Seite 69 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

5 Bedienungsanleitung

5.1 Installation

Als erstes muss ein geeigneter Platz für Zentrale, Terminal und Verteiler ausgewählt werden. Das Terminal sollte relativ nahe am Eingang positioniert sein, um die Alarmanlage in möglichst kurzer Zeit nach dem Betreten deaktivieren zu können und umgekehrt.

Die Zentrale sollte aus Sicherheitsgründen, wenn möglich nicht all zu leicht zugänglich bzw. ersichtlich sein. Die Verteiler sollten so installiert werden, dass sie leicht mit den Sensoren in ihrem Überwachungsbereich verbunden werden können.

Mit dem dreipoligen Dip-Schalter innerhalb des Verteilergehäuses werden die Adressen der bis zu sechs möglichen Verteiler eingestellt.

Es besteht die Möglichkeit die

Adressen 1 bis 6 binär einzustellen.

Die Adressen 0 und 7 sollten auf keinen Fall eingestellt werden, da diese für das LC-Display und das

Tastenfeld im Terminal reserviert sind! Es darf auch nur jede Adresse einmal verwendet werden!

Abbildung 48: Adressierung der Verteiler

Die Sensoren müssen immer an ein nebeneinander liegendes Anschlusspaar gelötet werden. Hierbei ist darauf zu achten, dass keine Verbindung zu den nebenliegenden Kontakten besteht.

Wenn ein Bewegungsmelder angeschlossen wird, muss er mit Spannung versorgt werden. Die Spannung wird an der zweipoligen Schraubklemme zur

Verfügung gestellt. Dabei ist auch richtige Polung zu achten! (siehe

Bestückungsplan 6 (Verteiler, Seite 44)).

Wichtige Hinweise:

Soll der Blei-Akku in der Zentrale als Notstromversorgung benutzt werden, muss dieser zusätzlich angeschlossen werden. Auch hier ist auf die richtige Polung zu achten, da sonst Schaden am Gerät entstehen können!

Bei Wartungs- und Reparaturarbeiten muss der Akku abgeklemmt sowie der

Netzstecker gezogen werden, sofern dieser nicht fest verdrahtet ist.

Seite 70 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

5.2 Inbetriebnahme

Nachdem der Netzstecker eingesteckt wurde leuchten die LEDs an der

Vorderseite der Zentrale für ca. zwei Sekunden. Danach erlöschen diese, bis auf die LED „Netzspannung“.

Nachdem das LC-Display die ersten zwei

Sekunden nur blau leuchtet, sieht man nun den

„Startbildschirm“.

Jetzt beginnen die Grundeinstellungen:

Als erstes werden automatisch alle angeschlossenen Verteiler (hier Controller) gesucht.

Dann wird die Anzahl der gefundenen Verteiler angezeigt und der Benutzer aufgefordert dies zu bestätigen oder die Suche erneut durchzuführen.

Als nächstes ist die Einstellung der Systemzeit an der Reihe.

Nach der Bestätigung der eingegeben

Systemzeit werden die neu vorgenommenen

Einstellungen quittiert.

Jetzt ist das System fertig konfiguriert und der

Anwender kann mit der Alarmanlage arbeiten.

Abbildung 49: Anleitung

Teil 1

Seite 71 von 79

David Schulz

Technikerarbeit 2007/2008

5.3 Überwachung aktivieren

Um sich anzumelden müssen Sie eine beliebige

Taste drücken.

Dokumentation

Alarmanlage

Danach muss eine gültige PIN eingegeben werden.

Die Standard Administrator-PIN ist '00000000'.

Informationen zur Anmeldung an das System werden angezeigt.

Nun befinden sie sich im Hauptmenü. Mit den

Tasten '2' und '8' können die den Cursor am linken Bildschirmrand bewegen.

Um das Alarmmenü aufzurufen, müssen Sie die

'5' drücken. Zurück ins Hauptmenü gelangen Sie mit der '0'

Nachdem sie den Menüpunkt „Aktivieren“ ausgewählt haben, haben Sie 20 Sekunden Zeit das Objekt zu verlassen.

Nach diesen 20 Sekunden wird die Alarmanlage scharf geschaltet und befindet sich im aktivierten

Zustand.

Abbildung 50: Anleitung

Teil 2

Seite 72 von 79

David Schulz

Technikerarbeit 2007/2008

5.4 Überwachung deaktivieren

Um die Alarmanlage zu deaktivieren, müssen Sie erneut eine beliebige Taste drücken.

Danach muss wieder eine gültige PIN eingegeben werden.

Nun befinden sie sich wieder im Hauptmenü.

Um das System vor unautorisierten Zugriffen zu schützen, wählen Sie den zweiten Menüpunkt

„System sperren“.

Das LC-Display zeigt Ihnen wieder den gesperrten Anmeldebildschirm an.

Dokumentation

Alarmanlage

Abbildung 51: Anleitung

Teil 3

Seite 73 von 79

David Schulz

Technikerarbeit 2007/2008

5.5 weitere Funktionen im Überblick

Dokumentation

Alarmanlage

Funktion

Zeitsteuerung

Sensorcheck

Beschreibung

Die Überwachung kann zeitgesteuert eingeschaltet werden. Nachdem die Zeit der

Überwachungsaktivierung eingestellt wurde, wechselt die

Anlage in den Modus

„Zeitgesteuert“, was am Terminal angezeigt wird.

Beim Sensorcheck kann der

Benutzer den aktuellen Zustand der Sensoren an den jeweiligen

Verteilern überwachen:

Weg durch Menü

1. Anmelden

2. Alarmanlage

3. Zeitsteuerung

4. Zeit eingeben

1. Anmelden

2. Alarmanlage

3. Sensorcheck

Controller: 0x01

Status: 0x02

Benutzerverwaltung Hier können alle Benutzer verwaltet werden. Verwalten heißt, dass der jeweilige Benutzer gesperrt, freigeben oder sein

Passwort geändert werden kann.

1. Anmelden

2. Verwaltung

3. Benutzer

4. Benutzer wählen letzte Zugriffe bedeutet, dass am ersten Verteiler der Zweite Sensor ausgelöst hat.

Mit einem Tastendruck springt das

Programm zurück ins Alarmmenü.

Hier können vom Administrator die letzten Systemzugriffe eingesehen werden. Es werden die Zugriffszeit und der betroffene Benutzer angezeigt.

1. Anmelden

2. Verwaltung

3. letzte Zugriffe

4. Zugriffsart wählen

Controllerverwaltung

(Verteilerverwaltung)

Die Controllerverwaltung ist dafür zuständig alle angeschlossenen

Verteiler zu registrieren (siehe

con_init (), Tabelle 22, Seite 65)

1. Anmelden

2. Verwaltung

3. Controller

4. Anweisungen

folgen

Tabelle 30: Bedienungsanleitung Teil 1

Seite 74 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

Funktion

Verzögerungszeit

Entschärfzeit

Inaktivitätszeit

Beschreibung

Die Verzögerungszeit ist die Zeit, die der Benutzer nach der

Scharfschaltung der Alarmanlage hat, das Objekt zu verlassen bevor die Anlage scharf geschaltet wird.

Zur Auswahl stehen 20, 40 und 60

Sekunden. (Standard 20s)

1. Anmelden

2. Einstellungen

3. Alarm

4. Verzögerung

5. Zeit wählen

Die Entschärfzeit ist die Zeit, die der Benutzer nach dem Betreten des Objekts hat um eine gültige

PIN einzugeben, bevor der Alarm aktiviert wird.

Es stehen 20, 40 und 60

Sekunden zur Auswahl.

(Standard 20s)

Wird die Anlage eine bestimmte

Zeit lang nicht bedient, so springt sie zurück in den

Anmeldebildschirm.

Es können 30, 60 oder 90

Sekunden eingestellt werden.

(Standard 30s)

Weg durch Menü

1. Anmelden

2. Einstellungen

3. Alarm

4. Entschärfzeit

5. Zeit wählen

1. Anmelden

2. Einstellungen

3. Menü

4. Inaktivitätszeit

5. Zeit wählen

LCD-Beleuchtungszeit Die LCD-Beleuchtung deaktiviert sich automatisch nach 10, 20 oder

30 Sekunden, wenn in dieser Zeit keine Eingabe am Terminal getätigt wurde. (Standard 10s)

1. Anmelden

2. Einstellungen

3. Menü

4. LCD-Beleuchtung

5. Zeit wählen

Systemzeit stellen Die Systemzeit ist die eigentliche

Uhrzeit der Alarmanlage. Aus ihr resultieren alle gespeicherten

Systemzugriffszeiten.

Die zeitgesteuerte

Scharfschaltung der Alarmanlage wird auch über die Systemzeit realisiert.

1. Anmelden

2. Einstellungen

3. Systemzeit

4. Uhrstellen

5. Anweisungen

folgen

Tabelle 31: Bedienungsanleitung Teil 2

Seite 75 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

6 Schlussbemerkung

Alles in Allem war die Technikerarbeit für mich eine lehrreiche, interessante, aufregende und manchmal auch haarsträubende Erfahrung, welche mich persönlich und fachlich sehr viel weiter gebracht hat, als ich zum Anfang glauben wollte. Sie hat mir gezeigt, dass vor allem zeitliche Planung überaus wichtig sein kann.

Den Anfang des Zeitplans würde ich beim nächsten Mal viel voller stopfen, so dass ich deutlich vor der Abgabe und am besten noch früher fertig werden könnte, um nach hinten heraus genügend Zeit für Fehlerbehebungen und

Optimierungen zu haben.

7 Danksagung

Ich möchte mich bei allen Menschen, die mich unterstützt und gefördert haben, bedanken:

Wolf Sperling und Hans-Dieter Groß, meine Mentoren, welche hier unweigerlich aufgeführt werden müssen. ;-)

Tanguy Duhamel, der mich mit sachlicher Kompetenz, Arbeitsraum sowie Werkzeugen und auch Material unterstützt hat.

Unsere schulbekannte Wohngemeinschaft, die mich in letzter

Sekunde nicht im Stich gelassen hat.

Und, last but not least, meine Freundin Claudia, die ja quasi auch all das durchgemacht hat, was ich durchmachen musste und dazu noch meine Dokumentation Korrektur gelesen hat.

Vielen Dank!

8 Quellen

Fachschule für Technik Konstanz

Michael Baldischweiler – Keil C51 / Philipps LPC900 www.nxp.com

www.mikrocontroller.net

www.elektronik-kompendium.de

Seite 76 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

9 Verzeichnisse

9.1 Bilder

Abbildung 1: Schema.................................................................................................. 5

Abbildung 2: Pflichtenheft............................................................................................ 7

Abbildung 3: erster Versuchsaufbau........................................................................... 8

Abbildung 4: 3x4 Tastenfeld........................................................................................ 8

Abbildung 5: Programmierung..................................................................................... 9

Abbildung 6: LCD & Tastenfeld................................................................................... 9

Abbildung 7: Aufbau (mit I²C-Bus)............................................................................. 10

Abbildung 8: Testaufbau........................................................................................... 11

Abbildung 9: Fehlersuche.......................................................................................... 12

Abbildung 10: Einbau ins Gehäuse........................................................................... 12

Abbildung 11: prozentuale Zeitverteilung nach Entwicklungsabschnitt..................... 13

Abbildung 12: Konzept.............................................................................................. 14

Abbildung 13: Zentrale.............................................................................................. 15

Abbildung 14: Verstärker- und Busplatine................................................................. 15

Abbildung 15: Terminal............................................................................................. 16

Abbildung 16: Verteiler mit Sensoren........................................................................ 16

Abbildung 17: Alarmgeber......................................................................................... 17

Abbildung 18: Blockschaltbild.................................................................................... 18

Abbildung 19: LPC935 (ähnlich LPC936).................................................................. 24

Abbildung 20: I²C-Bus............................................................................................... 25

Abbildung 21: Signalbelegung am Übertragungskabel.............................................. 25

Abbildung 22: Treiberbaustein P82B715................................................................... 26

Abbildung 23: Aufbau I²C-Bus mit P82B715.............................................................. 26

Abbildung 24: Beschaltung P82B715........................................................................ 27

Abbildung 25: PCF8574............................................................................................ 27

Abbildung 26: Beschaltung LC-Display..................................................................... 28

Abbildung 27: Tastaturmatrix..................................................................................... 29

Abbildung 28: Beschaltung Tastenfeld...................................................................... 29

Abbildung 29: Sensorbeschaltung............................................................................. 30

Abbildung 30: Netzteil............................................................................................... 31

Abbildung 31: Ladeschaltung.................................................................................... 32

Abbildung 32: Unterseite Netzteil.............................................................................. 39

Abbildung 33: Oberseite Netzteil............................................................................... 39

Abbildung 34: Unterseite Hauptmodul....................................................................... 40

Abbildung 35: Oberseite Hauptmodul....................................................................... 40

Abbildung 36: Unterseite Verstärker.......................................................................... 41

Abbildung 37: Oberseite Verstärker.......................................................................... 41

Abbildung 38: Unterseite Busmodul ......................................................................... 42

Abbildung 39: Oberseite Busmodul........................................................................... 42

Abbildung 40: Unterseite Terminal............................................................................ 43

Abbildung 41: Oberseite Terminal............................................................................. 43

Abbildung 42: Terminal komplett, ohne Gehäuse...................................................... 43

Abbildung 43: Unterseite Verteiler............................................................................. 44

Abbildung 44: Oberseite Verteiler.............................................................................. 44

Abbildung 45: Verteiler im Gehäuse.......................................................................... 44

Abbildung 46: Menüstruktur....................................................................................... 48

Abbildung 47: Programmstruktur............................................................................... 49

Abbildung 48: Adressierung der Verteiler.................................................................. 70

Abbildung 49: Anleitung Teil 1................................................................................... 71

Abbildung 50: Anleitung Teil 2................................................................................... 72

Abbildung 51: Anleitung Teil 3................................................................................... 73

Seite 77 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

9.2 Tabellen

Tabelle 1: Benutzerkonten.......................................................................................... 6

Tabelle 2: Entwicklungsabschnitte nach Zeitplan...................................................... 13

Tabelle 3: Portpinbelegung LPC936.......................................................................... 19

Tabelle 4: Adressen.................................................................................................. 45

Tabelle 5: Portkonfigurationen................................................................................... 46

Tabelle 6: Interrupts.................................................................................................. 47

Tabelle 7: Struktur für alle Uhrzeiten......................................................................... 47

Tabelle 8: Programmstruktur..................................................................................... 49

Tabelle 9: Funktionen in a_main.c............................................................................. 50

Tabelle 10: Funktionen in alr_con.c........................................................................... 51

Tabelle 11: Funktionen in int_eep.c........................................................................... 51

Tabelle 12: Funktionen in pin_misc.c........................................................................ 52

Tabelle 13: Funktionen in set_str.c............................................................................ 53

Tabelle 14: Funktionen in driver-lcd.a51 und driver-pcf.a51...................................... 53

Tabelle 15: Funktionsbeschreibung main ( ).............................................................. 54

Tabelle 16: Funktionsbeschreibung men_block ( ).................................................... 55

Tabelle 17: Funktionsbeschreibung Menü allgemein................................................ 56

Tabelle 18: Funktionsbeschreibung men_main ( )..................................................... 57

Tabelle 19: Funktionsbeschreibung nav_men ()........................................................ 58

Tabelle 20: Funktionsbeschreibung kpd_wait ( )....................................................... 59

Tabelle 21: Funktionsbeschreibung KBI ( ) interrupt 7.............................................. 60

Tabelle 22: Funktionsbeschreibung kpd_eval ()........................................................ 61

Tabelle 23: Funktionsbeschreibung alr_ready ( )...................................................... 62

Tabelle 24: Funktionsbeschreibung ExInt1 ( ) interrupt 2.......................................... 64

Tabelle 25: Funktionsbeschreibung con_init ( )......................................................... 65

Tabelle 26: Funktionsbeschreibung pin_input ( )....................................................... 66

Tabelle 27: Funktionsbeschreibung pin_change ( )................................................... 67

Tabelle 28: Funktionsbeschreibung pin_checkall ( ).................................................. 68

Tabelle 29: Funktionsbeschreibung pin_set ( ).......................................................... 69

Tabelle 30: Bedienungsanleitung Teil 1.................................................................... 74

Tabelle 31: Bedienungsanleitung Teil 2.................................................................... 75

9.3 Struktogramme

Struktogramm 1: main ( )........................................................................................... 54

Struktogramm 2: men_block ( )................................................................................. 55

Struktogramm 3: Menü allgemein.............................................................................. 56

Struktogramm 4: men_main ( ).................................................................................. 57

Struktogramm 5: nav_menu ( ).................................................................................. 58

Struktogramm 6: kpd_wait ( ).................................................................................... 59

Struktogramm 7: KBI ( ) interrupt 7............................................................................ 60

Struktogramm 8: kpd_eval ( ).................................................................................... 61

Struktogramm 9: alr_ready ( ).................................................................................... 63

Struktogramm 10: ExInt1 ( ) interrupt 2..................................................................... 64

Struktogramm 11: con_init ( ).................................................................................... 65

Struktogramm 12: pin_input ( ).................................................................................. 66

Struktogramm 13: pin_change ( ).............................................................................. 67

Struktogramm 14: pin_checkall ( )............................................................................. 68

Struktogramm 15: pin_set ( )..................................................................................... 69

Seite 78 von 79

David Schulz

Technikerarbeit 2007/2008

Dokumentation

Alarmanlage

9.4 Schaltpläne

Schaltplan 1: Netzteil mit Ladeschaltung................................................................... 20

Schaltplan 2: Hauptmodul mit Verstärker.................................................................. 21

Schaltplan 3: Terminal............................................................................................... 22

Schaltplan 4: Verteiler............................................................................................... 23

9.5 Bestückungspläne

Bestückungsplan 1: Netzteil mit Ladeschaltung........................................................ 34

Bestückungsplan 2: Hauptmodul............................................................................... 35

Bestückungsplan 3: Verstärker.................................................................................. 36

Bestückungsplan 4: Busmodul.................................................................................. 36

Bestückungsplan 5: Terminal.................................................................................... 37

Bestückungsplan 6: Verteiler..................................................................................... 38

9.6 Layouts

Layout 1: Netzteil mit Ladeschaltung......................................................................... 39

Layout 2: Hauptmodul............................................................................................... 40

Layout 3: Verstärker.................................................................................................. 41

Layout 4: Busmodul................................................................................................... 42

Layout 5: Terminal..................................................................................................... 43

Layout 6: Verteiler..................................................................................................... 44

Seite 79 von 79

advertisement

Was this manual useful for you? Yes No
Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Related manuals

Download PDF

advertisement