Major README updates. Still needs proofing, images and more links to files.

This commit is contained in:
mmcwilliams 2020-08-26 18:53:01 -04:00
parent fae0100b7f
commit 396cfe85de
1 changed files with 101 additions and 30 deletions

131
README.md
View File

@ -2,7 +2,7 @@
Free and open source processing system for 16mm and Super8 film
IMAGE_PLACEHOLDER
[[/img/gnal_50ft_v3.png|GNAL 50ft V3 all pieces]]
Would you like to buy one?
@ -12,9 +12,13 @@ Would you like to buy one?
## What's GNAL? Gnal's Not A Lomo!
GNAL stands for Gnal's Not A Lomo because it isn't. While inspired by a certain motion picture development tank the goal of this project is to create an open source, modification-friendly processing system for small format movie film with the added constraint that it be 3D printable or otherwise able to be fabricated on a small scale. All source code and STL files for printing will be made available in this repository.
GNAL stands for Gnal's Not A Lomo because it isn't. While inspired by a certain motion picture development tank the goal of this project is to create a free, open-source, modification-friendly processing system for small format movie film with the added constraint that it be 3D printable or otherwise able to be fabricated on a small scale. All source code and STL files for printing will be made available in this repository.
GNAL is built using [OpenSCAD](https://www.openscad.org/). OpenSCAD is a free, open source CAD program that uses scripts to generate objects. Building this project in OpenSCAD serves two purposes: it uses only free and open source software to create the GNAL processing spirals and it future-proofs the design by preserving its dimensions in human-readable text format. Even if OpenSCAD were to disappear tomorrow (sincerely hope it doesn't) it would still be possible to recreate the GNAL models in another CAD program just by reading the code and reproducing the measurements.
GNAL is built using [OpenSCAD](https://www.openscad.org/). OpenSCAD is a free, open-source CAD program that uses scripts to generate objects. Building this project in OpenSCAD serves two purposes: it uses only free and open source software to create the GNAL processing spirals and it future-proofs the design by preserving its dimensions in human-readable text format. Even if OpenSCAD were to disappear tomorrow (and we sincerely hope it doesn't) it would still be possible to recreate the GNAL models in another CAD program just by reading the code and reproducing the measurements.
While the files are all free, open-source and readily available to download; actually printing them can be a challenge. Please read through this README for information about materials, printers and troubleshooting your prints.
Happy processing!
## Where's the tank?
@ -28,7 +32,7 @@ Good question!
IMAGE_PLACEHOLDER
#### [All 50ft v3 STL files in a .zip]()
#### [All 50ft v3 STL files in a .zip](https://github.com/sixteenmillimeter/GNAL/releases/download/v3.0/gnal_50ft_v3.zip)
* [Spiral](stl/50ft_v3/gnal_50ft_spiral.stl)
* [Top](stl/50ft_v3/gnal_50ft_top.stl)
@ -43,7 +47,7 @@ IMAGE_PLACEHOLDER
IMAGE_PLACEHOLDER
#### [All 100ft v3 STL files in a .zip]()
#### [All 100ft v3 STL files in a .zip](https://github.com/sixteenmillimeter/GNAL/releases/download/v3.0/gnal_100ft_v3.zip)
* [Spiral](stl/100ft_v3/gnal_100ft_spiral.stl)
* [Top](stl/100ft_v3/gnal_100ft_top.stl)
@ -60,7 +64,7 @@ IMAGE_PLACEHOLDER
IMAGE_PLACEHOLDER
#### [All 50ft v2 STL files in a .zip]()
#### [All 50ft v2 STL files in a .zip](https://github.com/sixteenmillimeter/GNAL/releases/download/v2.0/gnal_50ft_v2.zip)
* [Spiral](stl/50ft_v2/gnal_50ft_spiral.stl)
* [Top](stl/50ft_v2/gnal_50ft_top.stl)
@ -73,7 +77,7 @@ IMAGE_PLACEHOLDER
IMAGE_PLACEHOLDER
#### [All 100ft v2 STL files in a .zip]()
#### [All 100ft v2 STL files in a .zip](https://github.com/sixteenmillimeter/GNAL/releases/download/v2.0/gnal_100ft_v2.zip)
* [Spiral](stl/100ft_v2/gnal_100ft_spiral.stl)
* [Top](stl/100ft_v2/gnal_100ft_top.stl)
@ -89,7 +93,7 @@ IMAGE_PLACEHOLDER
IMAGE_PLACEHOLDER
#### [All 50ft v1 STL files in a .zip]()
#### [All 50ft v1 STL files in a .zip](https://github.com/sixteenmillimeter/GNAL/releases/download/v1.0/gnal_50ft_v1.zip)
* [Bottom Spiral](stl/50ft_v1/gnal_50ft_bottom_spiral.stl)
* [Top Spiral](stl/50ft_v1/gnal_50ft_top_spiral.stl)
@ -98,7 +102,7 @@ IMAGE_PLACEHOLDER
**100ft/30m**
#### [All 100ft v1 STL files in a .zip]()
#### [All 100ft v1 STL files in a .zip](https://github.com/sixteenmillimeter/GNAL/releases/download/v1.0/gnal_100ft_v1.zip)
* [Bottom Spiral](stl/100ft_v1/gnal_100ft_bottom_spiral.stl)
* [Top Spiral](stl/100ft_v1/gnal_100ft_top_spiral.stl)
@ -109,10 +113,11 @@ IMAGE_PLACEHOLDER
## Printers
The diameter of these spiral reels limit the number of printers that are capable of printing this design. The 50ft/15m model is 225.71mm (8.88in) wide at the base and the 100ft/30m model is 299mm (11.77in) wide.
The diameter of these spiral reels limit the printers that are capable of printing this design. The 50ft/15m model is 225.71mm (8.88in) wide at the base and the 100ft/30m model is 299mm (11.77in) wide.
**50ft/15m Capable Printers**
* [PrintrBot Metal Plus](https://www.adafruit.com/product/2302) **Discontinued** **Tested**
* [aniwaa.com Search: Printers with print bed > 225mm x 225mm](https://www.aniwaa.com/comparison/3d-printers/?sort=price&order=asc&filter_search&filter_price_minimum&filter_price_maximum&filter_build_size_width=225&filter_build_size_height=225&filter_build_size_depth)
**100ft/30m Capable Printers**
@ -120,39 +125,74 @@ The diameter of these spiral reels limit the number of printers that are capable
* [Creality Ender 5 Plus](https://www.creality3d.shop/collections/3d-printer/products/creality3d-ender-5-plus-3d-printer) ***Tested***
* [aniwaa.com Search: Printers with print bed > 300mm x 300mm](https://www.aniwaa.com/comparison/3d-printers/?filter_search&filter_price_minimum&filter_price_maximum&filter_build_size_width=300&filter_build_size_height=300&filter_build_size_depth)
There are people printing spirals in sections on smaller printers, but that is not a *recommended* use of these files as it requires extreme precision to reconstruct the parts into a reel that will load smoothly. Another thing to consider is the longevity of the bond made by the adhesive you choose. Don't let that stop you, though. A multi-part printed reel is just not a priority for *this* particular project. An enterprising spirit might notice the `gnal_50ft_spiral_quarter()` and `gnal_100ft_spiral_quarter()` modules in the v3 OpenSCAD script and begin to wonder what is possible.
There are people successfully printing spirals in sections on smaller printers, but that is not a *recommended* use of these files as it requires extreme precision to reconstruct the parts into a reel that will load without problems. Another thing to consider is the longevity of the bond made by the adhesive you choose. Don't let that stop you, though. A multi-part printed reel is just not a priority for *this* particular project. An enterprising spirit might notice the `gnal_50ft_spiral_quarter()` and `gnal_100ft_spiral_quarter()` modules in the V3 OpenSCAD scripts and begin to wonder what is possible.
-----
<a name="material"></a>
## Material
[PETG](https://en.wikipedia.org/wiki/Polyethylene_terephthalate#Copolymers) is currently the recommended plastic for printing the GNAL. Since this is a piece of darkroom processing equipment its exposure to water and photochemistry is inevitable and should be considered primarily. PETG (Polyethylene terephthalate glycol) is PET--which is a plastic that's typically encountered in plastic bottles and food containers--in a copolymer with glycol.
Various manufacturers have published [safety data sheets](https://en.wikipedia.org/wiki/Safety_data_sheet) for PETG filament. The only warning about reactivity I have discovered states that a condition to avoid is "strong oxidizing agents" which may include reversal bleaches that contain strong acids. This is not a scientific evaluation and may stand to be corrected.
ABS is a viable option but has a greater tendency to warp on larger prints without proper temperature control around the print bed. Since this model needs to be consistently flat across the bottom of the reel, this is not ideal and will make for a challenging print. ABS is a plastic commonly used in injection molding and is also generally non-reactive with photochemistry.
PLA is not recommended but this doesn't mean you can't get an acceptable result with it. The lack of endorsement comes from mostly anecdotal experience witnessing the wear and tear caused by exposure to water on PLA prints. Biodegradable and porous, PLA will wear down in the weakest parts first and on this model that would be the spiral. If you do not need your processing equipment to last a long time, you may find it acceptable. PLA stands for polylactic acid and is likely the most reactive material to use with photochemistry where pH is vital to maintain for consistent results.
-----
## Material
## Troubleshooting
PETG is the recommended plastic for printing the GNAL. Since this is a piece of darkroom processing equipment its exposure to water and photochemistry is inevitable and should be considered primarily. PETG (Polyethylene terephthalate glycol) is a copolymer of PET, which is a plastic that's typically encountered in plastic bottles and food containers. This is not a scientific evalution and may stand to be corrected.
Many, many issues were encountered during the development of this tool. Prints came out warped, failed midway during multi-day prints and had other mysterious ailments. I am by no means an expert but have built up months of experience trying to print these models on a variety of machines.
ABS is a viable option but has more tendency to warp on larger prints without proper temperature control around the print bed. Since this model needs to be consistently flat across the bottom of the reel,
#### Warping
PLA is not recommended but this doesn't mean you can't get an acceptable results with it. The lack of endorsement comes from mostly anecdotal experience witnessing the wear and tear of water on PLA. Biodegradable and porous, PLA prints will wear down in the weakest parts first and on this model that would be the spiral. If you do not need your processing equipment to last a long time, you may find it acceptable. PLA stands for polylactic acid
Fused filament fabrication relies on the behavior of plastics at high heat to create a physical object. If your prints are warping, there are a few things to look at.
1. Material
2. Heat
3. Slicer settings
The first thing to consider when your prints are coming out warped off the print bed is whether or not your **material** is appropriate for this model. Check the [#material](material) section of this README for more information, but theres a chance if you are using PLA or ABS that large flat prints of this size are warping due to limitations with the material you are using. PETG has proven to warp far less in my own anecdotal experience and is the recommended material for this project.
The thermal properties of the material you're printing are what leads to warping, so check if your printer is being set to the recommended **temperatures** on both the bed and extruder for the material you are using. Warping occurs consistently when a part cools too quickly and contracts while the rest of the part is still being printed. Avoid this by using an enclosure on your open-frame printer or by printing in a space with low air flow but still with appropriate ventilation for the material you use.
The **slicer** you use and the **settings** in its configuration will make a lot of difference in how your print comes out. During the development of this project [Cura](https://ultimaker.com/software/ultimaker-cura) is the slicer used most for test prints, however you might find that different software works best with your machine. The settings are important to test before you commit to a complete print of the spiral part.
Here is an example of the key settings used during development while printing with PETG.
|Setting|Value|
|---|---|
|Extruder Temperature|240° C|
|Bed Temperature|80° C|
|Generate Supports|Yes|
|Infill|20%|
|Print Speed|40 mm/s|
This is a fraction of the overall settings used by Cura, but they note some of the key features that were changed from the default profile provided by Cura.
-----
## Development
This project can be edited with only OpenSCAD and the source files in the `*_v1`, `*_v2` or `*_v3` directories which make reference to files from `libraries`. If you wish to run the development scripts you should install the following dependencies.
This project can be edited with only OpenSCAD and the source files in the `scad/*_v1`, `scad/*_v2` or `scad/*_v3` directories which make reference to files from `scad/libraries`. If you wish to run the development scripts you should install the following dependencies.
With just OpenSCAD, you can use scripts such as `50ft_v3/gnal_50ft.scad` and export the different modules in [OFF](https://en.wikipedia.org/wiki/OFF_(file_format)), [AMF](https://en.wikipedia.org/wiki/Additive_manufacturing_file_format), [3MF](https://en.wikipedia.org/wiki/3D_Manufacturing_Format), [DXF](https://en.wikipedia.org/wiki/AutoCAD_DXF) or SVG (drawing) format. The CSG models can be [imported](https://wiki.freecadweb.org/OpenSCAD_CSG) into [FreeCAD](https://www.freecadweb.org/) and DXF models should be readable by AutoCAD and [QCAD](https://www.qcad.org/en/).
With just OpenSCAD, you can use scripts such as `scad/50ft_v3/gnal_50ft.scad` and export the different modules in [OFF](https://en.wikipedia.org/wiki/OFF_(file_format)), [AMF](https://en.wikipedia.org/wiki/Additive_manufacturing_file_format), [3MF](https://en.wikipedia.org/wiki/3D_Manufacturing_Format), [DXF](https://en.wikipedia.org/wiki/AutoCAD_DXF) or SVG (drawing) format. The CSG models can be [imported](https://wiki.freecadweb.org/OpenSCAD_CSG) into [FreeCAD](https://www.freecadweb.org/) and DXF models should be readable by AutoCAD and [QCAD](https://www.qcad.org/en/).
### Dependencies
* Bash
* [Bash](https://www.gnu.org/software/bash/) - Available by default on Mac and Linux
* [OpenSCAD](https://www.openscad.org/downloads.html) + [cli](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Using_OpenSCAD_in_a_command_line_environment) ([Mac](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Using_OpenSCAD_in_a_command_line_environment#MacOS_notes)) ([Windows](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Using_OpenSCAD_in_a_command_line_environment#Windows_notes))
* [ADMesh](https://github.com/admesh/admesh)
* (optional) [POV-Ray](http://www.povray.org/download/)
### Build Scripts
Running any of the build scripts scripts--`scripts/v1.sh`, `scripts/v2.sh` or `scripts/v3.sh`--will start an OpenSCAD build process of all components and will log stats about the resulting files and render times to `notes/v1.csv`, `notes/v2.csv` or `notes/v3.csv`.
Keep in mind that V1 and V2 compile times are extremely long and all scripts will use an entire CPU core at 100% utilization while rendering. It's best to run these scripts in the background on a powerful machine or better yet, not at all. See the `stl` folder for pre-compiled STL files for 3D printing or the [releases page](/releases/latest) for .zip archives of all versions.
Keep in mind that V1 and V2 compile times are extremely long and all scripts will use an entire CPU core at 100% utilization while rendering. It's best to run these scripts in the background on a powerful machine or better yet, not at all. See the `stl` folder for pre-compiled STL files for 3D printing or the [releases page](/releases/latest) for .zip and .tar.gz archives of all versions.
These scripts will render STL files, PNG images of the files and then
These scripts will render STL files, PNG images of the files and capture metadata about the render process while doing so.
### Benchmarks
@ -161,6 +201,7 @@ The `scripts/benchmark.sh` script will run various tests on the different approa
-----
## Version notes
<a name="v1"></a>
### V1
@ -186,7 +227,7 @@ The experimentation in this version predate this particular git repo and so will
This version of the spiral must be printed with supports. The spirals themselves are suspended over voids and this particular feature is addressed in the later versions.
#### Benchmarks
#### Rendering
Rendered using OpenSCAD version 2019.05 on a 2.2 GHz Core i7 (I7-4770HQ) chip running macOS 10.14.
@ -199,6 +240,7 @@ Rendered using OpenSCAD version 2019.05 on a 2.2 GHz Core i7 (I7-4770HQ) chip ru
|gnal_100ft_spacer.stl|991452|5736|2888.149658|74|
|gnal_100ft_top.stl|3302563|19552|102590.546875|477|
|gnal_100ft_spiral_top.stl|92423369|542836|223602.078125|89137|
|gnal_100ft_spiral_bottom.stl|N/A|N/A|N/A|N/A|
-----
@ -221,7 +263,7 @@ A secondary benefit of reducing the spiral to a single model was to immediately
Les was right. This reduced the several hours render time to 1-2 hours, which worked for this version. Ideally this will be improved further in future versions. Beyond some explorations into OpenSCAD hacks (rendering each complete rotation of the spiral and stitching all resulting STLs) the next version will incorporate other languages and platforms to find the fastest render time for a GNAL spiral. All previous approaches are being compiled into a suite of tests to benchmark render times.
#### Benchmarks
#### Rendering
Rendered using OpenSCAD version 2020.01.17 on a 3.2 GHz Core i5 (I5-4460) chip running Ubuntu 18.04.
@ -245,12 +287,23 @@ Rendered using OpenSCAD version 2020.01.17 on a 3.2 GHz Core i5 (I5-4460) chip r
<a name="v3"></a>
### V3
The goals of V3 are to **greatly** optimize the spiral generation code for speed and to restore the feature of the V1 spiral which maintains a consistent size of individual facets throughout the spiral even as the diameter changes. This will be considered a stable release.
The goals of V3 are to **greatly** optimize the spiral generation code for speed and to restore the feature of the V1 spiral which maintains a consistent size of individual facets throughout the spiral even as the diameter changes. This will be considered a stable release candidate for publishing the project.
This version will also contain a 4x reel stacking feature so that all models can be stacked with 3 spiral reels and a top piece. That will give 200ft capacity to the 50ft model and 400ft capacity to the 100ft model.
Since the benchmarking process ([see below](#benchmarks)) was developed between V2 and V3, render times are optimized in this iteration of the project. The success of the `[scad/spiral/spiral_3.scad](spiral_3.scad)` approach stood out amongst the rest, so it was reworked into what exists in V3.
The spiral itself is plotted in 2D with a relatively simple formula that is expressed in the OpenSCAD script through a number of in-line helper functions. It draws the position of various points along the spiral path and then uses the `path_extrude.scad` library to extrude a shape along those coordinates. This proves to be fast and efficient while not sacrificing any of the detail in the geometry.
#### Benchmarks
Prior to release a serious flaw was found while printing the V3 design. The attempt to remove the need for supports in V2, actually printing the spiral was creating curious side effects during fabrication. Not having material in the voids below the spiral, it seems, allowed air to cool the part and would consistently cause prints to fail when it reached the actual spiral at the top of the reel. Since this is the most important element of the reel, the triangles have been removed and the design is more similar to V1. Testing continues on this version.
In a compromise to make the process of removing the support material less dangerous to the detail on the top, the spiral itself extends lower than V1 into the space between the spokes of the reel. The spiral is also made thicker and is a multiple of my nozzle diameter (0.4mm). This uses slightly more material but is less fragile than V1 and test prints proved that the supports were less difficult to remove than in the earliest model.
This version will also contain a 4x reel stacking feature so that all models can be stacked with 3 spiral reels and a top piece. That will give 200ft capacity to the 50ft model and 400ft capacity to the 100ft model. A stretch goal for this version is to make a 35mm spacer and spindle set so that movie film in the format can be processed in 100ft lengths.
#### Beware
This version *also* requires the use of support material while printing.
#### Rendering
Rendered using OpenSCAD version 2020.08.18 on a 2.2 GHz Core i7 (I7-4770HQ) chip running macOS 10.14.
@ -277,9 +330,25 @@ Rendered using OpenSCAD version 2020.08.18 on a 2.2 GHz Core i7 (I7-4770HQ) chip
<a name="benchmarks"></a>
## Benchmarks
In the process of publishing this repository I started questioning claims I was making in this readme. Throughout the development of this processing reel I've been plagued by long render times. As a sanity check, I went through my personal development history on this project and produced 7 distinct spiral generation scripts that I ran through a series of tests to benchmark the render performance, total volume generated and number of facets produced. Render time was the primary metric that concerned me, but I considered the other important in comparing these different approaches.
In the process of publishing this repository I started questioning claims I was making in this README. Throughout the development of this processing reel I've been plagued by long render times. As a sanity check, I went through my personal development history on this project and produced 6 distinct spiral generation scripts that I ran through a series of tests to benchmark the render performance, total volume generated and number of facets produced. Render time was the primary metric that concerned me, but I considered the other important in comparing these different approaches.
In the `spiral` directory you will find each individual script in a `spiral_#.scad` format. The `scripts/benchmark.sh` script will render spirals at various resolutions and rotation counts and records the results in `notes/benchmark.csv`.
This work led to the creation of the approach in `spiral_7.scad` and was ultimately used in V3.
An example of a single test pulled from the `notes/benchmark.csv` results. These example results are rendered using OpenSCAD 2020.05.23 on a 2.3 GHz Xeon Gold 6140 chip running Ubuntu 18.04.
|Spiral Test|Diameter (mm)|Rotations| [$fn](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Other_Language_Features#$fa,_$fs_and_$fn) |Size (bytes)|Facets|Volume (mm<sup>3</sup>)|Time (sec)|
|---|---|---|---|---|---|---|---|
|[scad/spiral/](spiral_1.scad)|47|10|100|7409653|41064|5391.819336|209|
|spiral_2.scad|47|10|100|15349620|86646|3639.441162|855|
|spiral_3.scad|47|10|100|1336635|8004|3589.485596|0|
|spiral_4.scad|47|10|100|1607691|9624|3830.134521|23|
|spiral_5.scad|47|10|100|4711486|28188|3602.101562|8|
|spiral_6.scad|47|10|100|4265376|25396|14337.455078|120|
|spiral_7.scad|47|10|100|990006|5924|3581.499756|0|
As you can see, the different approaches lead to wildly different render times for different tests. If you look at the complete results you will see many tests did not even finish due to exhausting the memory on the machine or the process being killed by
In the `scad/spiral` directory you will find each individual script in a `scad/spiral/spiral_#.scad` file. The `scripts/benchmark.sh` script will render spirals at various resolutions and rotation counts and record the results in `notes/benchmark.csv`.
Consider this comparison of just the 50ft spirals (top spiral from V1).
@ -289,11 +358,13 @@ Consider this comparison of just the 50ft spirals (top spiral from V1).
| V2 | gnal_50ft_spiral.stl |34628449 | 193450 | 178181.250000 | 2341 |
| V3 | gnal_50ft_spiral.stl | 9500384 | 190006 | 171712.140625 | 1111 |
Render times have gone down dramatically.
Halved between V2 and V3.
Render times have gone down dramatically between V1 and V2.
Times halved again between V2 and V3.
The volume has stayed consistent with major changes in geometry (between V1 and V2).
The file size of the V3 spiral has reduced to about 30% of the V1 and V2 spirals and the facet count remains roughly the same.
The file size of the V3 spiral has reduced to about 30% of the V1 and V2 spirals and the facet count remains roughly the same throughout (which was a surprise).
Faster render times mean more iteration and less time between tests.
The next part of the process to examine is slicing which has primarily been done with Cura, but other engines will be looked at for their speed, efficiency and print quality.
## License