Caravan koelkast ook echt laten koelen, versie 2.0
Ik heb in de loop der jaren al veel mensen horen klagen over de prestaties van de koelkast in de caravan veroorzaakt door een slechte warmte afvoer achter de koelkast.Het probleem is dat de keuken meestal aan de kant zit van de voortent/luifel en dan heb je ook modellen waar de deur, als die open staat, er half voor zit.
Al meer dan 10 jaar had ik dat opgelost met een 12V computer ventilator met een thermostaatje.
Wat een nadeel is is dat ik hem 's nachts uitzet met de schakelaar en 's ochtends vergeet weer aan te zetten.
Tijd voor versie 2.0 die dan wel bedoeld is voor de electronica hobbyist.
Moderne ventilatoren hebben 3 of 4 aansluitingen en dus meer opties. Soms hebben ze een temperatuur sensor maar de meeste hebben een tacho signaal en een signaal om de snelheid te regelen.
Vaak is de eerste draad p de connector de massa, dan de 12V, dan de tacho als die er op zit en de laatste is dan de snelheids regeling. Maar dat is een kwestie van de beschikbare fan opzoeken op internet.
De snelheidsregeling gebeurt met een PWM-signaal (Pulse Width Modulation) waarbij de frequentie constant is maar de verhouding tussen puls en pauze varieert. Met een arduino of iets dergelijks is dat eenvoudig te maken.
Het idee was nu om de fan altijd zachtjes te laten draaien, op een volume dat je niet hoort (denk aan ophangen van de fan via rubber ringen!). Wanneer de temperatuur achter de koelkast een grenswaarde overschrijdt dan laten we de fan op een hogere snelheid draaien en als er een hogere grens bereikt wordt gaat deze op max draaien.
Wanneer de temperatuur weer daalt gaat de fan weer in fluisterstand.
Nu hebben we nog steeds het issue dat de fan hard kan draaien als we willen slapen, dat is opgelost met een tiptoets die de fan voor 10u in langzame mode zet.
Het voorpaneel van de koelkast had in mijn geval nog lege ruimte waar die schakelaar prima in kon. Tevens is een bicolor-led toegevoegd die de status laat zien, groen bij langzaam, rood bij snel en een groen knippertje in slaapmode. Niet perse nodig maar ik vond het leuk.
Ik heb de nano op een stukje exprimenteerprint gezet met de weerstanden en de spanningsregelaar en dit in een mini behuizing van 7cm lang gezet. De temperatuur sensor hangt net buiten de behuizing.
De code
// Arduino Nano // caravan koelkast ventilatie 2.0 // Als temp onder bepaalde waarde is dan alleen zachtjes draaien // als temp te hoog wordt dan op hogere kracht draaien, bij overschrijden tempTurbo dan op // volle snelheid. // na indrukken sleep button 36000 seconden (10u) langzaam draaien. interupt kan bij nano // alleen op poort 2 en 3 // bi-color Led op 4 en 5. Groen bij lage snelheid en rood bij hoge snelheid. Bij sleep // flashed groen elke 10 seconden even // Alle Serial commando's zijn optioneel en alleen voor het debuggen via de pc #include#include #define DS18B20 7 OneWire ourWire(DS18B20); DallasTemperature sensors(&ourWire); DeviceAddress insideThermometer; int pwm = 9; // Fan PWM port int button = 2; // drukknop int pwmLow = 100; // langzaam toerental (0..255) int pwmHigh = 200; // Snel toerental int tempLow = 26; // temp waarbij fan weer langzaam gaat draaien int tempHigh = 28; // temp waarbij fan sneller gaat draaien int tempTurbo = 35; // temp waarbij fan op top snelheid gaat draaien volatile bool sleep = false; void setup() { Serial.begin(9600); Serial.println("."); sensors.begin(); sensors.getAddress(insideThermometer, 0); pinMode(pwm, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(button,0x3); delay(500); attachInterrupt(digitalPinToInterrupt(button), buttonPressed, RISING); ledgroen(); } void ledrood(){ digitalWrite(4,LOW); digitalWrite(5,HIGH); } void ledgroen(){ digitalWrite(5,LOW); digitalWrite(4,HIGH); } void leduit(){ digitalWrite(5,LOW); digitalWrite(4,LOW); } void buttonPressed() { Serial.println("button pressed, switching to low rpm for 10 hours"); sleep = true; analogWrite(pwm,pwmLow); leduit(); } void loop() { if (sleep){ analogWrite(pwm,pwmLow); // 3600 x 10 sec. Waarbij led elke 10 sec even groen flashed for (int i = 0; i <= 3600; i++) { ledgroen(); delay(100); leduit(); delay(9900); int mins = ((3600-i)*10)/60; Serial.print("sleeping for another "); Serial.print(mins); Serial.println(" minutes.."); } sleep=false; Serial.println("sleep period ended"); } sensors.requestTemperatures(); Serial.println(sensors.getTempCByIndex(0)); if (sensors.getTempCByIndex(0) > tempHigh and not sleep) { Serial.println("temp above threshold, high rmp"); analogWrite(pwm,pwmHigh); ledrood(); } if (sensors.getTempCByIndex(0) > tempTurbo and not sleep) { Serial.println("temp above turbo threshold, max rmp"); analogWrite(pwm,255); ledrood(); } if (sensors.getTempCByIndex(0) < tempLow) { Serial.println("temp below threshold, low rmp"); analogWrite(pwm,pwmLow); ledgroen(); } delay(5000); }
Partslist
Arduino Nano Microcontroller Weerstand 10k tbv pull-up schakelaar Weerstand 4k7 tbv pull-up DS18b20 Weerstand 220E tbv bicolor led DS18b20 Digitale temperatuur sensor 78L05 5V spanningsregelaar bi-color led behuizing stukje print
Schema

Geef hieronder uw commentaar, mening of aanvullingen op deze pagina en lees de eventuele meldingen van andere lezers.
Website door Wouter Barendsen, 2005-2021