Hallo zusammen
In meiner Maturaarbeit beschäftige ich mich mit dem Flug eines Wetterballons auf 25'000 Meter. Der Wetterballon wird mit einer Box ausgerüstet, in der sich eine Kamera, GPS, ein Arduino und bis jetzt zwei LM335Z Temperatursensoren (Es kommt noch ein Barometric Pressure Sensor - BMP085 dazu) befinden werden. Das Arduino wird die Kamera Steuern und mit den Sensoren soll die Temperatur auf eine MicroSD-Karte geschrieben werden. Nun bastle ich schon tagelang an einem Code herum, doch ich krieg es nicht hin, dass die richtige Temperatur auf die Karte geschrieben wird.
Mit folgendem Code berechne ich die Millivolt, die der Sensor ausgibt. Doch wie komme ich von diesen auf Grad Celsius?
/*
SD card datalogger
The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4
created 24 Nov 2010
updated 2 Dec 2010
by Tom Igoe
"This example code is in the public domain."
angepasst und übersetzt an Projekt Space Ballon 17.05.2011
by Dominik Frey
*/
//....................................................................................
#include <SD.h>
const int chipSelect = 3; // SD Karte ist an Pin 3 angeschlossen
//***************************EINSTELLUNGEN***************************
int sensoren = 1; // Anzahl Sensoren, die verwendet werden
//*******************************************************************
void setup()
{
//****************************KAMERA AUSGANG***************************
pinMode(2, OUTPUT); // Ausgang für den Kamera Auslöser definieren
pinMode(1, OUTPUT);
//***************************SD-KARTE ÖFFNEN***************************
Serial.begin(9600);
Serial.print("Initializing SD card..."); // Statusinformationen zum Serial Monitor am PC (SD-Karte öffnen)
//--------------------------------------------------------------------
if (!SD.begin(chipSelect)) // Versuchen, die Karte zu öffnen
{
Serial.println("card failed, or not present"); // Statusinformationen zum Serial Monitor am PC (Karte öffnen fehlgeschlagen) falls fehlgeschlagen
return;
}
//--------------------------------------------------------------------
Serial.println("card initialized."); // Statusinformationen zum Serial Monitor am PC (Karte geöffnet) falls erfolgreich
}
//*********************************************************************
void loop()
//***************SENSOREN LESEN UND AUF KARTE SCHREIBEN****************
{
String dataString = ""; // erstellt einen Sting (Buchstabenfolge), den man auf die SD-Karte speichern kann
//--------------------------------------------------------------------
for (int analogPin = 0; analogPin < sensoren; analogPin++) // Anzahl Sensoren festlegen mit der Variable "sensoren" aus den EINSTELLUGEN
{
int sensor = analogRead(analogPin); // Sensoren lesen (ANALOG)
int temperatur=(sensor*4.9); // Wert 0-1023 in Millivolt umrechnen
dataString += String(temperatur); // gelesene Daten in dataString einfügen
if (analogPin < (sensoren-1)) { // schauen ob es noch mehr Sensoren gibt
dataString += ","; } // Daten der verschiedenen Sensoren trennen durch ein Komma (wenn nötig)
}
//--------------------------------------------------------------------
File dataFile = SD.open("datalog.txt", FILE_WRITE); // Auf der SD-Karte wird eine TXT-Datei geöffnet oder erstellt falls sie noch nicht vorhanden ist
if (dataFile) // ausführen sobald die Datei geöffnet ist
{
dataFile.println(dataString); // den dataString in die Datei hineinschreiben (println)
dataFile.close(); // Datei schliessen
Serial.println(dataString); // Daten auch in den Serial Monitor schreiben zur Überwachung
}
else { // falls die Datei nicht geöffnet werden konnte Fehlermeldung in den Serial Monitor schreiben
Serial.println("error opening datalog.txt");
}
//************************AUSLÖSEN DER KAMERA**************************
digitalWrite(2, HIGH);
delay(300);
digitalWrite(1,HIGH);
delay(300);
digitalWrite(2,LOW);
digitalWrite(1,LOW);
delay(15000);
}
//*********************************************************************
Vielen Dank für die schnelle Antwort!
Gruss Elyptikus