Introduction: Motorized Microscope Stage for Olympus IX50

About: I work with 3d printers from 2010, I am interested in science and tecnology. I was born in Milan in 2000 and I am attending the scientific liceum.

I decided to run this project because I love microscopy and I wanted to use a motorized stage to obtain fine positioning and to save the position where I found something interesting: since I did not want to spend thousands of dollars for it, I decided do build it on my own.

This stage was designed for Olympus IX50 and Olympus IX70 microscopes.

At the beginning I tought I could motorize the original stage of the microscope, but finally I started thinking about some designs that did not use it and I also decided to make it not only functional, but also good looking. I want it to look and work like a professional microscope stage. In this stage each motor step equals 0,000027344 mm (with a bit of tolerance of course) as I use three stepper motor at 1/128 microstepping and each full rotation equals 0,7 mm. Therefore, in order to get a fast control of the motor and of the entire system, I used an Arduino DUE board with a 32bit processor. It also includes four endstops (two for each axis) and one 25mm fan for each motor to prevent overheating as all the parts are protected under an enclosure. Currently, with the program you can read the actual position of the stage, save it, as well as return to the saved position. When you find something interesting this feature enables you to save the position and return there easily without having to search the position all over the sample. You can also set the movement speed of course and the stage returns to the home position automatically, which is at the center of the microscope stage.

Step 1: Parts

You need (see some links to show what I mean):

  1. 3 NEMA 8 stepper motors
  2. 2 stepper driver 1/128 step MKS-LV8729-OC
  3. 1 0,96” oled display
  4. 1 Arduino due
  5. 1 arduino due/mega proto shield
  6. 3 25x25x10mm 12v fans
  7. 4 10kohm resistors
  8. 6 220ohm resistors
  9. 4 green leds and 2 red leds (all 3mm diameter) like these:
  10. 1 arduino joystick shield revision 1.A
  11. 1 20x15mm switch
  12. 1 reset Switch
  13. 1 VGA cable
  14. 2 female 15-pin D-Sub VGA connector
  15. 4 endstops
  16. 1 female 15-pin D-Sub connector
  17. 1 male 15-pin D-Sub connector
  18. 1 DB15 male to female cable
  19. 1 12V 3A power adapter (I recommend a 5A to prevent overheating)
  20. 1 DC Jack 5.5x2.1mm
  21. 1 40x40x10mm 12v case cooling fan
  22. 1 cable holder
  23. Heat-shrinkable tubes of various diameter
  24. 2 200mm M4
  25. 1 100mm M4
  26. 3 M4 squared nuts
  27. 8 M2x8, 4 M2x12 and 9 M2x6 and 12 M2 dots, several M3x8, M3x12, M3x16, M3x20 and 1 M3x25 with nuts, 4 M4x20 with nuts(for the screws I suggest you buy something like this )
  28. 3 Flexible shaft coupling joint 4mm to 4mm to connect the motors to the screws
  29. 3 ball bearings with 4mm hole
  30. 5 LM3UU 3x7x10mm
  31. 2 Rod Bar 3mmx100mm
  32. 1 rod bar 3mmx200mm
  33. some cables

Step 2: Making the 3d Printed Parts

I printed all the main parts in PLA, but you can use ABS or any other similar filament, only the feet were printed in ninjaflex, the led covers with clear PETG and the reset button cover with red ABS

In summary, you need black and white PLA, red ABS, black ninjaflex and clear PETG.

You can find all the 3d printing files and the instructions on how to print them on:

Step 3: Attention:

I have already built the project, so read the steps carefully because in the photos there could be something that I will explain later.

Step 4: Start Making the Axes

First mount the motors using 12 8mm M2 and 2 Nuts for each screw as spaces because the M2 are too long, then, when the motors are fixed in place, attach the flexible joints to the motors. After this, fix the endstops in place, 2 for the x axis and 2 for the y axes. You need a little bit of glue to fix them in position.

Now prepare the two connectors that will be connected to the x axes to move the y axis. First insert the square nuts until the hole of the nut aligns with the hole of the Connector: to check if they are aligned try to screw the screw (BE CAREFUL: add glue to fix the dots in place at your own risk, because if the dots can move they will align to the screw automatically as the stage starts to move). Now insert 2 LM3UU in the big hole of the main y axis connector (the big one) and 1 LM3UU in the big hole of the second y axis connector (the small one) and fix them in place with glue.

Now prepare the sample holder as you did for the connectors, use 1 dot and 2 LM3UU.

Step 5: Making the Axes: Part 2

Hold one of the connectors in place and screw at least half of the screw in the connector and fix the screw with the flexible joint to the motor. Now insert the rod bar from one hole of the axis to the other and make it pass into the LM3UU of the connector (use two 100mm rod bars for the y axes and the 200mm rod bar for the x axis), then mount the ball bearing and fix it with glue. Repeat the procedure for the other part of the y axis and for the x axis with the sample holder.

If the rod bars move fix them in position with glue.

Step 6: Making the Axes: Part 3

Mount the fans on the axes cover using 9 16mm M2 with Nuts (BE CAREFUL: fan flux direction must be directed to the inside of the cover).

Mount one of the female 15-pin D-Sub VGA connector on the body of the main y axis (BE CAREFUL: do not fix it with glue as you probably will need to move it to solder the wires).

Step 7: Making the Axes: Part 4

Now glue some M3 nuts in all the M3 nuts holders you find on the 3d printed parts and let the cables coming from the second y axis pass into the hole of the second y axis enclosure. Then let all the cable pass into the hole on the left side of the x axis enclosure (BE CAREFUL: do not tight the cables). Now solder the fan cables coming from the second y axis to the fan cables of the x axis as near to the fan as you can to avoid having a lot of cables around the moving parts. Now let the cables pass as shown in the photo and let them pass through the cable hole of the main y axis connector and from there into the hole of the connector cover and then into the hole of the main y axis enclosure (as I said you probably need to extend the cables). Use the heat-shrinkable tubes to protect the solders.

Now solder the cables to the VGA connector as shown in the scheme and, after you have checked the connection, you can fix the connector in place with glue.

Step 8: Mount the Stage to the Microscope

Fix the two y axes in place, without screw on the cover, by screwing them on the microscope with 4 25mm M4 screws and nuts. Now put the enclosure on the x axis and connect it to the second y axis connector using a little bit of pressure and a 25mm M3 screw. Now align the x axes with the main y axes connector. To mount the connector to the x axes, first screw two 16mm M3 screws on the bottom of the connector, then put on the connector cover and, from the two holes on the cover, screw the last two 16mm M3 screws.

Now unscrew the two M4 screws of the second y axis and hold it in place, put on the cover of the axis and screw the 2 M4 back and screw all the M3 screws of the cover, do the same for the other y axes. Then close the cables in the cable holder.

Now you have finished mounting the stage and it's time to mount the controller box.

Step 9: Build the Control Box

Solder two wires to the Arduino Due DC Connector pins to connect Arduino to the main external 12V power source.

Screw the Arduino DUE and the stepper drivers on the box with some M3 as shown in photo (use M2 instead of M3 if some screw holes are not properly aligned). Mount on Arduino the prototyping shield and solder the cables to control the drivers as follows:

clkX = D9;

dirX = D10;

enX = D8;

gndX = GND;

clkY = D12;

dirY = D13;

enY = D11;

gndY = GND;

To set the drivers properly look at the photo (REMEMBER: Y driver controls two motors, X driver controls only one motor).

Now connect the second VGA connector to Arduino and to the stepper drivers and the female 15-pin D-Sub connector to Arduino as shown in the scheme(you can edit the pins in the Arduino program if required):

(BE CAREFUL: connect the 4 endstops to Arduino as shown in the second scheme).

(BE CAREFUL: the wiring of the motor can change, so check the schematic of the motor you have bought before connecting it to the stepper drivers).

In the photos you can see an example on how to manage the cables.

Then mount the fan using 4 M3 with nuts (the air direction must be out to in) and then mount the LEDs. Use 1 green LED for power on and 2 red LEDs for motors power on. Remember: ahead of every led solder a 220Ohm resistor.

Connect the LEDs and the fan speed control as follows:
fan speed = 44; // (optional)

system power on LED= 23;

ledYMot LED = 27;

ledXMot LED = 25;

Now glue the led cover to the box cover and then insert the LEDs that must be inserted in this order: left to right (as shown in the first photo): green, red x power on, red y power on.

Now mount the DC jack on the box cover and solder the positive wire to the switch, then connect the switch to all the other positive connections (the fan power source, the two stepper drivers and Arduino) and do the same for all the negative connections. Now fix the switch and the two connectors with glue and glue some M3 nuts on all the M3 nuts slots you find on the cover and finally screw the cover on. (BE CAREFUL: check every connection before gluing).

Then glue 8 flexible box feet on the bottom as shown in photo.

Step 10: Build the Control Pad

Solder wires on the joystick shield as shown in the scheme, remember that not all the switches are used. Solder wires on the LCD display connector and on the LEDs (Remember: ahead ofevery led solder a 220Ohm resistor). Start with the cover and mount the LEDs as you did in the last step and mount the reset switch. Now screw on the display using 4 M2 with nuts.

Now screw the joystick shield on the bottom using 3 M3 with nuts (use M2 instead of M3 if some screw holes are not properly aligned). Start screwing the joystick shield with the screw on the top left.

Connect everything with the male 15-pin D-Sub connector as shown in the scheme, glue some M3 nuts in the nuts holders you find on the cover and screw on the cover with some 8mm M3.

Then glue 4 flexible joystick feet on the bottom as shown in photo and mount on the reset switch the reset switch cover (you need to use a little bit of pressure).

Step 11: Complete Setup

Now it's time to load the program on Arduino. You can find the Arduino code on:

So, after the upload is finished, connect everything and the stage is finished... good job!

The button functions are: button up to increase motor delay (reduce speed), button down to decrease motor delay (increase speed), button left start homing axes (go to zero/home position), button right to move to saved position, joystick button to save position.

On the display you see: current position, step value, delay value; if you save a position then you see current position, saved position and delay value (the delay value is in microseconds).

When you power the system on you probably need to push the reset button to start the program if you see only a dark screen. At the beginning you need to push the home button because the stage needs to return to the home position to give you some realistic information about the actual position.

Microcontroller Contest

Participated in the
Microcontroller Contest