Welcome back to this guide on building your own JOBO-style automatic film processor. If you recall, in part 1 we build the water tank and assembled the film processor roller assembly; and installed the sous vide cooker, which acts as our temperature control. In this part we will be designing and installing the motor/drive system for the roller assembly. There’s a lot to cover, so lets dive in.
There were two primary design concerns: the roller hardware controller and the software to operate the roller itself. I took into consideration that many photographers do not have any electronics or hardware / software experience. Therefore I wanted to choose a hardware/software solution that would be very easy for a novice to implement. In short: no soldering, no wiring, no sourcing of individual electronics parts to assemble them. With that in mind, I selected the Lego Mindstorms NXT kit. Before I jump into to the build, allow me to first break down my design considerations:
In order to rotate the film development tank automatically we need three things: a micro controller, a motor driver and an electric motor. A micro controller is just a computer like your personal computer, but smaller and less powerful, and usually only performs a set of simple instructions. Also just like your personal computer, it has to be told what to do and how to do it. This is done by writing a program and putting that program inside the memory of the micro controller. This process is called programming and once complete, the program is then (downloaded) into the memory of the micro controller using a personal computer and a USB cable, along with some special software. A motor driver is an electronics circuit board that is constructed to control an electric motor’s speed and direction.
A micro controller is the perfect solution for our film processor, we need to consider the physical actions involved during film development. Here are the most basic actions/steps we want our film processor to perform for us:
Later, we could modify our program to time the film tank rotation, stopping when each phase of film development is completed. We could even have an audio tone played to notify us that we are done with that particular phase of film development but for now, let’s leave that and go into a bit more detail on how the program we want will function. When the controller is turned on and the program has loaded, a message is presented to the user that the program is waiting for instructions. A “Waiting…” message is displayed on the screen. The user has three buttons that can be pressed. The program is waiting for, you the user, to select one of three buttons:
When the user presses the “Start Rotation” button the film development tank will start to rotate and change directions every 5 seconds. When the user presses the “Pause Rotation” button the film development tank will stop rotation and wait for further instructions. When the user presses the “End program” button, the film processing program will end.
With these basic requirements outlined, I chose a hardware platform that requires no assembly and only requires simple plug and play operation: The Lego Mindstorms NXT. I developed the software for this platform using simple programming techniques purposely and have made it available for anyone to use. If you want to modify the program later, you can do so easily. For the more astute hobbyist I will make some recommendations that you can use to take the project to a higher level, if so desired. If you want to re-write your program to use event-driven or multi-tasking operations, the platform that I chose supports these advanced techniques. With considerations out of the way, let’s start the build
I selected the Lego Mindstorms NXT programmable robotics kit to act as my micro controller. This kit includes all of the required functionality, neatly arranged into modular components. The Lego Mindstorms NXT kit was originally designed for grade school and high school kids as an educational tool to introduce them to various engineering and science principles. It’s a perfect accessible solution for us to start with.
We will be using two main components of the Lego Mindstorms NXT kit. The components we will be using are the following:
You can purchase individual Lego parts from the online Lego store or eBay. The beauty of the NXT processor is that it has the microcontroller, a motor driver, a display and input buttons all built into a single component. All you have to do is plug one end of the modular phone-like cable into the motor and the other end of the cable into the NXT computer. That is all that is needed to complete the hardware portion of your roller assembly. See below images of the NXT controller, motor and connecting cable:
There is one more step we have to do. The NXT controller is normally battery powered. You have the choice to use the NXT controller as it is with batteries, or upgrading the NXT controller to use an AC power adapter. This step does require some soldering and is totally optional. I purchased a 9 volt, 1 ampere AC power adapter. I soldered the positive and negative leads of the AC power adapter to the connectors in the battery compartment of the NXT controller as oer the images below.
In part one of this project we built the roller assembly. In order to attach the NXT motor to the roller assembly we have to modify one of the threaded rods so that the NXT motor can be attached to it.
This is the trickiest part or the whole build process. But I did it and so you can to. I will be honest with you, I have a lathe, so I cheated a bit. I drilled out the center of the threaded rod for the drive spine on the lathe but I then took a spare threaded rod and drilled by hand to make sure it could be done. Practice on the left over threaded rod you have after cutting your threaded rod to length. The hardest part is center punching the threaded rod exactly on the center line. Here are the tools you will need: You will need the following tools (from the top of the image)
The Process Take your threaded rod and using a file, or grinder or belt sander, sand or file the end of one end of the threaded rod flat as you can. Now take a fine division ruler and try to eyeball the center spot on the end of the threaded rod. The best way is to use a fine felt tipped pen. Measure and lightly mark one dot on the threaded rod. Then rotate the threaded rod 90 degrees and mark again. You should be pretty close. Now the critical point. Take either the nail or center punch and lightly tap the spot with a hammer. I mean really lightly. If you do not get the center marked properly, you will have to file off the center mark and try again. Once you get the exact center marked and lightly punched, the you can hit the center punch much harder to set the center hole. The reason you do this is so the drill will align itself to that punched hole. If you center punch hole is off center, no matter how much you try the drill will still follow the center punch. This is why you have to get it right before you drill. Now once you have center punched the hole you can put either the center drill or small drill bit into your hand drill and drill a small hole for the drill bit to sit in: Drill very slowly and use some oil to cool the drill bit. If you drill to hard you will break the drill bit and you will not be able to drill that out, as drill bits and center drills are hardened. You will have to hack saw off the section and try again. Ask me how I know. Now that you have drilled a slightly larger hole, then you can use the 3/16” drill bit and drill the hole deeper. Your total depth does not have to be deeper than 1/2” You will be using epoxy to cement the plastic spline into the end of the threaded rod. When done drilling, take a file and file away the burrs that were left behind by the drilling process. Now clean up the drilled hole with some acetone and some paper towels. Roll up a little section of paper towel and wipe the inside of the hole, repeat until clean. Epoxy the spline into the Threaded Rod Mix up some epoxy and coat the inside of the hole and dab some epoxy onto 1/2” of the plastic spline. Insert the spline into the threaded rod hole and wipe up any loose epoxy.
If you have not done so already, re-insert the modified threaded rod to attach the motor drive spline in the water tank. You have two choices available to mount the drive motor and controller to the water box:
I chose option one. Please refer to the below image for an example of how I mounted the motor. Visit this Lego web page and order these parts from their or your preferred local source:
Here are some images of the mounting using Lego parts: Mounting the motor. Below image shows the motor mounted flush to the side of the water box. The cross axle (spline) is shown running through the motor axle mount.
Do not freak out on this step. I have done all of the work for you and I will walk you through the process of programming your NXT controller. All you need is a USB A to B cable, a Windows computer (or a Mac with a Windows emulation tool), and a free trial of some software that we will discuss shortly. Grab your NXT controller and your USB cable and go sit down at your computer.
We are going to download a free trial of a software package called RobotC from the Carnegie Mellon Robotics Academy for Microsoft Windows. If you want to run this software on a Mac you will need to use Parallels, VM Ware Fusion, Boot Camp, Virtual Box or another virtualization/emulation tool. In addition: do not purchase this software, unless you plan on programming more microcontrollers. Here are the steps you will need to follow to install the software:
In order to use RobotC with the Lego Mindstorms NXT we have to upload new firmware to the controller. Think of firmware as a simplified version of your computer’s operating system. RobotC is not only a programming language but also an operating system for the NXT controller. So the first step we have to do is upload the RobotC firmware to the NXT controller:
The RobotC program will now download the firmware to your NXT controller. This step should take about 1 minute. If the firmware was correctly downloaded you should see the message above (highlighted in red). Congratulations, your NXT controller has been configured to execute RobotC programs. One more simple step is required to setup your NXT controller to control your roller base.
I have already created the program that controls the film processor roller base. You have to download this program from the website I uploaded it to: GitHub. Here’s what we need to do:
The FilmProcessor.c program has been loaded into the RobotC program and has been compiled, (checked for errors and converted into a format that the NXT can understand) You should see the following message, that is highlighted in red. This indicates that there were no errors in the program and that the program is ready to download to the NXT controller.
Now make sure that you NXT controller is on, more than likely the NXT controller has shut itself off (battery conservation). Press the Orange button on the NXT controller, You should hear the NXT melody. Now Select the Robot > Compile and Download menu option Once you select the Robot > Compile and Download option RobotC will download the FilmProcessor program to the NXT controller, this should only take a few seconds. If you see the following screen, your NXT was successfully programmed. If you see any other dialog, you must repeat the same operations again. Congratulations your NXT controller is ready for operation!
If you removed your controller from the water box for programming, please re-attach the NXT controller and the motor to the drive spline. We are going to test the NXT operation. Make sure that you plug the phone-style cord from the motor to the NXT controller into port A. Port A is the left most port when looking at the display side of the NXT controller. If the NXT controller has shut down, press the orange key once. Again you should hear the NXT melody play. Let us look at the NXT display: The first screen you will see is the My Files menu, If the My Files menu is not selected press either the left arrow or right arrow until the square box is on the My Files menu. Press the orange button once to select My Files. (If you make a mistake, you can always select the dark gray button to move to the previous menu selection.) Now, using the arrow keys select the Software Files menu selection and press the orange button once. Now, using the Arrow keys, select the Film Processor menu selection and press the orange button once. To Start the Film Processor program, select the Run menu option and press the orange button once. Once the program is running, the NXT controller is waiting for one of three key presses:
If you press the Left Arrow key the roller base will start rolling, switching direction every 5 seconds. The rolling base will continue rotating until you press a different button. The Right Arrow will pause the rolling base. Pressing the Dark Gray key three times will abort the program and return you to the first menu selection.
Fill the water tank with water. You want to establish a water level high enough, so that the buoyancy of the development tank will hold the tank in contact with the rollers, but not too high that undo friction will slow down or over stress the drive motor. Do some searching out on the web, when doing rotary film processing, many film developers indicate a reduced volume of film developer. Check the specifications of the developers that you normally like to use. For example, here is a specification for the Jobo processor. Fill your development tank with the recommended volume of water. Place the development tank under the roller wheels and run some tests. Vary the water level until you get the correct water level. Mark this level with a waterproof felt-tipped pen.
As I mentioned earlier in this article, the reason I choose the Lego Mindstorms NXT controller and motor is because the NXT controller:
The NXT Controller has an easy easy plug and play interface to the external motor, by using a phone style plug. From a hardware point of view it is the easiest way for someone with little electronics knowledge to build the micro-controller platform. The only draw back is the NXT solution is a bit more expensive than other alternatives. You can save a bit of money purchasing individual electronics components and building your own controller. To do this, you have to have quite a bit more knowledge of electronics, and the programming requirements will be more complex as there are many different hardware interfaces. I feel that the more expensive NXT solution will save you more money in the long run, if you do not have the needed knowledge. But If you feel comfortable working with programing languages, electronics and hardware/software interfaces then by all means you can build and program your own system. Check the below image. Here are a variety of micro-controllers, a motor driver, a motor and a display board. You would also need three push buttons and a threaded rod-to-motor coupler. There is even a way to interface a micro controller to a NXT motor. So you could, if you wanted use the NXT motor with a third party controller. Here is an example of a stepper motor with a coupler: Since there are so many hardware/software possibilities, I cannot provide any coding examples for the alternative processor platforms. I will leave this up to you.
Build a smaller water box! After using the film processor a number of times I realized that it takes a lot of water. Being concerned about ecology issues I would reduce the overall size of the water box. At the size built, it takes over 5 gallons to fill the water box in order to have enough water height to properly rotate the development tank. After setting up the proper width of the wheels in the roller assembly, make sure you tighten the lock nuts to keep the wheels from moving on the threaded rods. When testing I only tightened the lock nuts finger tight, the wheels started to move which caused the motor to bind and I fried the drive motor. Save yourself the trouble and tighten the wheel lock nut and the lock nuts against the water box sides. The Sous Vide controller does circulate the water in the water box, but upon testing I found that there was not enough circulation to evenly heat the water. So I added a small inexpensive aquarium pump opposite the the location of the Sous Vide controller. This increased the overall circulation and created a more even water temperature. Chemical bottle racks or hangers. I found that if you are using various sized chemical bottles, that the smaller sized bottle will float and become unstable and want to tip over. I plan on placing either a raised rack or some kind of support that the smaller chemical bottles can sit on so they will not tip over when placed in the water box. When running the film processor I have noticed that the drive motor does strain a bit on larger sized tanks or when you use larger chemical volumes. I have not had issues as of yet but you may want to consider placing a drive motor on the idler roller. This would require a minor code change. Let me know if you want to do this and I will update the existing code and create a second program that will drive two motors. Overall this was a fun project to build. I now use the film processor to process all of my color film and use the film processor for black and white film by using the roller assembly without filling the water box. ~ Joe Pitz
The transfer of knowledge across the film photography community is the heart of EMULSIVE. You can add your support by contributing your thoughts, work, experiences and ideas to inspire the hundreds of thousands of people who read these pages each month. Check out the submission guide here.
If you like what you're reading you can also help this passion project by heading over to the EMULSIVE Patreon page and contributing as little as a dollar a month. There's also print and apparel over at Society 6, currently showcasing over two dozen t-shirt designs and over a dozen unique photographs available for purchase.
Fine Art Photographer, I shoot film and digital. I try not to limit myself to one topic or genre. I try to shoot many topics and subjects. Anything from studio still life to street photography. I feel... Click to see Joe Pitz's full profile, links and other articles , and please make sure you also check out their website here.
This site uses Akismet to reduce spam. Learn how your comment data is processed.
Thank you so much for the time and effort you took to document your build and compile the guide. I’m looking into making my own motorised roller base (no temperature bath) and the care and attention you took to explain each and every step clearly and carefully is invaluable for someone trying to work out a similar project.
I don’t underestimate the time it takes to write a step by step guide that dummies can follow. Great stuff.
i think by the time you do all that programming etc. that my unidrum is a better simpler solution. it does depend on the temperture you are trying to maintain. if it’s color at 104F that’s a bit tougher than bw at 70F. but to use a unidrum film tank, which is insulated, at 104F for example, you start at maybe 106F and run the drum on a roller and measure the temp drop every 30 seconds… when you get to the end time, you just find the average temp you need to be at … pretty simple once you try it. most color processes are pretty short, and only the developer steps are critical anyway
Great project. I’m hoping to build one of these myself using your instructions. I’m curious about the results you had with the film as it was finished. Was it on par with what you get from the labs or what you had to do by hand in the past?
@joe_pitz_photos I’ve thought a lot about this over the years, reconsidering each aspect of the desig… https://t.co/WDCfLDS1Vt
Marketing Permissions: Please select all the ways you would like to hear from EMULSIVE:
EMULSIVE is (among other things) a space for film photographers of all backgrounds to spread knowledge, experience and thoughts about everything related to film photography.