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 Mikrocontroller ATMega32

1. Systembeschreibung
2. Die Systemplatine
3. Die ISP-Schnittstelle

Nachdem das Display ausführlich getestet und verstanden wurde, kann man sich näher mit dem Mikrocontroller selbst beschäftigen, der die Rechen-, Mess- und Steuerbefehle abarbeiten soll und das "Zentralorgan" des SBTC darstellt. Wir münden dann ein in die Platine des SBTC um ein funktionsfähiges Testgerät zu erarbeiten.

1. Systembeschreibung

Der AVR-ATMega32-Controller (MUC = micro controller unit, kurz uC) der Firma ATMEL , der das Herzstück unseres Tauchcomputers bildet, besitzt u. a. folgende Eigenschaften:
  • 32kByte internes Flash-Memory als Programm- und Datenspeicher, mehr als ausreichend für ein umfangreiches Dekompressionsprogramm.
  • 1024 Byte EEPROM, z. B. für Tauchgangsdaten wie das Tauchprofil, Benutzereinstellungen etc.
  • 4 Ein- und Ausgangsports (8 Bit breit, Bezeichnungen A, B, C und D), die teilweise noch fakultativ für andere Aufgaben genutzt werden.
  • integierte serielle Schnittstelle, RS-232 kompatibel, 0..5V-Pegel.
  • integerierter mehrkanaliger AD-Wandler (10 Bit).
  • ISP-programmierbar ("in-system-programming") über den Parallelport des PC, d. h. der Controller kann auf der Systemplatine des Tauchcomputers verbleiben, während die Software aufgespielt wird
  • Ca. 10.000 Schreibzyklen auf dem Flashspeicher (lt. Datenblatt ), 100.000 EEPROM-Zyklen.
Der Atmel-AVR-Kontroller benötigt sehr wenig externe Bauelemente, um ein funktionierendes uC-System bereit zu stellen: Eine Spannungsregelung (i. d. R. 5 V, "L"-Typen 3V), evtl. einen Uhrenquarz (32.767 kHz) wenn man mit einem seiner 3 Timer arbeiten will (Timer2 für einen evtl. anzuwenden Powersave-Modus wie im SBTC) bzw. einen externen Quarzoszillator. Der uC arbeitet aber auch ohne externen Takt, da der uC einen recht präzisen internen Taktgenerator besitzt. Abschließend benötigt man einige Widerstände, Kondensatoren etc.

Ein weiterer Vorteil ist, dass diese Kontrollerfamilie (AVR- ATMega...) im Internet sehr gut beschrieben wird, so dass an Informationen kein Mangel besteht. Google hilft weiter.

Um sich etwas in die Hardware einzuarbeiten, empfehle ich daher wärmstens z. B. das hervorragend gemachte Tutorial auf mikrocontroller.net . Dort gibt es weiterführende Links zu Hardware, Software und Entwicklungsumgebungen für die ATMEL-Kontroller, u. a. das Datenblatt das ATmega32 , die Dokumentation und den kostenlosen GNU AVR C-Compiler etc. Eigentlich findet man dort alles, was man als Hobbyelektroniker über Mikrocontroller wissen muss.

2. Die Systemplatine

Die Systemplatine unseres SBTC ist im Prinzip ein einfaches Mikrocontroller-Testboard, das allerdings um verschiedene tauchcomputerspezifische Baugruppen erweitert wird.

Der Kern des Systems besteht wie beschrieben aus dem Mikrocontroller ATMega32. Der Mikrocontroller benötigt eine stabilisierte Speisespannung (VDD) von 5V, VDD an PIN 10 (Reset) und ist dann einsatzbereit. Ergänzt wird er durch das LCD-Display , die Programmierschnittstelle , den Drucksensor mit seinem Messverstärker, dem Temperatursensor , einer Stromversorgung aus einem 9V-Nickel-Metallhydridakku und 2 Spannungsreglern. Zusätzlich gibt es für die Bedienersteuerung 3 Taster, um die Einstellung verschiedener Parameter vor und während des Tauchganges durchzuführen.

Hier nun die Gesamtschaltung des SBTC:

Systemplatine des SBTC
Bild 1: Systemplatine des SBTC in der Version für analogen Drucksensor
(Grafik ist verkleinert, Schaltplan in voller Größe )

Anmerkungen zur Schaltung:
 
Aktiviert wird der SBTC durch einen Reedkontakt mit einem von außen an das Gehäuse angelegten Dauermagneten. Hier benutze ich einen kleinen stabförmigen Magneten von Mükra-Elektronik, der seitlich am Gehäuse sitzt und mit einem Gummiband verschiebbar ist, das um das gesamte Gehäuse herum liegt. Eine einfache und trotzdem praktikable Lösung, gut bedienbar auch mit Handschuhen.

  • Integriert in die Platine ist des Weiteren eine Ladebuchse, die an eine 12-V-Stromquelle angeschlossen werden kann. Die Erzeugung des zur Ladung von NiCd- oder NiMH-Akkus benötigten konstanten Ladestromes erfolgt durch die in Serie geschaltete Lampe 12V/0,05A, die aufgrund ihrer Kaltleitereigenschaften eine hinreichend gleichbleibende Ladestromstärke ergibt.
  • Der ATmega32 ist  u. a. erhältlich im 40-poligen DIL-Gehäuse. Die Pinbelegung des Mikrocontrollers ist für diese Gehäusebauform wie folgt:
  • Aufbauhinweis: Am praktibalsten erschien es mir, das Display über die Platine zu setzen, da hier der flächenbezogene Platzbedarf am geringsten war, d. h. die später druckbeaufschlagte Gehäusefläche wird minimiert.
  • Es empfiehlt sich, das Display mit einer Mehrfachsteckerverbindung mit der Hauptplatine zu verbinden, um beide Ebenen für Tests und Wartung trennen zu können.

3. Die ISP-Schnittstelle

Das, was man selbst an Software erzeugt hat, muss in den Controller hineingeladen werden. Dazu wird der Mikrocontroller wird über die parallele Schnittstelle (Druckerport) eines PC programmiert. Ich verwende dazu das Programm yaap , mit dem sich auch die sog. "Fusebits" des uC setzen lassen, also insbesondere die Taktrate des uC auf wahlweise 1,2, 4 oder 8 MHz einstellen lässt. Davon später mehr.

Die ISP-Schnittstelle benötigt zur Datenübertragung (Schreiben und Lesen des Mikrocontroller) lediglich 5 Leitungen vom Druckerport zum Mikrocontroller. Diese 5 Anschlüsse haben folgende Bezeichnungen:

  • SCK (System Clock, der Taktgeber, der vom PC bzw. der Übertragersoftware generiert wird und den Datenstrom synchronisiert)
  • RESET (Wird dieser Pin 1 des Mikrocontroller auf Masse gelegt, so wird die Übertragungsroutine aktiv)
  • MISO (Master in, Slave out, die Datenleitung vom Mikrocontroller zum PC)
  • MOSI (Master out, Slave in, Daten vom PC zum Mikrocontroller)
  • GND (Ground, die Masseleitung)
Zur Informationsübertragung verwendet man unter yaap am besten das einfache Interface, das der Programmautor Jesper Hansen vorschlägt. Es handelt sich um 4 Widerstände (100 ), über die die Signale für die 4 oben bezeichneten Leitungen SCK, MOSI, MISO, und RESET geführt werden. Ein Schaltplan befindet sich im Softwarepaket von Herrn Hansen als GIF-Datei.

Weiter zu Teil III (Die Software)

Die SBTC-Seiten

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