DIN objectives adaptation for microscope?

Hi there!
I have a whole bunch of DIN threaded objectives prodused in Poland, Germany, Japan and USSR… In the basic project of the high resolution optics module RMS-threaded objective lenses are supposed to be used. Did anyone use DIN`s? It is not so hard to modify original design or print adaptor, I just whant to understand if there are any problems I may face.

I don’t think anyone has used a DIN threaded objective, but it would be nice to support them. The optics module section of the code is high on the priorities list for a big clean up see the enhancement proposal about this.

This may explain what is going on enough to make the necessary modifications, if not an adapter may be easier and then after the clean-up DIN objective may be easier.

Agh. Soviet GOST standart claims that DIN objectives with D 20,2 mm thread are RMS standart (1936 version of 1858 standart).


There are also existed 25 mm Leicas and 27 mm, 20 mm & 19 mm Zeiss and co objectives. Most of those are antique, but I have fairly good 20.2 Nikons, Zeiss and LOMO objectives. All those are for 160 mm microscope and has different length.

How the thread is organised? The obvious part of scad code is on the picture


Mod of the D and thread line widenes should work for me… I think)


DIN threaded JIS objectives are also cool alternative. And there are quite a lot of them on ebay and in old biological labs onshelf.

Yes, the main DIN thread is the RMS thread ~20mm, although there are also larger diameter threads.

The other parameter is the par-focal distance - from the thread to the object. 45mm is common and fits. I think the other common one is 35mm which certainly should fit without the stage riser, and probably fits with the riser.

Where I can get .scad file of the “optics_picamera2_rms_f50d13_delta”? There is no such file on gitlab.

The OpenSCAD files are not one-for-one with the parts STLs. The dufferent configurations of optics parts are generated using different parameters using a single SCAD.

The optics_picamera2_rms_f50d13_delta.stl file generated for the delta stage is built from the standard microscope’s optics.scad file.

Just printed delta microscope base, now I want to mod optic for my din objectives… Which modifiers I should look at to adjust module for delta? I found 3 places where delta is mentioned in scad file.

camera_mount_rotation = delta_stage ? -45:0; // The angle of the camera mount (the ribbon cables exits at 135* from dovetail for '0*' & 180* from dovetail for '-45*') fl_cube_rotation = delta_stage ? -60:0; // The angle of the block to hold the fl cube (0* for the fl cube exiting at 180* from the dovetail and -60* for the fl cube exiting at 120* from the dovetail)

and

 rotation = delta_stage ? 120 : 180; // The angle that the fl module exits from (0* is the dovetail)

UPD It looks like I will have to print the standard delta optics module and create some kind of the RMS-DIN adapter, otherwise, it may be impossible to insert the lens properly.

if you set delta_stage = true, then all the parts of the optics module will be in the correct orientation. To change the thread for the objective, the relevant code starts on this line where you can adjust the radius and pitch.

Where should I set it?

The best place should be in microscope_parameters.scad. Or you can use the -D command line option if you are compiling from the terminal.

Sorry about all the confusion. This confusion is why we are trying to clean up the code base to avoid these global parameters. We have a way forward but it will take us a way to complete it.

For context (as it may be helpful). In OpenSCAD the last place a variable is defined is the value that is used. Any variables in the outer scope of a file are global for all function in the file. These global pass between files when using “include” but not when using “use”. This is very useful behaviour for small projects as some parameters can be defined at the top of a file (or in another file) and they can be overridden if necessary. For a project as big as the microscope this has become unweildly, as you need to understand many files and the “scope” of the variables. The fixes we are now implementing are only possible because OpenSCAD has improved significantly since the OpenFlexure project started. For more details on our new solution please see OFEP1.

Thank you for your comment, it cleared my understanding of the project and its perspectives. You have a wonderful team and its results are outstanding.
I will try to print it ASAP

1 Like

What is the diameter of the printed threat?
When I try to print the upper threaded part of the modified optical part with radius=20.2*0.7/2-0.25 I get a ring 13.5 mm in diameter.


When I try to print the same threaded part of the file optics_picamera2_rms_f50d13_delta.stl I get a threaded ring 20 mm in diameter.

What I am doing wrong. I have printed all delta and had no problem with the size of the prints.

Hi @Lost, I am a little confused.

The standard RMS optics mounts have an inner diameter of about 19.8 mm, so this is what you get if you download an STL. Your modified one has a diameter of 13.6 mm. So the result you have presented is as I would expect. What diameters are you trying to make, and how are you getting the STLs (from OpenSCAD or local compilation)?

I see. I have tried both variants. I just don’t understand how to predict what the result I will get modding
“radius” parameters.

 // A threaded hole for the objective with a lens gripper for the tube lens
    translate([0,0,lens_assembly_z]){
        // threaded cylinder for the objective
        radius=25.4*0.8/2-0.25; //Originally this was 9.75, is that a fudge factor, or allowance for the thread?;
        pitch=0.7056;

So the thread module we use is somewhat weird that it specifies the innermost radius of the thread. The size and shape of the thread profile is set by thread_height, thread_base_width and thread_top_width. The important terms for the diameter are radius and thread_height:
image

In optics.scad we leave thread_height as the default value. The “width” parameters can be used to change the thread profile into a trapezium profile.

Sorry to chime in so late on this thread, I’m not quite sure how I missed it at the time! The RMS thread is not something I parameterised very well, as I didn’t anticipate it being changed much! I think the change you made, from (I think radius=25.4*0.8/2-0.25 to 20.2*0.7/2-0.25) is doing what I’d expect - but perhaps the slightly confusing definition bears some unpacking.

I think what I probably meant when I wrote that line was:

  • The diameter is 0.8" (about 20.2mm)
  • I want to convert to mm, so multiply by 25.4
  • I want the radius, not the diameter, so divide by 2
  • The thread often prints a bit tight, and as Julian so beautifully illustrates it’s defined by the innermost points on the thread rather than the “thread diameter” so we subtract 0.25mm from the radius.

There is undoubtedly a small amount of trial-and-error that determined the -0.25 at the end, but I think the rest is based on the RMS specification.

I suspect you’ve figured all this out, but I am trying to make myself answer questions like this in full, in the hope that it will help us improve the documentation in due course…

Finally, I noticed that the latest version of the optics module (lib_optics.scad) defines both radius and rms_r. I should probably link them together…

@j.stirling would it be helpful for me to make a MR to put that into a comment in the code?