- OpenSCAD 97%
- Makefile 3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
The closed switch moves outside too, past A's pillar's face across the pipe, 48 mm out (was 18); the open one stays outside end B, now 51 mm out. Both past the fork's reach, both trip 0.7 deg before the stop. Each bracket is an L: the switch sits flat on a plate, held by two M2 screws from outside through its own holes and slots in the plate into nuts in a channel behind it (with tapped M3 the heads had to face out on a wall past the switch, hence the U), and a block back to the pillar's face on V-teeth. Both slide +/-4 mm up and down, clamped by an M3x12 on a washer sunk in a pocket, through a slot into an insert in the pillar: beside the switch on the closed one, on an arm over it on the open one, where the terminals are in the way beside it. Only the top halves change in pillar mode (they only lose material); a butterfly's brackets and every part with none or micro export as before. |
||
| docs | ||
| lib | ||
| .gitignore | ||
| .gitmodules | ||
| actuator.scad | ||
| CLAUDE.md | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
Modular ball-valve actuator (OpenSCAD) - v10, clamp rings + slider + gear drive
A clamp-on servo actuator for quarter-turn ball valves, starting with EN 331 gas valves (DN15 / DN20 lever; butterfly supported but bulkier, see below). Nothing on the gas line is opened or modified, and the clamp reaches no further than the valve's own end faces, so the pipe, unions and elbows next to the valve are never touched. Only the top plate reaches past them, up at plate height: 4 mm over the pillars, for the slider's teeth, and with the gear drive the servo sits in line with the pipe past one end of the valve (see below), so valves on pipes side by side can sit close together.
actuator.scad top level: pick valve, servo, coupler style, part
lib/profiles.scad valve + servo profiles (copy one and put your measurements in)
lib/gva_core.scad geometry, clearance report
lib/bearings/bearings.scad ball bearing sizes (608RS, 625RS) and the seats for them
lib/bearings/preview.scad open it to see any bearing, its seat cutter, the two together, or a test block
lib/switches/switches.scad micro switches with a lever (KW12-3 roller, KW12-1 hinge lever), for the limit switches
lib/switches/preview.scad open it to see a switch free, at its operating point and pressed
lib/gears/ chrisspen/gears, the gear library (git submodule, its own license)
lib/iso-fasteners/ the fastener library: ISO screws, bolts, set screws, nuts, washers and the holes
for them (git submodule, its own README); open its preview.scad to see them
lib/heat-set-inserts/ the insert library: SL-type heat-set insert sizes and the holes for them (git
submodule, its own README); open its preview.scad to see them
docs/ the pictures and animations in this README (make images)
Makefile exports (see below)
LICENSE CC BY-NC-SA 4.0, see License at the end
make prints the clearance report and exports every part to stl/, one
file per part, in print orientation: clamp_top_a, clamp_top_b,
clamp_bottom (print two), collar (both halves; print two), head,
coupler, pinion (gear drive only), with limit switches switch_yoke (micro) or bracket_open and
bracket_closed (pillar). Identical parts come out once; if the two valve ends differ you get
clamp_bottom_a/_b and collar_a/_b instead (PART = "list" shows the
list). The gears, the screws and the inserts come from git submodules: after
cloning, run git submodule update --init once. make images redraws the pictures and animations in
this README (docs/, tracked), always of the default build; the animations need ffmpeg. They are the
valve stopping at open, closed, the servo's end past closed, open again and its end past open
(anim_assembly.gif from the lever's side, anim_gears.gif from above with the plate and servo
see-through) and the parts pulling apart and going back together (anim_explode.gif). For any other
build, make renders writes preview images to renders/ and make animate the three animations
(generated, not tracked). Pick a valve with VALVE, e.g. make stl VALVE=3/4.
Other settings go in ARGS; make passes them through the shell, so escape
the quotes on strings: make stl ARGS='-D GRIP=\"direct\"'.
Part labels
To name the parts when talking about them, each printed part has a short
code, raised on it in the preview (LABELS, on by default) and beside it in
the all_parts layout. The labels are never in an export: the STLs come out
as before. The report lists them.
| Code | Part (PART, the STL) |
Where the label is |
|---|---|---|
TA, TB |
clamp_top_a, clamp_top_b: the top halves of the rings |
on the lugs' outer faces, both sides |
BA, BB |
clamp_bottom at end A, at end B: the caps |
on the lugs' outer faces, both sides |
CA, CB |
collar at end A, at end B (each one both halves) |
on each half's outer end face |
P |
head: the top plate |
on its edge over each pillar |
PK |
puck: the cones under the plate bolts |
on the side facing out |
F |
coupler: the fork and the gear sector |
on the fork's front, over the lever |
PN |
pinion (gear drive) |
on its bottom face |
PV |
pivot_puck: the cone under the pivot's nut (gear drive) |
on its side |
Y |
switch_yoke (micro) |
on the band, on the side the lever never goes |
SO, SC |
bracket_open, bracket_closed (pillar) |
on the block's top |
Quick start: pick a size
Open actuator.scad and set:
| Setting | Options |
|---|---|
VALVE_SIZE |
3/8, 1/2, 3/4, 1, 1-1/4, or a measured profile (boiler_half_inch) |
HANDLE |
lever or butterfly (no T-handle preset at 1-1/4"); a measured profile keeps its own handle, and butterfly puts its size preset's T-handle on it, to see what that would look like |
SWEEP_DIR |
-1 (default) = closes clockwise seen from above, 1 = counter-clockwise; applies to every valve |
BESIDE |
none (default), or a second valve size (1 = DN25) drawn next to this one in the assembly view, with every other setting the same: its own pillars, gears and report, for comparing |
CLAMP_FROM |
bottom (default): short clamp bolts up through the caps, plate bolts from above; top: every bolt goes in from above |
SERVO_NAME |
DS3230MG (default): 30 kg servo with its 25T aluminium clamp arm; STD_25T: a standard-size servo with a 25T disc horn |
DRIVE (Drive tab) |
gear (default): the servo stands in line with the pipe past one end of the valve and turns a herringbone sector on the coupler through a pinion on its own spline; direct: the servo sits on the stem (the v9 head and coupler, unchanged) |
| Drive tab | SERVO_RANGE: a 180, 270 or 360 degree (positional) servo; SLACK: degrees past open and past closed its travel still covers (5), to set the end positions in software. The gears follow from these |
LIMIT_SWITCHES (Drive tab) |
micro (default): two micro switches beside the lever at open and closed, pressed by the lever itself, on a yoke under the gear; pillar: the same on two brackets screwed to the pillars (it changes the top halves); none: no limit switches (see Limit switches) |
INSERT_SIZE |
the M4 heat-set insert used at every joint (M4xD6.0xL7.0 default); a bigger one doesn't widen the rings, it leaves a thinner wall to the bore (1.64 mm with a D7) |
CLAMP_BOLT_L, PLATE_BOLT_L |
M4 bolt lengths you have (default 20 and 25); the report checks thread and fit |
STYLE |
how the coupler holds the lever: fork (default), bolt (an M4 down through a hole you drill in the lever), clamp (longer tines and an M3 across them under the lever: tightened, it pulls the tines onto the lever's sides and stops the fork lifting; a try, not printed yet) |
SERVO_SCREW |
M3 (default, on a washer) or M4: the servo's 4 screws; the nut pockets under the plate follow, the report gives the length |
| Fit tab | COLLAR_GAP, COLLAR_FIT: tune the collars after a test print; INSERT_HOLE_CHAMFER: chamfer at the mouth of each insert hole; GEAR_CD_PLAY, SPLINE_FIT: backlash in the gears and the pinion's fit on the spline; GEAR_APEX: the herringbone V's heights (reprint the pinion) |
| Slider tab | SLIDE_TRAVEL: how far the top plate can slide each way along the pipe (default 3 mm) |
The tooth settings for the slider and the gears live in lib/gva_core.scad;
ARGS='-D NAME=value' reaches them too (e.g. SLIDE_PHASE=0.5 for a plate
that gives the half steps). So does GRIP, which isn't in the Customizer:
collars (always, for now): split collars, any hex angle on either end;
direct: the rings grip the hexes, so the hex angles in the profile must be
right.
Everything else adapts: ring bores, body clearance, which corners get pillars, fork position and depth, coupler, top plate, bolt lengths. The ECHO report also checks the servo's stall torque against the valve size.
The presets are typical EN 331 F/F full-bore gas valves. 1/2"-1 1/4" follow
the ITAP "Berlin" catalogue; 3/8" is an estimate. Makers differ (a 1/2" valve
can be 58 or 75 mm long), so before the final print measure your valve, fill in
a profile in lib/profiles.scad (copy BOILER_HALF_INCH_VALVE) and add it to
VALVE_SIZE in actuator.scad.
Typical results with a 6 Nm standard-size servo on the stem (SERVO_NAME = "STD_25T", DRIVE = "direct"):
| Size | Base (length x width) | Typical torque | Servo margin |
|---|---|---|---|
| 3/8" | 60 x 55.4 mm | ~2.5 Nm (est.) | 2.4x |
| 1/2" | 75 x 60 mm | ~3 Nm | 2x |
| 3/4" | 80 x 66.9 mm | ~4 Nm | 1.5x (stronger servo advised) |
| 1" | 90 x 77.3 mm | ~6 Nm (est.) | 1x (needs a bigger servo) |
| 1-1/4" | 110 x 87.7 mm | ~9 Nm (est.) | 0.7x (needs a bigger servo) |
(Base = valve end face to end face x ring width, with collars and
M4xD6.0xL7.0 inserts.) All five
lever sizes and the 1/2" and 3/4" butterfly sizes pass solid collision
checks at open, half and closed (direct drive; the gear drive's checks are in
its section).
How it works
From the bottom: the clamp bolts, the two bottom caps, the split collars on the valve's end hexes, the two top halves with their toothed pillars, the coupler that takes the lever (with the gear sector and the 625 bearing it hangs on), the button head screw and nut that clamp the bearing, the top plate, the servo in line with the pipe with the pinion on its spline, and the plate bolts.
Split collars (default). Two-piece valves have their end hexes at random angles, to each other and to the stem. So each hex gets a collar made of two halves, each with half the hex inside and round outside with a V-rib. The rings have a round bore with a matching groove. Each collar locks onto its hex at whatever angle the hex sits, and turns freely in the ring bore until the cross-bolts clamp it. The rib and groove fix each ring along the pipe.
Load path: the servo twists the actuator about the stem. Both ends resist that by pushing sideways, about 65 mm apart, which needs no friction. Only a small moment (about 2-4 Nm at servo stall) tries to turn the unit around the pipe, and the clamped collars take it by friction.
Seated on the hex, the two collar halves must leave a small gap between them
(about 1 mm on paper, see the report), or the ring squeezes the halves against
each other instead of onto the hex and the collar rattles. The pocket is a
close fit on the hex (COLLAR_FIT, 0.1 mm across flats; the halves clip on
from the side) and the split is wide (COLLAR_GAP, 1.2 mm). Neither changes
the collar's outside, so the rings don't change when you tune them. The
collars split through the
middle of two flats, where the wall is thickest (5 mm). Each pocket corner
has a 1 mm round relief, because real hex corners are rounded (and a printer
can't make a sharp inside corner either), so only the flats touch. Behind the
reliefs the wall is 2 mm.
Base = two clamp rings, one on each valve end, and nothing in between.
The top plate ties the rings together through the pillars, and the valve body
ties the two hexes, so walls between the ends would only add material. Each
ring is a top half, which carries the pillars, and a bottom cap, split
horizontally through the pipe axis around the collar (or the hex itself with
GRIP = "direct"). The halves are made 2 mm apart (the cap gives up 1.5 mm
of that, the top half 0.5 mm), so the bolts squeeze the collar before the
halves meet: with 1 mm the first test print closed flat while the collar was
still a little loose. A ring is at least 12 mm long, so it can reach a little
past the collar over the valve body, and it stops exactly at the valve's end
face. Since the rings don't depend on the valve length or body, only the top
plate and the coupler change with them.
Clamp bolts are vertical, one at each side of each ring, on the line
through the pillar centres, into heat-set inserts. No nuts anywhere.
CLAMP_FROM picks the direction:
bottom(default): four short M4x20s go up through lugs on the caps into inserts in the top halves, and the plate gets its own 3x M4x25 into inserts in the pillar ends. Needs room for a hex key under the valve (an angled one does).top: everything is reached from above. Under a pillar one long bolt runs from the top of the plate down through the pillar and the top half into an insert in the cap, so it holds the plate as well. That is about 100 mm on the DN15 valve; M4 threaded rod with a washer and nut works as well as a bolt. At the corner without a pillar a short M4x20 goes from a lug on the top half into the cap; with the valve open the lever is clear of it. The cap's insert holes go right through, so a longer bolt just pokes out underneath.
Bolt lengths are settings. The plate bolts stand on an M4 washer on a
printed cone (puck: 16 mm across on the plate, 10 under the washer, 5 mm
tall), because washers straight on the plate cut into it. The cone spreads the
load over four to six times the washer's bearing area (the slot under both
included), and being round it needs no
lining up. An M4x25 on a cone reaches exactly as deep as an M4x20 did without
one, so the pillars didn't change. Their holes run on 5 mm past its tip. From
below, the clamp bolts' holes in the top halves run on 5 mm past the bolt tip
with the halves closed, so a bolt can't bottom out before it clamps; at the
corner without a pillar the hole goes right through. The report warns if a
bolt has under 6 mm of thread (M4x16 gets 3 mm).
The bolt line sits far enough out that the default insert's hole (D6) keeps
that insert's least wall (from lib/heat-set-inserts) to the bore groove,
2 mm. It stays there whatever INSERT_SIZE is, so a bigger insert leaves a
thinner wall instead of widening the rings (1.64 mm with a D7, 1.14 at the
chamfer); the report shows it.
The report lists the bolts and their lengths, and asks for rod where no stock bolt is long enough.
Outline: round around the bore, flat lugs for the bolts, square only under a pillar. The lugs reach out to the same outer face as the pillars, so cap and top half are flush where they meet.
Pillars are 12 x 12 mm square, on the outer corners of the rings, with toothed ends for the slider (below). Each corner gets a pillar if nothing that moves (handle, coupler hub, arm, fork) comes within 1.5 mm of it during the quarter turn. A lever leaves three corners free; the corner its quarter-turn sweeps over stays empty. If fewer than three corners are free, the rings are widened 1 mm at a time until they are.
Cross brace. On the DN15 valve, top half A carries two pillars. Tightening its clamp bolts bent the thin crown over the collar and the pillars flexed apart, so a 6 mm bar with 45° gussets under it now joins them, as long as the pillars along the pipe. Its top is 1.5 mm under the gear drive's pinion and gear, the lowest things that come over it (55 mm above the pipe's axis on the DN15 valve). Either drive gets the same part. The lever and fork stay 14.2 mm clear of it. Any top half with two pillars gets one, if the swinging parts clear it. Higher up, the plate ties the pillars once it's bolted on.
Printed standing on the valve-end face: every ring part is a flat profile 12 mm tall, so the round outline, bore and groove need no supports, and the pillars lie flat on the bed with their layer lines running along their length. That puts the pillars' strong direction where the servo's reaction torque bends them. Only the bolt and insert holes run horizontally (5.6-8.5 mm, fine without support).
Head, direct drive = top plate per servo + base; the servo lies along Y on the side away from the closing swing. Its 54 mm mounting ears set the plate size. The limit switches (see Limit switches) are laid out for the gear drive only.
Slider. The plate can slide along the pipe to put the servo right over the stem, in case the stem isn't where the valve profile says.
The pillar ends
carry V-teeth (straight ridges across the pipe) and the plate has matching
teeth over each pillar. They mesh with 0.1 mm clearance at every tip and root,
so only the flanks touch and the position locks positively instead of by
friction. The plate bolts go through slots. Default: ±3 mm in 1.5 mm steps,
5 positions; a second plate with SLIDE_PHASE = 0.5 (in lib/gva_core.scad) gives the half steps.
The teeth are 90° and 1.5 mm pitch because both parts print with the tooth
profile built up in layers (pillars on their side, plate upside down); 60°
teeth would need them printed on edge. Both edges of a pillar end sit on a
tooth root, so the first and last layers of a top half aren't a half tooth.
Print the top halves at 0.12-0.16 mm layers: every flank is only 0.6 mm tall
in layers. The pillar ends sit 0.7 mm lower than without the slider, so the
plate, servo and fork stay at the same height. The inserts in the pillar ends
sit 0.5 mm below the tooth roots, in a counterbore through the teeth as wide as
the chamfer, so an insert set a little proud still clears the plate's teeth. The
plate's teeth reach past each pillar by the travel and 1 mm, both ways along
the pipe, so all of a pillar's teeth are covered wherever the plate sits. That
takes the plate 4 mm past the valve's end faces over the pillars (7 mm at the
end of travel), up at plate height. The report gives each pillar's
clearance to the swinging lever if the stem really is off by the full travel:
on the DN15 valve one pillar has 2.5 mm, so a stem 3 mm off towards it would
touch it whatever the slider does.
Coupler = one narrow arm with a fork over the handle (optional M4 through a hole drilled in the lever). With the DS3230MG's clamp arm, the metal arm drops into a 1.5 mm pocket in the coupler's top, so the torque goes into the pocket walls, and one M3 countersunk screw from below goes into the arm's outer threaded hole (its two holes are 4 mm apart, too close for two screw heads). The head sits flush, because the lever runs right under it. With a disc horn the coupler takes four M3 screws on the horn's bolt circle instead.
The fork grabs the lever level with the single pillar on end B's ring (31.5 mm out on the DN15 valve), so with the valve open its tip is at the end face and it doesn't stick out past the valve; closed, it reaches 37.5 mm to the side. Its tines are 5 mm thick, thin enough to pass that pillar at the servo's very ends past open.
Gear drive (default). The servo doesn't sit on the stem. It stands in
the top plate on the pipe's centre line, past the end of the valve that the
open lever points away from (the lever never swings that way), with its case
along the pipe pointing on away from the valve. A herringbone pinion pressed
straight onto its 25T spline sits between the two pillars at that end and turns
a herringbone sector built into the coupler. Nothing hangs out to the side, so valves on
pipes side by side can sit close together; along the pipe the plate reaches
about 39-43 mm past the valve's end face, the servo case 27-32 mm and the
pinion 7-16 mm, all at 56 mm or more above the pipe's axis (the report's
servo: line). The fork still takes the torque into the lever. The teeth
come from chrisspen/gears.
DRIVE = "direct" gives back the v9 head and coupler unchanged.
Herringbone teeth (20° helix) lock along the axis: the pinion can't slide
down into the sector. So the head goes on as one piece: the coupler is
fastened under the plate on the bench, its sector turned away from the
pinion, and rolled into mesh by hand; then plate, servo, gears and coupler go
down onto the pillars together, the fork over the lever (see Assembly order).
Once it is over the valve, everything under the plate is out of reach and
nothing there needs it: the pivot fastens with the nut on top of the plate.
The two V's have to line up in height: they may be 0.54 mm apart (0.43 with
the 270°'s gears, 0.41 with the 360°'s) before the halves bind. The gear's V
is drawn 0.2 mm above the pinion's (GEAR_APEX, Fit tab: it moves the
pinion's V), so whatever the parts' tolerances, the teeth push the coupler
down onto its bearing, never up off it. If the teeth bind or only one half of
them carries, reprint the pinion with a different GEAR_APEX. Measure your
M5 nut: the coupler's height counts on a 4 mm one (DIN 934; an ISO 4032 nut is
4.4-4.7 mm and drops the coupler that much). GEAR_HELIX = 0 in
lib/gva_core.scad gives spur teeth back, which slide into mesh and don't care
about height.
The coupler hangs on a 625 ball bearing, all steel: an M5x30 ISO 7380 button
head comes up from under the coupler through the bearing, an M5 nut on top of
the bearing clamps its inner ring to the screw head, the plate sits on that
nut, and an M5 washer and nut on top clamp the plate, the washer on a printed
cone like the plate bolts' (pivot_puck: the same cone with an M5 hole). Coupler, bearing, screw
and the lower nut are one piece once that nut is tight, so nothing in it can
drop out. The lower nut sits in a hex socket that hangs 3.5 mm from the plate's
underside into the coupler's lip hole (0.5 mm off the lip and off the
bearing), so the screw can't turn and the top nut tightens and loosens from
above. The bearing goes into
the coupler's hub from below, up against a lip over its outer ring, so the
coupler hangs on that lip, not on the press fit (the seat is the one from
lib/bearings, turned over: D + 0.1, the lip touching the outer ring only).
The lip is as thick as it takes to bring the gear's top level with the
pinion's, so the whole 12 mm face meshes: 2.6 mm with the DS3230MG, which
leaves the coupler 1.4 mm under the plate. The screw head sits in the seat under the
bearing, clear of the coupler, about 2 mm above the stem nut (the stem nut's
height is an estimate).
How big can the gear be? Under the plate only the pillars are in the way: on the DN15 valve their inner corners stand 31.2 mm from the stem. A sector that turns 100° sweeps at least 200° round the pinion, wider than any gap between the pillars, so a sector gets no bigger than a whole gear would: its tips stay 1.5 mm inside the pillars. That is 27 teeth at module 2, 37 at 1.5, 45 at 1.25. Only the arc that passes the pinion has teeth, plus two at each end; a 4 mm web joins it to the hub, and the rest is open.
You only pick the servo (SERVO_RANGE: 180, 270 or 360) and SLACK. A servo
is taken to turn 17/18 of its rating (a "180°" one turns about 170°), and the
reduction lets that turn the valve the quarter turn plus SLACK (5°) at each
end, to set the end positions in software, after the slop: when the servo
reverses it turns a little before the valve follows, about 1° of valve for
the gears' backlash and 1.8° for the fork's play on the lever (0.5 mm each
side, 31.5 mm out), so the reduction allows for about 3° more. The servo's
own play isn't counted. At
the other extreme, the servo's whole travel mustn't swing the fork into a
pillar (they were laid out for the quarter turn): with no slop at all it may
go 6.75° past open and closed and keep 0.2 mm. The gears follow: for every
module (1, 1.25, 1.5, 2, 2.5), pressure angle (20° or 25°, normal to the
teeth: 25° lets a small pinion mesh) and gear up to the biggest that fits, the
pinion gets as few teeth as keep the reduction, leave 2 mm of plastic round
the spline and mesh cleanly (contact ratio 1.2 or more across the axis, not
counting the helix's overlap, the gear's tips 0.1 mm clear of the pinion's
flanks below its base circle), and it has to clear the two pillars
it sits between by 1.5 mm wherever the slider is. Of the pairs between those
two limits, within 3 % of the most reduction, the one with the strongest
pinion teeth wins. On the DN15 valve:
| Servo | Picked | Reduction | Valve turns (after slop) | Pinion | Valve torque at DS3230MG stall |
|---|---|---|---|---|---|
| 180° (default) | 23:14, module 2, 20° | 1.64:1 | 103.5° (100.7°: 5.3° spare each end) | 32 mm, 2 mm from the pillars | 4.5 Nm |
| 270° | 37:15, module 1.5, 20° | 2.47:1 | 103.4° (100.9°) | 25.5 mm, 5.3 mm | 6.8 Nm |
| 360° | 43:13, module 1.25, 25° | 3.31:1 | 102.8° (100.4°) | 18.75 mm, 8.6 mm | 9.1 Nm |
Things to know:
- Lining the servo up with the valve: the tooth the sector rolls in on sets where the fork points with the servo at open, in steps of 15.7° of valve with the 23-tooth gear. Moving the pinion one spline tooth on the servo's shaft shifts things by 8.8° of valve, and between gear teeth and spline teeth you can always land within about ±1°. Then set the two end positions in software, as always.
- At the very ends of the servo's travel (6.7° past open and closed, with no
slop) the lever and fork still clear the pillars by 0.3 mm. Keep the end
positions within
SLACKin software anyway; the report gives the numbers. - The gear's tips are 6.2 mm (180°), 2 mm (270°) or 3.1 mm (360°) from the nearest pillar with the stem in the middle, 3.8 / -0.4 / 0.7 mm with the stem 3 mm off along the pipe (the slider's whole travel): the 270°'s gear would touch a pillar then; the report says.
- The DS3230MG's shaft is measured: a 12.25 mm boss stands 0.9 mm off the
case face, the 25T spline (5.9 mm) runs 4.2 mm on from it, toothed all the
way, and its M3 hole is at least 8 mm deep. For another servo, measure
those (
boss_d,boss_h,spline_d,spline_l,spline_drop,screw_depthinlib/profiles.scad): they set the pinion's height, and with it the coupler's and the brace's. A 25-tooth spline has no two tips opposite each other, so calipers read it about 0.03 mm small. The pinion's hole is a 25-tooth star 3.7 mm deep, its top 0.5 mm under the boss;SPLINE_FITloosens or tightens it. One M3x10 socket head from below holds it, its head flush in a counterbore fromlib/iso-fasteners, 4.7 mm into the shaft. The DS3230MG's clamp arm isn't used. - Backlash: the library thins every tooth 5 %, and the gears sit
GEAR_CD_PLAY(0.1 mm) further apart than nominal. The herringbone's overlap (0.35 of a tooth in each half with module 2) keeps more teeth in mesh than spur teeth would.
Solid intersection checks for the gear drive (DN15 profile; 180, 270 and 360 servos; both sweep directions; both servos; every lever preset and both butterflies): gear against pinion (also with no extra backlash; with the V's 0.5 mm apart either way they still clear, 0.6 mm apart they bind; 2 mm up its axis the pinion locks, so it can't go on that way) and plate; coupler against rings, collars, valve, the pivot screw, head and nut, and the bearing (it touches the lip only, and only with its outer ring); pinion against rings, collars, plate and valve; the servo against the rings; the screw against the valve and plate; the pinion's M3 against the pinion (it seats in its counterbore), rings, collars, valve, coupler and plate; the servo screws and their nuts against the pinion, coupler and plate (the nuts seat in their pockets); the plate's longer slider teeth against the pillars at every step (they mesh, lifted 0.01 mm they're clear, half a step off they clash), the coupler, pinion and valve; the cross brace against the valve, coupler, pinion and servo, also with the stem 3 mm off either way (the pinion and gear 1.4 mm lower clear it, 1.6 mm lower hit it); the servo's boss against the pinion (0.5 mm apart: 0.6 closer hits) and the coupler; the plate's pockets keep 2.9 mm (not 3.1) off every hole, cutout, pad and edge; every 10° over the servo's whole travel and at its ends. Nothing collides; with the centre distance 0.5 mm short the gears do, as they should. The way the head goes on: from 60° to 120° past open on the DN15 lever, 75° to 105° on every preset and butterfly, the coupler comes up under the plate without touching the pinion (45° and 135° don't); rolled in from there to the servo's end past open, every degree, the gear clears the pinion, plate, servo and their screws; and the whole head lowered onto the valve clears the rings, collars, valve and lever all the way down (0.3 to 30 mm up, with the stem 3 mm off either way, all three servos, both sweep directions, bolts from the top, the standard servo, every lever preset and butterfly), the plate's teeth touching the pillars' only when seated. The pivot nut seats against the plate (pushed 0.01 mm further it hits, turned 15° in its socket it hits, so it can't turn), and the socket stays off the bearing's outer ring and seal (0.5 mm: lifted 0.51 it hits).
report() prints the footprint, each corner's clearance, the fastening and the bolt
lengths on every render. Solid intersection checks (collars against rings,
hexes and each other; ring halves against each other; rings against the
valve body, stem and lever; rings, collars and clamp bolts against the
swinging coupler; the top plate at every slider step) found no collisions at
open, half and closed, for the DN15
boiler valve profile with the bolts from the top and from below, every lever
preset, and the 1/2" and 3/4" butterfly. A hex key has a clear straight path
to every bolt: from above to the short one (valve open), and from below in
bottom mode.
Butterfly handles sweep both sides of the valve, so the corners near the valve are crowded. The rings widen themselves until three corners are free: by 12 mm on the 3/8" butterfly (60 x 67.4 mm); the 1/2", 3/4" and 1" need none and get all four. A cap-style coupler that hugs the butterfly would bring that back down if you need it.
Limit switches
LIMIT_SWITCHES (Drive tab, gear drive only) adds a switch at each end of the
lever's travel, mounted one of two ways: micro (the default) on a yoke under
the gear, pillar on two brackets screwed to the pillars; none adds
nothing. Hall switches and linear Hall sensors (magnets glued under the lever)
were tried and are out for now: commit 7b04639 is the last with them.
The switches are pressed by the valve's lever itself, not by the coupler. So they report where the lever really is, even if the coupler slipped or broke, and the fork's play on the lever doesn't count. And the lever can't go past the valve's own stops: only the coupler overtravels (6.7° at the servo's very ends), and it runs over the switches. So nothing has to bend out of the way: the lever's bottom edge pushes straight on the switch's own lever.
Each switch is a KW12-1 (short hinge lever, no roller) standing upright beside the lever at one of its stops, on the side the lever comes from, inside the fork and under the gear: as far out from the stem as the fork leaves room, so a lever that dips near its hub still meets them, and the further out, the less the lever turns per mm of switch travel. A KW12-3 (roller) reaches 5.7 mm further: at closed that's along the pipe over end A's cross brace, and the head goes on over the brace from above. At its nominal operating point each trips about 2° before the stop, and the lever can go about as far past the stop before it bottoms the switch. Each switch is pulled against a printed wall by two M3x10 through slots, screwed into the switch's own holes: drill them out to 2.5 mm and tap M3. The slots run along the press, ±3 mm (about ±10° of lever), to set where each switch trips.
On a yoke under the gear (micro)
The switches sit 18 mm out from the stem and hang on one printed yoke
(switch_yoke) under the gear: a 4.5 mm wall beside each switch, a roof over
it, and a band 10 mm wide and 9 mm tall round the stem on the side the lever
never goes. The M3s come in from the stem's side. The yoke hangs on two posts
that come down from the plate where the coupler never goes, one in the gap
between the gear and its arm, one beside end B's pillar, each with an M3x30
from the top into an insert in the yoke. Held at two points 16 mm apart, it
can't swing round either screw.
The switches are laid out and checked on the DN15 (all three servo ranges,
both sweep directions, the stem 3 mm off either way). With the stem 3 mm off
towards end A, the closed switch's terminals would touch A's brace and pillar
by 0.1 mm: bend them up a little. The yoke is laid out for a lever; with a
butterfly use pillar.
On the pillars (pillar)
LIMIT_SWITCHES = "pillar" puts each switch on its own printed bracket,
screwed to the pillar next to it: the open switch (SO) to end B's pillar,
the closed one (SC) to end A's on the side the lever closes towards.
Nothing hangs from the plate, and the brackets go on before the head, while
you can still turn the lever by hand to each stop to set the switches.
Both switches sit outside their pillars, beside the lever and past the fork's reach: the open one past end B's end face, 51 mm out from the stem on the DN15, the closed one past the ring's side face, 48 mm out across the pipe. Inside they were 17 and 18. Both trip about 0.7° before the stop (1.9° inside), and all their screws face outwards, easy to reach. The two brackets are built the same way, an L seen from above:
- The switch sits flat on a 4 mm plate, held by two M2 screws from outside through its own holes (2.35 mm; an M2 also passes through a hole you have already tapped M3) and through slots in the plate, into M2 nuts in a channel behind it. Loosen them and the switch slides ±3 mm towards or away from the lever, to set where it trips.
- A block takes the plate back to the pillar's outer face (
SO: the valve's end face;SC: the ring's side face), on V-teeth like the slider's, the ridges upright. An M3x12 socket head on a washer, sunk in a pocket, clamps it through a slot into an insert in the pillar: loosen it and the bracket slides ±4 mm up and down the teeth, to match your lever's height out there (levers often bend). OnSCthe slot is beside the switch. OnSOit is on an arm over the switch, because there the terminals and their wires are in the way beside it. - The switch's hinge lever meets the lever's bottom edge. End B's end face
prints on the bed, so
SO's notches are cut back 0.2 mm round the pillar's ridge tips for the first layers' squish.
SO reaches 17 mm past end B's end face (the screw heads 2 more), beside the
lever and over the pipe; under it there's nothing lower than the switch.
SC reaches 21 mm past the ring's side face (23 with the heads), beside the
lever. The brackets are on the rings, so with the stem off centre the
switches move with them: the open one up to 3 mm along the lever, the closed
one across its lever, which it follows on its slots. Outside, a switch needs
the lever to reach 5 mm past it (56 mm out from the stem on the DN15); on a
shorter lever it goes inside, like a butterfly's.
On a butterfly the free wing presses the switches (the fork holds the other one), and the brackets swap pillars: the open one goes to end A's, the closed one to end B's. The wings are short, so both stay inside, on teeth on the pillars' faces towards the stem: the open one hangs on a wall on its stem side, as on the yoke, with a floor under it out to a pad on the pillar, and an M3x10 countersunk, flush in the pad, into an insert in the pillar. At open that wing points along the pipe, over the valve body, where a KW12-1 would reach down into it, so the open switch is a KW12-3: its longer lever puts it further out to the side of the pipe. Its roller presses the wing 1 mm over its bottom edge: the fork holds the other wing by its upper part and swings over this switch's far end at closed. Checked on the DN15 with the 1/2" preset's T-handle (an estimate); with the stem 3 mm off towards end B, at the servo's very end past closed, the fork grazes that roller by 0.14 mm.
This changes the two top halves: end B's pillar gets teeth and an insert in its outer face (the valve's end face), end A's pillar on the closing side gets them in its face across the pipe (a butterfly: teeth on the faces towards the stem, the insert in end A's pillar and a countersunk hole through end B's). They only lose material there. Pick it before you print them.
There is no standard for the outside of a gas valve
EN 331 covers performance (tightness, operating torque, stops, endurance), and EN 10226 / ISO 7 the threads. Body length, hex size and handle shape are up to the manufacturer, and on two-piece valves the screwed-in end can sit at any angle. So the defaults are typical values only. Measure your valve and make a profile:
- Turn the valve open. Its handle points along +X; that sets the frame.
end_a/end_b: across-flats, centre position from the stem axis, length of the flat stretch, and hex rotation (0 = flat on top).body_d: fattest diameter between the two hexes.- Handle, measured from the pipe axis: underside height
handle_z, thicknesshandle_t, widthhandle_wat your chosenengage_r(where the fork grabs: level with the end pillar, end face less 6 mm, keeps it from sticking out), tip radiushandle_len, top of the stem nuthub_top_z. - Which way it turns to close:
SWEEP_DIRinactuator.scad.
Then set VALVE_NAME, render, and read the ECHO lines; problems are flagged
with WARNING. The tightest constraint is usually the ring top vs. the swinging
fork. A bigger hex (or, with GRIP = "direct", a corner pointing up) raises
the rings, and the report will tell you.
Servo and torque
Published operating torque for EN 331 valves is about 3 Nm for DN15 and 4 Nm for DN20 (Cimberio T12G datasheet); a rarely moved valve can stick harder. Measure yours with a luggage scale on the lever tip (kg × 9.81 × lever length in m) and pick a servo with ≥ 2× that stall torque. For DN15 that's a metal-gear standard-size 35-60 kg·cm class.
The default is the DSSERVO DS3230MG: 30 kg·cm, about 2.9 Nm, which is about 1x
on a 3 Nm valve on the stem (the report warns), so measure your valve. The gear
drive multiplies it by the reduction (less about 5 % in the mesh): 4.5 Nm at
1.64:1, 1.5x on a 3 Nm valve. Its case is from the
DS3230 drawing and its clamp arm's holes (19.5 and 23.5 mm from the shaft) from
the DS SERVO datasheet. Measure these before printing the coupler and the
plate, and fix SERVO_DS3230MG in lib/profiles.scad if they differ: the hub
diameter (15 mm), the arm's width at its holes (8 mm) and thickness (4 mm), and
how far the arm's outer face stands off the servo case (7.5 mm; the spline
itself only reaches 5.1). That last one sets the plate thickness and so how far
the fork reaches down the lever. The case, flange (3.3 mm thick) and mounting
holes (48.5 x 9.75 mm, 4.1 mm, slotted out to the tab ends) are measured. The metal arm swings 3.5 mm under the plate, so the servo screws
can be at most 12 mm long (the report says). The gear drive keeps the same plate
thickness, and its servo screws stay 1 mm above the gears and the coupler. The
screws are SERVO_SCREW: M3 (default) on an M3 washer, which bridges the
servo's slotted holes, or M4; the nut pockets under the plate follow. ISO 4762
has no M3x14, so an M3x12's pocket goes 0.5 mm deeper to give it 2 mm in its
nut.
Printing
PETG or ASA, not PLA (boiler rooms are warm and PLA creeps under steady load).
- Clamp parts (
clamp_top_a,clamp_top_b,clamp_bottomx2): standing on the valve-end face (the STLs are already oriented), 6 perimeters, 60-100 % infill, no supports. Top halves at 0.12-0.16 mm layers, for the pillar teeth. - Top plate: top face down, 5 perimeters, 50 % infill. Its corners are rounded (5 mm, seen from above), and the slider teeth stop at them (a pillar's teeth still stay covered at every position). It's a frame with windows right through: 3 mm rims round the outline, the servo's cutout and nut pockets and the pillar pads, and 3 mm ribs from the pivot to every pillar and servo screw (46 to 31.5 cm³ on the DN15 valve). No supports. Its teeth are the last 0.6 mm of the print: finer layers there (a height range modifier) help. Gear drive: the pivot nut's socket stands 3.5 mm up from that face, a hex tube with 1.5 mm walls.
- Coupler: top face down, 100 % infill. Direct drive with the clamp arm: the floor of its pocket is a bridge of about 16 mm; normal bridge settings print it. Gear drive: the gear's top, web, hub and arm all start on the bed; the teeth build up in layers.
- Pinion (gear drive): spline face down, 100 % infill, 5 perimeters. The herringbone flanks lean 20° off vertical, no supports.
- Cones (
puck, 3 of them, andpivot_puckwith the gear drive): base down, 100 % infill. - Coupler, gear drive: the 625's seat opens on the bed (its 0.5 mm chamfer takes the first layer's squash), and its shoulder is a narrow ledge, no bridging to speak of.
- Collars (
collarx2, each file is both halves of one collar): standing on an end face (the rib has 45 deg flanks), 100 % infill. - Switch yoke (
micro): the band's top face down, walls up, 100 % infill. The slots are horizontal holes with 3.4 mm bridges. - Switch brackets (
pillar): both on the face the switch sits on (the STLs are oriented), 100 % infill, no supports; the pockets for the M3 heads open on the bed, with a 7.6 mm bridge over each. Their teeth build up in layers, like the top halves': fine layers help. Withpillarend A's pillar gets teeth in its face across the pipe (a wall of the print, the ridges level), end B's in its end face on the bed (SO's notches are cut back 0.2 mm round the pillar's ridge tips for the first layers' squish). A butterfly's:bracket_openon its floor,bracket_closedon the face the switch sits against.
Fastening
Set FASTEN in lib/gva_core.scad:
"insert"(default): M4 heat-set inserts.INSERT_SIZEinactuator.scadpicks one (defaultM4xD6.0xL7.0) and every hole is cut with itsinsert_hole()fromlib/heat-set-inserts. A blind hole runs 1.4 mm deeper than the insert, for the plastic the insert pushes ahead of it, and every hole has a 0.5 mm 45° chamfer at the mouth for the plastic pushed up round the insert, so there is nothing to trim (INSERT_HOLE_CHAMFER, Fit tab). The inserts come from the heat-set-inserts library (a git submodule):lib/heat-set-inserts/preview.scadshows the SL-type inserts and the holes they need (pick one withINSERT,SHOW = "fit"shows an insert set in its hole); its README explains each dimension, how the holes are sized, and the AliExpress listings the sizes come from."tap": 3.3 mm holes; cut an M4 thread straight into the plastic.
Bearings
lib/bearings/preview.scad shows the 608RS (8 x 22 x 7) and 625RS
(5 x 16 x 5) ball bearings and the seats for them (bearings.scad next to it
is the library and draws nothing on its own). The gear drive's coupler turns
on a 625 in one of these seats (see Gear drive). Pick
one with BEARING ("all" shows both) and a view with SHOW: bearing,
cutter (the seat's shape), fit (a block with the seat and the bearing in
it) or block (that block alone: print it to try the press fit before
putting a seat in a real part). A seat is D + 0.1 mm (ALLOWANCE; printed
holes come out small) with a 0.5 mm 45° chamfer at the mouth. The bearing
sits on a shoulder that touches only the outer ring, over a 1 mm recess (or a
through hole, THROUGH), so the inner ring and the seal can't rub on the
plastic. A shaft shoulder that presses on the inner ring must stay under
10.5 mm (608) or 7.4 mm (625) to clear the seal. Seals vary by maker, so check
yours. The sizes and shoulder rules come from SKF's datasheets;
lib/bearings/bearings.scad explains each dimension and how the seats are
sized.
Screws
The bolts in the pictures come from the
iso-fasteners library in
lib/iso-fasteners (a git submodule): ISO 4762 socket heads (DIN
912) for the M4 bolts, the servo screws and the pinion's M3, the ISO 7380-1
button head for the pivot, and ISO 10642 for the direct drive's countersunk
M3. Each is drawn from its standard's table, at the most metal it allows. The
pivot screw's length is the shortest of the standard's lengths that leaves a
thread over the top nut, and the pinion's screw hole is the library's (ISO 273
medium clearance, a counterbore 0.5 mm over the head). The holes in the rings
and plate are still the actuator's own, and so are the nuts and washers. The
library also has nuts, washers and set screws; lib/iso-fasteners/preview.scad
shows everything in it, the viewers in lib/iso-fasteners/previews/ one kind
each, with the hole cutters and the two together; the library has its own
README.
Hardware (DN15 lever)
CLAMP_FROM = "bottom": 7x M4xD6.0xL7.0 inserts (4 in the top halves, 3 in the pillar ends); 4x M4x20 clamp bolts, 3x M4x25 top-plate bolts with M4 washers, each on a printed cone (puck, print 3); all socket heads (ISO 4762 / DIN 912)CLAMP_FROM = "top": 4x inserts in the caps; 3x M4x100 with washer on a printed cone (or M4 threaded rod, 99 mm, with washer, spring washer and nut) through plate and pillars, 1x M4x20 at the corner without a pillar- 4x M3x12 servo screws + M3 washers + M3 nuts (
SERVO_SCREW = "M3", the default) or 4x M4x12 + M4 nuts ("M4"); the nuts sit trapped under the top plate. No longer: the servo's metal arm (direct drive) or the gears swing under their tips - Gear drive: 1x M3x10 socket head, the pinion onto the servo's shaft, from
below. The servo's clamp arm isn't used. For the coupler's pivot: 1x 625
bearing (5 x 16 x 5, 2RS), 1x M5x30 ISO 7380 button head, 2x M5 nuts (the
one on the bearing 4 mm thick, DIN 934: it sets the coupler's height), 1x M5
washer on a printed cone (
pivot_puck). - Limit switches (
LIMIT_SWITCHES = "micro", the default): 2x KW12-1 (short hinge lever), their holes drilled 2.5 mm and tapped M3; 4x M3x10 socket heads; for the yoke 2x M3x30 socket heads + M3 washers and 2x M3xD4.6xL5.0 inserts."pillar": the same switches, holes as they come (2.35 mm), on 4x M2x10 socket heads (ISO 4762) and 4x M2 nuts (ISO 4032); for the brackets 2x M3x12 socket heads + M3 washers and 2x M3xD4.6xL5.0 inserts, one in end B's pillar, one in end A's. A butterfly's stay inside, as on the yoke: a KW12-3 at open and a KW12-1 at closed, holes tapped M3, 4x M3x10; an M3x10 countersunk (open) and an M3x20 countersunk (closed, ISO 10642), 2x M3xD4.6xL5.0 inserts, one in end A's pillar, one in the closed bracket - Direct drive: 1x M3x8 countersunk, coupler to the servo's clamp arm (outer hole). With a disc horn: 4x M3x8, counterbored from below
boltcoupler style only: 1x M4 + nut through a 4.5 mm hole drilled in the lever atengage_r. The fork carries the torque; the bolt only stops it lifting.clampcoupler style only: 1x M3x25 socket head + M3 nut across the tines under the lever (DN15; the report gives the length). It goes in from the side with the valve turned away from open: head on the side of end B's pillar, flush in a counterbore; the nut in a shallow hex pocket on the other.
Other sizes: the ECHO report gives exact bolt lengths.
Assembly order
- Set the inserts wherever there is a blind hole: in the top halves and
pillar ends (bottom), or in the caps (top), and with
pillarthe one in end B's pillar's outer face (a butterfly: end A's, in its face towards the stem) and the one inbracket_closed. - Turn the valve open (with the burner off this is the normal state).
- Clip a collar round each end hex with its outer face flush with the valve end face. Don't push it in against the body: the collars can be shorter than the hex, and their spacing has to match the top plate.
- Sit a top half on each collar (rib in the groove) and hold a cap under it.
- Bolts from below: fit the four clamp bolts up through the caps, then fit
the coupler to the servo horn (servo at its "open" position) and lower
the top plate onto the pillars with the fork over the lever; fit its
three bolts with washers, each on a printed cone. Gear drive: build the
head on the bench first, it goes on in one piece (the herringbone teeth
can't slide into mesh, and under the plate nothing is reachable once it
sits over the valve):
- Screw the servo into the plate and the pinion onto its spline (the M3 from below).
- Press the 625 up into the coupler's hub from below until it sits against the lip, push the M5x30 button head up through it and tighten an M5 nut down onto the bearing (a hex key in the head from below). Coupler, bearing, screw and nut are now one piece.
- Turn the coupler so its fork points straight out sideways, a quarter
turn past open (the way the valve opens; 75° to 105° past works on
every preset): then its sector is clear of the pinion. Push the screw up
through the plate; turn it with the hex key until the nut drops into
the socket under the plate. Put the cone (
pivot_puck), washer and nut on top and tighten. - With the servo unpowered, turn the coupler back towards open: the sector's end rolls into mesh with the pinion (wiggle the coupler if a tooth lands on a tooth; the servo turns with it). Power the servo, send it to its "open" position (the end of its travel less the spare) and check the fork points along the pipe, over where the open lever lies. If it's a tooth off, roll the sector out and in again a tooth over, or move the pinion a spline tooth on the servo's shaft.
- Micro switches on the yoke: set the two inserts in the yoke's top, screw each switch to its wall (middle of its slots, two M3x10 from the stem's side into its tapped holes), lift the yoke in under the gear from below, against the plate's two posts, and fit the two M3x30 with their washers down through the plate from the top. On the pillars: drop the M2 nuts into the channels behind each bracket's plate, screw the switch to it (middle of its slots, the two M2x10 from outside through the switch) and each bracket to its pillar, teeth in mesh, its M3x12 on a washer in the pocket, through the slot. Turn the lever to the stop and slide the bracket up or down until the lever's bottom edge meets the switch's lever just below its tip, then tighten. (A butterfly's: the open one's M3x10 from the stem's side, the closed one's M3x20 from the valve's end face through the pillar.) Turn the lever by hand to open and to closed and listen for each switch's click a little before the stop; slide it along its slots if not (towards the lever: earlier).
- Lower the whole head onto the pillars, the fork over the lever, and fit the plate bolts on their cones. Without limit switches, turn the lever by hand to line it up. With them, have the valve about half open (45°) and the coupler turned to match, so the switches come down clear of the lever (open or closed, they would land on it). Then turn the valve to open, with the servo or by hand.
- Bolts from the top: fit the coupler, lower the top plate onto the pillars with the fork over the lever, and run the long bolts (or rods) down through plate and pillars into the caps. Fit the short bolt at the corner without a pillar. Everything finger-tight: the rings must still turn on the collars. The plate sets the spacing of the rings, and with the lever open the fork tines hold the frame upright on the stem axis. This does not work with the valve closed: then the lever lies along the frame's free direction. Before tightening the plate bolts, let the plate find its place: with the fork over the lever it wants to sit with the servo over the stem. Settle it into the nearest tooth position and tighten. To move it later, back the plate bolts off about 0.7 mm (a tooth depth), lift the plate, slide it and tighten again.
- Bolts from below: fit the four clamp bolts up through the caps, then fit
the coupler to the servo horn (servo at its "open" position) and lower
the top plate onto the pillars with the fork over the lever; fit its
three bolts with washers, each on a printed cone. Gear drive: build the
head on the bench first, it goes on in one piece (the herringbone teeth
can't slide into mesh, and under the plate nothing is reachable once it
sits over the valve):
- Now tighten the clamp bolts evenly until the collars are clamped. Leave the split gap open; don't crush it shut. Check the frame can't turn around the pipe.
- Run it closed and open once and watch that the fork doesn't bind. Micro switches: turn the valve slowly to each stop and listen for the click. Each should switch a little before the stop (about 2°). If not, loosen its two screws and slide it along the slots (towards the lever: earlier), then tighten. On the yoke the screw heads face the stem; a long hex key reaches them from the side, under the coupler. On the pillars the open switch's heads are at its bracket's far end, past the valve, and the closed one's in the ring's side face. (A butterfly's open switch's heads face the stem: set it before the head goes on.)
- Long bolts or rods carry a lot of plastic: tighten them again after a week.
Control and safety notes
- Sequence: open valve → give the servo time to get there (with the limit switches: wait for the open switch) → release boiler demand. Stopping: remove demand → wait out the boiler's post-purge / pump overrun → close. Never close under a running burner. The boiler would just lock out, but that needs a reset. A switch that doesn't come on in time means the lever didn't get there (coupler slipping or broken, valve stuck): raise an alarm rather than retry blindly.
- Don't stall into the stops. Calibrate the two end positions just short of the hard stops, move, then stop sending pulses. With the gear drive the servo can turn the lever a little past both stops' angles (more with a 360° servo), so the end positions must be set in software. The limit switches help: each comes on a degree or two before its stop, so drive towards a stop until its switch comes on, then a little further. A ball valve holds its position by friction.
- Cycle sparingly. These valves are built for occasional hand use. Close for long idle periods (nights, away, summer), not every burner cycle.
- Keep a manual shut-off. The geared servo is hard to back-drive, so this valve is no longer a quick hand shut-off. Make sure the meter main valve is reachable and everyone in the house knows where it is. With the bolts from the top the whole unit comes off with four bolts; from below the head comes off with three.
- After mounting, check the threaded joints with leak spray. The rings grip the valve body only and put no load on the pipe joints. Brushed servo motors spark internally, so a gas detector next to the boiler is cheap insurance.
- Gas installation rules differ by country. A clamp-on actuator doesn't open the gas line, but if in doubt ask your gas installer to look at it.
- This design comes with no warranty (see License). You build, mount and run it at your own risk.
License
CC BY-NC-SA 4.0: you
may use, print, change and share this design for non-commercial purposes, as
long as you credit the author and share changed versions under the same
license. Commercial use (selling the files, prints or kits, for example) needs
the author's permission. See LICENSE. The gear library in lib/gears
(a git submodule, not part of this repository) is
chrisspen/gears by Dr Jörg Janssen and
contributors, under CC BY-NC-SA 3.0. The screw library in lib/iso-fasteners
(also a git submodule) is iso-fasteners,
and the insert library in lib/heat-set-inserts (another git submodule) is
heat-set-inserts, both by the
same author and licensed separately.







