Abschlussbericht - emsp.tu

Werbung
TU Berlin Fachgebiet Elektronik und medizinische Signalverarbeitung
Projekt Elektronik im Wintersemester 2007/2008
Abschlussbericht
der Gruppe ele51
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Inhaltsverzeichnis
1 Einleitung
4
1.1 Projektthema
1.2 Spezifikation
1.3 Arbeitsaufteilung
4
4
5
2 Sensormodule
5
2.1 Temperaturmodul
2.1.1 Ziel
2.1.2 Auswahl des geeigneten Temperaturfühlers
2.1.3 Blockschaltbild und Übersicht
2.1.4 Sensorstufe
2.1.5 Spannungsfolger und Verstärker
2.1.6 AD-Umsetzer
2.1.7 Bauteileliste
2.1.8 Gesamtschaltbild
2.1.9 Platinenlayout
2.1.10 Simulation und praktische Durchführung
2.2 Druckmodul
2.2.1 Wahl des Sensors
2.2.2 Schaltung
2.2.3 Bauteileliste
2.2.4 Gesamtschaltbild
2.2.5 Platinenlayout
2.2.6 Simulation und praktische Durchführung
2.3 Lichtschranke
2.3.1 Schaltung
2.3.2 Vor- und Nachteile
2.3.3 Bauteileliste
2.3.4 Schaltbild
2.3.5 Patinenlayout
3 Basisstation
4
5
6
7
8
9
11
13
13
14
14
15
15
16
18
18
19
20
21
21
22
23
24
24
26
3.1 Der Mikrocontroller
3.2 Kommunikation
3.2.1 Kommunikation mit dem Druck- und mit dem Temperatursensor
3.2.2 Kommunikation mit der Lichtschranke
3.3 Datenverarbeitung
3.3.1 Time-Overflow-Interrupt
3.3.2 Datenverarbeitung für die Ausgabe
3.4 Warnsystem
3.4.1 LED, Piepser
3.4.2 LCD-Anzeige
3.5 Die Platine
3.5.1 Schaltbild
3.5.2 Platinenlayout
3.6 C-Code
2
26
28
28
29
29
29
29
29
29
30
32
32
32
33
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
4 Funkmodul
5
6
7
8
34
4.1
Empfänger
4.1.1 Takterzeugung
4.1.2 Taktauswahl
4.1.3 Block Takterzeugung und Synchronisation
4.1.4 Serielle Daten in parallele umwandeln
4.1.5 VHDL Beschreibung der Gesamtschaltung
4.1.6 Bauteileliste
4.1.7 Schaltbild
4.1.8 Platinenlayout
4.2 Sender
4.2.1 Entwicklung der Finite State Machine
4.2.2 VHDL Beschreibung der Finite State Machine
4.2.3 Bauteileliste
4.2.4 Schaltbild
4.2.5 Platinenlayout
4.3 Schnittstellen der Module
35
35
37
38
39
40
41
42
42
43
44
46
46
46
47
48
Zusammenfassung
Literaturverzeichnis
Abbildungsverzeichnis
Tabellenverzeichnis
49
49
50
51
3
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
1 Einleitung
1.1
Projektthema
Ziel unseres Projekts ist der Aufbau einer Alarmanlage. Verschiedene Sensormodule
melden einer Basisstation die Überschreitung kritischer Schwellenwerte oder eingetretene
Ereignisse. Die Basisstation löst daraufhin Alarm aus.
Abbildung 1 zeigt ein einfaches Blockschaltbild des Alarmsystems. Der modulare
Aufbau und die einheitlichen Schnittstellen gewährleisten die Erweiterbarkeit der Anlage:
Sensoren können ohne hohen Aufwand zu einem späteren Zeitpunkt hinzugefügt/entfernt
werden.
Basisstation
Sensormodul
Abb. 1 Einfaches Blockschaltbild der Alarmanlage
1.2
Spezifikation
Gemäß dem Pflichtenheft sind im ersten Release unseres Systems Sensormodule für
Temperatur und Druck und eine Lichtschranke vorgesehen. In weiteren Releases können
Rauch- /Gas-Sensoren, Sensoren für die Luftfeuchtigkeitsmessung und für die
Geräuscherkennung berücksichtigt werden.
Das Druckmodul soll erkennen, ob jemand/etwas auf den Drucksensor tritt. Das
Temperaturmodul dient dazu die Temperatur zu überwachen und einen möglichen Brand zu
detektieren. Die Lichtschranke meldet bei der Unterbrechung des Lichtstrahls das
Vorhandensein eines potentiell unerwünschten Gastes.
4
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Die Signalanpassung beinhaltet, je nach Bedarf, die Verstärkung, die A/D-Wandlung
und die Linearisierung der Sensorsignale.
Sobald ein Schwellenwert überschritten ist, sendet das Sensormodul ein Signal an die
Basisstation, das mit der Kennung des jeweiligen Moduls versehen ist. Alarmsignal und
Modulkennung werden parallel übertragen (siehe Mikrocontroller). Das Temperaturmodul
sendet zusätzlich in kurzen Abständen die aktuelle Temperatur an die Basisstation.
Die Kommunikation zwischen den Sensormodulen und der Basisstation erfolgt primär
per Kabel. Es soll zusätzlich eine Funkübertragung angeboten werden, sowie die
Möglichkeit, zwischen der Kabel- und der Funkübertragung flexibel zu wechseln.
Die Basisstation verarbeitet die Signale, die sie von den Sensormodulen empfängt, als
Interrupts. Daraufhin löst sie optische und akustische Signale aus und zeigt auf einem LCD
an, welches Modul den Alarm ausgelöst hat. Die aktuelle Temperatur und die aktuelle Uhrzeit
werden ebenfalls angezeigt. Die Basisstation soll ein- und ausgeschaltet werden können. Bei
Bedarf soll ein Reset durchgeführt werden können. Weiterhin soll die Basisstation in der
Lage sein, die Bereitschaft der Module abzufragen.
Die Energieversorgung erfolgt per Batterie für einige Sensormodule und per Netzteil
für die Basisstation.
1.3. Arbeitsaufteilung
Basisstation (Mikrocontroller), Sensormodule (Lichtschranke, Temperatur- und
Drucksensor) und Funkmodul werden in Gruppen von 1-3 Studenten entwickelt.
Im Folgenden stellt jede Gruppe ihre bisherige Arbeit vor.
2 Sensormodule
2.1
Temperaturmodul
2.1.1 Ziel
Unser Ziel ist es, ein System zu bauen, mit dem man die Raum- oder die
Wassertemperatur messen kann. Die zu messende Temperatur soll im Bereich von 0°C bis
100° C liegen. Ein Widerstandsthermometer, dessen W iderstand sich mit der Temperatur
ändert, ist das Kernstück unseres Moduls. Damit kann die zu messende Größe Temperatur
in ein elektrisches Signal umgewandelt werden.
Das Messergebnis wird analog-digital umgesetzt. D.h. die analoge Spannung wird
durch analog-digitale Umsetzung in ein Digitalsignal umgewandelt. Hier wird ein 8-Bit AD
Umsetzer benutzt. Ein nachfolgendender Mikroprozessor, z.B. FPGA oder Mikrocontroller,
erkennt und verarbeitet das digitalisierte Signal.
Im Allgemeinen soll das System die Temperatur im Bereich von 0°C bis 100° C
messen, in ein digitales Signal umsetzen und ein 8 Bit Digitalsignal an den Mikroprozessor
weitergeben.
Mit einer ähnlichen Schaltung, aber einem Drucksensor anstelle von dem
Temperatursensor wird das Druckmodul unseres Projekts realisiert. Die Anforderungen an
das Druckmodul sind relativ gering, im Vergleich zu dem Temperaturmodul. Bei dem
Druckmodul wird nur eine qualitative Messung durchgeführt.
5
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Die folgenden Kapitel erläutern hauptsächlich das Temperaturmodul. Das Druckmodul
wird nur am Rande beschrieben.
Wie bereits erwähnt, ist das Widerstandsthermometer für unser System von großer
Bedeutung. Ob das System gut funktioniert, ist hauptsächlich vom Temperatursensor
abhängig. Im folgenden Kapitel werden verschiedene Sensoren vorgestellt und miteinander
verglichen.
2.1.2 Auswahl des richtigen Temperaturfühlers
Widerstandthermometer: z.B. Pt100
Funktionsweise: Eine Temperaturänderung führt zur Widerstandsänderung des
Bauelementes.
Vorteile: sehr hohe Genauigkeit, ausgezeichnete Stabilität über längere Zeit
Nachteile: lange Antwortzeiten
Thermoelemente: z.B. Typ K, Typ N
Funktionsweise: Ein Material erzeugt eine Spannung, wenn es erwärmt wird.
Vorteile: großer Messbereich bis zu 1000° C, kurze Antwortzeiten
Nachteile: Die erzeugte Spannung ist relativ klein und deshalb schwer zu messen,
außerdem ist dieses Verfahren relativ ungenau.
Für unsere Anwendung ist ein Widerstandsthermometer mit höherer Genauigkeit besser
geeignet. Konkret haben wir uns für das Widerstandsthermometer Pt100 entschieden, das
auf der Widerstandsänderung von Platin unter Temperatureinfluss basiert.
Abb. 2 Kennlinie des Pt100 [1]
Abbildung 3 zeigt die Kennlinie des Pt100. Es ist zu beachten, dass sich der
Widerstandswert fast linear mit der Temperatur ändert. Diese quasi Linearität ist für unser
System ganz wichtig, weil sie die Messung der Temperatur erleichtert.
6
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Im Bereich 0°C bis 100°C liegt der Widerstandbereic h von Pt100 im Bereich 100 Ω bis
139 Ω. Unser Modul wird überwiegend in diesem Bereich arbeiten.
Ein Foto der fertigen Schaltung ist in Abbildung 2 zu sehen.
Abb. 3 Platine Temperaturmodul
2.1.3 Blockschaltbild und Übersicht
Das Blockschaltbild des Temperaturmoduls ist in Abbildung 4 zu dargestellt.
7
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abb. 4 Blockschaltbild des Temperaturmoduls
Das Modul besteht aus 3 Komponenten:
1) Umwandlung Temperatur in Elektrosignal bzw. Sensorstufe;
2) Spannungsanpassung, Schaltung für Spannungsfolger und Verstärker;
3) AD Umsetzung.
In der Sensorstufe wird mit Hilfe des Pt100, die im Bereich 0°C bis 100°C variierende
Temperatur, in eine Änderung eines elektrischen Signals umgewandelt, hierbei handelt es
sich nun um eine Spannungsänderung,.
Nachfolgend kommt eine Spannungsanpassung. Die Ausgangsspannung der ersten
Stufe liegt nicht im geeigneten Bereich. D.h. diese Spannung ist z.B. zu klein, um gemessen
zu werden. Es gibt auch die Möglichkeit, dass bei einer direkten Messung die Sensorstufe
von einer anderen Stufe beeinflusst wird. Die Spannungsanpassung dient dazu, die
Ausgangspannung in einen für die Messung geeigneten Bereich zu bringen und eine
Isolierung zwischen Vor- und Nachstufe zu erzwingen.
Der letzte Schritt ist die AD Umsetzung, damit das analoge Spannungssignal
digitalisiert werden kann. Der Ausgang dieser Stufe soll ein binäres Digitalsignal sein.
2.1.4 Sensorstufe
Als Temperatursensor wird ein PT100 benutzt (siehe Abbildung 5). Sein
Widerstandswert verändert sich von ungefähr 100 Ω bis 138.5 Ω, wenn die Temperatur von
0° C auf 100° C ansteigt.
Abb. 5 Typ PT 100 M 222 1/3B 20NIPt 10 [2]
Hersteller Heraeus Sensor Technology
8
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Die Vorteile des Pt100 sind:
1) der Widerstandwert steht in einer lineare Beziehung zur Temperatur
2) große Genauigkeit
Mit einer Brückenschaltung (siehe Abb. 6) kann die Änderung des Widerstands in die
Änderung der Spannung umsetzt werden.
Abb. 6 Brückenschaltung für die Sensorstufe (PSpice)
Vcc ist die Versorgungsspannung. Sie beträgt 5V. Es ist wichtig, dass R3 viel größer als der
Widerstand des Pt100 ist. Aus der obigen Schaltung bekommen wir folgende Gleichungen:
Rt
Vcc
R 3 + Rt
R2
U1 =
Vcc
R1 + R 2
U2 =
Um zu garantieren, dass U 2 eine lineare Beziehung zu Rt besitzt, muss R 3 viel größer, als
Rt sein. Wir wählen R 3 = 4700 Ω.
U 1 ist die Offset-Spannung. Sie sorgt dafür, dass die Ausgangsspannung dieser Stufe
bei T = 0°C bzw. Rt = 100 Ω, bei 0V liegen kann. Deshalb setzen wir R1 = 47000 Ω.
Außerdem benutzen wir für R 2 ein Potentiometer, damit eine genaue NullAusgangsspannung bei 0°C erreicht werden kann.
2.1.5 Spannungsfolger und Verstärker
Die Ausgangsspannung der ersten Stufe wird als analoge Eingangsspannung für den
AD Umsetzer benutzt. Um eine rückwirkende Beeinflussung aus den nachfolgenden Stufen
9
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
zu vermeiden, ist ein Spannungsfolger nötig. Damit kann der Sensor und der AD Umsetzer
voneinander isoliert werden.
Abb. 7 Spannungsfolger mit OPV (PSpice)
Die in Abbildung 7 dargestellte Schaltung ist eine typische Anwendung von
Operationsverstärkern (OPV): eine direkte Verbindung zwischen negativen Eingang und
Ausgang des Verstärkers. Aus der Eigenschaft der „virtuellen Masse“ ist die
Ausgangsspannung identisch mit der positiven Eingangspannung.
Nach der Berechnung ist die Ausgangsspannung nach dem Spannungsfolger bei
100°C mit Vcc gleich 5V, nur ungefähr 0,039 V. Desw egen brauchen wir einen Verstärker
(siehe Abbildung 8). Ziel des Bauteiles ist, die Ausgangsspannung im Bereich 0 bis 5V zu
verstärken. Hier ist ein Verstärkungsfaktor von 120 passend für unsere Anforderung.
Abb. 8 Verstärkerschaltung (PSpice)
Die entsprechenden Gleichungen sind:
10
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
U 1'−U − U − −Ue
 R 4 = R5

U 2'−U + = U +
 R6
R7


U − = U +, R 4 = R 6 = R, R5 = R 7 = R'

und die Ausgangsspanung ist:
Ue =
R'
R'
(U 2'−U 1' ) = Ud
R
R
Um einen Verstärkungsfaktor von 120 zu erreichen, benutzen wir R 4 und R 6 von
1 kΩ, R 5 und R 7 von 120 kΩ. Dann wird die theoretische Ausgangsspanung des ganzen
analogen Systems im Bereich von 0 V bis 4,7 V liegen.
2.1.6 AD Umsetzer
Das Ausgangssignal des analogen Teils ist eine Spannung, die im Bereich 0 V bis
4,7 V liegt. Vor der Verarbeitung dieser Information durch den Prozessor muss die analoge
Spannung zuerst in ein digitales Signal umgewandelt werden.
Wir verwenden ADC0804 als AD Umsetzer. Die Vorteile des Bauteiles sind:
1) 8 Bit paralleler Umsetzer, schnell;
2) kann von internem oder externem Takt gesteuert werden;
3) differentielle Ausgangsspanung, robust und rauschtolerant.
Abb. 9 Schaltung für AD Umsetzung [3]
11
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abbildung 9 zeigt die Schaltung des AD Umsetzers ADC0804. Es ist zu beachten,
dass „Chip Select“ auf Null gesetzt werden muss, weil in unserem Fall eine kontinuierliche,
also stetige Umsetzung durchgeführt wird. Außerdem ist es vorteilhaft, wenn der Umsetzer
eine identische Versorgungsspannung mit dem analogen Teil besitzt. Damit kann man eine
Beeinflussung durch Versorgungsdrift vermeiden.
Für die Kommunikation des ADUs mit einem Mikroprozessor sind 11 Pins
verantwortlich:
- DB7 bis DB0 als Daten, davon DB7 als MSB;
- „/INTR“ als Ausgangspin des ADUs;
- „/WR“ und „/RD“ als Eingangspin des ADUs wird durch den Mikroprozessor gesteuert.
Initial sind „/WR“ und „/RD“ „1“.
Schreiben des ADUs:
Abb. 10 Zeitdiagramm des ADUs für das Schreiben [3]
1) das Pin „/WR“ auf „0“ setzen und nach tW (mindestens 30ns) wieder auf „1“ setzen;
2) die Umsetzung fängt automatisch nach 1 bis 8 Takten des Wiederaufstiegs des Pin „/WR“
an. Dann wird der Umsetzer belegt. Ein weiterer Schreibbefehl bzw. negative Impulse am
„/WR“ funktionieren nicht mehr.
3) wenn die Umsetzung fertig ist, entsteht am Pin „/INTR“ ein Interruptsignal bzw. ein Abstieg
damit der Mikroprozessor informiert werden kann.
Das Zeitdiagramm ist in Abbildung 10 dargestellt.
12
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Lesen des ADUs:
Abb. 11 Zeitdiagramm des ADU für Lesen [3]
1) ein negativer Impuls soll am Pin „/RD“ nach Abstieg des „/INTR“ vom Mikroprozessor
abgegeben werden
2) nach tACC (typischer Wert 75 ns und maximaler Wert 100 ns) stehen die Daten an den
Ausgangspins, d.h. von DB7 bis DB0, zur Verfügung. Dann kann der Mikroprozessor diese
binären Daten lesen.
3) ein neuer Anstieg des „/RD“ löscht die Daten und setzt den ADU in den ursprünglichen
Zustand zurück.
Das Zeitdiagramm ist in Abbildung 11 dargestellt.
2.1.7 Bauteileliste
R1 - 47 kΩ Widerstand
R2 - 0~1 kΩ Potentiometer
R3 - 4,7 kΩ Widerstand
Pt100 - Widerstandthermometer
R4 - 1 kΩ Widerstand
R5 - 120 kΩ Widerstand
R6 - 1 kΩ Widerstand
R7 - 120 kΩ Widerstand
R8 - 10 kΩ Widerstand
C1 - 56 pF Kondensator
C2 - 1 µF Kondensator
IC1A, IC1B, IC1C - LM324 - Integrierte Quard Operationsverstärker
A/D - ADC 0804 - Analog-Digital-Umsetzer
2.1.8 Gesamtschaltbild
In Abbildung 12 ist das Gesamtschaltbild des Temperaturmoduls dargestellt.
13
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abb. 12 Gesamtschaltbild des Temperaturmoduls (PSpice)
2.1.9 Platinenlayout
Das Layout der Temperaturplatine kann dem Bild 13 entnommen werden.
Abb. 13 Platinenlayout für das Temperaturmodul (Eagle)
14
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
2.1.10 Simulation und praktische Durchführung
Die Simulationsergebnisse vom Analogteil sind in Tabelle 1 zusammengefasst.
Tabelle 1 Simulationsergebnisse für das Temperaturmodul
Temperatur in °C
0
20
(Raumtemperatur)
40
60
100
Widerstand des
Sensors in Ω
100
107,9
Ausgangsspannung
in V
0,40
1,46
115,8
123,6
138,5
2,44
3,36
4,89 (Sättigung)
Die Tabelle 2 stellt einige Messergebnisse dar.
Tabelle 2 Messergebnisse für das Temperaturmodul
Temperatur in °C
Ausgangsspannung
in V
0,40
1,46
0
20
(Raumtemperatur)
40
60
100
2,44
3,36
3,82 (Sättigung)
Aus der obigen Tabelle wird deutlich, dass die praktischen Ergebnisse bei niedriger
und mittlerer Temperatur mit den Simulationsergebnissen gut übereinstimmen. Bei hoher
Temperatur kommt die Ausgangsspannung in den Sättigungsbereich.
Das Problem besteht darin, dass wir den integrierten OPV IC LM324 benutzen. Im
Vergleich zum nicht-integrierten Operationsverstärker µA741, besteht LM324 aus 4 OPVs.
Die Verteilung der Versorgungsspannung auf 4 OPVs führt leicht zur Sättigung. Für unsere
Anwendung sind diese Ergebnisse akzeptabel, es wird mehr als 70% des ganzen
Wertebereichs der ADUs verwendet. Die Performance des Systems wird trotzdem
beeinflusst.
Eine mögliche Verbesserung ist LM324 zu verwenden, dieser stammt von einem
anderen Hersteller. Als Alternative kann auch eine höhere Versorgungsspannung verwendet
werden.
Beide Module, Druck und Temperatur, wurden mit der Basisstation getestet. Das
Ergebnis der AD Umsetzung ist sehr gut. An den Ausgangspins kann man ein 8-Bit Signal
lesen und verarbeiten.
15
Projekt Elektronik - Abschlussbericht
2.2
WS 07/08 - ele51
Druckmodul
2.2.1 Wahl des Sensors
Bei dem Druckmodul ist fast alles ähnlich aufgebaut, wie beim Temperaturmodul. Der
einzige Unterschied ist der verwendete Sensor.
Ziel des Druckmoduls ist es, eine Druckveränderung zu erkennen. Es handelt sich um
eine qualitative Aussage. D.h. wir messen den Druck nicht genau, wir treffen nur eine
Entscheidung, ob der Druck eine definierte Schwelle überschritten hat oder nicht.
Abb. 14 Drucksensor-FSR-149NS [2]
Deswegen reicht ein ganz grober Sensor für unsere Anwendung aus. Abbildung 14
zeigt den ausgewählten Sensor. Der Druckbereich liegt im Bereich von ca. 10 g bis 10 kg
und entspricht einer Widerstandsveränderung von 3 kΩ bis 2 MΩ. Es ist zu beachten, dass
im Vergleich zum Temperatursensor, dessen Widerstand sich mit aufsteigender Temperatur
erhöht, der Widerstand des Drucksensors sich mit ansteigendem Druck verringert.
Der Sensor besitzt bestimmte Anforderungen, muss man z.B. eine drückbare
Umgebung für den Sensor brnutzen, damit der Druck von dem Sensor erkannt werden kann.
2.2.2 Schaltung
Es werden die drei beim Temperaturmodul gezeigten Stufen verwendet. Der einzige
Unterschied liegt bei der Sensorstufe. Das Bild der fertigen Schaltung ist in Abbildung 15 zu
sehen.
16
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abb. 15 Fertige Platine des Drucksensors
Da sich der Widerstand des Sensors mit ansteigender Temperatur verringert, muss
man die Position des Sensors in der Brückeschaltung ändern (siehe Abb. 16).
Abb. 16 Brückenschaltung beim Druckmodul (PSpice)
17
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Rdruck ist der Drucksensor. Wenn kein Druck darauf ausgeübt wird, beträgt der
Widerstand ungefähr 40 kΩ. Mit einem stärkeren Druck ist ein Widerstand von 15 kΩ
erreichbar. D.h. die Ausgangsspannung dieser Stufe verändert sich von Null im Ruhezustand
bis 1 V beim stärksten Druck.
Der Verstärkungsfaktor wird in der nachfolgenden Schaltung entsprechend verändert.
Statt R 5 und R 7 gleich 120 kΩ benutzen wir hier zwei 5,6 kΩ Widerstände. Wir behalten R 4
und R 6 , mit einem Wert von 1 kΩ. In Abbildung 17 ist die Verstärkungsstufe des
Druckmoduls dargestellt.
Abb. 17 Verstärkungsstufe des Druckmoduls (PSpice)
2.2.3 Bauteileliste
R1 – 3,9 kΩ Widerstand
R2 – 0~1 kΩ Potentiometer
R3 – 10 kΩ Widerstand
Rdruck –Drucksensor
R4 – 1 kΩ Widerstand
R5 – 5,6 kΩ Widerstand
R6 – 1 kΩ Widerstand
R7 – 5,6 kΩ Widerstand
R8 – 10 kΩ Widerstand
C1 – 56 pF Kondensator
C2 – 1 µF Kondensator
IC1A, IC1B, IC1C – LM324 – Integrierte Quard Operationsverstärker
A/D – ADC 0804 – Analog-Digital-Umsetzer
2.2.4 Gesamtschaltbild
Das Gesamtschaltbild des Druckmoduls ist in Abbildung 18 dargestellt.
18
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abb. 18 Gesamtschaltbild des Druckmoduls (PSpice)
2.2.5 Platinenlayout
Das mit Eagle angefertigte Platinenlayout ist in Abbildung 19 zu sehen.
Abb. 19 Platinenlayout für das Druckmodul (Eagle)
19
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
2.2.2 Simulation und praktische Durchführung
Die Simulationsergebnisse für das Druckmodul sind in der Tabelle 3 dargestellt.
Tabelle 3 Simulationsergebnisse für das Druckmodul
Druck
Ruhezustand
kleiner Druck
mittlerer Druck
(Schwelle)
großer Druck
Widerstand des Sensors
in kΩ
37,5
30
20
Ausgangsspannung
in V
0,41
1,52
3,85
10
4,89 (Sättigung)
In der Tabelle 4 sind einige Messergebnisse zusammengefasst.
Tabelle 4 Messergebnisse für das Druckmodul
Außendruck
Ruhezustand
kleiner Druck
mittlerer Druck
(Schwelle)
großer Druck
Widerstand des Sensors
in kΩ
37,5
30
20
Ausgangsspannung
in V
0,41
1,52
3,82 (Sättigung)
10
3,82 (Sättigung)
Da sich die Schaltungen von Temperaturmodul und Druckmodul sehr ähneln, ist die
Auswertung für das Druckmodul mit der Auswertung des Temperaturmoduls gleich.
2.3
Lichtschranke
Das Ziel unseres Moduls besteht darin, die durch ein Objekt (z.B. Einbrecher)
hervorgerufene Unterbrechung des Lichtstrahls zu erkennen und der Basisstation zu melden.
Wir haben verschiedene Ansätze der Realisierung analysiert und uns letztlich für eine
vergleichsweise einfache, jedoch störungssichere Schaltung entschieden. Das
Blockschaltbild ist in Abbildung 20 dargestellt.
20
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abb. 20 Blockschaltbild der Lichtschranke
Anforderungen an diese Schaltung sind eine geringe Fehlauslösung, hohe Sicherheit
gegen Manipulation so z.B. direktes Durchtrennen von Kabeln und erhöhte Unempfindlichkeit
gegen störendes Tageslicht und andere Lichtquellen, mit denen einige Lichtschranken
getäuscht werden können. Falls ein Einbrecher den IR-Strahl unterbricht, wird dies von dem
Detektor registriert und ein Signal ausgegeben.
Das Signal von der Lichtschranke muss nun weiter verarbeitet und an einen µC
weitergegeben werden. Da dieser µC spezifische Zeiten zum Abfragen der einzelnen Module
verwendet, muss das Alarm auslösende Signal so lange gespeichert werden, bis der µC
dieses erhält, auch wenn der IR-Strahl inzwischen schon wieder den Detektor erreicht und
jetzt kein neues Alarmsignal mehr ausgelöst werden würde. Zudem muss das
Ausgangssignal an den Spannungsbereich des µC angepasst werden. Eine LED soll
zusätzlich das Ausgangssignal anzeigen, um die Wirksamkeit der Lichtschranke einfach zu
demonstrieren. Da anfänglich die Möglichkeit in Betracht gezogen wurde, alle Module über
Funk mit der Hauptstation kommunizieren zu lassen sollte eine Batterieversorgung
vorgesehen werden und somit möglichst energiesparend gearbeitet werden. Da eine
kompakte 9V Blockbatterie als Energielieferant vorgesehen ist, die benutzen Bauteile jedoch
bei 5V arbeiten und die Ausgangsspannung des Ausgangssignals nicht den µC beschädigen
darf, muss die Schaltung auch mit einem Spannungsregler betrieben werden. Dieser besitzt
nun die Aufgabe die anliegende Spannung von 9V auf 5V zu reduzieren.
2.3.1 Schaltung
Die Einweg-Lichtschranke besteht aus einem Sender und aus einem Empfänger, die
sich gegenüber stehen. Sie sind im Abstand von 8 cm zueinander ausgerichtet. Bei Tests bis
zu einem Abstand von 15 cm zwischen IR-Diode und Empfänger hat die Schaltung gut
funktioniert. Als Sender haben wir eine Infrarotdiode mit einer Wellenlänge von 940nm und
einem kleinen Abstrahlwinkel von 24° ausgesucht (LI 520C). Der Empfänger, IS471F von
Sharp, ist ein Infrarotdetektor. Er verfügt über ein integriertes Modulationssystem, welches
die IR-Diode moduliert. Durch dieses Verfahren wird die Lichtschranke unempfindlich
gegenüber Fremdlichteinstrahlung gemacht, die zu Messwertverfälschungen führen könnten.
Wird die Lichtschranke unterbrochen, gibt die Schaltung ein Signal an die
dahinterliegende Schaltung weiter, wo das Signal per Kabel an die Basisstation
weitergegeben wird. Schnelle Schwankungen des Ausgangssignals können vom
Mikrocontroller als Störung interpretiert werden. Deswegen wird das Ausgangssignal über
den Kondensator C2 gehalten. Die Dimensionierung von C2 haben wir durch Testen
verschiedener Kapazitäten vorgenommen.
21
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Um die Funktionstüchtigkeit der Lichtschranke auch bei möglichen Fehlern von
Sende- oder Empfangsmodulen, µC etc. zu erkennen, wurde zudem eine LED eingefügt, die
den Status der Lichtschranke anzeigt.
Die Schaltung erhielt, wegen der bereits genannten Gründe, weiterhin einen
Spannungsregler, der das anschließen an eine transportable 9V Spannungsquelle
ermöglicht. Da eine LED angesteuert und auch ein Signal mit einer Amplitude von 0-5V
gefordert wird, haben wir uns entschieden zwei Transistoren zur Verstärkung des Signals,
vom IR-Detektor, zu nutzen. Ein funktionsfähiger Prototyp ist in Abbildung 21 dargestellt.
Abb. 21 Funktionsfähiges Prototyp der Lichtschranke
Da die Schaltung ein Alarm auslösen soll, wenn die Signalleitung von der
Lichtschranke zu dem µC unterbrochen wird, haben wir uns entschieden das Signal 5V mit
Lichtstrahl nicht unterbrochen und ~0V mit Lichtstrahl unterbrochen, oder Sabotageversuch
kodiert, was der µC auch dementsprechend verarbeiten muss und gegebenenfalls ein Alarm
auslösen soll!
Um die Schaltung eindrucksvoll zu präsentieren, werden alle nicht optischen Elemente
auf die Unterseite der Platine gebracht (siehe Abbildung 22). Somit erleichtert sich auch die
Positionierung der optischen Elemente, da nun keine Bauteile aus dem optischen Bereich
entfernt werden müssen, oder der freie Weg zwischen der IR-Diode und dem Detektor nicht
unnötig verkleinert werden muss. Weiterhin ist es nun nicht mehr so einfach diese Schaltung
als Teil einer Alarmanlage zu erkennen, und es wäre möglich die optischen Komponenten
mit geeigneten Mitteln zu tarnen.
22
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abb. 22 Fertiges Modul Lichtschranke
2.3.2 Vor- und Nachteile
Die Einweg-Lichtschranke bietet den Vorteil, dass alle Objekte, die sich zwischen dem
Sensor und dem Empfänger befinden, den Lichtstrahl unterbrechen. Das gilt auch für
spiegelnde Objekte, die sonst, bei geschickter Handhabung einem Eindringling erlauben, die
Lichtschranke zu passieren, ohne einen Alarm auszulösen.
Der Detektor und die IR-Diode werden auf der gleichen Platine untergebracht, um
mögliche Probleme mit der Ausrichtung der IR-Diode zu dem Empfänger, z.B. bei
Positionsänderung zu vermeiden. Somit erhöht sich die Handhabbarkeit enorm, jedoch kann
so nicht die maximale Reichweite genutzt werden und der Eindringling kann den Sinn der
Schaltung erahnen. Die Vorteile dieser störungsunempfindlichen Schaltung wiegen aber die
Nachteile deutlich auf. Die anderen Lichtschranken weisen einfachere Bauteile auf, die
jedoch die genannten Schwächen in Bezug auf Tageslicht, o.ä. besitzen.
2.3.3 Bauteileliste
Folgende Bauteile wurden verwendet. Es wurden die Bezeichnungen aus dem Schaltplan
Abbildung. 23 verwendet.
R1 - 10kOhm/0,25 W - Metallschichtwiderstand
R2 - 560Ohm/0,25 W - Kohleschichtwiderstand
R3 - 21,8kOhm/0,25 W - Kohleschichtwiderstand
R4 - 145Ohm/0,25 W - Kohleschichtwiderstand
R7 - 1,2kOhm/0,25 W - Kohleschichtwiderstand
R8 - 12kOhm/0,25 W - Kohleschichtwiderstand
C1 - 330nF Elektrolytkondensator
C2 - 0,1nF Elektrolytkondensator
C3 - 0,33nF Elektrolytkondensator
C4 - 10µF Elektrolytkondensator
23
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
T2 und T3 - BF199 NPN Transistor
US1 - IS471F Infrarot Lichtdetektor mit Modulation
LED1 - LED gelb
LED2 - IR LED LAMP 5MM LI520C
D2 Diode - 1N4148
IC2 - Spannungsregler TS7805
2.3.4 Schaltbild
Das Schaltbild der Lichtschranke wurde in Eagle gezeichnet und ist in Abbildung 23
dargestellt.
Abb. 23 Vollständiger Schaltplan der Lichtschranke (Eagle)
2.3.5 Platinenlayout
Das Layout der Lichtschranke, ebenfalls in Eagle realisiert ist in den Abbildung 24 a-c
dargestellt.
24
Projekt Elektronik - Abschlussbericht
Abb. 24 a Finales Platinenlayout (Eagle)
Abb. 24 b Bottom layer (Eagle)
Abb. 24 c Top layer (Eagle)
25
WS 07/08 - ele51
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
3 Basisstation
Die Basisstation ist verantwortlich für die Interpretation der Sensordaten und deren
Ausgabe. Von einem Timer-Interrupt gesteuert, werden regelmäßig jede Viertelsekunde die
Daten abgefragt. Wurde die Lichtschranke durchbrochen, hat sich der Druck über einen
Grenzwert vergrößert oder erreicht die Temperatur einen kritischen Wert, dann wird ein
Alarm ausgelöst. Dieser äußert sich in einem Piepton und dem Umspringen der grünen „Alles
OK“-LED auf die rote „Alarm“-LED. Des Weiteren wird auf dem Display ausgegeben, welcher
Sensor den Alarm ausgelöst hat. Die Abbildung 25 zeigt das Zusammenspiel zwischen
Basisstation und Temperaturmodul.
Abb. 25 Temperaturmodul an Basisstation angeschlossen
3.1
Der Mikrocontroller
Wir benutzen einen Atmega32 von Atmel (Abb. 26) zusammen mit einem
Entwicklungsboard und dem AVR-Studio für die Programmierung des µC.
26
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abb. 26 Pinbelegung des Atmega32 [4]
Der Atmega32 besitzt 4 Ports (A, B, C, D) mit je 8 Bits (PA0..7, PB0..7, PC0..7,
PD0..7). Diese können als Ein- oder Ausgänge benutzt werden. Die Pinbelegung der Einund Ausgänge ist in Tabelle 5 dargestellt.
Tabelle 5 Pinbelegung der Ein- und Ausgänge des Atmega32
Pin
1
2
3
4
5
6
7
8
14
Bezeichnung
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PD0
15
16
17
PD1
PD2
PD3
18
PD4
19
20
21
22
23
24
25
26
27
PD5
PD6
PD7
PC0
PC1
PC2
PC3
PC4
PC5
Anschluss
Piezo-Schallwandler
Lichtschranke
n.c.
LED grün
LED rot
JTAG
JTAG
JTAG
Kennung2
von
Funkempfänger
Reset für Funkempfänger
Interrupt von Funkempfänger
Kennung1
von
Funkempfänger
Kennung0
von
Funkempfänger
Taster
Taster
Taster
LCD Data0
LCD Data1
LCD Data2
LCD Data3
LCD Reset
LCD Enable
27
Projekt Elektronik - Abschlussbericht
28
29
33
34
35
36
37
38
39
40
3.2
PC6
PC7
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
WS 07/08 - ele51
n.c.
n.c.
Sensordata 7
Sensordata 6
Sensordata 5
Sensordata 4
Sensordata 3
Sensordata 2
Sensordata 1
Sensordata 0
Kommunikation
3.2.1 Kommunikation mit dem Druck- und mit dem Temperaturmodul
Da Drucksensor- und Temperatursensorplatine analog zueinander aufgebaut sind,
verhält sich auch die Kommunikation mit der Basisstation analog.
Der Datenaustausch erfolgt per Kabel und per Funk.
Direkte Kommunikation per Kabel
Bei direkter Kommunikation (Kabel) mit Druck- bzw. Temperaturmodul werden elf
Leitungen benötigt. Dabei sind acht Datenleitungen vorgesehen, die den AD-gewandelten
Druck- bzw. Temperaturwert übertragen, und drei Steuerleitungen. Von den drei
Steuerleitungen werden zwei vom Mikrokontroller gesetzt (RD, WR) und eine (INTR) vom
AD-Wandler der Sensorplatine, wenn dieser mit der Konvertierung fertig ist. Die
Steuerleitungen RD und WR dienen dem Auslesen der Daten und dem Starten der nächsten
Konvertierung.
Kommunikation per Funk
Bei der Kommunikation per Funk ist die Basisstation mit dem Funkempfänger
verbunden. In diesem Fall gibt es 13 Leitungen. Wie zuvor, übertragen acht Leitungen die
Daten und fünf Leitungen dienen als Steuerleitungen bzw. Kennungsleitungen.
Die zwei Steuerleitungen setzen sich aus einer Interrupt- und einer Reset-Leitung
zusammen. Die Interrupt-Leitung kommt vom Funkempfänger und gibt an, wenn die Daten
bereit sind und vom Mikrokontroller gelesen werden können. Dieser gibt mit der ResetLeitung bekannt, dass die Daten fertig ausgelesen wurden und der nächste Datensatz
übertragen werden kann.
Die Sensormodule haben verschiedene Kennungen, damit man den ausgelösten
Alarm der Gefahrenquelle zuordnen kann. Diese Kennung wird über die restlichen drei
Leitungen übertragen, so dass der Mikrokontroller auf dem Display ausgeben kann, welcher
Sensor einen Alarm ausgelöst hat.
Durch die 3Bit Kennungsleitung ist es also möglich bis zu 6 Sensormodule zu
unterscheiden.
Eine schematische Darstellung der Schnittstelle von Funkempfänger und Basisstation
ist in Tabelle 6 abgebildet.
28
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Tabelle 6 Schematische Darstellung der Schnittstelle von Funkempfänger und Basisstation
12
RE
S
11
INT
10
Kenn
2
9
Kenn
1
8
Kenn
0
7
Data
7
6
Data
6
5
Data
5
4
Data
4
3
Data
3
2
Data
2
1
Data
1
0
Data
0
3.2.2 Kommunikation mit der Lichtschranke
Die Lichtschranke ist mit einer Datenleitung an den Mikrokontroller angeschlossen.
Diese Datenleitung ist konstant auf logisch „high“ gesetzt (ca. 5V). Wenn die Lichtschranke
durchbrochen oder die Datenleitung abgetrennt wird, interpretiert der Mikrokontroller das als
Alarmauslöser.
3.3
Datenverarbeitung
3.3.1 Time-Overflow-Interrupt
Das Kernstück des Mikrokontroller-Programms ist der Timer-Overflow-Interrupt. Der
Timer-Overflow-Interrupt wird benutzt um eine Uhr zu steuern. In regelmäßigen Abständen
(wenn die Uhr wieder eine Viertelsekunde verstreichen sehen hat) werden die
entscheidenden Eingangs-Pins abgefragt. Sind in der Zwischenzeit bestimmte Interrupts
gesetzt worden, Taster gedrückt oder andere entscheidende Pins gesetzt, dann werden flags
gesetzt, die in der main-Routine die Abarbeitung der Ereignisse steuern.
3.3.2 Datenverarbeitung für die Ausgabe
Die Daten des Druck- bzw. Temperatursensors liegen als binäre 8Bit Zahl an. Diese
muss zunächst in eine Dezimalzahl gewandelt werden. Eine Skalierung führt dazu, dass die
256 Werte auf den entsprechenden Druck bzw. Temperaturen konvertiert werden. Dabei
werden auch zwei Nachkommastellen berücksichtigt und auf dem Display ausgegeben.
3.4
Warnsystem
3.4.1 LED, Piepser
Zwei LEDs und ein piezoelektrischer Schallwandler zeigen an, ob ein Alarm ausgelöst
wurde oder nicht. Leuchtet die grüne Status-LED, so ist die Alarmanlage in Betrieb und alles
in Ordnung. Leuchtet die rote LED auf und ertönt das Piepsen des Schallwandlers, weiß der
Benutzer, dass ein Alarm ausgelöst wurde.
Der Schallwandler erzeugt einen Schalldruck von ca. 85dB bei einer Frequenz von 2048Hz.
29
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
3.4.2 LCD-Anzeige
Das benutzte LCD-Display (Abbildung 27) ist das folgende: LCD Display 162C-BC-BC
Abb. 27 LCD Display 162C-BC-BC
Die Angabe auf dem LCD-Display sieht wie in Abbildung 28 aus.
T°
45
Dr
OK
Li
AL
S4
OK
Abb. 28 Information auf dem LCD-Display
Dabei steht T° für die Temperatur, Dr für den Druck sensor, Li für die Lichtschranke, S4
für einen optionalen vierten Sensor, AL falls ein Alarm ausgelöst wurde, OK, wenn kein
Alarm ausgelöst wurde.
Zur Ansteuerung des Displays stehen 16 Bits zur Verfügung, deren Bedeutung ist in
Tabelle 7 vorgestellt.
Tabelle 7 Bits zur Ansteuerung des Displays
Pin #
1
2
3
4
Bezeichnung
Vss
Vcc
Vee
RS
5
6
R/W
E
Funktion
GND
5V
Kontrastspannung (0V bis 5V)
Register
Select
(Befehle/Daten)
Read/Write
Enable
7
8
9
10
11
DB0
DB1
DB2
DB3
DB4
Datenbit 0
Datenbit 1
Datenbit 2
Datenbit 3
Datenbit 4
12
DB5
Datenbit 5
30
Anschluss
0V (ground)
5V
0V (ground)
Steuerleitung
(PD4)
0V (ground)
Steuerleitung
(PD5)
n.c.
n.c.
n.c.
n.c.
Steuerleitung
(PD0)
Steuerleitung
Atmega32
Atmega32
Atmega32
Atmega32
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
13
DB6
Datenbit 6
14
DB7
Datenbit 7
15
16
A
K
LED-Beleuchtung, Anode
LED-Beleuchtung, Kathode
(PD1)
Steuerleitung
(PD2)
Steuerleitung
(PD3)
n.c.
n.c.
Atmega32
Atmega32
Pin1 wird an das Masse-Potential angeschlossen, Pin2 an die 5V Betriebsspannung.
Vee wird konstant auf Masse-Potential gehalten. Das reicht vorerst als Kontrastspannung.
RS wird an eine Steuerleitung des Atmega32 gelegt. Über diese wird entschieden, ob Daten
zur Ausgabe auf dem Display oder aber Befehle (wie z.B. das Setzen des Cursors) gesendet
werden. R/W wird ebenfalls auf Masse gelegt, da wir nur Daten an das Display senden, aber
keine auslesen. Pin6, das Enable (E), wird wie Pin4 an eine Steuerleitung des Atmega32
gelegt. Damit wird dem LCD-Display signalisiert, dass die Pegel korrekt anliegen.
Mit DB4…7 werden die Daten an das Display geschickt. Die Datenbits DB0…3 bleiben offen.
Es reichen 4Bits für unsere Darstellung. Auch die Hintergrundbeleuchtung des Displays wird
zunächst weggelassen.
Die Programmierung des LCD-Displays wird durch Einbinden der vorhandenen „lcdroutines.h“ bewerkstelligt. Damit sind fertige Funktionen eingebunden, mit denen direkt auf
das Display geschrieben werden kann. Diese Funktionen berücksichtigen bereits
Wartezeiten, die das Display für die Ausgabe benötigt und sind auch sonst bereits optimiert.
Einige Funktionsaufrufe sollen hiermit beispielhaft aufgeführt werden:
lcd_init();
lcd_data('T');
set_cursor(0,2);
lcd_string("Hello World!");
// zum Initialisieren des Displays
// um einzelne Zeichen auf das Display zu schreiben
// um den Cursor an eine gewünschte Stelle zu setzen
// um einen ganzen String auszugeben
Einige Funktionen wurden zusätzlich für die Darstellung implementiert.
lcd_menu();
lcd_refresh(LS2, AL);
//Für das Menü
//um den Zustand eines Sensor auf dem Display zu
aktualisieren ohne das gesamte Display zu löschen
lcd_temp_refresh(LS1, temp); //um die Temperatur auszugeben, ohne das restliche
Display zu löschen
31
Projekt Elektronik - Abschlussbericht
3.4
WS 07/08 - ele51
Die Platine
Die Platine der Basisstation wurde mit dem Layout-Programm Eagle erstellt.
3.4.1 Schaltbild
In der Abbildung 29 ist das das Gesamtschaltbild der Platine dargestellt.
Abb. 29 Schaltbild der Basisstation (Eagle)
3.4.2 Platinenlayout
In Abbildung 30 ist das Eagle-Board der Basisstation dargestellt.
32
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abb. 30 Eagle-Board der Basisstation
3.5 C-Code
Der ausführlich kommentierte C-Code steht als Datei zur Verfügung.
33
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
4 Funkmodul
Wir haben uns für den 433 MHz Standard entschieden, für den recht günstige Sendeund Empfangsmodule erhältlich sind.
Das Sendemodul ist ein SAW RF Transmitter Modul (mit integrierter Antenne) und das
Empfangsmodul ein Standard (OOK) Receiver. Beide Module sind von der Firma AUREL
und eignen sich für eine serielle Digitalübertragung (5 V Technik).
Da diese Module die Modulation und Demodulation der Digitaldaten vollständig
übernehmen, kann der Sender als einfache reelle Last und der Empfänger als Generator
angesehen werden, bei dem die gesendeten Daten um einen Zeitraum ∆t verschoben
ankommen (siehe Abbildung 31).
Abb. 31 Äquivalente Schaltungen für den Sender und den Empfänger
4.1
Empfänger
Da der Takt nicht mit übertragen wird, handelt es sich um eine asynchrone serielle
Datenübertragung, bei dem der Empfänger sich erst auf den Sendetakt synchronisieren
muss. Dies soll mit Hilfe eines CLPD der Firma Altera und der Entwicklungsumgebung
Quartus II geschehen. Der CLPD soll die Synchronisation vornehmen und die seriellen Daten
parallel ausgeben. Die Beschreibung der Digitalschaltung erfolgt in VHDL.
Die Abbildung 32 zeigt die fertige Empfängerplatine.
34
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abb. 32 Empfänger – fertige Platine
Das Blockschaltbild ist in Abbildung 33 dargestellt. Die einzelnen Komponenten
werden in den folgenden Abschnitten näher beschrieben.
Abb. 33 Blockschaltbild der Digitalschaltung
4.1.1 Takterzeugung
Die Takterzeugung soll aus dem Signal „Takt“ (Abb. 33) 10 phasenverschobene Takte
mit der Frequenz 2kHz erzeugen.
Die Takterzeugung kann in VHDL wie folgt beschrieben werden:
35
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
library ieee;
use ieee.std_logic_1164.all;
entity takt_teiler is
port(clk : in std_logic; c : buffer std_logic_vector(9 downto 0));
end takt_teiler;
architecture behaviour of takt_teiler is
begin
process(clk)
-- Phasenverschiebung Realisierung
variable i : integer range 0 to 4;
begin
if (clk = '1' and clk'event) then
if (i=4) then
case i is
when 0 => c(0)<= not c(0);
when 1 => c(1)<= not c(1);
when 2 => c(2)<= not c(2);
when 3 => c(3)<= not c(3);
when 4 => c(4)<= not c(4);
end case;
i:=0;
else
case i is
when 0 => c(0)<= not c(0);
when 1 => c(1)<= not c(1);
when 2 => c(2)<= not c(2);
when 3 => c(3)<= not c(3);
when 4 => c(4)<= not c(4);
end case;
i:= i+1;
end if;
end if;
c(5) <= not c(0);
c(6) <= not c(1);
c(7) <= not c(2);
c(8) <= not c(3);
c(9) <= not c(4);
end process;
process(clk)
--Taktteiler Realisierung
variable l: integer range 0 to 24:=0;
begin
if (clk = '1' and clk'event) then
if (l=24) then
clk_s <= not clk_s;
l:=0;
else
l:=l+1;
end if;
end if;
end process;
36
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
end behaviour;
Das Ergebnis der Simulation ist in Abbildung 34 dargestellt. Aus Gründen der
Anschaulichkeit wurde hier nur clk_s (clk im Bild) dargestellt. Die Zeitachsen sind im
Folgenden immer skaliert.
Abb. 34 Simulationsergebnis der Takterzeugung (Quartus II)
4.1.2 Taktauswahl
Die Taktauswahl erfolgt in Abhängigkeit des syn-Signals. Bei der asynchronen
seriellen Datenübertragung soll hier als erstes Signal immer ein High-Pegel übertragen
werden, auf das sich dann der Empfänger innerhalb eines viertel Taktes synchronisieren soll.
Die Taktauswahl wurde in VHDL wie folgt beschrieben:
library ieee;
use ieee.std_logic_1164.all;
entity waehle_takt is
port( clk : in std_logic;
syn : in std_logic;
reset : in std_logic;
c : in std_logic_vector(9 downto 0);
o_clk : out std_logic);
end waehle_takt;
architecture behaviour of waehle_takt is
begin
process(clk, reset)
variable lock : integer range 0 to 1 := 0;
variable i : integer range 0 to 9 := 0;
begin
if (reset ='1') then
lock:=0;
elsif(clk'event and clk='1') then
37
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
if(lock=0 and syn ='1') then
if (c(9)='1' and c(0) ='0') then i:=0;
elsif (c(0)='1' and c(1) ='0') then i:=1;
elsif (c(1)='1' and c(2) ='0') then i:=2;
elsif (c(2)='1' and c(3) ='0') then i:=3;
elsif (c(3)='1' and c(4) ='0') then i:=4;
elsif (c(4)='1' and c(5) ='0') then i:=5;
elsif (c(5)='1' and c(6) ='0') then i:=6;
elsif (c(6)='1' and c(7) ='0') then i:=7;
elsif (c(7)='1' and c(8) ='0') then i:=8;
elsif (c(8)='1' and c(9) ='0') then i:=9;
end if;
lock:=1;
end if;
end if;
if (lock=0) then
o_clk <= '0';
else
o_clk <= c(i);
end if;
end process;
end behaviour;
Das Ergebnis der Simulation ist in Abbildung 35 dargestellt.
Abb. 35 Simulationsergebnis der Taktauswahl (Quartus II)
4.1.3 Block Takterzeugung und Synchronisation
Der Block Takterzeugung und Synchronisation ist einfach die Zusammenschaltung der
beiden oberen Schaltungen.
Er wird in VHDL wie folgt beschrieben:
library ieee;
38
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
use ieee.std_logic_1164.all;
entity generate_and_syn_clk is
port ( clk : in std_logic;
syn : in std_logic;
reset : in std_logic;
o_clk : out std_logic);
end generate_and_syn_clk;
architecture structural of generate_and_syn_clk is
signal s : std_logic_vector(9 downto 0);
component takt_teiler
port( clk : in std_logic;
c : buffer std_logic_vector(9 downto 0));
end component;
component waehle_takt
port( clk : in std_logic;
syn : in std_logic;
reset : in std_logic;
c : in std_logic_vector(9 downto 0);
o_clk : out std_logic);
end component;
begin
t_t : takt_teiler port map(clk, s);
w_t : waehle_takt port map(clk, syn, reset, s, o_clk);
end structural;
Das Ergebnis der Simulation ist in Abbildung 36 zu sehen.
Abb. 36 Simulation der Takterzeugung und Synchronisation (Quartus II)
4.1.4 Serielle Daten in parallele umwandeln
Dieser Baustein bekommt die seriellen Daten des Funkempfängers und liefert sie
parallel nach außen.
Er kann in VHDL wie folgt beschrieben werden:
library ieee;
use ieee.std_logic_1164.all;
39
Projekt Elektronik - Abschlussbericht
entity serial_to_parallel is
generic (w : positive);
port( clk_s : in std_logic;
s : std_logic;
reset : in std_logic;
int : out std_logic;
p : buffer std_logic_vector(w-1 downto 0));
end serial_to_parallel;
architecture behaviour of serial_to_parallel is
begin
process(clk_s, reset)
variable i: integer range 0 to w :=0;
variable v_int : std_logic :='0';
begin
if(reset = '1') then
i:=0;
v_int := '0';
elsif(clk_s'event and clk_s = '1') then
if(v_int = '0') then
if (i/=w) then
if (i/=0) then
p(i-1) <= s;
end if;
i:=i+1;
else
p(i-1) <= s;
v_int := '1';
end if;
end if;
int <= v_int;
end if;
end process;
end behaviour;
4.1.5 VHDL Beschreibung der Gesamtschaltung
Die VHDL Beschreibung der Gesamtschaltung sieht wie folgt aus:
library ieee;
use ieee.std_logic_1164.all;
entity asyn_serial is
port ( clk : in std_logic;
s : in std_logic;
-- serieller Eingang
reset : in std_logic; -- asynchroner reset-Eingang
p : out std_logic_vector(width-1 downto 0); --parallele Ausgabe
int : out std_logic); -- Interrupt (out) für gültige Daten
end asyn_serial;
40
WS 07/08 - ele51
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
architecture structural of asyn_serial is
component generate_and_syn_clk
port ( clk : in std_logic;
syn : in std_logic;
reset : in std_logic;
o_clk : out std_logic);
end component;
component serial_to_parallel
generic (w : positive := 8);
port( clk_s : in std_logic;
s : std_logic;
reset : in std_logic;
int : out std_logic;
p : buffer std_logic_vector(w-1 downto 0));
end component;
signal s_o_clk : std_logic;
begin
g : generate_and_syn_clk port map(clk, s, s_o_clk);
s_p : serial_to_parallel port map(s_o_clk, s, '0', int, p);
end structural;
Das Ergebnis der Simulation der Gesamtschaltung ist in Abbildung 37 zu sehen.
Takt – clk, serielle Daten – s, paralleler Ausgang – p und Interrupt – int
Abb. 37 Simulationsergebnis der Gesamtschaltung (Quartus II)
4.1.6 Bauteileliste
EPM7064SCL84
10 pF Kondensator
1MHz Oszillator
41
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
4.1.7 Schaltbild
In Abbildung 38 ist das Gesamtschaltbild des Empfängers abgebildet.
Abb. 38 Gesamtschaltbild des Empfängers (Eagle)
4.1.8 Platinenlayout
Abbildung 39 stellt das Platinenlayout des Empfängers dar.
42
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abb. 39 Layout des Empfängers (Eagle)
4.2
Sender
Der Sender interagiert mit dem A/D-Wandler ADC0803, dessen Digitalwerte entweder
die Temperatur oder den Druck darstellen. Für die Kommunikation mit diesem A/D-Wandler
wurde eine Finite State Machine (FSM) gemäß der Timing-Diagramme des Datenblatts in
VHDL entworfen. Diese FSM übernimmt das gesamte „Handshake“ mit dem Baustein bis hin
zur parallelen Übernahme der Digitaldaten. Diese parallelen Daten werden noch um ein 3Bit
Code, welcher eine Unterscheidung zwischen Temperatur- und Druckmodul ermöglichen soll
und um ein gesetztes Bit, welches dem Empfänger zur Synchronisation dient, ergänzt. Diese
Bitreihe wird dann seriell an das Sendemodul von der Firma Aurel mit einer Geschwindigkeit
von 2kBit/s herausgeshiftet. Ein Foto der fertigen Senderplatine ist in Abbildung 40 zu sehen.
43
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abb. 40 Senderplatine
4.2.1 Entwicklung der Finite State Machine
Um die Entwicklung der FSM transparenter zu machen, soll hier auszugsweise das
Timing-Verhalten des A/D Wandlers aus dem Datenblatt ADC0801 [5] abgebildet werden
(Abb. 41 a und Abb. 41 b).
Das Signal CS ist immer auf 0V, da pro Modul nur ein A/D-Wandler verwendet wird
und daher ein Ausschalten unnötig ist. Ein gültiger Zyklus zum Abrufen der Daten sieht dann
wie folgt aus: Um den Chip zu initialisieren, muss das WR-Signal einen negativen Puls
erfahren. Wenn das Signal INTR auf null geht und CS auf null ist, können mit einem
negativen Puls an dem Eingang RD die Daten abgerufen werden. Der INTR wird getilgt und
nach einem Anstieg des RD Signals von null auf eins, kann ein neuer Konvertierungszyklus
beginnen.
Die abgeleitete FSM ist in Abbildung 42 dargestellt.
44
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abb. 41 a Timing-Verhalten des A/D Wandlers [5]
Abb. 41 b Timing-Verhalten des A/D-Wandlers [5]
45
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abb. 42 Finite State Machine für den A/D-Wandler
An den Zuständen 0 bis 4 wurden nur die Änderungen der Signale RD und WR
angegeben. Die Standardwerte sind RD = 1 und WR = 1.Das Signal „abrtime“ wurde hier
noch zusätzlich aufgenommen und stellt ein intern erzeugtes Signal des CPLD dar. Dieses
Signal toggelt zweimal pro Sekunde und sorgt dafür, dass die Digitaldaten eben nur zweimal
in der Sekunde über die Funkschnittstelle übertragen werden.
4.2.2 VHDL Beschreibung der Finite State Machine
Die VHDL Beschreibung weist zwei Prozesse auf. Ein Prozess dient der
kombinatorischen Logik und der andere dem Setzen der Register, welche den aktuellen
Zustand speichern.
4.2.3 Bauteileliste
EPM7064SLC44
10pF Kondensator
1MHz Oszillator
4.2.4 Schaltbild
In Abbildung 43 ist das Gesamtschaltbild des Senders dargestellt.
46
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abb. 43 Gesamtschaltbild des Senders (Eagle)
4.2.5 Platinenlayout
Das Platinenlayout des Senders ist in den Abbildungen 44 a-c dargestellt.
Abb. 44 a Platinenlayout für den Sender (Eagle)
47
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abb. 44 b Bottom layer (Eagle)
Abb. 44 c Top layer (Eagle)
4.3 Schnittstellen der Module
Der Sender weißt eine dem Funkmodul bzw. Temperaturmodul völlig analoge
Schnittstelle auf, sodass eine Steckverbindung mittels Flachbandkabel problemlos möglich
ist.
Der Empfänger weißt eine der MC-Platine gleiche Schnittstelle auf, sodass auch hier
eine Übertragung der Daten über ein Flachbandkabel erfolgt.
48
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
5 Zusammenfassung
Das Zusammenspielen der einzelnen Module mit der Hauptstation hat einen sehr
großen Teil der Zeit benötigt, da Schnittstellen sich während des Projektes geändert haben
und so z.B. die anfangs in Erwägung gezogene Funkverbindung aller Module mit der
Basisstation leider sehr starke Probleme bei der Realisierung brachte. Daher änderten sich
teilweise auch die Anforderungen an die einzelnen Schaltungen. So wurde das Modul
Lichtschranke nur noch für eine Kabelanbindung mit der Basisstation ausgelegt.
Probleme ergaben sich auch bei den fertig geätzten Platinen, da diese teilweise lange
geprüft und einige nachgearbeitet werden mussten, da Fehler auf diesen Platinen vorlagen.
Teilweise ergaben sich hieraus auch sehr lange und intensive Fehlersuchen, nach der
Bestückung, da bei einigen Leiterbahnen noch Verbindungen zur Masse vorlag, aber auch
einige Lötaugen keine leitende Verbindung zu der entsprechenden Leiterbahn hatten. Diese
Probleme konnten aber alle gelöst werden. Die Kommunikation über die Funkverbindung
erwies sich letztlich als sehr kompliziert, anders als anfänglich gedacht. Die Fehlersuche bei
diesem Übertragungsweg ist sehr komplex und erfordert daher eine sehr aufwendige
Fehlersuche.
Unser Betreuer gab immer sehr gute Hilfestellung, wenn wir nicht weiter wussten und
ein Problem nicht selbst lösen konnten. Das Realisieren der von uns selbst ausgewählten
neuartigen Schaltung, über die Zwischenschritte der Berechnung, Simulation, Erstellen der
Layouts und Bestücken der Platinen hat uns sehr viel Freude bereitet und uns viel Erfahrung
für das spätere Berufsleben sammeln lassen. Das erlernte Wissen über die Vorgehensweise
bei der Fehlersuche ist für uns alle sehr nützlich. Das Zusammenarbeiten in dieser Gruppe
hat uns allen sehr viel Spaß gemacht und unsere Teamkompetenz verbessert.
6 Literaturverzeichnis
[1] http://ife.et.tu-dresden.de/de/lehre/sensorik/TSensoren.PDF
[2] Conrad Electronic
[3] Datenblatt ADC0803LCD http://www.ortodoxism.ro/datasheets/philips/ADC0803LCD.pdf
[4] Datenblatt Atmega32 http://www.atmel.com/dyn/resources/prod_documents/doc2503.pdf
[5] Datenblatt ADC0801, http://www.datasheetcatalog.com/datasheets_pdf/A/D/C/0/ADC0801.shm
weitere Quellen:
www.mikrocontroller.net
www.pollin.de
www.conrad.de
www.google.de
http://de.wikipedia.org/wiki/Pt100
www.home.snafu.de/sicpaul/midi/hexbin.htm
www.roboternetz.de
www.nongnu.org/avr-libc/user-manual/modules.html
http://www.1zu160.net/elektrik/lichtschranke2.php
Burkhard Mann: C für Mikrocontroller, 2.Auflage Franzis’
49
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
7 Abbildungsverzeichnis
Abbildung 1 Einfaches Blockschaltbild der Alarmanlage
Abbildung 2 Kennlinie des Pt100 [1]
Abbildung 3 Platine Temperaturmodul
Abbildung 4 Blockschaltbild des Temperaturmoduls
Abbildung 5 Typ PT 100 M 222 1/3B 20NIPt 10 [2]
Abbildung 6 Brückenschaltung für die Sensorstufe (PSpice)
Abbildung 7 Spannungsfolger mit OPV (PSpice)
Abbildung 8 Verstärkerschaltung (PSpice)
Abbildung 9 Schaltung für AD Umsetzung [3]
Abbildung 10 Zeitdiagramm des ADUs für das Schreiben [3]
Abbildung 11 Zeitdiagramm des ADU für Lesen [3]
Abbildung 12 Gesamtschaltbild des Temperaturmoduls (PSpice)
Abbildung 13 Platinenlayout für das Temperaturmodul (Eagle)
Abbildung 14 Drucksensor-FSR-149NS [2]
Abbildung 15 Fertige Platine des Drucksensors
Abbildung 16 Brückenschaltung beim Druckmodul (PSpice)
Abbildung 17 Verstärkungsstufe des Druckmoduls (PSpice)
Abbildung 18 Gesamtschaltbild des Druckmoduls (PSpice)
Abbildung 19 Platinenlayout für das Druckmodul (Eagle)
Abbildung 20 Blockschaltbild der Lichtschranke
Abbildung 21 Funktionsfähiger Prototyp der Lichtschranke
Abbildung 22 Vollständiges Modul Lichtschranke
Abbildung 23 Vollständiger Schaltplan der Lichtschranke (Eagle)
Abbildung 24 a Finales Platinenlayout (Eagle)
Abbildung 24 b Bottom layer (Eagle)
Abbildung 24 c Top layer (Eagle)
Abbildung 25 Temperaturmodul an Basisstation angeschlossen
Abbildung 26 Pinbelegung des Atmega32 [4]
Abbildung 27 LCD Display 162C-BC-BC
Abbildung 28 Information auf dem LCD-Display
Abbildung 29 Schaltbild der Basisstation (Eagle)
Abbildung 30 Layout der Basisstation (Eagle)
Abbildung 31 Äquivalente Schaltungen für den Sender und den Empfänger
Abbildung 32 Empfänger – fertige Platine
Abbildung 33 Blockschaltbild der Digitalschaltung
Abbildung 34 Simulationsergebnis der Takterzeugung (Quartus II)
Abbildung 35 Simulationsergebnis der Taktauswahl (Quartus II)
Abbildung 36 Simulation der Takterzeugung und Synchronisation (Quartus II)
Abbildung 37 Simulationsergebnis der Gesamtschaltung (Quartus II)
Abbildung 38 Gesamtschaltbild des Empfängers (Eagle)
Abbildung 39 Layout des Empfängers (Eagle)
Abbildung 40 Senderplatine
Abbildung 41 a Timing-Verhalten des A/D Wandlers [5]
Abbildung 41 b Timing-Verhalten des A/D-Wandlers [5]
Abbildung 42 Finite State Machine für den A/D-Wandler
Abbildung 43 Gesamtschaltbild des Senders (Eagle)
Abbildung 44 a Platinenlayout für den Sender (Eagle)
50
2
6
7
7
8
9
10
10
11
12
12
13
14
16
17
17
18
19
19
21
22
23
24
25
25
25
26
27
30
30
32
33
34
35
35
37
38
39
41
42
43
44
45
45
46
47
47
Projekt Elektronik - Abschlussbericht
WS 07/08 - ele51
Abbildung 44 b Bottom layer (Eagle)
Abbildung 44 c Top layer (Eagle)
48
48
8 Tabellenverzeichnis
Tabelle 1 Simulationsergebnisse für das Temperaturmodul
14
Tabelle 2 Messergebnisse für das Temperaturmodul
15
Tabelle 3 Simulationsergebnisse für das Druckmodul
20
Tabelle 4 Messergebnisse für das Druckmodul
20
Tabelle 5 Pinbelegung der Ein- und Ausgänge des Atmega32
27/28
Tabelle 6 Schematische Darstellung der Schnittstelle von Funkempfänger und Basisstation
29
Tabelle 7 Bits zur Ansteuerung des Displays
30/31
51
Herunterladen