Focus Stacking Adventures Part III

FocusStacker V3

FocusStacker v3 Fancy menu is back again!

FocusStacker v3 Fancy menu is back again!

This is the built I am using right now. It wont be the final though. FocusStacker v2 was very portable and compact, but it was not that much suitable for extreme studio macro because you have to constantly touch to the controller. All the buttons and rotary control are on the body so every touch vibrates the system. In extreme macro conditions, even the slightest touch creates an earthquake.  Especially the rotary encoder was not a great idea, since it only makes things harder and complicated. In this approach, I separated the controller section and replaced every controller with a single touchscreen. This is a Nextion HMI touchscreen which has its own flash to hold the menu stuff. So it is not that much complicated. With its own software that you can install to your computer menu designing becomes much easy.


  • Touchscreen with menu
  • Two seperate pieces – Minimize vibrations when positioning the slider, marking in/out
  • More solid, durable
  • Much more controls for delay settings, motor speeds etc.
  • Can work with Dragonframe software when connected to the pc. (Both Arduino and Camera should be connected to pc. No remote shutter connection between arduino and DSLR is necessary.)
  • Can work with AC and Battery powered.
  • Sliding switch for Canon and Nikon DSLRs. (Canon DSLRs triggers when tip and ground connected where Nikon Cameras needs to both tip and ring connected to ground.
  • Led Reader Function to read lights to calculate shutter duration. (THIS CAUSED TO FRY AN ARDUINO! I will explain later in detail)


Linear Stage

I used Deltron LRS3-1 as the Linear stage. Compared to the other one this one is more popular and can be found easily. Be aware that there are two versions. If the model starts with LRS it is in inch standards and if it starts with LRSA it is metric.  Here is the Deltron_Inch_Catalog and here is the Deltron_Metric_Catalog. To be honest, I liked DCI -CP3-10 more. It was much smooth and was in a better condition. I may have found the one with the worst condition. Probably a brand new one would be much better.

Controller Case

STL Files for 3d Printing -> CaseParts

Linear Stage Connections

STL Files for 3d Printing -> cameraConnection and TriggerAndTripodConnections


This Arca Swiss Clamp comes with a small plate. I replaced it with PU-100

Arca Swiss Clamp & Quick Release Plate

The second rail makes the system longer than I want. Instead of using a second macro rail, this time I used a long release plate (PU-100). I bought both from ebay for  $15


Step Motor

I used a 1.8 degree per step 1.68A per phase Nema 17 Step motor. I think that was not a good choice. I suspect It draws too much power then I need though I did not tested it. I ordered two more motors from Ebay. One is 1.8 degree 0.4A and the other one is 0.9 degree 1.3A. I will post a comparison note between those once I get them.

Battery Holder

This is optional. I bought a 8AA battery holder and attached it to the control unit with velco strips.




FocusStacker v3’s electronics part is easier to build then FocusStacker v2. Thanks to HMI display with only 4 connections, there are much less cables going around. I made a mistake with my PCB. In Fritzing, 3.5mm Jacks Tip, Ring and Sleeve ports are wrong. I did not check it before ordering my design to be printed on pcb, so I had to do some repairing on the pcb. I scraped the routes to the sleeve and ground connections to 3.5mm female jacks and rewired them with jumper cables. Later I fixed them in the circuit design which I shared above. So the above one is not tested, but should work.

Actually, If I was doing this same build again, I would use 2.5mm female jacks, which I found later from ebay. 2.5mm jacks are better for this projects because the connection cables (which I gathered along with yongnuo RF-603 remote triggers) are already 2.5mm. I am converting them with a cheap 2.5mm to 3.5mm stereo jack converter. Besides the design may get smaller or less crowded. So I strongly suggest you to try to replace them with 2.5mm jacks.

Arduino Mega



I think this Step Motor was a bad choice

This time I decided to use Arduino Mega since I had plenty of space under the TFT screen. Right now, the Arduino sketch I provided above is not compiling with Arduino Uno. But again, since I was already using Arduino Mega and I am not a professional Programmer, I did not properly optimized it. The most part that takes space in the code is character arrays. I am pretty sure it can be optimized to fit in Arduino UNO with a little trimming from some features, if not at all. In short, you need to use Arduino Mega if you want to use the code as is.

In order to solder the Arduino to the PCB, I removed all the Upside looking female headers and replaced the used pins with down looking male headers. If you can find an Arduino kit which all headers comes seperately, you wont have to remove the solder from female headers.

Step Motor Driver

The stepper driver I used is Pololu DRV8825. I chose this over EasyDriver because it can draw more current (up to 2.2A per Phase) smaller and can do sub-stepping up to 1/32. Normally, I do not use sub-stepping mainly because Full step is enough for my needs and in sub-stepping, each step is not the same length. But this time I implemented the sub-stepping to the software. In when sub-stepping, I dont change the distance the slider moves but by sacrificing from torque It helps reducing the vibration created by the motor. So in Arduino code, if 1/16 sub step mode selected, each step equals to 16 steps.

I suggest you to use a 47µF capacitor physically near to the driver in the PCB if you are not following my pcb design.

Here you can find detailed information about DRV8825

Nextion HMI


I used 3.5 inch Nextion HMI.

model number: NX4832T035_011

resolution: 320X480

To program the Nextion, just unrar the above file and put the tft file on a micro SD. Put the micro SD into the slot of Nextion and power it on. It will automatically load the menu. After it is done you can unplug the power and remove the SD card.


Nextion HMI Touchscreens are easy to use and provides you much more possibility.

Menu structure is like this:

  • Main Menu
    • Settings
      • Delay Settings
        • Shutter Speed
        • Auto Shutter
          • Start
          • Cancel
        • Shutter Delay
        • Cooldown
        • Countdown
      • Motor Settings
        • Step Size

          Despite of the very lame looking UI, I think Nextion software is pretty effective

          Despite of the very lame looking UI, I think Nextion software is pretty effective

        • Step Mode
        • Max.Motor Speed
        • Motor Acceleration
      • Other Settings
        • Camera Trigger (Dragonframe/Shutter Trigger)
        • Brightness
        • Sound
        • Auto Sleep ON/OFF
        • Limit Triggers ON/OFF
    • Goto Mark IN
    • Goto Mark OUT
    • Step Back
    • Step Forward
    • Start
    • Mark IN
    • Mark OUT

4N33 Optocoupler

4N33 has become my standard to trigger camera. You need to put a sufficient resistor between Anode leg and I/O port. I used a 470Ω resistor.



Infamous Light reader which cost me an Arduino Mega!!!

I used one 3.5mm stereo connector for Light Reader, one 3.5mm stereo connector for camera trigger and a pair of male and female D-Sub 9 connectors for motor and limit switch connections.

Here comes a big WARNING! Never use a 3.5mm (or 2.5mm, doesnt matter) connector with this design. I didn’t take into account that these kind of connectors shortens connections while plugging in. (remember the noise while plugging or unplugging a jack to an electric guitar while the amplifier is on?) If the device is on and you plug a jack to this socket, you will most probably fry the voltage regulator and I/O pin of your Arduino.

In fact, if you are doing your own design or altering this one, I highly suggest you to discard Light Reader option, since it doesn’t worth the effort.

When soldering d-sub connector to the motor and limit switches make sure you tested the motor cables. I always get confused solder them in the reverse older at the first try.

Other Electronics

In addition to the above headlined parts you need one 470Ω resistor for the optocoupler, two 10KΩ resistor for limit switch connections, one buzzer and 100Ω resistor and 47µF capacitor for the 8825 step motor driver.

Final thoughts and future steps

The only downside of this setup is it requires much power then FocusStacker V2. It wont matter much while running on AC power but batteries last very short. So short that you may not even finish one stack. I did not properly tested but I think the main reason is that the motor I used in this setup requires more current than the previous one. The arduino nano also draws more power and there is this LCD screen too. When all combined, this setup becomes not that much usefull for outside. FocusStacker v2 is still a better option for outside shooting.

FocusStacker v4 will be much better. It will be simple. It will be perfect for indoors. It will be perfect for outdoors. Smaller then any version before. More compact then any version before. Stay tuned.



  1. Good evening,
    First of all thanks for sharing your project with us. It’s very good and with a detailed explanation. I have already done a similar project with OLED screen but now I would like to move to a touch screen like yours. I have tried to upload the file but probably it isn’t compatible with my screen (error message low version).
    Would you be so kind to se d me the file hmi?
    Thanks a lot in advance.

  2. Good evening,
    First of all thanks for sharing your project with us. It’s very good and with a detailed explanation. I have already done a similar project with OLED screen but now I would like to move to a touch screen like yours. I have tried to upload the file but probably it isn’t compatible with my screen (error message low version).
    Would you be so kind to se d me the file hmi?
    Thanks a lot in advance.

  3. Hello,
    sorry for the double post …
    Thanks for the file, I’ve received it and I’m doing the tests …
    I also have a problem with the Arduino file:
    Sending the schetch to Arduino I get alarms …

    I send you the alerts that come out of my mail.

    Thanks a lot for the support

Leave a Reply

Your email address will not be published. Required fields are marked *