Introduction: Homemade Vibratome - an Unfinished Undergraduate Project

During histological imaging, tissue must be sectioned into thin slices to be viewed for microscopy and imaging. In order to get thin slices necessary, there are three primary devices used: 1) a microtome, 2) a cryostat, or 3) a vibratome. When using a microtome, tissue is embedded in paraffin or another type of wax and sliced to a set thickness. Since this method takes a significant amount of time to prepare for sectioning, histologists often opt to use a cryostat, in which tissue is flash-frozen and embedded in Optimal Cutting Temperature (OCT) compound, making it solid enough for cutting. However, this comes at the cost of potentially fracturing the cell membranes due to freezing. Additionally, both of these two types of sectioning methods require the tissue to be solid, soft tissue will not be cut by either of these methods. In order to cut soft tissue, the third option, a vibratome is employed. During this type of tissue sectioning, a blade is rapidly moved back and forth while the tissue is being sliced, sawing the tissue.

As a research student at Bucknell University, I worked under Professor James Pearson doing research in the visual system of the tobacco moth, Manduca Sexta, a large species of moth typically used as a model organism for its olfactory system. During our research, we realized that a vibratome was a necessary tool in order to slice the brain tissue of our target organism. However, due to the high cost of purchasing one, we opted to attempt to make our own vibratome during my final year. While a fully operational prototype was not created, this Instructable serves as both a culminating experience for my undergraduate research and a guide for others wishing to create something similar.


Researchers:

Auden Block

Jim Pearson

Supplies

Here are the list of parts we used to create this project and the various tools we used. We uploaded it as CSV for due to Instructables supported file limitations.

Step 1: 3D Printing

For each of the following steps, these are the 3D printing files we used for our design. We have put these at the top so that users can have these files being printed while working on other steps.

Step 2: 3D Printing- Blade Flexor

During our literature review stage, we found previous work by Li et al. (2021), in designing their own high performance vibratome. For their design, they opted to use a voice coil motor, also known as a linear actuator, to vibrate a metal-machined guide block. While utilizing this would significantly simplify and improve our design, these motors are costly (ranging from 50-300 dollars), and we were unable to determine the specifications we would need in order to ensure the proper purchase.

However, the guide block they designed is highly useful and is called a double-paired parallelogram (DP-DP) flexure. By utilizing the inherit flexibility of a material, this mechanism type enables for consistent movement and is a frictionless system (meaning no lubrication is required) (Gandhi et al., n.d.). While Li et al. opted for two flexors on both sides of the mounting block, we found that a single flexor with a guide rail mounted to the other side provides the same stability while reducing the space required. Additionally, we designed small wedges that could be glued across the two mounts, providing additional support as well.

Step 3: 3D Printing - Vertical Stability Mounts

In order to hold the NEMA 17 linear screw motors in place, we opted to use standard z-axis mounts typically seen with 3D printers. However, for some reason these mounts were not properly aligned between the aluminum extrusion and the screw motors. As such, we 3D printed four 11mm spacers and replaced the provided screws with __mm screws to offset this.

Step 4: Woodcutting

In order to mount both the specimen tray and the flexor system, we used Bucknell's Thunder Laser cutter due to it being easy to accurately cut sections of wood to meet our specifications. Since anyone seeking to reproduce this device is unlikely to align the vertical motors to the exact same spaces as us, we opted to separate the tray into five pieces: four little pieces that mount to the motors themselves and one large piece that rests over top and holds the motor tray.

Step 5: Cutting Aluminum Extrusion

While a vibratome can be made to any size specifications, we opted to go with the outlined specifications (31cmx32cmx41cm) to prevent having to modify the NEMA 17 Linear screw actuators while still providing easy access to the specimen tray.

To cut the aluminum, we used a band saw, but other types of saws will work. Reminder: be sure you are properly trained on how to use your powertool. Cutting metal is especially dangerous and one should only do so with the proper training. If this is a concern we recommend the use of a handsaw with a blade specifically for cutting aluminum.


Table 1. Length and number for each aluminum extrusion segment.

Image 1. Aluminum extrusion after it has been cut to length.

Step 6: Assembling the Frame - L Brackets

To assemble one bracket, 4 M5x8mm screws, 1 L brackets, and 4 Drop-in Tee Nuts (Image 1), assemble the brackets with the screw head within the 90degree angle (Image 2) for all of the L brackets (16 in total, Image 3). Be sure to keep these screws loose for now so you can assemble the frame easily.


Image 1. Materials required to assemble 1 L bracket.

Image 2. A partially assembled L bracket showing how a screw and drop-in tee nuts should be positioned.

Image 3. Stack of sixteen fully assembled L brackets.

Step 7: Assembling the Frame - Vertical Motor Mounts

While we used the motor mounts from Adafruit, we would recommend the use of these z-axis motor mounts. This allows one to not need the 3d printed spacer mentioned previously.

For the Adafruit motor mounts, we used 2 M3x8mm screws, 2 M3 Tee nuts, and 1 motor bracket (Image 1) that is screwed to the bottom two holes in the mount (Image 2). Repeat this three more times for a total of four mounts. Next, slide two of the motor mounts onto the top rail along the side of a 32cm aluminum extrusion (Image 3). Keep the M3 screws loose for now so the mount can slide along the rail.


Image 1. Materials necessary to build 1 motor mount.

Image 2. An assembled motor mount with the screws and tee nuts in the bottom screw holes.

Image 3. The motor mount slid into the top rail of a 32cm aluminum extrusion.

Step 8: Assembling the Frame - Mounting the L Brackets

Take one of the L-brackets and attach the short side to the upper rail of the same 2040x32cm piece with two motor mounts (See Image 1 where the right side is closer to the 90 degree angle, this is the side you want to attach to the aluminum extrusion) as shown in Image 2 (both attachments should be facing the same direction). Repeat this on the other side of the extrusion and again on the other 2040x32cm (Image 3).


Image 1. A drop in tee nut emphasizing how one side (the right side) screw holes closer to the 90 degree angle than the left side.

Image 2. The L bracket with the shorter side (right side of the previous image) attached to the upper rail of the previously used 32cm piece, making sure to have the motor mount and L bracket facing the same direction.

Image 3. 2 completed 2040x32cm extrusion sections, each with 2 motor mounts and 2 L brackets.

Step 9: Assembling the Frame - Combining the Extrusion

Then take one of the 2040x41cm and attach it to one of the 4040x31cm at one end of the 4040 using an L bracket. Next, take another 2040x41cm and attach it along the same rail to the other side. Using another 4040x31cm, connect these two extrusions, forming a rectangle (Image 1). Repeat this to give two rectangles.

Next, use the four 2040x32cm to connect the two rectangles (Image 2), forming a cube. The 410mm extrusion should be in front of the 32cm (Image 3).


Image 1. A completed square using two 4040x31cm and two 2040x31cm.

Image 2. A 2040x41cm extrusion connected to the previously constructed rectangle along the bottom row.

Image 3. Note how the 2040x41cm goes past the 4040x31cm to be flush with the 2040x31cm.

Step 10: Mounting Vertical Actuators

After pushing the motor mount as close to the 4040 as possible, tighten the M3 screws, securing it in place (Image 1). Next, take a linear screw motor and the 4 small screws that came with the mount (Image 2), and loosely screw the motor into the mounting bracket keeping the white tab on the opposite side of the aluminum extrusion (Image 3).


Image 1. The motor mount pushed against the edge of the 4040x31cm extrusion.

Image 2. The linear screw motor lined under the motor mount with the white tab facing into the center of the vibratome.

Image 3. Linear screw motor attached to the motor mount.

Step 11: Mounting the Wood for the Motor

First, spin the lead screw to remove the white plastic screw from the motor assembly. Using the small wood tabs that were laser cut, line up the white screw from the previous step over the large hole, and drill 3 M3 sized holes. Push three M3x16mm screws through those holes, add the white screw and close each screw with a nut (Image 1). Repeat this 3 more times, giving you 4 in total.

Next, rescrew the white screw back onto the motor with the wood facing up (Image 2).


Image 1. A white plastic screw attached to a wooden tab using M3 screws.

Image 2. The wood tab re-screwed back onto the linear screw motor.

Step 12: Mount a Z-axis Piece of Wood

Due to the fact that no two vibratomes designed this way could be assembled identically enough for a single piece to be designed for all devices, we opted for a design that allows users to drill holes in the corners of a rectangle cut to an individual's specifications through each of the four wood mounts previously attached to a motor block and then screwed together with any given screw (Images 1-2). We used M5x16mm screws and a 7inch x 10inch piece of spare Baltic Pine we used when laser cutting.


Image 1. A partially attached z-axis piece that can then be used as a guide to screw the second screw.

Image 2. One corner of the z-axis table.

Step 13: Stabilizing the Z-axis

Due to the issue outlined previously with lower z-axis motor mount, we had to extend the top z-axis mounts out in order to be vertical. In order to accommodate for the 3D printed spacer, we swapped the provided screws for M4x25mm (Image 1). The stabilizer then gets assembled as normal, with the expansion in-between the extrusion and the stabilizer along the top 2040 aluminum extrusion (Images 2 and 3, respectively).

Repeat for the other 3 motors.


Image 1. The materials required to attach the top of a z-axis stabilizer to the aluminum extrusion.

Image 2. The replaced screws that allow for the stabilizer spacer.

Image 3. A fully assembled z-axis stabilizer at the top of the aluminum extrusion.

Step 14: Mount the 3D Printed Flexor

Using the large lasercut wood piece and the 3D printed flexor, line them up as shown in Image 1. Then use a drill to screw M5 holes (we recommend drilling through the 3D print as well, ensuring the screws will fit). Next, use 4 M5x25mm, 4 M5 washers, and 4 M5 nuts to attach the mount to the wood frame (Image 2-4). Next, place the large wood over the top and drill holes using an M5 bit along the edge to hold the wood in place (Image 5). Next thread a M5x16mm and a drop-in tee to hold the wood in place (Image 6).


Image 1. The 3D printed flexor aligned over top of the lasercut piece of wood.

Image 2. The materials necessary to mount the 3D printed flexor.

Image 3. An M5 washer over the M5 scew after threading the screw through the flexor and wood.

Image 4. The finished M5 nut holding the flexor in place.

Image 5. The wood piece over top of the vibratome.

Image 6. The wood piece lifted up to show the M5x16mm screw depth.

Step 15: The Pieces:

It is at this stage that we get into some of the more theoretical portions of this device. Due to the short trial period and various short comings, this project is unfortunately incomplete. However, some work has gone into various parts of making a functional design and have been outlined below.

Step 16: A Warning

Before continuing into wiring the Arduino, a warning must be given. The information presented here worked for our prototype in short bursts of testing. However, extreme measures had to be taken to split the 8amp current into smaller 1-2 amp circuits running in parallel instead of series. Breadboards are only rated for about 1amp of current, and the small core wires used would melt at higher currents. In order to avoid this, and additionally simplify the wiring, a researcher would need to manufacture their own PCB.


Additionally, while we only used 1 L296N to drive the two DC motors, it would be much more advisable for researchers to replace the L293D drivers we used with L296 motor drivers. While a researcher would have to add flyback diodes to their motors to prevent reverse electromagnetic fields (EMF).

Step 17: Wiring the Amperage Regulator

Start by cutting the female end of the power cord, exposing the three internal wires (Image 1). Next, attach a fork crimp terminal to each exposed wire (Image 2). Then connect the brown wire to the L terminal, the blue wire to the N terminal, and the Green/Yellow wire to the ground terminal (Image 3).

On the wire end of the barrel jack, attach two more fork crimp terminals and attach the black/white wire to V+ terminal and the solid black wire to the V- terminal.


Image 1. The three internal wires of a standard power cord.

Image 2. A fork crimp, we recommend the blue size.

Image 3. The wiring of the power regulator.

Step 18: Wiring the Breadboard

Note that we used multiple wire colors for easy visualization, but any solid copper core wiring will work.


Using a breadboard, Arduino Nano, and 4 L293D drivers, place them on two different rails (Image 1). Note that the L293Ds have an indent on one side, make sure all the drivers are placed in the same direction, we picked heading towards the top of the breadboard.

Next, wire the logic and enable pins on the top and bottom right pins on each L293D driver and the 5V and Ground of the Arduino. Be sure to bridge between the two rails to complete the two circuits (Image 2).

Start wiring the logic pins as show in Images 3-6, we used Digital pins 4-7 (leaving 2&3 available for the button logic). Then wire the buttons as shown in Image 7, with 2 buttons going to Digital pins 2&3, and 1 button wired to Digital pin 13. On the side with a wire going into an Arduino, place a 10k pulldown resistor (this brings the current to ground, preventing false reads on the Arduino) on the side that connects to the Arduino and ground (Image 8).

Using 1 L298N, connect a wire to the 12V, 5V, and GND terminal (Image 9) and plug the 5V wire into the 5V power rail (Image 10).

For the 2 DC motors (One for the gantry plate and one for the blade cycler), we soldered a 2 core wire with one core to each terminal (Image 11-12) before wiring it into a breadboard male connector (Image 13-14). Repeat this for the other DC motor, we used a spare 12V DC motor for this, but any DC motor will work. Then, wire each motor to the L298N OUT pins on each side (Image 15).

At this point, we realized that having the 12V and the 5V lines going through these small core wires, and going into the same ground would fry the breadbroard and all of the wires. As such, we opted to separate the 12V power from the 5V power. To do this, we took four wires of one color and identical size, and one wire of a different color that is longer. Twist these wires together using a wire connector (Image 16). Repeat this three more times to have 4 of these connectors (Image 17). Then connect the four identical wires to the ground pins of the L293D driver (the center 4 pins) (Image 18) and repeat for the other 3 drivers. For the four longer wires, combine them and the ground wire from the L298N into the negative terminal of the DC barrel plug terminal (Image 19).

Next, use 4 wires and connect one to the bottom left pin of each driver (the purple wires in Image 20). Then combine these and the 12V logic wire from the L298N and wire it into the positive terminal (Image 21). Finally, connect the barrel to the jack from the previous step (Image 22).



Image 1. An Arduino Nano and the L293D drivers attached to 2 separate rails of a breadboard.

Image 2. Wiring for the 5V logic to the drivers.

Image 3. Wiring for the IN3 pin on the drivers.

Image 4. Wiring for the IN4 pin on the drivers.

Image 5. Wiring for the IN2 pin on the drivers.

Image 6. Wiring for the IN1 pin on the drivers.

Image 7. Wiring for the 4 buttons.

Image 8. Adding a 10k resistor to reduce electrical noise.

Image 9. Wiring the 12V, GND, and 5V logic for the L296N driver.

Image 10. Connecting the 5V logic to the proper rail.

Image 11. Wiring a DC motor.

Image 12. Attaching breadboard jumpers to the DC motor wires.

Image 13. Connecting the jumpers to the OUT1 and OUT2 of the L296N.

Image 14. Wiring the other DC motor.

Image 15. Connecting the DC motor to the L296N.

Image 16. Twisting four short wires and 1 longer wire around a twist connector.

Image 17. Four wire connectors, one for each driver.

Image 18. Wiring one wire connector through the four grounds of a L293D.

Image 19. Taking the four longer wires, and the ground from the L296N driver into the negative terminal of a barrel jack.

Image 20. A purple wire going to each of the L293D Motor power pins.

Image 21. The purple wires attached to the positive terminal of a barrel jack.

Image 22. The DC barrel jack connected to the female terminal previously attached to the power regulator.

Step 19: Wiring the Motors

For the Stepper motors, attach the included 4 wire strand to each motor (Image 1) and connect each one to the first four L293D wires along pins 3, 6, 11, and 14 (the pins without any wires along the rail) with matching colors that are in pin rails 2, 7, 10, and 15 (Image 2&3). Use 4 Male-to-Female jumper wires to connect to the four IN pins in the L296N driver and plug them into the Digital Pins 8-12 in the same order (Image 4&5). The pins 1 and 2 control motor 1, and pins 3 and 4 control motor 2, meaning order matters. Then, take 2 Male-to-Male jumper wires and connect one end into the Enable 1 and 2 and the other end into the 5V logic rail (Image 6&7).


Image 1. The 4 strand wire attached to the base of a linear screw motor.

Image 2. The yellow and green wires connected to the right side of a L293D driver.

Image 3. The gray and red wires connected to the left side of a L293D driver.

Image 4. A group of four Male-to-Female jumper wires connected to the male pins of the L296N driver.

Image 5. The same four jumper wires going into the Arduino Nano.

Image 6. 2 Male-to-Male jumper wires in the EN1-2 on the L296N driver.

Image 7. The Male-to-Male jumper wires in the 5V logic rail.

Step 20: Coding the Arduino

Attached to this step is the Arduino code we wrote and used. Feel free to modify this as needed. All the comments should explain how the code works.

Step 21: Mounting the Belt Gearing

In order for the belt to not catch along the axis rail, we used a gantry pulley typically used for 3D printers. Start by taking the metal frame and the 4 small M3 screws and M3 Tee nuts (Image 1) connect them into the four holes along the bottom (Image 2). Then use the three parts shown in Image 3, thread the screw through both pieces of metal and attach the nob onto the screw (Image 4). Then using the four pieces of plastic (two long and two short), the long screw, and the remaining nut (Image 5), thread them as shown in image 6 (metal, long plastic, metal, short plastic, gear, short plastic, metal, long plastic, metal, nut). Then attach the end to a piece of 2040 aluminum extrusion (Image 7).


Image 1. Screws, tee nuts, and frame needed to attach the front end of a gantry pulley system.

Image 2. Assembled screws through the bottom of the frame.

Image 3. Parts needed to create the tensioning system.

Image 4. The smaller metal bracket held in place with the screw and nob.

Image 5. Materials needed to assemble the pulley itself.

Image 6. The assembled pulley with provided plastic spacers.

Image 7. Attached system to the end of a 2040 extrusion.

Step 22: Gantry Plate Mount/belt Track

For the gantry plate, on which a specimen tray would be mounted and moved into the blade, we purchased a multipurpose one that came with a total of 6 ball-bearing wheels. However, only four of them should be used as we found that using all six inhibits the wheels and prevents smooth rolling along the aluminum extrusion. As such, using four wheels, washers, nuts, screws and two of the different spacers (top center two objects in Image 1) to assemble our plate. The reason for the two different spacers is that this board is designed with different sized holes on each side, allowing the spacers with the ridge to be able to slightly change positioning of the screws. When rotated properly, this allows for a more secure fit around the extrusion.

Start by placing the four screws into the furthest left and right column in row three. For the side with the larger holes, use the spacers with the ridge and the smooth spacers for the opposite (Image 2). Then place a ball-bearing wheel, a washer, and the nut on each screw and tighten (Image 3-4). This can then be slid along the same extrusion as the previous step (Image 5). If the plate does not slide easily, loosen the screws with the previously mentioned spacers, position them correctly, and then retighten the wheels.


Image 1. Materials required to build the gantry plate.

Image 2. Screws placed into the proper holes along the gantry plate.

Image 3. The spacers with the ridge fitting snuggly into the correct screw holes.

Image 4. Wheels placed over the spacer before being tightened with a washer and nut.

Image 5. The gantry plate slid into the rails of a 2040 extrusion.

Step 23: Attaching the Belt

Take a DC motor and a pulley (Image 1) and combine them together, taking care to have the screw situated into the flat part of the DC motor axel (Image 2). In order to mount this, the extrusion can be mounted into the wood x axis line using drop in tees and screws, and the motor mounted using a 3D printed piece. However, no such part has been designed for this yet.

In order to move the gantry plate with the motor, a belt must be attached on both sides of the gantry plate, forming a loop for the parts to slide along. Start by threading the 6mm belt through the center core of the 2040 extrusion (Image 3). Once through the other side, pull the belt up through and into the pulley bearing and back over top of the belt (Image 4). Then bend the belt through one of the groves within the gantry plate (Image 5). Use a belt crimp to hold the belt in place (Image 6). Once one has determined the length needed for the motor on the other end, cut the belt to size and mount it using another belt crimp on the opposite side (Not Pictured).


Image 1. A DC motor and a timing belt pulley.

Image 2. The pulley attached to the DC motor by screwing the M1 screw at the base of the pulley.

Image 3. A 6mm timing belt fed through the center of a 2040.

Image 4. The timing belt feeding up and through the end of a gantry pulley system.

Image 5. Feeding the timing belt back through the gantry plate.

Image 6. Securing the timing belt with a crimp lock in order to hold the belt in place.

Step 24: Future Projects - Where to Go From Here:

For those wishing to continue this project, there are a variety of avenues that can be pursued. In addition to mounting the pulley system from the previous step to the wood of the z-axis, researchers can also explore how to hold the specimen steady while moving the blade through. One of the advantages of the system we present is that the vibration from the knife should not interfere with the gantry plate. However, this remains untested and is an avenue for which one can explore. Additionally, while we designed a way to 3D print a flexor, a blade has yet to be added to it and its stability should be tested. As part of this potential stability issue, researchers need to consider the optimal distance of the blade from the flexor. If it is too close the specimen tray will hit the roof of the vibratome but if placed too far would cause it to sway and lose stability. Furthermore, while the DC motor we used has a reciprocal motion, it does not reach speeds fast enough to properly slice through a specimen. Within this, we previously explored using the motor/reciprocal mount from a massage gun, since removing the motor/reciprocal mount from one was more cost-effective than buying an independent system. While this reaches necessary speeds for slicing, we reached dead ends attempting to modify the motor to be controlled by the Arduino Nano.

Step 25: Conclusion

Though this project does not present a complete vibratome for immediate use, we hope that this Instructable will serve as a guide to any future researchers that wish to continue towards an affordable, homemade vibratome for labs in which such devices are unaffordable. With the use of 3d printing and open-build suppliers where users can purchase machining open-parts cheaply, we hope to see more researchers using these tools to not only drive science forward but to also make quality scientific tools and devices available to all that wish to engage with and study the world around us.