Hallo zusammen,
ich bin gerade Dabei einen Weg zu finden, wie ich die Temperatur mehrere
Thermoelemente ab einer bestimmten Temperatur auslesen und abspeichern
kann.
z.B.: Unter 20°C und über 80°C soll die Themperatur von 6
Thermoelementen ausgelesen und abgespeichert werden.
Das auslesen der Thermoelemtene erfolgt mit folgendem Aufruf
"Tw[i].readCelsius()"
Da mir dafür leider die nötigen Programmierkenntnisse Fehlen, hoffe ich
hier auf ein wenig Hilfe.
Danke schon mal im voraus
Gruß Simon
A. S. schrieb:> - Aufgabenstellung> - Programmiersprache> - Umgebung / HW> - erste Gedanken, Fragen, Probleme
Aufgabenstellung: Es sollen mehrere Thermoelemente + MAX31855 mit einem
Arduino UNO ausgelesen werden. Diese Werte sollen allerdings nur ab
einem Bestimmten Temperaturbereich erfasst werden. Ab diesem Bereich
sollen pro Fühler ca 10 Messwerte erfasst und abgespeichert.
Programmiersprache: C
HW: Arduino UNO + MAX31855 + Thermoelemente
Problem: Ich bin zwar in der Lage die Temperatur aller Thermoelemente
auszulesen, jedoch weiß ich nicht wie ich dies nur ab einem bestimmten
Bereiche machen kann und gleichzeitig diese Werte abspeichere.
Simon schrieb:> Problem: Ich bin zwar in der Lage die Temperatur aller Thermoelemente> auszulesen, jedoch weiß ich nicht wie ich dies nur ab einem bestimmten> Bereiche machen kann und gleichzeitig diese Werte abspeichere.
Temperatur zyklisch auslesen.
Schauen, ob die Temperatur im Bereich lieg
Wenn ja, abspeichern.
Wohin soll denn gespeichert werden? Eine SD-Karte würde sich vermutlich
anbieten. Und wie sieht das mit einem Zeitstempel aus, damit man weiß,
wann die Temperatur aufgetreten ist? Gibt es eine RTC?
Sebastian R. schrieb:> Temperatur zyklisch auslesen.> Schauen, ob die Temperatur im Bereich lieg> Wenn ja, abspeichern.>> Wohin soll denn gespeichert werden? Eine SD-Karte würde sich vermutlich> anbieten. Und wie sieht das mit einem Zeitstempel aus, damit man weiß,> wann die Temperatur aufgetreten ist? Gibt es eine RTC?
Ok, ich möchte die Werte eig nur in einen Buffer schreiben/abspeichern,
damit ich sie später weiterverwenden kann (Temperatur abgleich). Jedoch
weiß ich nicht wie ich dies Programmieren soll. Zeitstempel werden keine
benötigt.
Dann mach doch mal einen Versuch. Es kann ja auch gerne Pseudocode sein.
Und es wurde ja schon alles genannt:
Temperatur zyklisch auslesen. -> Schleife?
Schauen, ob die Temperatur im Bereich lieg -> if/else?
Wenn ja, abspeichern.
Simon schrieb:> Aufgabenstellung: Es sollen mehrere Thermoelemente + MAX31855 mit einem> Arduino UNO ausgelesen werden. Diese Werte sollen allerdings nur ab> einem Bestimmten Temperaturbereich erfasst werden. Ab diesem Bereich> sollen pro Fühler ca 10 Messwerte erfasst und abgespeichert.
Und wenn nach der Erfassung der 10 Messwerte die Temperatur immer noch
im relevanten Temperaturbereich liegt, dann geht das Spiel von vorne los
und es werden direkt wieder 10 Messwerte gespeichert?
> Problem: Ich bin zwar in der Lage die Temperatur aller Thermoelemente> auszulesen, jedoch weiß ich nicht wie ich dies nur ab einem bestimmten> Bereiche machen kann und gleichzeitig diese Werte abspeichere.
Auslesen musst Du die Temperatur doch so oder so, weil Du sonst ja gar
nicht weisst, ob die Temperatur gerade im für Dich relevanten Bereich
ist.
Zumindest die Temperatur von einem Thermoelement. Allerdings gibt es ja
eh 6 Thermoelemente und somit nicht nur eine, sondern gleichzeitig sechs
verschiedene Temperaturen. Es ist also nicht ganz klar, was genau das
Speichern der Messwerte überhaupt auslösen soll: Wenn irgendeine der von
den sechs Thermoelementen gemessenen Temperaturen im relevanten Bereich
liegt? Erst wenn alle sechs Temperaturen im relevanten Bereich liegen?
Oder gibt es unter den sechs Thermoelementen ein spezielles, das alleine
dafür herangezogen wird?
> Es ist also nicht ganz klar, was genau das> Speichern der Messwerte überhaupt auslösen soll: Wenn irgendeine der von> den sechs Thermoelementen gemessenen Temperaturen im relevanten Bereich> liegt? Erst wenn alle sechs Temperaturen im relevanten Bereich liegen?> Oder gibt es unter den sechs Thermoelementen ein spezielles, das alleine> dafür herangezogen wird?
Mein Fehler, ich habe vergessen zu erwähnen, dass einer der Fühler die
Referenz ist, sobald sich dieser in dem bestimmten Bereich befindet
werden die Messwerte der anderen Fühler erfasst, die erfassten Werte
werde für die Berechnung des Offsets der einzelnen Fühler benötigt.
Simon schrieb:> Es sollen mehrere Thermoelemente + MAX31855 mit einem> Arduino UNO ausgelesen werden. Diese Werte sollen allerdings nur ab> einem Bestimmten Temperaturbereich erfasst werden
Wenn du auch nur 3 Sekunden über diesen Satz nachgedacht hättest, dann
wäre dir aufgefallen, daß das Blödsinn ist. Wenn du die Sensoren nicht
abfragst, wie willst du dann wissen, ob die Temperatur innerhalb eines
gewissen Bereichs liegt?
Natürlich mußt du die Daten kontinuierlich erfassen. Aber du willst
sie möglicherweise nicht jedes Mal abspeichern.
Simon schrieb:> ich möchte die Werte eig nur in einen Buffer schreiben/abspeichern,> damit ich sie später weiterverwenden kann (Temperatur abgleich).
Puffer? Wie groß? Oder nur für einen Datensatz?
> Jedoch weiß ich nicht wie ich dies Programmieren soll.
Logisch. Du kannst ja noch nicht mal die Aufgabenstellung vollständig
hinschreiben. Wie willst du da einem Computer beibringen, wie er das
lösen soll?
Simon schrieb:> jedoch weiß ich nicht wie ich dies nur ab einem bestimmten> Bereiche machen kann
Dafür gibt es die Vergleichs-Operatoren:
1
> Größer als
2
< Kleiner als
> und gleichzeitig diese Werte abspeichere.
Gleichzeitig speichern wäre unnötig kompliziert bis sinnlos. Speichere
die Werte lieber ab, nach ein Vergleich wahr geworden ist. Dazu brauchst
du Ausdrücke wie
1
if temp > 80) {
2
speichern(temp);
3
}
> Ok, ich möchte die Werte eig nur in einen Buffer schreiben/abspeichern,
Was ist denn ein "Buffer"? Zum, Beispiel Ein Array von Werten, mit einer
Angabe, wie viele Werte ausgefüllt sind. Etwa:
1
int messwerte[100];
2
int gemessen=0;
3
4
void speichern(int temperatur)
5
{
6
messwerte[gemessen]=temperatur;
7
gemessen=gemessen+1;
8
}
Jetzt bist du an der Reihe, es zu versuchen. Zeige dann deinen Ansatz
und stelle konkrete Fragen dazu.