Using aquarium heaters to produce variable water temperature: is this possible?

Hi All,

I'm relatively new to Arduinos and electronics in general, so sorry if my question appears silly. For my research, I want to manipulate the temperature of air or water in two different tank systems. The goal is to have it reach a different maximum temperature at a set point each day, with a controlled heating ramp. For my air set up, I use a 100W heat bulb connected to a solid-state relay controlled by an Arduino Yun using a DS18B20 temperature sensor, which relays the temperature of the tank and turns the bulb on and off to reach the desired temperature at the specific ramp rate. I've already done a pilot for this system and it has worked really well. I want to use a similar design to manipulate water temperature, and wire an aquarium heater to the SSR instead of a heat bulb. However, most small aquarium heaters come with their own temperature set system. My questions are: will my current design would work with those heaters, or would it just conflict with the temperature set on the actual heater? If it would work, how would I do this? Do I set the temperature on the heater to the maximum? Or would I need to disable the in heater temperature function all together?

Also very open to other suggestions for the water system! I've considered that maybe an immersion heater may be more suitable to bypass the temperature set system on the aquarium heater, but I am only heating up around 16 litres in a plastic container to (at maximum) 35C and aquarium heaters seem to be a safer option.


Ideally, you want full control of the heater, meaning bypassing the built-in temperature control.

If that is not possible, then yes, you can set the built-in control to maximum, and let Arduino do the work to maintain the desired temperature. This gives you an added benefit of a backup in case your Arduino fails, or your code crashes.

Now if the maximum temperature supported by the in-built controller is lower than what you need, then you have no other option but to bypass it

Thanks for the reply hzrnbgy! That's what I thought, I think most heaters go up to around the ~33C mark so would likely need to bypass it to ensure I can hit slightly higher temperatures. Not sure what I would need to do to bypass the built-in temperature function so maybe an immersion heater could be easier.

You can try opening it up, and possibly replacing the control circuitry with your own Arduino combo. Or you could just get a heater, a relay, a temperature sensor, and an Arduino and build your own

If your desired water temperature is less than the aquarium heater's maximum setting, you could set the heater on maximum and control power to it with your controller.

General tip:

Don't forget about hysteresis. When reaching the preset temperature your relay may "flicker". Use delays or timer intervals to avoid this.

you could set the heater on maximum and control power to it with your controller.

-> this is a good idea.

When I was experimenting with temperature I have found there is no "room temperature". The differences in parts of a room are great (2°C is not uncommon) and you can have large differences even between sensors on your workbench when it is close to the open window. The same is true for water in the bathtub - it is quite difficult to get a homogenous temperature in the whole tub.
I think you may encounter similar problems in your tanks (the temperature close to the heater will be higher than on the other side). It is not a showstopper but it may be worth to measure it and take it into account.