ich habe einen Weinkühlschrank bekommen, bei dem Leider die Elektronik kaputt ist!
jetzt habe ich mir gedacht, ist doch kein Problem, ich nehme einen Arduino UNO ein USB Netzteil und einen 4 Fach Relaisblock.
doch irgendwie bekomme ich die Steuerung für die Temperatur nicht hin. (bei der Programmierung von Arduinos probiere und kopiere ich hauptsächlich)
Der Kühlschrank hat den Verdichter für die Kühlung, ein Licht und einen Lüfter innen sowie 2 Fühler (einem im Kühlschrank und einen am Verdampfer)(es sind NTC Fühler, die würde ich mit einem 10 K Ohm Widerstand wie ein Potentiometer einbinden) ein Potentiometer zum einstellen der Solltemperatur und einen Taster für das Licht.
Um die Relais zu schonen will ich für den Kompressor 2 Relais gleichzeitig verwenden.
- Der Kühlschrank soll beim drücken des Tasters die Kühlung, den innere Lüfter und das Licht einschalten. (falls er auf einer Party mal öfters geöffnet wird und gut aussieht)
bei erneutem drücken wieder ausschalten, und nach einer gewissen Zeit wieder von alleine ausschalten - Der innere Lüfter soll dauernd Laufen, wenn der Verdampfer unter 0 Grad hat. (somit kann er nie Vereisen)
- mit dem Poti will ich die Temperatur im Kühlschrank einstellen. (Kühlung und Lüfter sollen dabei Laufen)
hier einmal der Sketch, bei der Temperatursteuerung über das Poti und dem Raumfühler scheitere ich gerade noch:
const int Luefter = 2;
const int Licht = 3;
const int Komp = 4;
const int Komp2 = 5;
const int TASTER = 13;
const int Verdampfer = A0;
const int Raum = A1;
const int Poti = A2;
boolean aktButton, altButton, aktiv;
unsigned long startTime;
const unsigned long interval = 3 * 1000; // das sind 5 Sekunden zum Testen; kann max ca. 49 Tage sein
// 6 Stunden wären: 6 * 60 * 60 * 1000
int Wert0;
int Wert1;
int Wert2;
void setup() {
Serial.begin(9600);
pinMode(Komp, OUTPUT);
pinMode(Komp2, OUTPUT);
pinMode(Licht, OUTPUT);
pinMode(Luefter, OUTPUT);
pinMode(TASTER, INPUT_PULLUP); // geändert auf INPUT_PULLUP
pinMode(Verdampfer, INPUT_PULLUP);
pinMode(Raum, INPUT_PULLUP);
pinMode(Poti, INPUT_PULLUP);
}
void loop() {
altButton = aktButton;
aktButton = digitalRead(TASTER);
{if (digitalRead(Komp) == HIGH) // Kompressor auf 2 Relais
digitalWrite(Komp2, HIGH);
}
{if (digitalRead(Komp) == LOW)
digitalWrite(Komp2, LOW);
}
if (altButton && !aktButton) // wenn der Taster gedrückt wurde...
{
aktiv = !aktiv;
delay(30); // einfaches Entprellen
startTime = millis(); // Starten des "Timers"
}
if (!altButton && aktButton) // wenn der Taster losgelassen wurde...
{ // was passieren soll, wenn der Taster losgelassen wird könnte hier stehen
delay(30); // einfaches Entprellen
}
if (aktiv == true)
{ if (millis() - startTime < interval) // wenn die Zeit noch nicht abgelaufen ist...
{ digitalWrite(Komp, LOW);
digitalWrite(Licht, LOW);
digitalWrite(Luefter, LOW);
}
else // wenn die Zeit bereits abgelaufen ist
{ aktiv = false;
}
}
else // wenn aktiv == false
{ digitalWrite(Komp, HIGH);
digitalWrite(Licht, HIGH);
digitalWrite(Luefter, HIGH);
}
{if (analogRead(Verdampfer) >500) //0-1023 einschaltwert
{digitalWrite(Luefter, LOW);}
if (analogRead(Verdampfer) <400) //0-1023 ausschaltwert
{digitalWrite(Luefter, HIGH);}
}
{if (analogRead(Raum) > (Poti+100)) //0-1023 einschaltwert
{digitalWrite(Luefter, LOW);
digitalWrite(Komp, LOW);}
if (analogRead(Raum) < (Poti)) //0-1023 ausschaltwert
{digitalWrite(Luefter, HIGH);
digitalWrite(Komp, HIGH);}
}
}