** Links
-- Internal project references in =index.org= use *URL-encoded* paths:
- =[[file:Cases/Roll/index.html]]= becomes
- =Cases/roll/index.html= → =Cases/Roll/index.html= in source. Spaces in
- directory names are percent-encoded (=%20=).
-- Cross-references between project pages use raw =file:= links with the
- same encoding rules.
-- The back-link in every page's front matter uses an HTML anchor fragment
- pointing into =index.html=.
+- Internal project references in =index.org= use paths with *literal
+ spaces* in directory names. Spaces in URL-bearing link types
+ (https, mailto) must be =%20=-encoded (see "Link patterns" below).
+- Cross-references between project pages use raw =file:= links.
+- The back-link in every page's front matter uses an HTML anchor
+ fragment pointing into =index.html=.
+
+** Link patterns
+
+Five link shapes are used in the project. Stick to these — no new
+variations.
+
+*Spaces in filenames.* Filenames and directory names in this project
+often contain spaces (e.g. =Body and covers/foo.png=,
+=Spray gun holder/index.html=). Use a *literal space* in the link
+target — org and the browser both handle it correctly:
+
+#+begin_example
+,#+attr_html: :class responsive-img
+[[file:Body and covers/body, 1.png]]
+#+end_example
+
+*Exception: =https:= and =mailto:= links must use =%20= for any space in
+the path or query string.* A literal space in a URL is invalid (per
+RFC 3986) and the link will be malformed or rejected by browsers. So:
+
+#+begin_example
+[[https://example.com/path%20with%20space][Product page]]
+#+end_example
+
+But for =file:= links, literal space is correct and =%20= is *not*
+required. (The form =[[file:Body%20and%20covers/x.png]]= also works in
+practice — browsers and org both decode it back to a space — but the
+project convention is literal space.)
+
+1. *Image* — a PNG/JPG/etc. that the renderer shows inline. Always
+ preceded by =#+attr_html: :class responsive-img= so the page CSS
+ sizes it correctly. Spaces in the path are literal:
+
+ #+begin_example
+ ,#+attr_html: :class responsive-img
+ [[file:make.png]]
+ #+end_example
+
+ #+begin_example
+ ,#+attr_html: :class responsive-img
+ [[file:Body and covers/body, 1.png]]
+ #+end_example
+
+2. *Download* — a link to a FreeCAD project or STL file. The link
+ text is the file type, not the filename. Spaces in the path are
+ literal; spaces in the display text ([...]) need no encoding:
+
+ #+begin_example
+ - [[file:body.stl][STL file]]
+ - [[file:body.FCStd][FreeCAD project]]
+ - [[file:Lab heater and cooler.FCStd][FreeCAD design file]]
+ #+end_example
+
+3. *External URL* — auto-labelled (org uses the URL as the link text)
+ or explicitly labelled. Both are common. *Spaces in the URL must
+ be =%20=-encoded* — unlike =file:= links, raw spaces are not valid
+ in a URL:
+
+ #+begin_example
+ https://example.com/page
+ [[https://example.com/path%20with%20space][Product page]]
+ #+end_example
+
+4. *Email* — always use the =mailto://= form (note the double slash).
+ This is what every existing page uses, even though the standard
+ org form is =mailto:= (single slash). Don't "fix" the existing
+ pages. Email addresses don't contain spaces, so no encoding is
+ needed:
+
+ #+begin_example
+ [[mailto://svjatoslav@svjatoslav.eu][svjatoslav@svjatoslav.eu]]
+ #+end_example
+
+5. *Back-link* — top of every page, points to the index section
+ listing the project. The anchor fragment never contains spaces
+ (org's auto-generated IDs are hyphenated), so no encoding is
+ needed here. Anchor values that are actually used in the repo:
+
+ | Anchor | Used for |
+ |-----------------------------------------+-------------------------------------|
+ | =outline-container-optics= | Optics/ projects |
+ | =outline-container-furniture= | Furniture/ projects |
+ | =outline-container-miscellaneous= | Most Miscellaneous/ projects |
+ | =outline-container-cable-wire= | Cable/wire Miscellaneous/ projects |
+ | =outline-container-audio= | Audio Miscellaneous/ projects |
+ | =outline-container-cases-optics= | Some Cases/ + Optics/ cross-section |
+ | =outline-container-measurement-device-cases= | A specific Cases/ subsection |
+
+ To find the correct anchor for a new page, run =Tools/Update web
+ site --force= once, then search the published =index.html= for
+ the section name; the =id="outline-container-..."= attribute
+ on the matching =<h2>= (or =<h3>=) is the anchor.
+
+** Page structure variations
+
+The "Per-page section template" above describes the top-level shape
+(Overview → optional middle sections → Repository). Within those
+sections, three sub-patterns recur and are accepted:
+
+- *Inline part headings* (=*Body*= / =*Cover*=): a project with two
+ physical parts uses single-asterisk emphasis headings inside
+ =* Overview= to split the description, instead of a top-level
+ =* Files= section. Each inline heading is followed by an
+ =#+attr_html= + image paragraph:
+
+ #+begin_example
+ ,*Body*
+ ,#+attr_html: :class responsive-img
+ [[file:body.png]]
+
+ ,*Cover*
+ ,#+attr_html: :class responsive-img
+ [[file:cover.png]]
+ #+end_example
+
+ Real examples: =Cases/Microscope slide box/=,
+ =Miscellaneous/Battery tester/=, =Cases/Macro filter storage
+ compartment/=.
+
+- *Download table* — for projects with multiple parts, a three-column
+ org table makes the FreeCAD/STL downloads scannable:
+
+ #+begin_example
+ | item | FreeCAD file | STL file |
+ |-------+--------------+----------|
+ | body | [[file:body.FCStd][download]] | [[file:body.stl][download]] |
+ | cover | [[file:cover.FCStd][download]] | [[file:cover.stl][download]] |
+ #+end_example
+
+- *Project-specific "See also:"* — a paragraph at the end of
+ =* Overview= that points to a related project, distinct from the
+ generic See-also list in =* Repository=:
+
+ #+begin_example
+ See also:
+ + [[file:../../Optics/Fujifilm X-mount microscope adapter/][Fujifilm microscope adapter]]
+ #+end_example
+
+ Use this when one project logically leads to another (e.g. "Case
+ for microscope slides" → "Microscope adapter").
+
+** Anti-patterns to avoid
+
+These have come up while maintaining the project. Each one was
+either a published-site bug or a verification false positive.
+
+- *Bullet-wrapped images.* A gallery image must be a bare paragraph
+ under an =#+attr_html= directive, not a list item:
+
+ #+begin_example
+ WRONG (bullet + image):
+ + Body:
+ + [[file:body.png]]
+
+ RIGHT (heading + image):
+ ** Body
+ ,#+attr_html: :class responsive-img
+ [[file:body.png]]
+ #+end_example
+
+ The bullet form renders as a bullet point around a single image in
+ the published HTML (looks like junk), and the =responsive-img=
+ class is lost because org doesn't apply attribute lines to
+ bullet-item content.
+
+- *=schematic= is ambiguous.* In some projects (e.g. =Miscellaneous/USB
+ desk fan mod=) =schematic= is a *directory* (containing KiCad
+ files like =DCDC_stepdown.sch=). In other projects, the link is
+ to a *file* called =schematic.png= at the project root. Don't
+ blindly rewrite =schematic= → =Schematic= in a link without
+ checking whether the original was a directory or a filename.
+ When renaming, use the =(^|/)old(/|$)= anchor in your search
+ regex to match directory components only.
+
+- *Lowercase-starting directory names.* Every directory in the
+ project starts with an uppercase letter (or a digit followed by
+ an uppercase letter). The rule applies to *directory* names, not
+ to filenames inside them. Files like =main board, 1.png= or
+ =schematic.png= are content and should not be renamed.
+
+** Workflow footnotes
+
+- =touch= does not invalidate the build cache. The incremental
+ export script (see "Build cache" below) keys on =sha256=, and
+ =touch= only updates mtime. If you want to test the sentinel
+ invalidation path, modify the file's content (e.g. =echo "" >>
+ style.css=), don't =touch= it.
+
+- The build script excludes =AGENTS.org= from exports (see commit
+ =f1187e6= "feat(build): incremental org→html export with
+ style.css sentinel"). The operating guide is for agents, not for
+ the public site, and a published =AGENTS.html= would be noise.
+
+- =./Tools/Update web site= re-opens itself in a =gnome-terminal=
+ the first time it's run (the "T" arg is the internal signal
+ meaning "we're already inside the terminal"). If you're running
+ the script from a script or over SSH without a display, the
+ re-open will fail — invoke the script with a "T" arg (e.g.
+ =./Tools/Update\ web\ site T --force=) to skip the re-launch.
* Adding a new project
[[file:assembled.png]]
- see also:
- - [[file:../Fuji%20XC50-230mm%20lens%20case/][Fujifilm XC50-230mm lens case]]
- - [[file:../Fujifilm%20camera%20battery%20box/][Fujifilm camera battery box]]
+ - [[file:../Fuji XC50-230mm lens case/][Fujifilm XC50-230mm lens case]]
+ - [[file:../Fujifilm camera battery box/][Fujifilm camera battery box]]
* Files
:PROPERTIES:
:CUSTOM_ID: fuji-xc15-45mm-lens-case-files
:END:
-You can [[file:Fuji%20camera%20lens%20container.FCStd][download FreeCAD project]] file to tweak design or generated STL
+You can [[file:Fuji camera lens container.FCStd][download FreeCAD project]] file to tweak design or generated STL
files ready for 3D printing:
Body: [[file:body.stl][body.stl]]
:CUSTOM_ID: fuji-xc50-230mm-lens-case-files
:END:
-You can [[file:Fuji%20camera%20lens%20container.FCStd][download FreeCAD project]] file to tweak design or generated STL
+You can [[file:Fuji camera lens container.FCStd][download FreeCAD project]] file to tweak design or generated STL
files ready for 3D printing:
Body: [[file:body.stl][body.stl]]
:PROPERTIES:
:CUSTOM_ID: fujifilm-camera-battery-box-files
:END:
-You can [[file:body%20and%20cover.FCStd][download FreeCAD project]] file to tweak design or generated STL
+You can [[file:body and cover.FCStd][download FreeCAD project]] file to tweak design or generated STL
files ready for 3D printing:
+ Body: [[file:body.stl][download STL]]
| cover | [[file:cover.FCStd][download]] | [[file:cover.stl][download]] |
See also:
-+ [[file:../Fujifilm%20camera%20battery%20box/index.html][Fujifilm camera battery box]]
++ [[file:../Fujifilm camera battery box/index.html][Fujifilm camera battery box]]
* Repository
been made:
#+attr_html: :class responsive-img
-[[file:Meiqqm%20portable%20dosimeter%20case.png]]
+[[file:Meiqqm portable dosimeter case.png]]
Case has internally small bumps on the sides. It is suggested to
insert device with the front panel towards the bump. Bumps are to
Download:
-- [[file:Meiqqm%20portable%20dosimeter%20case.stl][STL file]]
-- [[file:Meiqqm%20portable%20dosimeter%20case.FCStd][FreeCAD project]]
+- [[file:Meiqqm portable dosimeter case.stl][STL file]]
+- [[file:Meiqqm portable dosimeter case.FCStd][FreeCAD project]]
* Repository
| cover | [[file:cover.FCStd][download]] | [[file:cover.stl][download]] |
See also:
-+ [[file:../../Optics/Fujifilm%20X-mount%20microscope%20adapter/][Fujifilm microscope adapter]]
++ [[file:../../Optics/Fujifilm X-mount microscope adapter/][Fujifilm microscope adapter]]
* Repository
CAD drawing for inner box/case:
#+attr_html: :class responsive-img
-[[file:inner%20body%20assembled.png]]
+[[file:inner body assembled.png]]
CAD drawing for inner box/case within outer box:
-----
#+attr_html: :class responsive-img
-[[file:inner%20box.stl][download: inner box]]
+[[file:inner box.stl][download: inner box]]
#+attr_html: :class responsive-img
-[[file:inner%20box,%201.png]]
+[[file:inner box, 1.png]]
#+attr_html: :class responsive-img
-[[file:inner%20box,%202.png]]
+[[file:inner box, 2.png]]
-----
#+attr_html: :class responsive-img
-[[file:inner%20cover.stl][download: inner cover]]
+[[file:inner cover.stl][download: inner cover]]
#+attr_html: :class responsive-img
-[[file:inner%20cover.png]]
+[[file:inner cover.png]]
-----
#+attr_html: :class responsive-img
-[[file:outer%20box.stl][download: outer box]]
+[[file:outer box.stl][download: outer box]]
#+attr_html: :class responsive-img
-[[file:outer%20box.png]]
+[[file:outer box.png]]
-----
#+attr_html: :class responsive-img
-[[file:outer%20cover.stl][download: outer cover]]
+[[file:outer cover.stl][download: outer cover]]
#+attr_html: :class responsive-img
-[[file:outer%20cover.png]]
+[[file:outer cover.png]]
-----
:END:
Files can be edited using [[https://www.freecadweb.org/][FreeCAD]].
-+ [[file:NanoVNA%20case.FCStd][NanoVNA case]]
++ [[file:NanoVNA case.FCStd][NanoVNA case]]
+ [[file:stylus.FCStd][Stylus]]
* Repository
#+attr_html: :class responsive-img
[[file:Roll 27mm/roll 27mm, assembled, 2.png]]
-- [[file:roll%2027mm,%20body.stl][body STL]]
-- [[file:roll%2027mm,%20cover.stl][cover STL]]
-- [[file:roll%2027mm.FCStd][FreeCAD file]]
+- [[file:roll 27mm, body.stl][body STL]]
+- [[file:roll 27mm, cover.stl][cover STL]]
+- [[file:roll 27mm.FCStd][FreeCAD file]]
* 55mm diameter roll
:PROPERTIES:
#+attr_html: :class responsive-img
[[file:Roll 55mm/roll 55mm, assembled.png]]
-- [[file:roll%2055mm,%20body.stl][body STL]]
-- [[file:roll%2055mm,%20cover.stl][cover STL]]
-- [[file:roll%2055mm.FCStd][FreeCAD file]]
+- [[file:roll 55mm, body.stl][body STL]]
+- [[file:roll 55mm, cover.stl][cover STL]]
+- [[file:roll 55mm.FCStd][FreeCAD file]]
* Repository
:END:
#+attr_html: :class responsive-img
-[[file:PLA%20+%20TPU/make.png]]
+[[file:PLA + TPU/make.png]]
Following parts are glued together:
#+attr_html: :class responsive-img
-[[file:PLA%20+%20TPU/make,%202.png]]
+[[file:PLA + TPU/make, 2.png]]
** Male connector case
:PROPERTIES:
:CUSTOM_ID: usb-cable-terminals-male-connector-case
:END:
#+attr_html: :class responsive-img
-[[file:PLA%20+%20TPU/male%20connector%20case.png]]
+[[file:PLA + TPU/male connector case.png]]
Download:
-- [[file:PLA + TPU/male%20connector%20case.FCStd][FreeCAD project]]
-- [[file:PLA + TPU/male%20connector%20case.stl][STL file]]
+- [[file:PLA + TPU/male connector case.FCStd][FreeCAD project]]
+- [[file:PLA + TPU/male connector case.stl][STL file]]
** Female connector case
:PROPERTIES:
:END:
#+attr_html: :class responsive-img
-[[file:PLA%20+%20TPU/female%20connector%20case,%201.png]]
+[[file:PLA + TPU/female connector case, 1.png]]
#+attr_html: :class responsive-img
-[[file:PLA%20+%20TPU/female%20connector%20case,%202.png]]
+[[file:PLA + TPU/female connector case, 2.png]]
Download:
-- [[file:PLA%20+%20TPU/female%20connector%20case.FCStd][FreeCAD project]]
-- [[file:PLA%20+%20TPU/female%20connector%20case.stl][STL file]]
+- [[file:PLA + TPU/female connector case.FCStd][FreeCAD project]]
+- [[file:PLA + TPU/female connector case.stl][STL file]]
* TPU only design for male connector case
:PROPERTIES:
[[file:TPU/schematic.png]]
Download:
-- [[file:TPU/USB%20cover.FCStd][FreeCAD project]]
-- [[file:TPU/USB%20cover.stl][STL file]]
+- [[file:TPU/USB cover.FCStd][FreeCAD project]]
+- [[file:TPU/USB cover.stl][STL file]]
* Repository
Small book stand.
#+attr_html: :class responsive-img
-[[file:book%20stand.png]]
+[[file:book stand.png]]
Download:
-+ [[file:book%20stand.stl][STL file]]
-+ [[file:book%20stand.FCStd][FreeCAD file]]
++ [[file:book stand.stl][STL file]]
++ [[file:book stand.FCStd][FreeCAD file]]
* Repository
totally incompatible electrical wiring.
#+attr_html: :class responsive-img
-[[file:../alternative%20USB%20layout/schematic.png]]
+[[file:../alternative USB layout/schematic.png]]
As seen, it has dual voltage output. Additionally one wire is
dedicated to data transmission and can be used with [[https://en.wikipedia.org/wiki/1-Wire][1-Wire]] protocol
cooling.
#+attr_html: :class responsive-img
-[[file:Body%20and%20covers/body,%201.png]]
+[[file:Body and covers/body, 1.png]]
Various modules are realized on top of prototype PCBs that slide into
dedicated rails within the body.
#+attr_html: :class responsive-img
-[[file:Body%20and%20covers/body,%202.png]]
+[[file:Body and covers/body, 2.png]]
Like this:
#+attr_html: :class responsive-img
-[[file:make,%202.png]]
+[[file:make, 2.png]]
When cover is closed, it blocks PCB movement:
#+attr_html: :class responsive-img
-[[file:Body%20and%20covers/cover.png]]
+[[file:Body and covers/cover.png]]
There is still some empty space inside, so why not add dummy cover on
top that can be replaced later with add-on functionality/expansion
board/terminal :)
#+attr_html: :class responsive-img
-[[file:Body%20and%20covers/cover%20cover.png]]
+[[file:Body and covers/cover cover.png]]
Download:
-+ [[file:body%20and%20covers/body.stl][Body STL file]]
-+ [[file:body%20and%20covers/cover.stl][Big cover STL file]]
-+ [[file:body%20and%20covers/cover%20cover.stl][Small dummy cover on top, STL file]]
-+ [[file:body%20and%20covers/body%20and%20covers.FCStd][Body and covers FreeCAD project]]
++ [[file:body and covers/body.stl][Body STL file]]
++ [[file:body and covers/cover.stl][Big cover STL file]]
++ [[file:body and covers/cover cover.stl][Small dummy cover on top, STL file]]
++ [[file:body and covers/body and covers.FCStd][Body and covers FreeCAD project]]
* Transformer and AC to DC converter
:PROPERTIES:
Schematic:
#+attr_html: :class responsive-img
-[[file:Transformer%20and%20AC%20DC%20converter%20board/schematic.png]]
+[[file:Transformer and AC DC converter board/schematic.png]]
For safety I kept high voltage section as minimal as possible. That
is, wall plug runs straight into transformer. Also I used [[https://www.amazon.de/gp/product/B07VGQKM3G/ref=ppx_yo_dt_b_asin_title_o06_s00?ie=UTF8&psc=1][UV hardening
volts. Power switch is located on [[id:c9a69490-f920-4a31-b32e-b101bfc3d01b][indicator panel]].
#+attr_html: :class responsive-img
-[[file:Transformer%20and%20AC%20DC%20converter%20board/make,%201.png]]
+[[file:Transformer and AC DC converter board/make, 1.png]]
DC current of about 30 volts is then routed to [[id:65d68227-4bf2-4c4f-b4d3-c390bc6a9c34][Main board]].
#+attr_html: :class responsive-img
-[[file:Transformer%20and%20AC%20DC%20converter%20board/make,%202.png]]
+[[file:Transformer and AC DC converter board/make, 2.png]]
[[https://www.amazon.de/gp/product/B07RLQH5TR/ref=ppx_yo_dt_b_asin_title_o07_s00?ie=UTF8&psc=1][Single sided prototype PCB is used]].
voltage converters]].
#+attr_html: :class responsive-img
-[[file:Main%20board/main%20board,%201.png]]
+[[file:Main board/main board, 1.png]]
High-level schematic of entire device:
#+attr_html: :class responsive-img
-[[file:Main%20board/schematic.png]]
+[[file:Main board/schematic.png]]
As seen from schematic, ~30 volts DC from transformer board is routed
into first step-down converter that reduces it to about 15V. Reduced
to 13. This corresponds to output pins on the board.
#+attr_html: :class responsive-img
-[[file:Main%20board/main%20board,%202.png]]
+[[file:Main board/main board, 2.png]]
* Current limiter
:PROPERTIES:
:ID: afc22d23-9bc4-421c-9cac-e0ce34bd36bc
Schematic:
#+attr_html: :class responsive-img
-[[file:Current%20limiter/schematic.png]]
+[[file:Current limiter/schematic.png]]
Simple LM317 based current limiter is used. I used 4.7 ohm
resistor. It provides about 265 milliamps of current. See [[http://www.reuk.co.uk/wordpress/electric-circuit/lm317-current-calculator/][calculator]].
#+attr_html: :class responsive-img
-[[file:Current%20limiter/current%20limiter,%201.png]]
+[[file:Current limiter/current limiter, 1.png]]
Thermal paste below and UV hardening glue on top is used to attach
LM317 to the heatsink. There is also jumper-like solution on top
occur in LM317. Heatsink is needed to dissipate that power.
#+attr_html: :class responsive-img
-[[file:Current%20limiter/current%20limiter,%202.png]]
+[[file:Current limiter/current limiter, 2.png]]
Note: resistor gets hot too.
:END:
#+attr_html: :class responsive-img
-[[file:Indicator%20panel/indicator%20panel,%201.png]]
+[[file:Indicator panel/indicator panel, 1.png]]
Basically 2 digital DC voltmeters and main on/off switch.
#+attr_html: :class responsive-img
-[[file:Indicator%20panel/indicator%20panel,%202.png]]
+[[file:Indicator panel/indicator panel, 2.png]]
Download:
#+attr_html: :class responsive-img
-[[file:Indicator%20panel/indicator%20panel.png]]
+[[file:Indicator panel/indicator panel.png]]
-+ [[file:indicator%20panel/indicator%20panel.stl][STL file]]
-+ [[file:indicator%20panel/indicator%20panel.FCStd][FreeCAD project]]
++ [[file:indicator panel/indicator panel.stl][STL file]]
++ [[file:indicator panel/indicator panel.FCStd][FreeCAD project]]
* Connector terminal
:PROPERTIES:
Schematic:
#+attr_html: :class responsive-img
-[[file:Connector%20terminal/schematic.png]]
+[[file:Connector terminal/schematic.png]]
As seen above, most of the USB connectors are used to deliver dual
power output and 1-wire data connectivity, except one on the bottom
Electrically schematic is realized using smaller prototype PCBs.
#+attr_html: :class responsive-img
-[[file:Connector%20terminal/make,%201.png]]
+[[file:Connector terminal/make, 1.png]]
Those PCBs are wired to central small PCB that acts as a hub:
#+attr_html: :class responsive-img
-[[file:Connector%20terminal/make,%202.png]]
+[[file:Connector terminal/make, 2.png]]
PCBs are held together by being sandwiched between front panel:
#+attr_html: :class responsive-img
-[[file:Connector%20terminal/front%20panel.png]]
+[[file:Connector terminal/front panel.png]]
and smaller back-end plate:
#+attr_html: :class responsive-img
-[[file:Connector%20terminal/back%20panel.png]]
+[[file:Connector terminal/back panel.png]]
Result:
#+attr_html: :class responsive-img
-[[file:Connector%20terminal/make,%203.png]]
+[[file:Connector terminal/make, 3.png]]
Download:
-+ [[file:connector%20terminal/front%20panel.stl][front panel STL]]
-+ [[file:connector%20terminal/back%20panel.stl][back panel STL]]
-+ [[file:connector%20terminal/connector%20terminal.FCStd][FreeCAD project]]
++ [[file:connector terminal/front panel.stl][front panel STL]]
++ [[file:connector terminal/back panel.stl][back panel STL]]
++ [[file:connector terminal/connector terminal.FCStd][FreeCAD project]]
* Calibration
:PROPERTIES:
Here is front panel for switches:
#+attr_html: :class responsive-img
-[[file:front%20panel.png]]
+[[file:front panel.png]]
Download:
-+ [[file:front%20panel.FCStd][FreeCAD project]]
-+ [[file:front%20panel.stl][STL file]]
++ [[file:front panel.FCStd][FreeCAD project]]
++ [[file:front panel.stl][STL file]]
Sometimes I would like to use lightbulbs with various parameters as
test load/indicator. Current device has 4 of them included.
Here is front panel for light bulbs:
#+attr_html: :class responsive-img
-[[file:indicator%20panel.png]]
+[[file:indicator panel.png]]
Download:
-+ [[file:indicator%20panel.FCStd][FreeCAD project]]
-+ [[file:indicator%20panel.stl][STL file]]
++ [[file:indicator panel.FCStd][FreeCAD project]]
++ [[file:indicator panel.stl][STL file]]
After assembly using prototype PCB:
#+attr_html: :class responsive-img
-[[file:make,%202.png]]
+[[file:make, 2.png]]
Following body is used as a case and PCB support:
#+attr_html: :class responsive-img
[[file:body.png]]
Download:
-+ [[file:body%20and%20back%20cover.FCStd][FreeCAD project (body + back cover)]]
++ [[file:body and back cover.FCStd][FreeCAD project (body + back cover)]]
+ [[file:body.stl][STL file for body]]
Result:
#+attr_html: :class responsive-img
-[[file:make,%203.png]]
+[[file:make, 3.png]]
Cover on the back:
#+attr_html: :class responsive-img
-[[file:back%20cover.png]]
+[[file:back cover.png]]
-Download: [[file:back%20cover.stl][STL file]]
+Download: [[file:back cover.stl][STL file]]
Button covers:
#+attr_html: :class responsive-img
layout is used here:
#+attr_html: :class responsive-img
-[[file:../lab%20heater%20and%20cooler/make,%202.png]]
+[[file:../lab heater and cooler/make, 2.png]]
* Repository
[[file:make.png]]
#+attr_html: :class responsive-img
-[[file:make,%202.png]]
+[[file:make, 2.png]]
Simple rechargeable Ni-MH battery tester. The problem with those
batteries is: right after you take them out of charger, voltage level
load.
#+attr_html: :class responsive-img
-[[file:electrical%20schematic.png]]
+[[file:electrical schematic.png]]
I use vintage analog voltmeter. Instead of power resistor I use
Nichrome resistance wire. Test/measurement button should not be
https://en.wikipedia.org/wiki/Series_and_parallel_circuits#Resistance_units_2
#+attr_html: :class responsive-img
-[[file:make,%202.png]]
+[[file:make, 2.png]]
Device consists of body and cover that are held together by single
screw at the center:
#+attr_html: :class responsive-img
-[[file:cover,%202.png]]
+[[file:cover, 2.png]]
* Download
:PROPERTIES:
stereo audio input. Audio input impedance is about 100 ohms.
#+attr_html: :class responsive-img
-[[file:make,%20side.png]]
+[[file:make, side.png]]
Idea for the holes on the top and smaller ones on the bottom back is
to enable air flow for passive cooling.
#+attr_html: :class responsive-img
-[[file:make,%20back.png]]
+[[file:make, back.png]]
Entire construction is made of parts, no larger than
120x120x120mm. Maximum for my printer.
Device is powered by 4 times AA NiMH batteries (1.2V each).
#+attr_html: :class responsive-img
-[[file:Battery%20holder/schematic.png]]
+[[file:Battery holder/schematic.png]]
I happened to have AA battery adapters lying around with different
bottom hole configurations. Therefore this weird hole design:
#+attr_html: :class responsive-img
-[[file:Battery%20holder/battery%20holder.png]]
+[[file:Battery holder/battery holder.png]]
Download:
-+ [[file:battery%20holder/battery%20holder.FCStd][FreeCAD file]]
-+ [[file:battery%20holder/battery%20holder.stl][STL file]]
++ [[file:battery holder/battery holder.FCStd][FreeCAD file]]
++ [[file:battery holder/battery holder.stl][STL file]]
Result:
#+attr_html: :class responsive-img
-[[file:Battery%20holder/make.png]]
+[[file:Battery holder/make.png]]
Attaches to the back of the body:
#+attr_html: :class responsive-img
-[[file:Battery%20holder/mounted%20on%20the%20back.png]]
+[[file:Battery holder/mounted on the back.png]]
* 20V up-step module
:PROPERTIES:
panel, and then it goes to the 20V up-step module.
#+attr_html: :class responsive-img
-[[file:20V%20upstep%20module/schematic.png]]
+[[file:20V upstep module/schematic.png]]
It uses ready made upstep module, but adds extra voltage filtering via
inductor and capacitors.
#+attr_html: :class responsive-img
-[[file:20V%20upstep%20module/make.png]]
+[[file:20V upstep module/make.png]]
* Main board
:PROPERTIES:
uniform central bus that spans all connectors.
#+attr_html: :class responsive-img
-[[file:Main%20board/internal%20bus.png]]
+[[file:Main board/internal bus.png]]
#+attr_html: :class responsive-img
-[[file:Main%20board/bus%20on%20the%20bottom,%202.png]]
+[[file:Main board/bus on the bottom, 2.png]]
First row of the main board is special IO terminal (for connecting
speakers, front panel, etc..)
#+attr_html: :class responsive-img
-[[file:Main%20board/IO%20terminal.png]]
+[[file:Main board/IO terminal.png]]
Remaining rows are for connecting boards:
#+attr_html: :class responsive-img
-[[file:Main%20board/1.png]]
+[[file:Main board/1.png]]
To provide structural support, main board is attached to frame:
#+attr_html: :class responsive-img
-[[file:Main%20board/board%20fixator%20body.png]]
+[[file:Main board/board fixator body.png]]
Download:
-+ [[file:main%20board/board%20fixator%20body.FCStd][FreeCAD file]]
-+ [[file:main%20board/board%20fixator%20body.stl][STL file]]
++ [[file:main board/board fixator body.FCStd][FreeCAD file]]
++ [[file:main board/board fixator body.stl][STL file]]
And boards plugged into main board are fixed at the top, using clip:
#+attr_html: :class responsive-img
-[[file:Main%20board/board%20fixator%20top%20clip.png]]
+[[file:Main board/board fixator top clip.png]]
Download:
-+ [[file:main%20board/board%20fixator%20top%20clip.FCStd][FreeCAD file]]
-+ [[file:main%20board/board%20fixator%20top%20clip.stl][STL file]]
++ [[file:main board/board fixator top clip.FCStd][FreeCAD file]]
++ [[file:main board/board fixator top clip.stl][STL file]]
Result:
#+attr_html: :class responsive-img
-[[file:Main%20board/bus%20on%20the%20bottom,%201.png]]
+[[file:Main board/bus on the bottom, 1.png]]
#+attr_html: :class responsive-img
-[[file:Main%20board/board%20fixator.png]]
+[[file:Main board/board fixator.png]]
* Mono audio amplifier module
:PROPERTIES:
for right.
#+attr_html: :class responsive-img
-[[file:Mono%20audio%20amp%20module/schematic.png]]
+[[file:Mono audio amp module/schematic.png]]
I like to build on top of prototype PCBs. Gives results much faster
for one-off projects. Before soldering, I solve component layout on
paper:
#+attr_html: :class responsive-img
-[[file:Mono%20audio%20amp%20module/PCB%20layout.png]]
+[[file:Mono audio amp module/PCB layout.png]]
Result - front:
#+attr_html: :class responsive-img
-[[file:Mono%20audio%20amp%20module/assembled%20front.png]]
+[[file:Mono audio amp module/assembled front.png]]
Result - back:
#+attr_html: :class responsive-img
-[[file:Mono%20audio%20amp%20module/assembled%20back.png]]
+[[file:Mono audio amp module/assembled back.png]]
Here copper tape is used as improvised heatsink.
Capacitor acts as high-pass filter on top of tiny PCB:
#+attr_html: :class responsive-img
-[[file:Speakers/PCB%20layout.png]]
+[[file:Speakers/PCB layout.png]]
Speaker enclosure:
#+attr_html: :class responsive-img
-[[file:Speakers/speaker%20enclosure.png]]
+[[file:Speakers/speaker enclosure.png]]
Download:
-+ [[file:speakers/speaker%20enclosure.FCStd][FreeCAD file]]
-+ [[file:speakers/speaker%20enclosure.stl][STL file]]
++ [[file:speakers/speaker enclosure.FCStd][FreeCAD file]]
++ [[file:speakers/speaker enclosure.stl][STL file]]
Speaker enclosure cover:
#+attr_html: :class responsive-img
-[[file:Speakers/speaker%20enclosure%20cover.png]]
+[[file:Speakers/speaker enclosure cover.png]]
Download:
-+ [[file:speakers/speaker%20enclosure%20cover.FCStd][FreeCAD file]]
-+ [[file:speakers/speaker%20enclosure%20cover.stl][STL file]]
++ [[file:speakers/speaker enclosure cover.FCStd][FreeCAD file]]
++ [[file:speakers/speaker enclosure cover.stl][STL file]]
Result:
set to 6V). This time directly on the front panel.
#+attr_html: :class responsive-img
-[[file:Front%20panel/schematic.png]]
+[[file:Front panel/schematic.png]]
Front panel case:
#+attr_html: :class responsive-img
-[[file:Front%20panel/front%20panel,%20front.png]]
+[[file:Front panel/front panel, front.png]]
#+attr_html: :class responsive-img
-[[file:Front%20panel/front%20panel,%20back.png]]
+[[file:Front panel/front panel, back.png]]
Electronics fits inside:
#+attr_html: :class responsive-img
-[[file:Front%20panel/front%20panel,%20back,%20make.png]]
+[[file:Front panel/front panel, back, make.png]]
Front view:
#+attr_html: :class responsive-img
-[[file:Front%20panel/front%20panel,%20front,%20make.png]]
+[[file:Front panel/front panel, front, make.png]]
And attaches to the remaining components:
#+attr_html: :class responsive-img
-[[file:Front%20panel/attachment.png]]
+[[file:Front panel/attachment.png]]
* Extra capacitors
:PROPERTIES:
to even out load on primary 20V up-step module.
#+attr_html: :class responsive-img
-[[file:Extra%20capacitors/extra%20caps.png]]
+[[file:Extra capacitors/extra caps.png]]
Download:
-+ [[file:extra%20capacitors/extra%20caps.FCStd][FreeCAD project]]
-+ [[file:extra%20capacitors/extra%20caps.stl][STL file]]
++ [[file:extra capacitors/extra caps.FCStd][FreeCAD project]]
++ [[file:extra capacitors/extra caps.stl][STL file]]
Extra caps are mounted on top of the speaker and electrically attached
to the main board.
#+attr_html: :class responsive-img
-[[file:Extra%20capacitors/make.png]]
+[[file:Extra capacitors/make.png]]
* Center box
:PROPERTIES:
Front:
#+attr_html: :class responsive-img
-[[file:Center%20box/front.png]]
+[[file:Center box/front.png]]
Back:
#+attr_html: :class responsive-img
-[[file:Center%20box/back.png]]
+[[file:Center box/back.png]]
Download:
-+ [[file:center%20box/center%20box.FCStd][FreeCAD file]]
-+ [[file:center%20box/center%20box.stl][STL file]]
++ [[file:center box/center box.FCStd][FreeCAD file]]
++ [[file:center box/center box.stl][STL file]]
* Conclusions / TODO
:PROPERTIES:
:END:
Photo of initial PSU + audio amp test:
#+attr_html: :class responsive-img
-[[file:initial%20test.png]]
+[[file:initial test.png]]
Improvement ideas:
noisy:
#+attr_html: :class responsive-img
-[[file:mini%20fan.png]]
+[[file:mini fan.png]]
Idea is to add DC-DC step-down converter to reduce motor voltage to
make it quieter ([[https://www.amazon.de/gp/product/B07K3W78SQ/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1][Purchased form here]]). And since I already have this
Engine is attached with screws to following back-plate:
#+attr_html: :class responsive-img
-[[file:fan%20housing%20-%20fan%20mount.png]]
+[[file:fan housing - fan mount.png]]
And result is encased into pipelike case:
#+attr_html: :class responsive-img
-[[file:fan%20housing%20-%20cover%20assembly.png]]
+[[file:fan housing - cover assembly.png]]
Download:
-+ STL: [[file:fan%20housing%20-%20fan%20mount.stl][fan mount back plate]]
-+ STL: [[file:fan%20housing%20-%20cover.stl][pipe-like case]]
-+ [[file:fan%20housing.FCStd][FreeCAD project]]
++ STL: [[file:fan housing - fan mount.stl][fan mount back plate]]
++ STL: [[file:fan housing - cover.stl][pipe-like case]]
++ [[file:fan housing.FCStd][FreeCAD project]]
Fan enclosure attaches to the rectangular body below using following
connector (glued to the fan housing):
#+attr_html: :class responsive-img
-[[file:fan%20housing%20connector.png]]
+[[file:fan housing connector.png]]
Download:
-+ [[file:fan%20housing%20connector.stl][STL file]]
-+ [[file:fan%20housing%20connector.FCStd][FreeCAD project]]
++ [[file:fan housing connector.stl][STL file]]
++ [[file:fan housing connector.FCStd][FreeCAD project]]
Bottom part to house 2 PCBs, on/off button and DC connector:
#+attr_html: :class responsive-img
-[[file:bottom%20stand%20body.png]]
+[[file:bottom stand body.png]]
Component attachment:
#+attr_html: :class responsive-img
-[[file:make,%202.png]]
+[[file:make, 2.png]]
And is closed by cover:
#+attr_html: :class responsive-img
-[[file:bottom%20stand%20cover%20assembly.png]]
+[[file:bottom stand cover assembly.png]]
Download:
-+ STL: [[file:bottom%20stand%20body.stl][bottom stand body]]
-+ STL: [[file:bottom%20stand%20cover.stl]]
-+ [[file:bottom%20stand.FCStd][FreeCAD project]]
++ STL: [[file:bottom stand body.stl][bottom stand body]]
++ STL: [[file:bottom stand cover.stl]]
++ [[file:bottom stand.FCStd][FreeCAD project]]
After assembly, it looks like this from the back:
#+attr_html: :class responsive-img
-[[file:make,%203.png]]
+[[file:make, 3.png]]
Note, part of the body is deformed during printing. I have heated bed
and I even printed raft support in Cura and it did not help. In my
[[file:schematic.png]]
Download:
-+ [[file:window%20fixator.stl][STL file]]
-+ [[file:window%20fixator.FCStd][FreeCAD file]]
++ [[file:window fixator.stl][STL file]]
++ [[file:window fixator.FCStd][FreeCAD file]]
* Repository
bottom.
FreeCAD files:
-+ [[file:body%20and%20cover.FCStd][body and cover]]
++ [[file:body and cover.FCStd][body and cover]]
+ [[file:bottom.FCStd][bottom]]
Example photo photographed from film:
[[file:shoot without lens.png]]
See also:
-+ [[file:../microscope%20slide%20box/index.html][Case for microscope slides and cover slips]]
++ [[file:../microscope slide box/index.html][Case for microscope slides and cover slips]]
* Repository
cameras and binoculars can be mounted.
#+attr_html: :class responsive-img
-[[file:make,%202.png]]
+[[file:make, 2.png]]
Old computer hard disk platters are used as rotating discs. They are
attached to following disk mount:
#+attr_html: :class responsive-img
-[[file:disk%20mount%20body.png]]
+[[file:disk mount body.png]]
Download:
-- [[file:disk%20mount.FCStd][Editable FreeCAD project]]
-- [[file:disk%20mount%20body.stl][Printable STL file]]
+- [[file:disk mount.FCStd][Editable FreeCAD project]]
+- [[file:disk mount body.stl][Printable STL file]]
Disk platters are fixed to disk mount using glued tightly fitting top
ring:
#+attr_html: :class responsive-img
-[[file:disk%20mount%20top%20ring.png]]
+[[file:disk mount top ring.png]]
Download:
-- [[file:disk%20mount%20top%20ring.stl][Printable STL file]]
+- [[file:disk mount top ring.stl][Printable STL file]]
Discs are rotated by electric motor. Motor is cooled by electric fan.
Motor and fan are powered by 12V that is generated by 3 voltage upstep
Body:
#+attr_html: :class responsive-img
-[[file:make,%201.png]]
+[[file:make, 1.png]]
FreeCAD model of the main body:
#+attr_html: :class responsive-img
-[[file:main%20body,%201.png]]
+[[file:main body, 1.png]]
#+attr_html: :class responsive-img
-[[file:main%20body,%202.png]]
+[[file:main body, 2.png]]
Download:
- [[file:body.FCStd][Editable FreeCAD file]]
-- [[file:main%20body.stl][Printable STL file]]
+- [[file:main body.stl][Printable STL file]]
Rotating discs are covered and protected by top cover:
#+attr_html: :class responsive-img
-[[file:top%20cover.png]]
+[[file:top cover.png]]
Bottom part of the main body has cover:
#+attr_html: :class responsive-img
-[[file:bottom%20cover.png]]
+[[file:bottom cover.png]]
Download:
-- [[file:bottom%20cover.stl][Printable STL file]]
+- [[file:bottom cover.stl][Printable STL file]]
Camera/binoculars can be mounted on dedicated holder that is screwed
on top of the cover:
#+attr_html: :class responsive-img
-[[file:binocular%20mount.png]]
+[[file:binocular mount.png]]
Download:
-- [[file:binocular%20mount.stl][Printable STL file]]
+- [[file:binocular mount.stl][Printable STL file]]
Result:
#+attr_html: :class responsive-img
-[[file:make,%203.png]]
+[[file:make, 3.png]]
#+attr_html: :class responsive-img
-[[file:make,%204.png]]
+[[file:make, 4.png]]
* Conclusion
:PROPERTIES: