Optical fibre mounting and imaging

Hello everyone, this is just a (longer than expected) introductory post to let you know about the additions to the microscope my lab partner (Simon Cox) and I are working on, with the goal to speed up imaging of hollow core optical fibre cross sections for anyone drawing fibre at the University of Bath’s facility.

We’ve only been working with the microscope for a few weeks, so still have a lot of exploring of the forum and GitLab pages to do, so please forgive any redundant ideas or questions.

The two main focusses of our project are:

  • How to repeatably position a fibre, with a diameter of ~100-200microns, so that it is in the frame of a 40 or 60x objective.

  • Processing the image from the microscope to quantify parameters of the fibre, such as core/capillary dimensions and symmetry.

The latter isn’t really something to ask about on this forum, but if anyone knows of any Python libraries/techniques for this, suggestions would be welcome.

As for the former, we have been prototyping a few different ideas of how to do this using only 3D printed or commonly available parts (M3 bolts, rubber bands etc.).

The first idea used a V-groove with square cut out sections and corresponding teeth, fixed to a springy flexure, as shown below. As the print direction was going to affect how smoothly the fibre and teeth could be slid into the groove, the two sides of the jaw we attached by simple dovetails so they could be printed separately to rest.
This design worked reasonably, but the end of the fibre would tend to deviate each time it was clamped, so we moved onto other ideas, but this could still work as a back up.

Next we wondered about using three hexagons, which if slid along their faces, would form a triangular aperture in between them. 3D printed hexagons tended to have slightly rounded corners, which wouldn’t close small enough to clamp the fibre. They could be filed down by hand, but we were concerned that this wouldn’t retain the exact angles between faces needed. Large machine nuts (e.g.M8) had similarly rounded corners, so we ended up working with M3s.
The image below shows our first idea using these. The smaller circle would be held still, whilst the larger is rotated, which in turn rotates each nut around its own centre. This causes the nuts to slide along their faces, whilst the plastic legs holding each nut flex, allowing for the centre separation to increase. The o-ring then pulls the aperture closed when the circle is twisted back.
This also worked reasonably, but had the practical problem of feeding a fibre down from the large circle (which would be at the top when on a microscope), to the nuts (just above the objective lens). A quick test of a 3D printed funnel didn’t work well, so a new prototype for positioning the 3 nuts is in the works (currently worked on by Simon).

The third design, which I’m currently working on, uses 4 cuboids, held together with a combination of single and double dovetails, which when slid against each other, open up a square aperture in between. The dovetails also prevent the fibre from slipping between gaps in the cuboids, meaning the faces don’t need to be perfectly pressed flat into each other. The difficulty with this idea is moving the cuboids in phase so that the aperture opens symmetrically, and closes to the same place each time.
This design is also the biggest victim of the ridges on vertical walls inevitable in FDM printing. The cuboids are printed so there is no ridge-over-ridge sliding, which minimises friction (not sure how to explain the relative orientations of 3D printed pieces sliding against each other, hopefully you get the idea).
This design can hold the fibre with a decent grip, but we are still working on smoothing the motion to make the aperture closing more accurate.

Anyway, if anyone has any advice, ideas, designs or questions on the fibre holding (or image analysis)
we’d be very happy to hear it.


1 Like

This looks very cool :slight_smile: I’m curious if you’re particularly keen to use the microscope for this or if you might consider using the block stage instead - that would mean the fibre is horizontal rather than vertical, which might make it a bit easier to see what’s going on when it’s inserted. You could also more easily attach the fibre to the static part of the stage, which probably helps improve robustness (the load capacity of the XY stage isn’t huge, so I would not be surprised if it got quite wobbly).

Ed Meng (PhD student in my lab) did use a microscope optics module attached to the delta stage for some of his experiments - I don’t know if the STL files for that got shared anywhere, but perhaps I should have a look.

The other useful feature of the block stage is that it’s compatible with standard metal v-groove mounts. I realise those are quite expensive, so part of the fun of your project is probably coming up with good alternatives - but it’s worth bearing in mind that you could use that as a shortcut to get to the image analysis bits.

1 Like

Just adding to what @r.w.bowman has said:

The block stage can have stepper motors mounted onto it and then controlled very similarly to the OFM. It behaves and is used like a commercial 3-axis stage which is often used as a solution for launching light into optical fibres. The large central grooves in the “tapped top plate” are treated rather like rails in which components are put into, slid into a rough position and then tightened down with screws and cleats. The position can then be further refined by moving one of the stages around. In ‘normal’ commercial stages there’s usually one static one that can be added onto the side the moving stage (looks kind of like an “L-bracket”. For the block stage, you can have one static or two static stages either side of the moving stage. Depends on what you want to do optically!

For fibres, they just sit on a metallic v-groove (called because it’s literally just a ‘v’ shape of the ~order of the fibre OD milled into a metal surface). The repeatability of placing a fibre onto one of these is usually pretty good. Some refinement is always needed a little, but you can most likely compensate with that by using the stepper motors to move around to find the fibre end face.

Thor labs have good videos on using many optomechanics and aligning fibres! However, they don’t seem to have anything on these kinds of stages so I’ve been unable to find a good video so you can see how they’re used.

But it’s definitely worth printing one and trying it out as an alternative if you can :D!

Hey, great setup. I have been working in fiber coupling into hollow core fibers. I found 3d printing nozzles a very nice guide to hold fibers. Would that be something of help?


Hey everyone, thank you for the ideas, they’re all things we should be looking at.

@r.w.bowman and @kharrington , If we were imaging transmitted light through the fibre then I think the block stage would be the way to go for coupling a light source, but as we’re using the microscope set up with reflection illumination I’m not sure we can use the block stage. We’ve also had no issues with the standard stage in terms of x/y/z precision - it’s very impressive.

As for using a v-groove, I’m sure it would be possible to adapt the block stage’s mounting plate to be fitted to the microscope, so that a v-groove could hold the fibre vertically above the objective. Saying that, it now sounds like something we should try.

@B.Diederich , that sounds like it could definitely work for us, we’ll have a look around and see if someone’s got a spare nozzle we can ‘borrow’ :slight_smile: .

We’ll post again with any updates, thank you everyone!

cool - I think there’s no reason in principle that you couldn’t add in a beamsplitter to the block stage microscope mount, but I guess it would require a bit more thought to make a 3D model of the part… I think so long as the reflection illuminator was sticking out the top, you’d be fine.

In regards to making the mount in the most bodge way possible, I have been trying to import optics_picamera_2_rms_f50d13_beamsplitter.stl into optics_mount.stl, but I get a weird OpenSCAD error when rendering (fine in preview).


ERROR: CGAL error in CGAL_Nef_polyhedron3(): CGAL ERROR: assertion violation! Expr: e_below != SHalfedge_handle() File: /mxe/usr/x86_64-w64-mingw32.static.posix/include/CGAL/Nef_3/SNC_FM_decorator.h Line: 426

With this failing, I went to start from a blank slate rather than optics_mount.scad. So I slapped together a solution of putting optics_picamera2_rms_f50d13_beamsplitter.stl on top of an my own built 3-axis stage alignment tab mount, but I got the same error.

Reading online it seems that the intersection has failed? Intersecting with this part seems to just be causing me problems that I’ve not encounted before on OpenSCAD.

My terrible openscad rapid attempt (it will be at the wrong height for stage mounted optics, but just wanted a first attempt):

//Trying to make the whole reflection optics sit on top of a block stage
//It’s literally just the optics module sat on the alignment parts

//Alignment tab part for multi-axis stage
alignmenttab = 2.7;
alignmenttabdepth = 2.3;
widthtab = 32;
heighttab = 10;
waistheight = 3;
waistdepth = 3;
depthtab = 35;

difference(){cube([widthtab, depthtab, heighttab]);


Ah, unfortunately I’ve never had great success operating on existing STLs with OpenSCAD. Adding to them seems to be just about OK, but taking intersections tends to go quite wrong. It’s possible that you can supply a convexity argument to import that might help, but it quite likely won’t make any difference.

I can easily-enough generate the STL of the optics module without the mounting wedge, that might paste in to the existing code a bit better?

optics_module_rms_f50d13_beamsplitter_nodovetail.stl (416.9 KB)

I’ve not tried to turn this into the version that mounts to the block stage - my guess is that the mounting flange will foul the beamsplitter cut-out. If you can fix that (e.g. by chopping off some of the mounting flange) you might be OK?

1 Like

I just tried making a “microscope module” based on that STL, and it didn’t really work, because the mounting flange I modelled didn’t fit around the cut-out. However, I think if you were able to just add the mounting plate onto the side of the module, it might be OK.

1 Like

Thanks Richard! Apologies I’m not quite sure what mounting flange you mean here? Do you mean in the original optics_mount.scad, that the mount will cut through the beam splitter?

That new stl really helped! Importing and adding to it hasn’t caused any problems. I modified my code above, but have had to make some adjustments. If I make the optics module the common height for the stage (so centre of objective centre is 12.5 mm from stage bottom) the raspberry pi holder part falls below the alignment tab part. So I’ve made it 2 mm higher, which is the limit of the range of motion of the default block stage. However, if we’re just looking at fibres, it’s easy to print a platform that will hold a fibre 2 mm higher.

I’ll give these a print and a try on stages, see if I can use them to look at my optical fibres.

optics_picamera_blockstageadapter_WRONGOPTICSHEIGHT.stl (418.5 KB)
vgrooveforoptics_picamera_blockstageadapter.stl (4.0 KB)

1 Like

Awesome, glad I could help :slight_smile: The mounting flange I meant was on the original two-part STL, where there was a separate RMS mount that bolted onto the fibre stage (like the metal ones you are probably familiar with) and then the rest of the microscope module bolted onto that. I’d added an extra ring onto the optics module with screw holes in it.

I think the way you’ve done it here works much better! I can see there’s a little bit of the baseplate cutting off the corner of the beampsplitter cut-out, which may or may not cause a problem - perhaps rotating the optics module 45 degrees, so that the beamsplitter is vertical, would already be sufficient to sort that out?


1 Like

A small update that will be useful to anyone wanting to look at optical fibres quickly on their OFM and has access to the usual lab accessories of optical fibres (like bare fibre adapters and multi-axis stage acessories). @JamesB made a holder such that an fibre holder used on multi-axis stages can be slid onto the top of the microscope. He used a HFB004 (abundant in most optical fibre labs, though this one is apparently obsolete, there are plenty of others that should function identically).

The stl can be found here: 3Nuts/STLs/5.0/fibreholderMk5.0-BFA.stl · main · Jambrooks5 / FibreHolders · GitLab
And the openscad script for modification here: 3Nuts/fibreholderMk5.0-BFA.scad · main · Jambrooks5 / FibreHolders · GitLab