BR:Temperaturmodul 1

Aus II-Wiki
Wechseln zu: Navigation, Suche

Dies ist ein Projekt von Byte-Revolution, durchgeführt von Projektleiter Tilan

Temperatur Modul - Vers 1

Aktueller Projektstatus: Abgeschlossen

Idee / Funktionsumfang

  • Messen der Temperatur und Speicherung einzelner Messwerte zur Auswertung (Innen- und Außentemperatur)
  • Anzeige der Temperatur
  • Kommunikation mit dem PC – Entwicklung eines simplen Datenübertragungsprotokolls
  • Kennen lernen von Phillips I²C Protokoll

Planung

  • Entwicklung einer Schaltung unter Verwendung möglichst vieler I²C Komponenten
  • Wahl des µC viel auf AT90S2313 (Atmel)
  • Speicher: Eeprom 24c04 – 512 Byte, I²C Interface (Atmel, ST)
  • Tempsensor: LM75 – I²C Interface (National Semiconductor)
  • 8bit I/O Expander zur Ansteuerung der Anzeige (7 Segment Elemente, Kingbright)
  • Zwei Dualleds zur Anzeige des Vorzeichens und des ausgelesenen Sensors
  • RS232 Chip zur Kommunikation mit dem Rechner (Maxim)
  • Spannungsversorgung wird von einem 7805 bereitgestellt – gedacht war ein Batterie Betrieb mit einem 9V Block bzw. alternativ ein Netzteilanschluss
  • Auswahl eines geeigneten Gehäuses mit Batteriefach – gab dann die Grundform des PCB Layouts vor
  • Bestellung aller benötigten Teile bei Reichelt

PCB Entwicklung (Leiterplatte)

Die Platine (vorne)
Die Platine (hinten)
  • Erstellen eines PCB Layouts, wegen Gehäusebeschränkungen musste ich auf Dual layer wechseln – wesentlicher größerer Herstellungsaufwand (hatte vorher noch nie Dual layer hergestellt)
  • Anfertigen des PCB:
    • Belichtungsmaske anfertigen (habe zwei Transparentfolien zu einer Art Tasche zusammengeklebt, dabei ist zu beachten, dass bottom und top layer nicht verrutschen, da sonst die Bohrungen nicht mehr übereinstimmen)
    • Belichten der Leiterplatte (mit meinem Eigenbaubelichter, ich verwende zur Belichtung Revoltec UV-Kaltlichtkatoden, Belichtungszeit ca. 5min für Bungard Leiterplatten)
    • Entwickeln der belichteten Leiterplatte in einem Entwicklerbad
    • Stoppen der Entwicklung in einem Kaltwasserbad
    • Ätzen der Leiterplatte mit einer Ätzmaschine und Natriumpersulfat (Ätzzeit zwischen 10 – 15 min, je nach Alter des Ätzbades)
    • Reinigen im Kaltwasserbad
    • Erneutes Belichten ohne Maske und Entwickeln zur Entfernung des restlichen Fotopositivlacks
    • Sichtkontrolle und Durchgangsprüfung auf Leiterzugunterbrechungen, hatte Glück, das Ergebnis war sehr sauber, sodass ich nichts nacharbeiten musste
    • Bohrung des PCB (ich verwendete einen Dremel und Hartmetallbohrer ohne Bohrständer)
    • Herstellung der Durchkontaktierungen mittels verzinnter Kupferlitze (hier war ein Problem bei Vias die direkt unter Chips lagen, die durften eine bestimmte Höhe nicht überschreiten, da sonst der Chip nicht plan auflag)
    • Bestückung mit Bauteilen (ich hatte bei der Planung nicht bedacht, dass ich keine chemische Durchkontaktierung aller Bohrungen hatte und dass man einige Bauteile nicht von zwei Seiten anlöten kann, da man schlicht nicht an die Kontakte kam. Ich musste mir mit Draht behelfen, den ich dann an die einzelnen Kontakte und die entsprechenden Leiterbahnen gelötet habe)
    • Funktionskontrolle der einzelnen Baugruppen mittels simplen Testprogrammen

Entwicklung der Firmware in Basic

  • ich brannte die Firmware über einen einfachen ISP – Programmer in den Chip
  • Auslesen der Temperatursensoren und Übertragung des aktuellen Messwertes an den Rechner zu Testzwecken – erste Routine zur Sensoransteuerung entstand
  • Routine zum Anzeigen einer Zahl auf den 7 Segment Anzeigen – musste die Codierungen der einzelnen Zahlen raus finden, da die Segmente jeweils über ein 8-bit Register (I/O Expander) angesprochen werden. Es entstand eine Routine der man die gewünschte Zahl einfach übergab, sodass sie auf den Segmenten dargestellt wird
  • Speicherroutine zum Speichern eines Bytes in den Eeprom. Der Eeprom unterteilt sich in zwei 256 Byte große Bereiche, wobei ich jeweils das erste Byte als Adresszeiger verwendet habe
  • Formatieren der Temperatur in ein Byte: SKTemper; S – Sign, K – Kommastelle, Temper – Temperaturwert; z.B. : 11000101 entsprach –5,5°C
  • Routine zur Übertragung des kompletten Eeprom Inhaltes an den Rechner entstand
  • Hauptroutine verknüpft nun die einzelnen Subs zu einem sinnvollen Programm – zu diesen Entwicklungsstand funktionierte bereits die Anzeige der Temperatur und das Umschalten zwischen Innen- und Außensensor, sowie die Speicherung
  • musste leider feststellen, dass die Innentemperatur durch die Wärmeentwicklung vom 7805 verfälscht wurde, ich hatte den Sensor zu nah am Spannungswandler platziert
  • Protokoll zur Kommunikation mit dem Rechner (nun konnte man durch Senden von einzelnen Bytes Befehle an das Modul übertragen und so z.B. den Eeprom löschen oder die Datenübertragung des Eeproms initialisieren)

Anfertigen (Zurechtfeilen) vom Gehäuse

Also als Gehäusebauer tauge ich nichts ;)
Das Ergebnis war dann doch eher funktionell gehalten:

Im Gehäuse im Betrieb
Die Anschlüsse auf der Oberseite

Entwicklung der Software in Delphi

  • nun bedurfte es eines Programms, das die Befehlscodes über Com senden und den Inhalt des Eeprom auslesen und darstellen kann
  • ein paar Buttons für die Befehlsübertragung und noch eine Routine zur Prüfung auf Verbindung und schon war das Grundgerüst fertig
  • nach einigen Experimenten mit einer Menge Timern und Fehlschlägen hatte ich es dann auch endlich geschafft, die asynchrone Übertragung der Daten richtig abzufangen und zu speichern
  • nur noch schnell die Anzeige implementieren und fertig war das Programm

Verwendete Software

  • EAGLE 4.13
  • Delphi 7
  • BASCOM – AVR 1.11.8.1

Quellen

http://www.rowalt.de

http://www.avrfreaks.net

http://www.datasheetcatalog.com