[sane-devel] Controlling scanner imaging head movement manually as mount for camera-based focus stacking?

HuBandiT@gmail.com hubandit at gmail.com
Tue Jan 18 23:09:45 GMT 2022

Literature on the Stackshot ( 
https://cognisys-inc.com/stackshot-macro-rail-package.html ) says its 
smallest step size is 2 micrometers.

The smallest step a 9600 DPI scanner (Canon 9000F) needs to do is 2.64 

The smallest step a 4800 DPI scanner (Canon 8800F) needs to do is 5.29 

Of the three, the Stackshot has the smallest steps, at least on paper.

Plus the Stackshot has a sturdy rail and mounting system that is sized 
to take the weight of a mirrorless camera + lens. In comparison a 
scanners rail system is weaker, plus it is not sized to support the 
extra weight of a camera and lens, plus mounting is more problematic.

Therefore, on paper, your arrangement of using these scanners to move 
your camera does not offer benefits compared to the Stackshot.

What I would recommend you instead is to find an USB-attached stepper 
motor controller that you can easily direct with text commands from 
Linux. That you can then trivially make it do steps from a command line. 
Trinamic is a german company who does very nice work on providing very 
smooth movement control for stepper motors (and also BLDC motors). They 
- or someone using their parts - might have something that allows you to 
control it from a serial port that you can then attach to Linux (I am 
assuming Linux is a requirement for you?).

As for mechanism, you might find someone has made a mechanism for this 
exact purpose (focus stacking is an easy-to-implement but high-value 
niche hobby or research project). Or if you don't, then it is not 
terribly difficult to find mechanical parts normally used by hobbyists 
for building home CNC machines, and whip up a linear actuator mechanism 
(rail + carriage, pushed by a threaded rod turned by a stepper motor). 
With a little engineering work, using precision parts and fine 
microstepping enabled by Trinamic drivers and stepper motors, you might 
perhaps be able to achieve even smaller step sizes than your 
factory-made Stackshot.

2022.01.14. 17:35 keltezéssel, Joel Penner írta:
> Hi everyone,
> Thanks for the feedback everyone! Thanks for the info Povilas about 
> the genesys backend. I do have some scanners that use it. Would you 
> have some pointers for how to issue those commands to a scanner via 
> the backend?
> You're right Ralph, it might be easier to control them directly. I had 
> thought of the buffer approach as well, maybe I'll experiment with that.
> Thanks,
> Joel
> On Tue, Jan 4, 2022 at 12:47 PM Ralph Little <skelband at gmail.com> wrote:
>     Hi,
>     On 2022-01-04 9:05 a.m., Joel Penner wrote:
>     > Hello,
>     >
>     > I am doing microscopic focus stacking with mirrorless cameras. I
>     have
>     > a Cognisys Stackshot rail that I am doing this with, but I also
>     have a
>     > bunch of Canon 9000F & 8800F scanners, so I am wondering whether I
>     > could use the precision these devices have to move a camera
>     forward by
>     > small increments.
>     >
>     > I have already been experimenting with attaching a stepper motor
>     to a
>     > microscope, controlled by a Big Easy Driver and a Raspberry Pi.
>     This
>     > person used a scanner for focus stacking by connecting a scanner
>     motor
>     > to an external driver:
>     >
>     >
>     https://petapixel.com/2013/01/24/focus-stacking-macro-photographs-with-a-hacked-flatbed-scanner/
>     >
>     <https://petapixel.com/2013/01/24/focus-stacking-macro-photographs-with-a-hacked-flatbed-scanner/>
>     >
>     > This would work for me, but would it be possible to manually
>     move the
>     > scanner imaging head with SANE and the scanner's firmware and
>     > circuitry? Basically, I would need SANE to move the scanner imaging
>     > head forward by a tiny increment, pause for a few seconds for the
>     > camera to take a photo, move forward again and so on. I just need
>     > total control of where the scanner imaging head is moved to and how
>     > small the increments are. My goal is to use this rig to do
>     timelapse
>     > microscopic focus stacked images of plant growth.
>     >
>     > Ideally, the scanner imaging head light would be turned off too
>     but I
>     > could also use tape or disconnect the LED array. I have other
>     scanner
>     > models as well if the firmware or drivers of these Canon scanners
>     > isn't suitable.
>     >
>     > Any ideas would be appreciated, thanks!
>     >
>     > Joel
>     This *might* be possible if the usual movements that the scan head
>     would
>     make are sufficient for your need.
>     What you can definitely do is to arrange for the scan head to move
>     from
>     home quickly to a start position and have the head move more
>     slowly to
>     an end position (speed depending on the requested resolution) after
>     which the head would usually return to the home position. By
>     controlling
>     the rate at which the scan data is received from the machine, you
>     might
>     also be able to get the scan head to pause when the scan data
>     buffer is
>     full. Within the SANE API, those are really your options.
>     Some scanners have a more high-level control, such is the case
>     with the
>     protocols that are handled by the pixma backend. I see that
>     Povilas has
>     answered regarding the genesys backend and the scanners that are
>     supported there. The genesys controllers provide much more control
>     over
>     the hardware. Even then, using the SANE API is going to be quite
>     limiting, but you could use the genesys code to directly control a
>     genesys scanner.
>     Honestly, you might be better off harvesting the components from the
>     scanner and using an arduino or something. ;D
>     Cheers,
>     Ralph
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/sane-devel/attachments/20220119/d0ea2fff/attachment.htm>

More information about the sane-devel mailing list