DIY - use light heat for tank

IPWitan

Non-member
Has anyone ever seen sold or tried to make a system that uses the heat from the light fixture to heat the tank?

Liquid coolers are common on computer CPUs nowadays. they consist of no more than (1) conductive surface to CPU plate; (2) tubing caring water, (3) a tiny pump that sounds like an Aqualifter, and (4) a thermo exchange area, e.g. fans blowing over a coil. The same could work by attaching one side to the ballist. The cooling side could consist of a thin glass jar of water in the sump in a closed loop.

If it sits on the side of the ballast, it wouldn't replace normal cooling. It would work nicely with a controller. If the tank needed heat, then the controller would start the cooler pump. The traditional heater would work at night and as supplemental heating during the day. If it generated too much heat, the controller would simply turn it off and the normal cooling of the light fixture would take over.

I would think one of these ends would work well over a LED fixture.


As I recall, even T5 lights are highly inefficient. All that heat energy could be recouped. Less tank heater usage. Less AC bill to compensate for light fixture heat. More efficient. More green.
 
Last edited by a moderator:
i think I would need a controller.

First, get a small pump, even a aqua lifter or doser. Connect the pump to the small tubing and run that into you light fixture. Connect lights and pump to controller. Then program as follows. If lights are on, and temp below 80, run pump. You have a second heater that says if temp below 79, turn on.

That way, when lights are off, the temp is controlled by heater. When lights are on, the pump will help heat tank.

Now for the tubing idea. If there was some form of exchanger, that would be cool but I cannot think of how to do that. Alternatively, you could have a metal rod in the light case and simply wrap the tube around it. The rod would just capture the ambient heat from the enclosure and transmit to the tubing.

I would like to attach it to the ballast itself, but what happens if the lights are on but the tank is warmer than 80 degrees - the ballast may overheat.

I wonder if you could use a water cooling system for cpu. But instead of it being a closed loop, make it an open loop with the system merely pulling water from the tank (or over flow). I wonder if a simple raspberry pi could control all of this. Hmmm. I have always wanted to do a raspberry pi project.
 
In order to get a good heat transfer your" coil" would have to be at least 125 degrees start looking up heat transfer curve values . This should help you design the size of the coil needed to heat the water temp variables and how much heat you can actually pull from the lights. It would be a great way to cool the lights but I am not sure you could heat the tank very well good luck!!!
 
I'm concern about the proximity of the ballast to the water. It would have to be pretty close and salt spray would be a concern.
 
yes, tubes filled with tank water would surround the heat source. It would very similar to how we heated the pool in Florida. I wonder if I could run tubing around the non-tank side of the reflector shield of my refugium light. Looking up heat transfer curves.
 
This is the python script I'm running on my pi, works with one or more DS18B20 sensors. I'm logging to mysql but you can also just 'cat' the sensor listed in /sys/bus/w1/devices

Code:
#!/usr/bin/python
# -*- coding: utf-8 -*-

import os
import fnmatch
import time
import MySQLdb as mdb
import logging

logging.basicConfig(filename='/home/pi/DS18B20_error.log',
  level=logging.DEBUG,
  format='%(asctime)s %(levelname)s %(name)s %(message)s')
logger=logging.getLogger(__name__)


def insertDB(IDs, temperature):

  try:

    con = mdb.connect('localhost',
                      ‘root’,
                      ‘yourmysqlpw’,
                      ‘yourdatabase’);
    cursor = con.cursor()

    for i in range(0,len(temperature)):
      sql = "INSERT INTO temperature(temperature, sensor_id) \
      VALUES ('%s', '%s')" % \
      ( temperature[i], IDs[i])
      cursor.execute(sql)
      sql = []
      con.commit()

    con.close()

  except mdb.Error, e:
    logger.error(e)

temperature = []
IDs = []

for filename in os.listdir("/sys/bus/w1/devices"):
  if fnmatch.fnmatch(filename, '28-*'):
    with open("/sys/bus/w1/devices/" + filename + "/w1_slave") as f_obj:
      lines = f_obj.readlines()
      if lines[0].find("YES"):
        pok = lines[1].find('=')
        temperature.append(float(lines[1][pok+1:pok+6])/1000)
        IDs.append(filename)
      else:
        logger.error("Error reading sensor with ID: %s" % (filename))

if (len(temperature)>0):
  insertDB(IDs, temperature)
 
Back
Top