|
1. |
Thematik |
|
2. |
Lösungsweg |
|
3. |
Software |
|
3.1. |
Formel |
|
3.2. |
Programm |
|
3.3. |
Programmcode |
|
4. |
Probleme |
In
diesem Halbjahr befassten wir uns mit dem Problem eine nichtelektrische
Größe in eine elektrische Spannung von 0-5 Volt umzuwandeln,
diese dann auszulesen und in einer Tabelle zu erfassen. Unsere
nichtelektrische Größe war die Temperatur.
Im
letzten Schuljahr hatten wir bereits einen Temperaturfühler erstellt
welchen wir nun für dieses Projekt verwenden können. Mit diesem
Temperaturfühler, wandeln wir die Temperatur in eine elektrische
Größe von 0-5 Volt.
Nun
benötigen wir nur noch die Schnittstelle, über die wir diese
Größe zurückrechnen und die Temperatur in einer Tabelle
speichern können. Diese Schnittstelle war das Velleman K8055.
Nur
war damit das Problem noch nicht behoben, da wir erst noch ein Programm
erstellen mussten, womit wir die Temperatur korrekt auslesen konnten und
diese Temperatur dann in eine Tabelle schreiben zulassen.

Wir
nahmen nun den Temperaturfühler, das Velleman K8055 und ein Notebook,
welche wir korrekt miteinander verbanden. Dazu starteten wir auf dem
Notebook die Demo-Software des Velleman K8055. Nun sahen wir, dass bei
einem der Analogeingängen ein Signal ankam. Dieses galt es nun so zu
verändern, dass dies die momentane Temperatur anzeigt. Die Software
dazu mussten wir daher für unsere eigenen Zwecke verändern und
umprogrammieren.
Zur
Erstellung der Software verwendeten wir Visualstudio 2010 und programmierten in
der Programmiersprache C++. Dazu machten wir uns Gedanken, wie wir die -20°C
erreichen konnten und wie die Berechnung aussehen muss, damit die
Temperatur richtig ist. Denn das Problem war, dass wir nur positive Werte
auf dem Analogeingang kriegen und somit die negativen Temperaturen nicht
so einfach erreichen konnten. Beim Analogeingang standen uns 256 Schritte
zur Verfügung und wir können von -20°C bis 43°C mit unserem
Temperaturfühler messen. Somit sah die Berechnungsformel wie folgt
aus:
![]()
Die
Formel setzt sich zusammen aus der "maximalen" Temperatur, dies sind
64, wir müssen hierbei die -20° und 43° zusammenziehen
welches 63 wäre, dabei dürfen wir die 0° nicht außer Acht
lassen. Somit sind wir bei 64. Diese 64 dividieren wir durch die maximale
Schrittanzahl also durch 256. Nun multiplizieren wir diese Konstante mit
dem Eingangssignal und erhalten somit eine Temperatur, welche um 20°
zu hoch ist, daher müssen wir noch 20 von diesem Wert subtrahieren, damit
wir auch die -20° darstellen können. Die Formel sieht also wie
folgt aus:
![]()
Das
Programm reduzierten wir auf das nötigste, das ursprüngliche Programm
sah so aus:

Wie
man hier noch erkennen, kann, sind dort auch noch die digitalen Eingänge,
die Outputs, der Outputtest und noch einige andere Optionen vorhanden,
welche wir für unsere Zwecke nicht benötigen. Daher machten wir uns
nun daran dieses Programm soweit zurecht zu schneiden, dass es für
unsere Anforderungen genügt und auch funktioniert. Somit sieht unser
reduziertes Programm wie folgt aus:

Unser
Programm besteht nun noch aus der Kartenadresse SK5 und SK6, aus dem
"Connect-Button", welcher erforderlich ist um das Board mit dem
Notebook zu verbinden und den Analogwert auszulesen. Die Temperaturen werden
nun unterhalb als Zahlenwert angezeigt ohne die Balken. Außerdem wurden
die Inputs und Outputs entfernt, da wir diese für unser Vorhaben
nicht benötigen.

Mit
"int" wird ein Objekt, in diesem Fall Data1 und Data2, deklariert.
Diese werden dann später im Dritten Codeabschnitt verwendet und
berechnet. "Float" hat genauso denselben Effekt, wie "int",
jedoch kann "float" auch ungerade Werte wie 20,35 ausgeben.

In
diesem Teil wird der "maximalen Temperatur" der Wert 64 zugewiesen.
Es handelt sich dabei wie im Vorfeld schon näher erläutert um die
Temperaturschritte in 1° Abständen, sprich von -20°C bis 43°C.
Außerdem wird der Schrittanzahl bzw. steps der Wert 256 zugeordnet,
da wir über 256 mögliche Schritte im Programm verfügen, sprich
in der wir die Temperatur ausgeben können. Diese Schritte werden durch das
Velleman Board auf 256 begrenzt.

Hier
findet nun die Berechnung statt, nach der Formel, die oben näher
erläutert wurde.
Bei
diesem Projekt sind wir auch auf einige Probleme bzw. Schwierigkeiten
gestoßen. Ein Problem ist das ISERV- System, welches auf den
Schulrechnern läuft, wodurch wir nicht alle Berechtigungen haben, die
erforderlich sind. Somit griffen wir auf ein privates Notebook
zurück, womit wir diese Problematik umgehen konnten. Eine Schwierigkeit war
hingegen das Programmieren. Zunächst mussten wir eine Entscheidung
treffen, in welcher Sprache wir das Programm erstellen und wie wir den
Code so bearbeiten, damit dies auch funktioniert. Doch nach einigen
Startschwierigkeiten, entschieden wir uns für C++ und konnten das
Programm letztendlich fertigstellen und auch dieses Problem beseitigen. Weitere
größere Probleme/Schwierigkeiten gab es nicht, auch wenn uns das
Programmieren nicht so leicht viel. Mit etwas Recherche und Eigenarbeit,
wurde auch dies gelöst und wir können auf ein Ergebnis schauen.