View Single Post
Old 05-02-13, 09:38 AM   #1
Supreme EcoRenovator
AC_Hacker's Avatar
Join Date: Mar 2009
Location: Portland, OR
Posts: 4,002
Thanks: 303
Thanked 712 Times in 532 Posts
Default AC_Hacker's Hasty Freezer Conversion Reduces Energy Use By 61%

There has been talk in a thread in the Appliances and Gadgets section about State of the Art Refrigerators.

I have heard of the legendary performance of converted chest freezers and have been tempted to try one myself. The idea of reaching down into a chest of food has been a bit of a deterrent, also the knowledge that any flat surface in my kitchen will collect things... things like motors, and mail I don't want to read yet, and yard tool, the list goes on... But to clear all that stuff off to get at some food is really what stopped me.

My current refrigerator is a tiny 3 cubic foot freezer/refrigerator which does hold most of what I actually need and also has an admirably small energy foot print. But the freezer is absolutely useless, so the actual refrigerated storage is in the neighborhood of 2.5 cubic feet... pretty small even for me.

I looked for 'all refrigerators' to replace it with and saw several candidates, but their energy consumption was 2x to 3x higher than the one I have. So I started looking for a small vertical freezer to convert.

I saw several, the most attractive was a Haier ($291) with 4.8 cubic foot of space (707 watt-hr/day),

...and the least attractive was a Summit freezer ($350) with about 5 cubic foot of space (879 watt-hr/day).

The photo of the Summit doesn't show it, but the insulation is much thinner than on the Haier... not so thick, not so good.

A quick search through CraigsList turned up the energy hog (non Energy Star) Summit for $125. Being the tightwad that I am, I went for it just to see what kind of a refrigerator a crappy compact freezer would make.

I ordered a digital thermostat from ebay for about $16, free shipping... but then remembered that it might be a month before it arrives...

So I found a spare Arduino-clone 'Teensy++' and a LM355 analog temperature sensor and a Solid State Relay (AKA: 'SSR') laying about and set to work making a bare-bones thermostat while I wait for the unit from China to arrive.

Here's a photo of the Teensy Thermostat. The LM355 is visible at the back of the protoboard between the Teensy and the SSR.

Here's a photo of the hasty test setup, showing the expert use of red duct tape to secure everything.

This is a graph of the Summit performance (watt-hr/day) over a 24 hour period prior to the Thermostat. The yellow line indicates the EPA power use figure, converted to 879 watt-hr/day.

This is a graph of the Summit performance for a period of about 16 hours after the thermostat is being used. The spike is because I put a pot of warm soup into the refrigerator. The average energy use is about 340 watt-hr/day after the conversion. Not a miracle, but quite respectable, and it is a 61% reduction from the energy use of the unconverted freezer.

A refrigerator that uses only 340 watt-hr/day deserves more than casual consideration.

This is a page from my notebook where I wrote about various refrigerators that were being discussed. It is very satisfying that this miserable freezer, once converted (See Red Line In Photo) is able to out perform the $1900 German miracle Refrigerator, and for only $150, too!

[EDIT: A quick calculation suggests that if the Haier freezer had been converted instead of the wretched Summit, the energy use would be about 274 watt-hr/day, and that's before defeating auto-defrost.]



See Code Below:

(Of interest is that a 'smoothing' routine has been used to reduce false triggering of the compressor.)

 * refrigerator_thermostat_smoothed.pde
 * -----------------
 * Sensor (LM335) input is converted
 * to Kelvin degrees, then to Fahrenheit.
 * When temperature exceeds the SetPointTemp, compressor goes on.
 * When temperature is below than SetPointTemp, compressor goes off.
 * Refrigerator temperature is changed by changing SetPointTemp value
const int numReadings = 20;

int readings[numReadings];      // the readings from the analog input
int index = 0;                  // the index of the current reading
int total = 0;                  // the running total
int average = 0;                // the average
int inputPin = 38;              // Teensy++ input pin
const int CompressorPin =  7;      // Define Teensy++ output pin
const int SetPointTemp =  38;      // Temperature set-point (different value = different temperature)
const int TempVariance = 2;
float temp_in_kelvin=0, temp_in_fahrenheit=0;

void setup()
// set the analog pin as input:
  pinMode(inputPin, INPUT);  
// set the digital pin as output:
  pinMode(CompressorPin, OUTPUT);
// initialize serial communication with computer:
  // initialize all the readings to 0: 
  for (int thisReading = 0; thisReading < numReadings; thisReading++)
    readings[thisReading] = 0;          

// Variables will change:
  int CompressorPin = LOW;      // Set initial state. Teensy HIGH turns off the SSR

void loop()
  // subtract the last reading:
  total= total - readings[index];         
  // read from the sensor:  
  readings[index] = analogRead(inputPin); 
  // add the reading to the total:
  total= total + readings[index];       
  // advance to the next position in the array:  
  index = index + 1;                    

  // if we're at the end of the array...
  if (index >= numReadings)              
    // ...wrap around to the beginning: 
    index = 0;                           

  // calculate the average:
  average = total / numReadings;         
  // send it to the computer as ASCII digits
  delay(1);        // delay in between reads for stability  

  //Reads the input and convert to Kelvin degrees
  temp_in_kelvin = average * 0.004882812 * 100;
  //Convert Kelvin to Fahrenheit
  temp_in_fahrenheit = (temp_in_kelvin * 9 / 5) - 459.67;
  //Print the temperature in Fahrenheit to the serial port
  Serial.print("Fahrenheit: ");
  // if the temp_in_fahrenheit is >= SetPointTemp,++ turn on compressor and vice-versa:
  if (temp_in_fahrenheit >= SetPointTemp)
   digitalWrite(CompressorPin, HIGH);   // turn the Compressor on (Teensy HIGH turns on the SSR)
  if (temp_in_fahrenheit <= SetPointTemp - TempVariance)
   digitalWrite(CompressorPin, LOW);   // turn the Compressor off (Teensy LOW turns off the SSR)   
   //digitalWrite(CompressorPin, LOW);    // turn the Compressor off (Teensy LOW turns off the SSR)

  delay(1000);                          //wait one sec


Attached Images
I'm not an HVAC technician. In fact, I'm barely even a hacker...

Last edited by AC_Hacker; 05-02-13 at 01:16 PM..
AC_Hacker is offline   Reply With Quote