One of the things I love about my field of research is the opportunity to build things. Like a child building a rocket ship out of toilet paper rolls, I often don’t have the perfect materials or tools for the job so I have to improvise. When you are in the field and have a strict deadline and no nearby shops, you discover that you can build almost anything with some cable ties and other peoples garbage. In my recent project I had access to a few more gadgets than usual and have come up with something a bit more sophisticated.
The goal was to set up an experiment where I would train fish to swim down a corridor and go through a series of sliding guillotine doors. I had to make sure some doors moved at the same time and I was worried that me opening and closing doors would disrupt the behaviour of the fish. What I needed were some automated sliding doors.
Finished product first…
The first step was to come up with the best way to move the doors up and down. Should I use a pulley system? A series of gears? My choices were limited by the actual placement of the motors which had to be above the experimental aquarium and by the distance I needed the doors to move. After a few hours of online research I decided on using a rack and pinion system attached to a servo motor.
Physically making the custom gears for a rack and pinion would be pretty time consuming but I have a 3D printer in the lab which allows me to design and print my own creations in a matter of hours. The gears took a few tries to get right as the size of the teeth and the wheel had to be just right. I ended up finding an online calculator for rack and pinion gears which was a lifesaver. I made 3D drawings using Autocad Inventor. If you are a student, you may be able to get your hands on a free educational license for this software.
With the design for the gears sorted, I then needed a motor to turn the gears. I used the Parallax Servo motor (https://www.parallax.com/product/900-00008) as this type of motor allows you to move the motor forwards and backwards, resulting in the up and down movement of the doors. This motor is also fairly cheap and can be easily controlled with an Arduino.
The motor arms had to attach to the pinion. Luckily for me, there was a design on Github for attaching something to the arms of this particular motor which saved me a lot of time. A housing was also made to hold the servo in place.
The motors and gears were then mounted above the tanks to line up with each door.
The next step was to attach the gears to the sliding doors. A very large aquarium was used for this project and I designed walls with sliding guillotine doors to fit inside. All the interior doors and walls were made with PVC and glued together. While I often have to make these structures myself, I was lucky enough to have the Oxford University workshop make this particular setup. I used cut aluminum rods to connect the doors to the the 3D printed gears.
The next task was to get the doors moving at the push of a button. For this, I used an Arduino Uno to send the pulses required to rotate the servo motor. The power output on one of these boards is limited, which would be fine if you are only using it to run one servo motor, but five motors require their own power adapter. As I wanted the doors to move up and down, I bought an on-off-on switch from RS components. I also bought a box to hide all the messy wiring.
My control panel had 4 buttons and had to move the doors up and down. After some more digging online (thank you Google!), I found a way to program the Arduino to run multiple push buttons on one circuit. The circuit board was then made and wires were run from the box to the servos.
Finally the doors were ready to try…
Although a lot of mistakes were made along the way, this ended up being one of the few projects where everything worked on the first try!