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