Temperatur auslesen und auf Seriellen Monitor ausgeben.

Hallo Forum

Ich habe mir ein Aquarien Programm Programmiert mit Sonnen Auf und Untergang, Uhr und Datum, Erinnerung für Wasserwechsel, Pumpensteuerung und Angabe auf dem Monitor welche Pumpe gerade läuft, Eingabe über den Monitor für Uhr und Datum. Jetzt möchte ich noch gerne die Temperatur von der Beleuchtung messen, Auslesen und auf dem Monitor ausgeben lassen sowie wenn die Temperatur zu Hoch ist ein Lüfter anspringt und die Alu Platte runter kühlt.Das Programmieren macht mir keine Sorgen, jedoch mit der Hardware um die Temperatur zu messen vom Arduino aus zu lesen da habe ich keinen Olan. Könnte mir eventuell jemand behilflich sein was ich an Elektronik bräuchte um das zu bewerkstelligen. Ich bedanke mich schon einmal im Voraus.

l.G.Jürgen

Ich hänge einmal ein Bild an, wie es bis jetzt aussieht.

aqua.bmp (2.25 MB)

Schau mal, ob das hier deinen Ansprüchen entspricht: http://www.arduino-projekte.de/index.php?n=79 Falls ja, dann beschreibe ich dir, wie ich die Hardware aufgebaut habe. (Ist ziemlich simpel)

Hier der original Sketch:

/********************************************************
**  Downloaded from:                                   **
**  http://www.arduino-projekte.de                     **
********************************************************/


//Konstante Werte definieren
#define ONE_WIRE_BUS  10                             // D10 pin, verbunden mit DS18B20 DQ-pin 
#define waitTime      500                            // Aktualisierungszeit in ms
#define Tmax          35.0                           // max. Temperatur
#define Tmin          20.0                           // min. Temperatur
#define FAN1          3                              // D3 PWM pin
#define FAN2          5                              // D5 PWM pin
#define FAN3          6                              // D6 PWM pin
#define FAN4          9                              // D9 PWM pin

//************************************************************************************************************

//Bibliotheken einbinden
#include <OneWire.h>  
#include <DallasTemperature.h>

//************************************************************************************************************

//Objekte initialisieren
OneWire oneWire(ONE_WIRE_BUS);                       // OneWire initialisierung
DallasTemperature sensors(&oneWire);                 // DallasTemperature initialisierung

float   Temperature;                                 // Temperatur Variable
int     FanSpeed;                                    // Lüfter geschwindigkeit 
int     FANarray[] = {FAN1, FAN2, FAN3, FAN4};

//************************************************************************************************************

void setup() {
 Serial.begin(57600);                                // Serielle Schnittstelle(USB) initialisieren
 Serial.println("Begin");
 
 sensors.begin();                                    // Tempratur-Biblitothek starten

 //Lüfter Einzelfunktionsprüfung
 Serial.println("Lueftertest");   
 for (int i=0;i<4;i++)
 {
  pinMode(FANarray[i], OUTPUT);  
  digitalWrite(FANarray[i], HIGH);                    // Volle Lüftergeschwindigkeit setzen
  delay(2000);
  digitalWrite(FANarray[i], LOW);                     // Lüfter auschalten
 }
 Serial.println("Lueftertest Ende");    
}

//************************************************************************************************************

void loop() {
  sensors.requestTemperatures();                      // Temperatur lesen
  Temperature = sensors.getTempCByIndex(0);           // Temperatur vom Sensor 0 auslesen  
  Serial.print("Temperatur: ");                       // Werte über RS232 Port ausgeben
  Serial.println(Temperature);       
  
  FanSpeed = map(Temperature, Tmin, Tmax, 0, 255);    // Tmin->0% // Tmax->100%
  Serial.print("Lueftergeschwindigkeit: ");           // Werte über RS232 Port ausgeben
  
  if (FanSpeed<25)   FanSpeed = 0;
  if (FanSpeed>255) FanSpeed = 255;
  Serial.println(FanSpeed);        
  
  for (int i=0;i<4;i++)
  {
    analogWrite(FANarray[i], FanSpeed);               // PWM Geschwindigkeit setzen
  }

  delay(waitTime);  
}

//************************************************************************************************************

Ich nutze den Sketch in modifizierter Form (4 Sensoren mit je einem Lüfter) auch für meine Kühlkörpersteuerung. Leider ist da noch ein Bug drin.

edit: Bug ist behoben. Mit folgender Ergänzung läuft es jetzt:

if ((Temperature >= Tmin) && (Temperature <= Tmax))
    FanSpeed = map(Temperature, Tmin, Tmax, 0, 255);

Frank