| photography, tutorial | 9 comments

I built my own temperature controlled water bath for developing color film at home, and learned a few things along the way.

I have been developing color film at home for just over a year now, and I was never happy with usual recommended method you'll find described online. Typically you are instructed to put your chemicals into a container filled with very hot water, and monitor the temperature as it climbs. When the desired temperature has been reached (usually 100°F or 37.8°C), remove the chemicals from the hot water and begin pouring them into your film tank to begin the development process. 

There's a few problems with this method, mainly that it's difficult to account for temperature overshoot. I find that the chemicals will continue to rise in temperature 1-2 degrees after removing them from the hot water. Secondly, since the target temperature is not maintained, it can also drop throughout the development process. Both of these inaccuracies can create hard to correct color casts in your final image. Not impossible, but time consuming and frustrating to fix. 

Depending how careful you are, this may not be a problem for you, or you might not care. But I wanted a more foolproof way to maintain constant temperature through the entire process, so I looked into what it would cost to build a temperature controlled water bath.

The temperature controller

The most important component is the temperature controller itself. After a bit of research, I went with the relatively inexpensive Inkbird ITC-100VH. It came with a solid-state relay (required for switching the heating element on and off), and a temperature sensor (more on these later). 

The ITC-100VH is a good choice because it's capable of learning to predict how fast and how long to switch on the heating source, specifically to avoid problems of temperature overshoot. Once programmed, it's capable of maintaining a constant temperature +/- 0.3°C, which I have confirmed with my own tests.

It can be a little confusing to wire if you are not familiar with reading electronic wiring diagrams, but I asked for help from a knowledgable friend, as well as on forums, and was able to hook it up no problem.

The temperature sensor

The controller I bought came with its own temperature sensor, a platinum PT-100 RTD. I did a fair amount of reading about various temperature sensors, and came to the conclusion that a PT-100 can be the most accurate, and is able to maintain accurate readings longer than other sensors, especially compared to thermocouples.

There are some problems with RTD sensors, however. In order to work, the temperature controller needs to send a small current through the sensor in order to read the sensor's electrical resistance. From this resistance value, it is able to determine the corresponding temperature to a high precision. The problem arises when the controller is unable to determine between the sensor's resistance, and the resistance in the wires leading up to the sensor itself. This can cause a discrepancy of up to 5°C in the temperature reading!

This problem can be mitigated for the most part if you measure the difference in temperature between the sensor and a known accurate secondary reference thermometer, and simply offset the controller's temperature value in its settings. But a better solution would be to buy a separate PT-100 sensor with three wires instead of two. The standard two wires transmit the resistance information of the entire system to the controller, but the third wire allows the controller to read the wire resistance independently, so it can be subtracted from the total. This provides a much more accurate temperature reading. The ITC-100VH controller is capable of wiring both two-wire and three-wire temperature sensors.

There are fancier PT-100 sensors with four wires, which can provide even higher accuracy, but I do not believe the ITC-100VH is capable of using those.

The heating element

I went to a local hardware store and simply bought a 1500W 120V AC heating element, exactly like this one. It heats up the water fast, and the temperature controller is capable of powering it without issue. 

Other parts

You'll need a water vessel. I used a large cooking pot wide enough to hold four 1L chemical bottles (or three bottles plus the development tank), and deep enough for you to submerge your bottles into. A sufficiently large plastic bucket would probably work too.

You'll need some wire. I went to the hardware store and bought a few meters of 14 AWG copper wire, along with some 14/2 electrical cable and a 3-prong electrical plug so I could make my own wall plug.

You'll need a box. To keep everything contained, you'll need some kind of project box so that you don't have exposed wires all over the place. I didn't feel like ordering a fancy project box online, so I went with a super inexpensive option: a simple large electrical junction box from the hardware store, screwed down to a piece of wood (it's ugly, but it works). The one I used is designed to fit four lightswitches side by side, which was just large enough to fit the temperature controller and relay. It actually worked out pretty well because it came with pre-drilled holes and screws that I could use to secure the various components.

You'll need a small submersible aquarium pump. This will keep the water circulating to prevent hot and cool spots which can give unreliable temperature readings. I got one exactly like this.

You'll need some kind of metal grate to keep your chemical bottles suspended above the heating element. I bought some 1/4 inch hardware mesh, again from the hardware store.

Putting it together

I drilled a hole in the bottom side of my cooking pot using a rotary tool, just large enough to thread the heating element into. I secured it using JB Weld, but any kind of waterproof epoxy or construction adhesive would probably work fine. Let it cure overnight.

Again using a rotary tool, I cut a square opening in the side of the junction box large enough to fit the faceplate of the temperature controller. I secured it in place rather ghetto-ly using hot glue. The relay came with holes perfectly spaced so that they lined up with the pre-drilled holes in the junction box, so I just attached it with screws. Once everything was fastened tightly, I wired it up, referencing Figure 14 in the ITC-100VH user manual. The manufacturer has also published a how-to wiring video, but it's kind of shitty.

The wires that lead to the heating element, as well as the temperature sensor, fit perfectly through one of the holes in the side of the junction box. I also made sure to secure the ground wire from the electrical cable to the junction box, so that everything was properly grounded.

Once everything was wired up, I screwed the junction box upside down to a slab of wood so that the opening was covered, and so it had a heavy base to keep it from sliding around my workspace.

The aquarium pump should run constantly regardless of temperature, so it just plugs straight into the wall, without requiring to be wired up with the temperature controller in any way.


My first roll came out pretty much perfect with no noticible color casts in the shadows or highlights. I used my custom Photoshop actions to automatically color correct the scanned images and after a little but of contrast adjustments, this is what I ended up with:

I have only used this for C-41 development so far, but I intend to use it to develop some slide film this summer as temperature control is even more critical in the E-6 process. I may also try cooking some meat in vacuum sealed bags.


What relay did you use?

The inkbird temp controller I linked comes with one, it's listed as a SSR (solid state relay)

Hi Jeff.
I'm keen to try this out! I'm currently using a 200w Aquarium heater and an aquarium pump in an old beer fermenter (thick plastic). Its set a 20°C and its really accurate +- 0.2°C. It works great for black and white but sadly the heater doesn't go high enough for color... prob would cook fish...

I just thought I'd share... Thanks for sharing the knowledge.

Uhmmm this seems extremely unsafe, seems like you didn't implement any safety features? Fuses perhaps if there's a short circuit

I have a three wire sensor like yours, however I'm not certain what terminals to hook all three wires to. The PT100 has two red wires and one blue. Should it be both reds to 3 & 4, and the blue to 5? Thanks! Just getting started with this.

Hi I have just got same items as you looking to hook up the 3 wire pt100. Could you help by saying which went where on the inkbird and how you set it on when first switched it on.

Cheers and good looking build.


I am about to go with the Inkbird IPB-16 which is pre-wired with a fuse (http://ink-bird.com/products-PID-controller-ipb16.…).

It seems that the IPB-16 has the same specs as the the ITC-100. So it looks promissing. I only will need a waterproof PT-100 probe (3 wires like you suggest).

I also have a Camco heating element. How hot is the element? Would you say its too hot to use a plastic container with such adaptor : https://amazon.com/Camco-7223-Universal-Adapter-Ki…


Comment: a commercial sous vide controller does all of this out of the box for about $85 US.

My question though: where do you get C-41 chemicals with separate bleach and fixer?

How did you set the parameters and tuning up? And did you use P or PI or full PID function. Also, is the SSR connected directly to the heater, or via a voltage supply etc?