This is a parametrizable open-source hardware (OSH) stage to move an optical filter. The dimensions of the filter and the stage are parametrizable in order to change the dimensions of the stage, the filter and any other components (stepper motor, belt tensioner, aluminum profiles,..) The printable pieces are described using FreeCAD Python scripts. It can be compared with the OpenSCAD version: https://github.com/felipe-m/oscad_filter_stage
The pictures of this readme.md are reduced in size to make the document more readable larger pictures can be found in the img folder (see Project organization)
Hardware License: CERN 1.2 (https://ohwr.org/cernohl)
Software License: LGPL 3.0
Documentation License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
This project has been certified as open source hardware by the Open Source Hardware Association.
The components of the stage are:
- Filter holder
- Timming belt
- Belt tensioner
- Stepper motor with pulley
- Motor holder
- Linear guide
- Some nuts and bolts
The filter holder holds an optical filter and it is attached to a linear guide.
It has various holes to be able to fit in different linear guides
The belt tensioner is composed by 2 printable parts, and idler pulley:
- Tensioner holder
- Idler tensioner
- Idler pulley
- Leadscrew with nut
Back view of the belt tensioner:
Exploded view of the belt tensioner:
By turning the leadscrew, the idler pulley will retract or extend, tightening or loosening the belt.
Retracted belt tensioner:
Extended belt tensioner:
The idler pulley can be made out of a bearing, a bolt, a nut and some washers. For example, if using a DIN 912 bolt, it can be built this way:
Following, the main parameters are explained. There are some other parameters that can be seen in the Python code.
Example of 2 filter holders having different parameters:
Idler tensioner size depending on the idler pulley:
The tensioner stroke can be modified:
The thickness of the walls can be modified
The metric size of the leadscrew can be modified:
These modifications lead to automatic modifications on the tensioner holder size:
The belt height is parametrizable, leading to modifications on the tensioner holder:
The base width, ie. the aluminum profile width, is parametrizable:
+--- scr: Source files in Python
+--- comps: functions in Python for FreeCAD, https://github.com/felipe-m/fcad-comps
+--- scr_cq: Source files in Python using CadQuery
+--- freecad: Saved FreeCAD designs
+--- stl: Parts exported to STL
+--- imgs: Images of the 4 parts in png format
+--- small: reduced size images
+--- tens_hold_steps: images for the step by step explanation for the tensioer holder
+--- idler_tens_steps: images for the step by step explanation for the idler tensioner
+--- belt_tensioner: belt tensioner images
+--- filter_holder: filter holder images
+--- filter_stage: filter stage images
comps: are python functions and classes to make the shapes easier. Check https://github.com/felipe-m/fcad-comps
- tensioner_holder.md Detailed explanation for the tensioner holder. It also includes information on how to execute the Python scripts.
- idler_tensioner.md Detailed explanation for the idler tensioner
You can compare the same pieces designed using OpenSCAD: https://github.com/felipe-m/oscad_filter_stage
- The tensioner_set.py module has no detailed explanation, but the code is explained based on the previous. This code combines the parts of the tensioner set and uses Python classes and methods.
- filter_holder_clss.py Filter holder, similar to the one made with OpenSCAD (https://github.com/felipe-m/oscad_filter_stage)
- filter_stage.py In the same design includes the filter holder, the belt tensioner and the motor holder, and also some other non-printable models, such as the stepper motor, aluminum profile, linear guide, belt and pulleys
- CadQuery designs have no step-by-step explanations, but there are comments in the code:
There is no need to have supports as long as the parts are printed with the following orientation: