This repository hosts the ESP32 controller code for my build of a 3D printed Jobo cog wheel compatible rotary film processor.
Features:
- Motor control loop that reads the encoder to keep RPM constant at target value, with proper control dampening and smooth reversals.
- Reversal based on measurement of rotation degrees, instead of fixed time.
- LCD display shows RPM, duty, elapsed time, and more.
- Keypad input allows picking presets and specific RPM/duty/rotation targets.
- Count-up timer that can be reset. The previous elapsed time is also shown.
- MQTT support for logging over wifi, including detailed motor metrics, with Python scripts to analyze these.
- OTA updates and remote monitor socket support.
- 3D printable case design available.
My build is strongly based on this 3D model by Franktion, which does not include the controller part: https://www.printables.com/model/1183451-film-processor-rotationsprozessor-fur-jobo-tank
If you want to build this yourself, you will need some Arduino or C/C++ programming skills, and the ability and patience to debug electronics projects.
This project uses PlatformIO. Integration is available to VSCode, CLion and many other IDEs. Please refer to the PlatformIO docs for details.
Initial setup for this project:
- Copy
include/secrets.h.exampletoinclude/secrets.hand configure your wifi credentials there. - Copy
platformio.local.ini.exampletoplatformio.local.inito configure ithe IP for OTA updates over wifi.
These are the major components:
- ESP32 board: NodeMCU 32s devboard
- Aslong JGB37-3530B 76 RPM 24V DC motor (B means it has an encoder)
- Pololu MAX14870 motor driver
- 4+ channel level shifter (5V to 3.3V) that can handle i2c speeds
- 2x16 char i2c LCD display
- 24V 120W power supply
- Voltage step-down converter from 24V to 5V to power the ESP32 and LCD
You can probably use most ESP32 boards, but the pinouts may be different. This was the one I happened to have on hand.
There is also flexibility in the choice of the DC motor (as long as it fits the form factor) and motor driver module.
Schematic: PDF other files EasyEDA online
When I started this project, I had no experience with DC motors. I found the following Youtube playlists by Northwestern Robotics very useful for a theoretical understanding of DC motors:
- Chapter 23: PID Feedback Control
- Chapter 25: Brushed Permanent Magnet DC Motors
- Chapter 26: Gearing and Motor Sizes
- Chapter 27: DC Motor Control
- Chapter 28: A Motor Control Project
This project currently does not (yet) follow all the recommendations in these videos.
The DC motor I picked can handle 70 RPM with direction reversal every few seconds. You could pick a version with a higher peak RPM, but lower torque. This should make the motor more quiet. I also read that higher end motors in the same form factor could be more quiet, like Pololu's, but I have not verified this. I went for 24V with the idea that higher voltage = more torque = more better, but a 12V motor may work well enough.
My motor is slightly longer than the one used by the original author, so I had to cut open the motor back of the original 3D model.
My build is strongly based on this 3D model by Franktion: https://www.printables.com/model/1183451-film-processor-rotationsprozessor-fur-jobo-tank
Over time I have added several 3D model improvements to my own version:
- A separate controller module with LCD and keypad.
- Modular roller system that supports Jobo 1500, 2500 and (untested) 3000 Expert tanks of theoretically any size.
- Tank holder that grips the side of the cog wheel.
- Different mounting system that keeps more of the bucket space available.
- Additional bottle holders.
I will post those designs soon on Printables. In the meantime, you can find, edit and export the models online on Onshape:
