Homepage von Peter Rachow Startseite - Home

Der Selbstbau-Tauchcomputer

Allgemeines 

Forschung und Entwicklung: LCD-Anzeige | Mikrocontroller | Software | Sensoren | Gehäuse | Erfahrungsberichte

Geräte: SBTC3 | SBTC4 | Datenmodem zum PC | Simulator für Drucksensor

Der Datenaustausch zwischen dem SBTC und einem PC

Die Datenkommunikation zwischen SBTC und PC findet über die serielle Schnittstelle des PC (COM1: oder COM2:) und dem USART (Universal Synchronous and Asynchronous Receiver and Transmitter)-Modul des ATMEL-Controllers statt. Dafür benötigt man ein Modem, das die +/-12V der seriellen Schnittstelle umsetzt auf 0...5V des ATMEL-Controllers. Der Schaltplan für dieses Modem findet sich hier .

Die Übertragungsparameter sind: 2400 Baud, 8 Datenbits, Keine Parität, 1 Stoppbit
1. Die Speicherbelegung des SBTC

Der Speicher des SBTC gliedert sich in 2 Gruppen von n und m Bytes:

n: Dem Speicher für die Benutzereinstellungen und anderer fixer Parameter (Bytes 0...47)
m: Dem Ringspeicher für Tauchgangsdaten (Bytes 48...1024)

1.1 Die Belegung der Zellen der ersten 48 Bytes im EEPROMs

Folgende Belegung der ersten 48 EEPROM-Zelen wird verwendet:
Die Benutzereinstellungen:
 
Byte offset
Inhalt
0
Umgebungsluftdruck LoByte
1
Umgebungsluftdruck HiByte
2
N2-Anteil Gas 1 in %
3
He-Anteil Gas 1 in %
4
N2-Anteil Gas 2 in %
5
He-Anteil Gas 2 in %
6
N2-Anteil Gas 3 in %
7
He-Anteil Gas 3 in %
8
N2-Anteil Gas 4 in %
9
He-Anteil Gas 4 in %
10
Konservativ-Faktor (0...6)
11
maximaler ppO2 * 10 (10..20)
12
Anti-Diveguide-Mode (0 oder 1)
13
Konstanter ppO2 * 10 (10..20)
14
Flugzeug Kabinendruck LoByte
15
Flugzeug Kabinendruck HiByte
16
Höhe über NN LoByte
17
Höhe über NN HiByte
18
reserviert
19
reserviert
20
reserviert
21
Softwareversion (Hauptversion 1...9)
22
Softwareversion (Unterversion 0...255)
23
Softwareversion (Revision a...z)
Die Statistikwerte:
 
Byte offset
Inhalt
24
Anzahl der Tauchgänge (LoByte)
25
Anzahl der Tauchgänge (HiByte)
26
Gesamttauchzeit (LoByte)
27
Gesamttauchzeit (HiByte)
28
Max. erreichte Tiefe (LoByte)
29
Max. erreichte Tiefe (HiByte)
30
Zuletzt geschriebenes Byte des Ringspeichers (Lo)
31
Zuletzt geschriebenes Byte des Ringspeichers (Hi)
32
reserviert
33
reserviert
34
reserviert
35
reserviert
36
reserviert
37
reserviert
38
reserviert
39
reserviert
40
reserviert
41
reserviert
42
reserviert
43
reserviert
44
reserviert
45
reserviert
46
reserviert
47
reserviert

Ein Tauchgang erhält diese Datenstruktur:
 
 

0
128    (Beginn TG-Daten)
1
OFP [min.] vor dem TG LoByte
2
OFP [min.] vor dem TG HiByte
3
Temperatur vor dem TG [°C]
4
Aufzeichnungsintervall [s]
5
129    (Beginn Tauchprofil)
6
n TG-Tiefenpunkte (in [m])...
6 + n
130    (Ende Tauchprofil)
7 + n
Tauchzeit [min.] LoByte
8 + n
Tauchzeit [min.] HiByte
9 + n
Max. erreichte Tiefe [m] 
LoByte
10 + n
Max. erreichte Tiefe [m] 
LoByte
11 + n
Minimale Temp. während des TG [°C]
12 + n
Temp.auf max. Tiefe [°C]
13 + n
131    (Beginn Dekostufen)
14 + n
m Zeiten auf den einzelnen Dekostufen beginnend mit der Stufe 3m, dann 6m, 9m etc.
15 + n + m
132
(Ende Dekostufen)
16 + n + m
Laufende Nr. dieses TG 
17 + n + m
Tages-ZNS (LoByte)
18 + n + m
Tages-ZNS (HiByte)
19 + n + m
TG-ZNS (LoByte)
20 + n + m
TG-ZNS (HiByte)
21 + n +  m
OTU (LoByte)
22 + n + m
OTU (HiByte)
23 + n + m
133    (Ende der Sequenz)

Anmerkungen:

Im Tauchprofil selbst sind Sonderwerte enthalten. Diese entsprechen:

122: Aufstiegsgeschwindigkeit missachtet
123: Dekompressionsstufe missachtet
124: ppO2 über eingestelltem Grenzwert

125: Nullzeit abgelaufen (i. e. ab jetzt der Tod lauert! ;-))) )
126: Gaswechsel durchgeführt (Nr. des Gases im nächsten Byte)
127: Aufgetaucht
134...138: reserviert

2. Die Kommunikation zwischen PC und SBTC

2.1 Die Grundstruktur

Der PC fungiert als "Master", der SBTC als "Slave". Wird der SBTC per Bedienermenü in den Datenkommunikationsmodus geschaltet, so wird das USART-Modul intialisiert und der Interruptvektor aktiviert, d. h. das Gerät ist jetzt in der Lage, vom PC Befehle zu empfangen. Wenn jetzt ein Zeichen aus der seriellen Schnittstelle des PC eintrifft, wird es in der Interruptfunktion des USART in einen Puffer geschrieben. Der Inhalt dieses Puffers wird um nachfolgende Zeichen erhöht, die einen Befehl genauer definieren (s. u.). Die Anweisung ist abgeschlossen, wenn die erwartete Zahl an Bytes beim SBTC eingetroffen sind. Dann wird die ganze Zeichenkette im SBTC ausgewertet. Vorher wird die Befehlszeichenfolge an den PC zurück übertragen, um eine Überprüfungsmöglichkeit zu haben, ob die Daten korrekt beim SBTC angekommen sind. Zusätzlich wird beim Lesen von Daten des SBTC die CRC-Prüfsumme der übertragenen Daten berechnet.
2.2 Die Befehlscodes

Die Befehlsstruktur ist äußerst einfach gehalten, es gibt nur 2 Befehle:

  • Ein Byte des SBTC lesen (Code 100)
  • Ein Byte des SBTC schreiben (Code 101)
Der Aufbau der Zeichenkette für das Lesen eines Byte ist:
 
Befehlscode
100
Adresse LoByte Adresse
HiByte

Ein Wert eines Bytes wird gesetzt mit:

Befehlscode
101
Adresse LoByte Adresse
HiByte
Wert CRC-Prüfsumme

 

2.3 Die Antworten des SBTC

Der SBTC antwortet auf die beiden Befehle mit folgender Datenstruktur:

Antwort auf einen Lesebefehl:

Befehlscode
100
Adresse LoByte Adresse
HiByte
Gelesener Wert CRC-Prüfsumme

Antwort auf einen Schreibbefehl:
 

Befehlscode
101
Adresse LoByte Adresse
HiByte
Gesetzter Wert

2.4 Die PC-Software

Die Software für den PC lässt sich hier herunterladen (Visual Basic Quellcode).

SBTC-Kommunikationssoftware


 

Die SBTC-Seiten

Konzeption | LCD-Anzeige | Mikrocontroller | Software | Sensoren | Gehäuse | Erfahrungsberichte