Fachpraxis-Projekt

Temperatur-Messung

(mit php und SQL-Darstellung)

 

1.   Ideen und Wünsche

Idee war es, eine Schaltung zu planen, zu konstruieren und aufzubauen, mit der man – einfach gesagt – die Temperatur messen, in einen handelsüblichen PC einlesen und mithilfe eines selbst geschriebenen Programms weiterverarbeiten kann.

Dabei wird eine nicht elektrische Größe (Temperatur) in eine elektrische Größe umgewandelt. Diese Größe soll verstärkt und danach digitalisiert werden. Zum Anschluss der Platine an den PC wird der heute übliche USB-Port verwendet.

2.   Überlegungen/Alternativen

Folgende Alternativen wurden während des Unterrichts gefunden, nicht verwandt, sind aber durchaus denkbar:

 

2.1.  LPT1-Schnittstelle

Anstatt die Schaltung per UBS mit dem PC zu verbinden, könnte man auch die LPT1-Schnittstelle (Druckeranschluss) verwenden. Dies hat aber den Nachteil, dass zusätzlich eine externe Stromversorgung der Platine erforderlich wäre, sowie kleine Änderungen im Schaltplan.

2.2.  16-Bit-ADC

Statt eines 8-Bit- könnte man beispielsweise einen 16-Bit-ADC (oder noch höhere Bit-Zahl) verwenden. Dieser könnte einen größeren Temperaturbereich abdecken. Diese Bauteile sind teurer.

2.3.  größerer Verstärkungsfaktor

Man könnte einen größeren Verstärkungsfaktor wählen, um eine genauere Messung zu bekommen, beispielsweise wird beim Verstärkungsfaktor 10 eine Schrittweite von 0,2° erreicht.

2.4.  Software: Datenbankanbindung mit Speicherpuffer

Das Projekt sieht vor, dass eine Software Temperaturwerte an eine Datenbank im Internet sendet. Dazu ist eine (dauerhaft) aktive Internetverbindung nötig. Besser wäre es einen Speicherpuffer einzusetzen: Temperaturwerte werden zuerst in eine lokale Datenbank eingespeichert und diese würde gelegentlich mit der Internet-Datenbank abgeglichen.

3.   Auswahl und Begründung

In erster Linie lässt sich die Auswahl, bzw. das nicht Verwenden der Alternativen, damit begründen, dass der Aufbau der Platine im Rahmen des Schulunterrichts stattfand. Darüber hinaus sind hier auch Kostengründe anzuführen, da o. e. Bauteile teurer sind und gewälte die gestellten Aufgaben erfüllen.

4.   Blockschaltbild

4.1.  Abbildung

4.2.  Erläuterung

Ganz links oben ist der Temperatursensor namens „LM 35“ in schwarz eingezeichnet. Er ist mit beiden Eingängen des Differenzverstärkers (Kästchen rechts davon) verbunden. An der Verbindung zum invertierenden Eingang (–) liegt der LM 35 über einen Widerstand an Masse an. An der Verbindung mit dem nicht-invertierenden Eingang (+) sind zwei in Reihe geschaltete Dioden (ebenfalls an Masse) angeschlossen. Daneben ist in grün ein einstellbarer Widerstand, der wiederum an Masse anliegt abgebildet; darüber ein Addierer, der beide Signale addiert und damit den Temperaturwert erhöht. Die positive Betriebspannung wird hier +Ub1 genannt. Danach kommen ein Inverter, hier gelb, der positiv in negativ umgekehrt und in blau ein Wandler (P8055-Platine), der das bisher analoge in ein digitales Signal umwandelt, in USB übersetzt und die Kommunikation mit dem PC sicherstellt. Die Erhöhung der Spannung ist notwendig, weil diese Schaltung nur positive Spannungen verarbeiten kann. Das Signal wird per USB an einen PC, hier schwarz, übertragen. Exemplarisch sind auch Tastatur zur Eingabe und Monitor zur Ausgabe eingezeichnet. Ganz rechts ist die Weiterführung der Daten ins Internet angedeutet.

5.   Schaltbild

6.   Messungen

Dem Aufbau folgt eine Messung der Schaltung, um festzustellen, ob sie nach Erwartungen funktioniert.

6.1.  Erste Messungen und Ergebnisse

Mit der ersten Messung wurde festgestellt, ob beispielsweise Masse an den Punkten anliegt, an denen sie soll, danach folgten auf gleich Weise positive und negative Spannung, etc. – ob also die Leiterbahnen korrekt verlegt wurden.

Zur zweiten Messung wurde die Schaltung in Betrieb genommen. Nun konnte gemessen werden, ob eingehende Werte korrekt ausgegeben werden. Beispielsweise ob der Inverter –2 V in +2 V umwandelt, usw. Ergebnis: Schaltung liefert nicht erwartete Werte; Vermutung: Fehler bei OP 2/3

Messung 3: Um festzustellen ob es sich um einen Fehler im Aufbau, ein fehlerhaftes Bauteil handelt oder etwa um einen Konstruktionsfehler, wurde die Schaltung in mehreren Teilen mit Steckbauteilen nachgebaut.

Übersicht, Bereiche farbig hervorgehoben Stecktafel 1, Bereich 1 und 2 Stecktafel 2, Bereich 3
Übersicht, Bereiche farbig hervorgehoben Stecktafel 1, Bereich 1 und 2 Stecktafel 2, Bereich 3

Bereich gelb: Das erste Potentiometer simuliert die komplette Eingansstufe der Platine; das zweite den Temperatursensor. Bereiche blau und grün entsprechen, denen der Platine und übernehmen gleich Aufgaben. Bereich blau zeigt den Addierer, Bereich grün den Inverter. Ergebnis: Es liegen kein Konstruktionsfehler vor, der „Nachbau“ funktioniert in allen Bereichen.

Durch einen Tausch der Operationsverstärker der Steckbauteile mit den der Platine, wurde in einer anschließenden erneuten Messung die Funktionstüchtigkeit der Bauteile überprüft. Ergebnis: Bauteile funktionieren fehlerfrei.

Nächste Vermutung: fehlerhafte Lötstellen

Eventuelle unzulänglich verlötete Leiterbahnen/Bauteile wurden nachträglich neu verlötet (ein Fundstelle). Danach Prüfung; Abweichung tritt weiterhin auf.

Abschließende Vermutung: Verunreinigungen an Leiterbahnen

Diverse Leiterbahnen – um die Operationsverstärker – wurde nachträglich von Verunreinigungen befreit. Danach Prüfung; Platine liefert erwartete Werte, Fehler beseitigt

6.2.  Überprüfung durch Simulation unterschiedlicher Temperaturen

Nachdem die Schaltung (Platine) nun erwartungsgemäß funktioniert, kann auch ihr Verhalten auf unterschiedliche Temperaturen getestet werden. Diese werden durch Körperwärme (Anfassen des Temperatursensors) und Verdunstungskälte (Wassertropfen an Temperatursensor) simuliert.

Handwärme

3,000 V = 10°C

Verdunstungskälte

1,994 V = 0°C

7.   Begründung, Erklärung, Abgleichanweisung

 

8.   Layout und Bestückung


(Vorschau zeigt Layout ohne Bestückung, Maße: 50x80 mm)

Sie können das aktuelle Layout mit Bestückung hier als Datei (für Sprint-Layout 4.0) und hier als GIF-Bild herunterladen.

8.2.  Kombinierte Bestell- und Bestückungsliste

Sie können eine Bestell- und Bestückungsliste (Aufführung aller Bauteile mit Preisen) als Excel-Tabelle hier herunterladen.

9.   Digitalisierung

Aufgrund der Benutzung des Experimentierboards K8055 der Firma Velleman ist eine Digitalisierung auf Hardware-Basis überflüssig geworden.

10.   Software tamara (C++)

Es zählte zu unserer Aufgabe Software für das Experimentierboard K8055 der Firma Velleman zu entwickeln, um die gemessenen Werte per USB in den PC einzulesen und auszugeben. Dazu konnten wir unsere Kenntnisse in C++ aus dem 11. und 12. Schuljahr einfließen lassen oder eine andere Programmiersprache verwenden. Diese Aufgabe war im Endeffekt nicht schwierig, da sowohl eine Programmieranleitung von Velleman mitgeliefert wurde, als auch anderweitig nach Problemlösungen recherchiert werden konnte.

Nach einer Handvoll Testprogrammen war die erste Version mit Treiber lauffähig. Erstere umfassten nur Verbinden und Trennen mit dem Board und trotzdem kam es zu einem scheinbar unlösbaren Problem bei der Umsetzung. Selbst die mitgelieferte Beispielsoftware konnte nicht kompiliert werden. Auch ein neuer Treiber und eine neue Compiler-Version schafften keine Abhilfe. Die Lösung für diesen unerklärlichen Fehler war dann recht nahliegend... Im Laufe fand eine stetige Funktionserweiterung statt bis ich nach etwa zwei Wochen die Software vorläufig fertigstellen konnte.

tamara V3.0, Hauptformular Visualisierung (Grafikmonitor mit Verlaufsgraphen) tamara mini V3.0
tamara V3.0, Hauptformular Visualisierung (Grafikmonitor mit Verlaufsgraphen) tamara mini V3.0

10.1.  Versionsgeschichte

0.1 bis 0.5.1 läuft, aber ohne Treiber
0.5.2 Problem behoben, Treiber eingebunden, aber keine weiteren Funktionen
0.6 zu Testzwecken: analoge/digitale Eingänge setzen, einlesen per Button „Messen“, Ausgabe mit Umrechnung in °C
1.0 auf DT angepasst, falsche Adresseingabe verhindert, Programmname gefunden
1.1 ständiges Klicken auf Button „Messen“ entfällt durch Timer, Ausgabe des Eingangswerts auch in V, Timer einstellbar, optische Ausgabe mit „ProgressBar“, später: Fließkommazahl Volt begrenzt
1.2 Ausgänge eingebunden (Aufgabenstellung!), analoger Ausgang gleich Eingang, digitale Ausgänge skaliert nach Eingangswert (nur 6 LEDs verbraucht, für Temperatur -20, -10, 0, 10, 20, 30 °C)
2.0 komplette Überarbeitung der Ausgangesgestaltung, neue Eingabemöglichkeit für „Abtemp“, „Min“, „Max“ + neue Skalierung der digitalen Ausgänge verwendet alle 8 LEDs: LED Nr. 7 für 31 °C, Nr. 8 für Temp kleiner Abtemp oder Fehler.
2.1 mini Funktionsumfang erfordert eine Miniversion, diese ist stark vereinfacht und auf optische Elemente reduziert
2.1 erneute Korrektur der digitalen Ausgänge, weitere Fehlermeldungen erstellt, zusätzlicher Grafikmonitor (für Verlaufsgraphen) in Planung
2.2 mini optische Elemente erneut überarbeitet
2.2 Einbau Grafikmonitor, vorläufige Fertigstellung
3.0 SQL Anbindung an SQL-Datenbank im Internet // Finalversion

Ziele der kleinen, abgespeckten Miniversion ist einfachste Bedienung mit möglichst geringer Rechenbelastung (Dauerbetrieb) zu kombienieren.

10.2.  Bedienungsanleitung tamara SQL V3.0

Nehmen Sie das Velleman Experimentierboard K8055 wie vom Hersteller beschrieben in Betrieb und schließen Sie es mit einem geeigneten USB-Kabel an den PC an. Starten Sie danach das Programm tamara SQL V3.0*.

Sie sehen das Hauptformular: Es unterteilt sich in einen Bereich zur Hardware-Konfiguration, einen zur Ausgabe der Messwerte und einen zur Steuerung der Datenbank-Anbindung, sowie eine Thermometer-Grafik nebst div. weiteren Schaltflächen.

Geben Sie im Bereich „Hardware-Konfiguration“ die Adresse des Boards ein (möglich: 0, 1, 2 oder 3), die Sie mit den Steckbrücken (Jumper) SK5 und SK6 auf dem Board bestimmt haben. Klicken Sie anschließend auf die Schaltfläche „Verbinden“. Direkt darunter wird Ihnen eine Meldung ausgegeben, die beinhaltet, ob eine Verbindung hergestellt wurde oder nicht. Unter „Abfragegeschwindigkeit“ können Sie zusätzlich das Intervall (bspw. alle 1000 ms) festlegen, das bestimmt wie häufig Werte eingelesen und ausgegeben werden sollen.

Nun beginnt sofort die Ausgabe. Im Bereich „Messwerte“ erhalten Sie die Ausgabe der aktuellen Spannung am analogen Eingang (bspw. „5,000 V“) und die daraus errechnete Temperatur (hier „31,0 °C“). Darüber hinaus wird letztere auf der rechten Fensterseite grafisch als Thermometer dargestellt.

Bis hierhin wird nur am Bildschirm ausgegeben, die Ausgänge des Boards sind ungenutzt. Sie sollten aber laut Aufgabenstellung auch eingebunden werden. Es stehen zwei analoge und acht digitale Ausgänge zur Verfügung. Erstere bieten sich an, um beispielsweise einen PC-Lüfter anzuschließen (naheliegend bei Temperaturmessung), letztere sind mit je einer LED gekoppelt, so dass auch direkt am Board die Temperatur abgelesen werden kann.

Unter der Ausgabe finden Sie drei weitere Eingabemöglichkeiten: Der erste Wert legt die Temperatur fest, ab der die Ausgabe beginnen soll. Beispielsweise braucht ein Lüfter zur Kühlung erst ab 20 °C seine Arbeit aufzunehmen. Mit „Min“ und „Max“ kann der analoge Ausgang benutzerdefiniert skaliert werden. Es ist zwar möglich Kleinstwerte wie 0,2 V am Board auszugeben, allerdings zeigt die Praxis, dass PC-Lüfter erst ab einer gewissen Spannung anlaufen, darum kann der minimale Ausgabewert heraufgesetzt werden, ebenso der maximale zum Schutz begrenzt. Dabei muss Min nicht kleiner Max sein, auch eine negative Skalierung ist möglich. Jedes alleine ist einfach umzusetzen, zusammen hingegen war eine Superformel gefordert, die ich ausgelagert in weiteren Testprogrammen entwickelt und später erst eingebaut habe.

Als nächstes gibt die Software den errechneten Spannungswert für den analogen Ausgang aus. Daneben wird der Status jedes digitalen Ausganges (entspricht LEDs) als Kontrollkästchen dargestellt.

Darunter kann über die Schaltfläche „Visualisierung“ ein zusätzlicher Grafikmonitor eingeblendet werden kann, in dem die Verlaufsgraphen von Temperatur/Ein- und Ausgangspannung über die Zeit aufgetragen werden. Das ist vor allem für Langzeitbeobachtungen interessant, da man den Temperaturverlauf über einen längeren Zeitraum (bspw. 24 Stunden) abrufen kann. Der Eingang bzw. die Temperatur wird in blau und der Ausgang in rot eintragen, sind beide gleich ist nur ein Graph zu sehen. Die Geschwindigkeit wird über die Abfragegeschwindigkeit im Hauptformular gesteuert.

Der letzte Bereich „Datenbank“ fasst Einstellungen zum Thema Datenbank-Anbindung zusammen. Sie können über die Schaltflächen „Verbinden“ und „Trennen“ festlegen, ob Daten ins Internet gesendet werden oder nicht. Eine Meldung gibt Auskunft. Die Ziel-Adressen für Host, User, DB, Tabelle, u. Ä. können Sie über „Einstellungen...“ ändern.

* Dazu ist ggf. Borland C++Builder Version 4 oder höher erforderlich.

10.3.  Bedienungsanleitung tamara mini V3.0 (Miniversion)

Nehmen Sie das Velleman Experimentierboard K8055 wie vom Hersteller beschrieben in Betrieb und schließen Sie es mit einem geeigneten USB-Kabel an den PC an. Starten Sie danach das Programm tamara mini V3.0*. Die Software versucht umgehend eine Verbindung zum Board aufzubauen. Hierzu werden alle Adressen nacheinander abgefragt und mit der ersten funktionierenden verbunden. Falls keine Karte gefunden wird erhalten Sie eine Fehlermeldung. Es folgt das Hauptformular mit der Ausgabe der aktuellen Temperatur. Dieses Programm benötigt keine weiteren Einstellungen.

* Dazu ist ggf. Borland C++Builder Version 4 oder höher erforderlich.

10.4.  Download

tamara SQL V3.0 hier
tamara mini V3.0 hier
Bedienungsanleitung als Pdf hier

 

11.   Steuerung mit php, SQL-Datenbank

Bei der Umsetzung der Datenbank-Anbindung traten unvorhergesehen Schwierigkeiten auf. Ich war trotz wochenlanger Internet-Recherchen nicht in der Lage die Software mit einer SQL-Datenbank in Verbindung zu setzen. Meine Mitschüler, die MS Visual BASIC benutzen, glückte dies relativ einfach schon nach wenigen Versuchen. Mir war es zwar möglich die Datenbank samt Tabellenstruktur/-aufbau zu planen und auch die nötigen php-Skripts zu verfassen, nur die letztendliche Umsetzung der Programm-Datenbank-Verbindung gelang mir nicht...

Allgemein sei erklärt, dass unsere selbstgeschriebenen Programme ihre Messwerte an eine SQL-Datenbank ins Internet senden sollen. Letztere können dann über dynamische Internetseiten (Stichwort php) in Form einer Tabelle von Internetbenutzer überall auf der Welt abgerufen werden. Die dazu nötige Datenbank und Abfrage(n) konnten mithilfe der vom Provider zur Verfügung gestellten Tools erstellt werden.

Fehlversuche:
Durch Einsicht der Unterlagen ehemaliger Schüler unserer Schule, die an vergleichbaren Projekten arbeiteten, erhielt ich einen Hinweis auf die Komponente NMHTTP. Diese kann Informationen an Dokumente (ggf. im Internet) senden. Idee war wohl die Messwerte als Daten an die URL dranzuhängen. Wie aus dem parallellaufenden IVI-Unterricht bekannt, ist php in der Lage Daten aus der URL-Zeile auszulesen. Mir war es aber nicht möglich diese Idee zum Laufen zu bringen. Auch ist zweifelhaft, ob der Ideengeber es schaffte...

Lösung:
Nach erneuter intensiver Internet-Recherche war die Lösung des Problems recht simpel. Im Gegensatz zur Treiber-Lösung in BASIC lässt sich eine Datenbankanbindung im Builder mit programmeigenen Komponenten realisieren. Wobei meine Lösung konkret aus der Kombination des Windows-Datenquellen-Servers mit zwei Datenbank-Komponenten des Builders besteht. Ersterer stellt die Anbindung zum Internet her. Von allen denkbaren ist der gewählte Lösungsweg recht simpel, erfüllt die gestellt Aufgabe voll und ganz...

 

Abfrage der Temperatur-Datenbank


Was soll ausgegeben werden?
Art:

Sie können Ihre Abfrage zeitlich eingrenzen:
von:
Datum: .. Uhrzeit: ::

bis:
Datum: .. Uhrzeit: ::


 

© JPB 2008