No description
  • OpenSCAD 97%
  • Makefile 3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Roberto Anić Banić 252effd8ae Pillar limit switches: both outside their pillars, flat on a plate, no U, both slide up and down
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.
2026-10-20 12:14:41 +02:00
docs Pillar limit switches: both outside their pillars, flat on a plate, no U, both slide up and down 2026-10-20 12:14:41 +02:00
lib Pillar limit switches: both outside their pillars, flat on a plate, no U, both slide up and down 2026-10-20 12:14:41 +02:00
.gitignore Name the screw library's folder after its repo 2026-10-18 12:31:04 +02:00
.gitmodules Take the insert library from its own repo as a submodule 2026-10-18 12:55:16 +02:00
actuator.scad Pillar limit switches: both outside their pillars, flat on a plate, no U, both slide up and down 2026-10-20 12:14:41 +02:00
CLAUDE.md Pillar limit switches: both outside their pillars, flat on a plate, no U, both slide up and down 2026-10-20 12:14:41 +02:00
LICENSE Take the insert library from its own repo as a submodule 2026-10-18 12:55:16 +02:00
Makefile Pillar limit switches: both outside their pillars, flat on a plate, no U, both slide up and down 2026-10-20 12:14:41 +02:00
README.md Pillar limit switches: both outside their pillars, flat on a plate, no U, both slide up and down 2026-10-20 12:14:41 +02:00

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.

The actuator on the DN15 boiler valve

The valve running through the servo's whole travel: closed, the servo's end past closed, open and its end past open

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

Exploded view

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.

A pillar end and the plate above it, lifted a little 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.

The gears from above, the plate and servo see-through, through the servo's whole travel

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 SLACK in 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_depth in lib/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_FIT loosens or tightens it. One M3x10 socket head from below holds it, its head flush in a counterbore from lib/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 limit switches on their yoke under the gear, the valve half open

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)

The limit switches on their brackets outside two pillars, the valve a third closed

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). On SC the slot is beside the switch. On SO it 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:

  1. Turn the valve open. Its handle points along +X; that sets the frame.
  2. end_a / end_b: across-flats, centre position from the stem axis, length of the flat stretch, and hex rotation (0 = flat on top).
  3. body_d: fattest diameter between the two hexes.
  4. Handle, measured from the pipe axis: underside height handle_z, thickness handle_t, width handle_w at your chosen engage_r (where the fork grabs: level with the end pillar, end face less 6 mm, keeps it from sticking out), tip radius handle_len, top of the stem nut hub_top_z.
  5. Which way it turns to close: SWEEP_DIR in actuator.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

Every part in print orientation

PETG or ASA, not PLA (boiler rooms are warm and PLA creeps under steady load).

  • Clamp parts (clamp_top_a, clamp_top_b, clamp_bottom x2): 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, and pivot_puck with 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 (collar x2, 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. With pillar end 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_open on its floor, bracket_closed on the face the switch sits against.

Fastening

Set FASTEN in lib/gva_core.scad:

  • "insert" (default): M4 heat-set inserts. INSERT_SIZE in actuator.scad picks one (default M4xD6.0xL7.0) and every hole is cut with its insert_hole() from lib/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.scad shows the SL-type inserts and the holes they need (pick one with INSERT, 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
  • bolt coupler style only: 1x M4 + nut through a 4.5 mm hole drilled in the lever at engage_r. The fork carries the torque; the bolt only stops it lifting.
  • clamp coupler 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

The parts pulling apart and going back together

  1. Set the inserts wherever there is a blind hole: in the top halves and pillar ends (bottom), or in the caps (top), and with pillar the one in end B's pillar's outer face (a butterfly: end A's, in its face towards the stem) and the one in bracket_closed.
  2. Turn the valve open (with the burner off this is the normal state).
  3. 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.
  4. 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):
      1. Screw the servo into the plate and the pinion onto its spline (the M3 from below).
      2. 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.
      3. 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.
      4. 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.
      5. 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).
      6. 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.
  5. 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.
  6. 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.)
  7. 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.