35mm Film Tank Motor Roller

An easy to construct Arduino controlled, motorised roller for the Jobo brand of film development tanks.


Things used in this project

Hardware components

1 DFRobot Gravity: 1602 LCD Keypad Shield For Arduino
1 DFRobot TT Geared Motor with Back Shaft (160rpm 6v L Shape)
1 DFRobot Rubber Wheel for A4WD and A2WD
1 Seeeduino V4.2
1 Seeed Grove Base Shield V2.0 for Arduino
1 Seeed Grove - Relay
1 Seeed Grove - Piezo Buzzer/Active Buzzer

Hand tools and fabrication machines

Drill / Driver, Cordless



I love black and white film photography but having to manually agitate my film development take for 20 minutes is a chore. Paying someone else €500 plus to solve this for me feels like a lot of money. So, I solved it myself with an Arduino UNO for under €100.


I started processing my own 35mm black and white film during the Covid lockdowns. Initially, I was using a manual daylight tank which lets me load the film without needing a darkroom or a changing back. That's great for films that only require developing for 5 minutes but for films that require longer the need to continuously turn the knob on the tank becomes a chore.


I've been wanting to experiment with pushing films, for example exposing an ISO400 speed film as though it were an ISO1600 speed film. Pushing allows you to take pictures when there is less light but it means the film requires developing for longer. Up to 20 minutes development time in the case of the Rollei Retro 400S pushed to ISO1600.


Twenty minutes is a long time. Long enough to make me think twice about experimenting until I had a better solution. The obvious choice is to do what many photographers do and either pay a lab to process their films (where's the fun in that?) or use a traditional development tank which only needs inverting once per minute. This second option is OK but it requires twice the amount of chemicals and thus leads to additional and unnecessary pollution.


I told myself that there had to be a better way and there is, JOBO produce a range of film development tanks designed for rotary processing. I mainly shoot 35mm film but I have medium format cameras that I may want to use in the future and which take the wider 120 roll film. To satisfy the needs of hobbyists like myself, JOBO produce their series 1520 UniTank which can take 2 35mm films or 2 120 roll films. The UniTank only needs 240ml of chemicals if used with a rotary processor instead of 485ml if used with the traditional inversion method.


So far so good, a new Jobo UniTank 1520 costs around €40. A new motorised rotary process costs between €1900 and €3900, a used motorised processor costs €500 plus on eBay. These processors are beyond my budget. They are also designed for processing colour films which is a much more complicated process that processing black and white films. So, time to build one myself.


The concept is simple, rotate the tank for a configurable period of time using a DC motor. Something I can quickly prototype from have drawers full of various Arduinos and other leftover from old projects I have in my workshop.



Step 1: Rollers


The rotatable body of the UniTank is 95mm long with the lid fitted. The base of the tank has a 22mm deep recess and a 92mm internal diameter.


As a baseboard, I'm using a 210mm x 320mm x 18mm thick piece of recycled pine board.


To support the tank, I use 4 50mm roller wheels. The wheels are positioned on the base board so that the centres of the wheels are spaced:


-65mm apart along the length of the tank; and


-100mm apart across the width of the tank.


Step 2: Motor and Wheel


I'm using a cheap 6v DC motor with plastic gears that I scavenged from an old buggy project that's been gathering dust in a drawer. The motor is an L-shaped unit geared for 160 rpm. The wheel has an outside diameter of the tyre is 65mm.


The motor is mounted so the shaft is 81mm above the baseboard using short length of 18mm x 4mm thick wood and a 20mm L-shaped angle bracket.


Motor Speed


It's not a good idea to continuously power such a cheap motor at it's max rated voltage. I did briefly consider using a H-bridge PWM motor speed controller but it felt like an unnecessary complication to an otherwise simple build.


When powered at a continuous 5v, the wheel turns an empty development tank without any issues but when I added 240ml of water the tyre slips against the smooth plastic of the tank. To mitigate this, I added some adhesive paper masking tape to increase the friction between the tyre and the tank. This worked but caused the tank to travel away from the wheel until it lost contact. To mitigate this, I added a 60mm metal L-shaped angle bracket to act as a retainer.


Powering the motor at a continuous 5v, is also quite noisy and results unwanted vibrations.


I experimented with 3v and 4v but finally settled on 3.3v as being a good compromise. A loaded tank rotates at approx. 60rpm, the tank does not travel away from the wheel, the motor is quieter and produces fewer vibrations. It also helps that I can power the motor directly from my breadboard power supply.




Step 3: Microcontroller


I have a bunch of space Arduino UNO clones, so that takes care of the controller.


I have 3 UX (user experience) requirements for the controller:


-The user must be able to set how long the tank will be rotated for, I call this the development time


-The user should be able to adjust the development time whilst the tank is being rotated. The steps in the development process is time critical and having to adjust the timer before starting the timer introduces an unnecessary risk


-The user should receive a persistent and annoying audible notification when the development time has been reached. Once again, this is because the development process is time critical and chemicals need to be poured out of the tank, promptly


In terms of components, these requirement translate into some form of display and some form of buzzer. Plus a simple relay to control the motor.




I'm using the DFRobot LCD Keypad Shield. The select button starts the motor. The up button increases the timer duration by 15 seconds. The down button increases the timer duration by 15 seconds.


Relay and Buzzer


I like the Grove system for prototyping, so I'm using the Seeed Grove shield with the Grove Relay to control the motor and Grove Buzzer as an audible notification.


The relay is attached to the D2 digital pin and the buzzer to the D3 pin. The LCD Keypad uses most of the remaining digital pins.


And Finally


These are a few frames from the roll of Fomapan 200 developed in the video


The article was first published in hackster, September 20, 2021

cr: https://www.hackster.io/tchpnk/35mm-film-tank-motor-roller-c07bd2

author: Griff

All Rights